@superutils/fetch 1.5.16 → 1.5.17
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 +75 -80
- package/dist/browser/index.min.js +2 -1
- package/dist/browser/index.min.js.map +1 -1
- package/dist/index.cjs +106 -32
- package/dist/index.d.cts +83 -184
- package/dist/index.d.ts +83 -184
- package/dist/index.js +103 -32
- package/package.json +4 -4
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
|
-
- [`
|
|
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,99 @@ fetch
|
|
|
573
572
|
.then(console.log)
|
|
574
573
|
```
|
|
575
574
|
|
|
576
|
-
|
|
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
|
-
|
|
591
|
+
#### Key Features
|
|
579
592
|
|
|
580
|
-
|
|
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
|
-
|
|
599
|
+
#### Example: Creating an API client
|
|
583
600
|
|
|
584
601
|
```javascript
|
|
585
|
-
import {
|
|
602
|
+
import { ApiClient } from '@superutils/fetch'
|
|
586
603
|
|
|
587
|
-
// Create a
|
|
588
|
-
const
|
|
604
|
+
// Create a client for a specific API service
|
|
605
|
+
const productsClient = new ApiClient(
|
|
606
|
+
'https://dummyjson.com/api', // base URL
|
|
589
607
|
{
|
|
590
|
-
|
|
591
|
-
|
|
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
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
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
|
|
609
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
647
|
+
#### Example: Multiple clients with different configurations
|
|
634
648
|
|
|
635
649
|
```javascript
|
|
636
|
-
import {
|
|
650
|
+
import { ApiClient } from '@superutils/fetch'
|
|
637
651
|
|
|
638
|
-
//
|
|
639
|
-
const
|
|
640
|
-
|
|
641
|
-
|
|
652
|
+
// Client for public API (no auth required)
|
|
653
|
+
const publicApi = new ApiClient('https://api.example.com/public')
|
|
654
|
+
|
|
655
|
+
// Client for authenticated endpoints
|
|
656
|
+
const privateApi = new ApiClient('https://api.example.com/private', {
|
|
657
|
+
fixedOptions: {
|
|
658
|
+
headers: { Authorization: 'Bearer token' },
|
|
642
659
|
},
|
|
643
|
-
{
|
|
644
|
-
method: 'post',
|
|
660
|
+
commonOptions: {
|
|
645
661
|
timeout: 10000,
|
|
646
662
|
},
|
|
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))
|
|
663
|
+
})
|
|
655
664
|
|
|
656
|
-
//
|
|
657
|
-
|
|
658
|
-
|
|
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,
|
|
669
|
-
},
|
|
670
|
-
)
|
|
671
|
-
deferredPatchClient({ title: 'New title 1' }) // ignored by debounce
|
|
672
|
-
deferredPatchClient({ title: 'New title 2' }) // executed
|
|
665
|
+
// Use them independently
|
|
666
|
+
publicApi.get('/posts').then(console.log)
|
|
667
|
+
privateApi.post('/user/profile', { name: 'John' }).then(console.log)
|
|
673
668
|
```
|
|
674
669
|
|
|
675
670
|
<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 Ye=Object.defineProperty;var _e=(e,t)=>{for(var n in t)Ye(e,n,{get:t[n],enumerable:true});};var le={};_e(le,{PromisE:()=>D,PromisEBase:()=>Me,Promise:()=>I,ResolveError:()=>ne,ResolveIgnored:()=>se,TIMEOUT_FALLBACK:()=>V,TIMEOUT_MAX:()=>ie,TimeoutPromise:()=>ae,default:()=>ye,deferred:()=>oe,deferredCallback:()=>L,delay:()=>J,delayReject:()=>Ue,retry:()=>B,timeout:()=>k});var F=(e,t=true)=>!!e&&typeof e=="object"&&(!t||[Object.prototype,null].includes(Object.getPrototypeOf(e)));var U=e=>Array.isArray(e);var et=e=>Number.isInteger(e);var H=e=>typeof e=="number"&&!Number.isNaN(e)&&Number.isFinite(e),Q=e=>et(e)&&e>0,ee=e=>H(e)&&e>0,te=(e,t=false,n=false)=>{if(e==null)return true;switch(typeof e){case "number":return !H(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 b=e=>typeof e=="function";var Ce=e=>e instanceof URL,Ie=(e,t=true,n=["localhost"])=>{if(!e)return false;try{if(typeof e!="string"&&!Ce(e))return !1;let r=Ce(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 De=e=>e instanceof Error,q=e=>e instanceof Promise,W=e=>typeof e=="string";var rt=e=>typeof e=="symbol";var O=(e,t,n)=>{try{let r=b(e)?e(...b(t)?t():t):e;return q(r)?r.catch(i=>b(n)?n(i):n):r}catch(r){return b(n)?n(r):n}},N=O;new Date().getTime();var nt=(e,t=true,n=true)=>N(()=>[...n&&Object.getOwnPropertySymbols(e)||[],...t?Object.keys(e).sort():Object.keys(e)],[],[]),st=nt,z=(e,t="null")=>JSON.parse(N(JSON.stringify,[e],t)),x=(e,t,n,r=false,i=true)=>{let s=F(t,false)||b(t)?t:{};if(!F(e,false)&&!b(t))return s;let a=new Set(n!=null?n:[]),o=st(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"?!te(s[c]):b(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 z(l,"[]");case ArrayBuffer.prototype:return l.slice(0);case Date.prototype:return new Date(l.getTime());case Map.prototype:return new Map(z(Array.from(l),"[]"));case RegExp.prototype:return new RegExp(l);case Set.prototype:return new Set(z(Array.from(l)));case Uint8Array.prototype:return new Uint8Array([...l]);case URL.prototype:return new URL(l);}if(rt(c)||!i)return z(l);let h=[...a].map(y=>String(y).startsWith(String(c).concat("."))&&String(y).split(String(c).concat("."))[1]).filter(Boolean);return h.length?x(l,s[c],h,r,i):z(l)})();}return s};var re=(e,t=0)=>U(e)?Array.from(new Set(e.flat(t))):[],Y=(e,t=50,n={})=>{let{leading:r=Y.defaults.leading,onError:i=Y.defaults.onError,thisArg:s}=n,{tid:a}=n;s!==void 0&&(e=e.bind(s));let o=(...l)=>N(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));}};Y.defaults={leading:false,onError:void 0};var it=Y,me=(e,t=50,n={})=>{let{defaults:r}=me,{onError:i=r.onError,trailing:s=r.trailing,thisArg:a}=n,{tid:o}=n,u=(...l)=>N(a!==void 0?e.bind(a):e,l,b(i)?f=>N(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);}};me.defaults={onError:void 0,trailing:false};var at=me,Se=(e,t=50,n={})=>n.throttle?at(e,t,n):it(e,t,n);var ne=(e=>(e.NEVER="NEVER",e.REJECT="REJECT",e.WITH_ERROR="RESOLVE_ERROR",e.WITH_UNDEFINED="RESOLVE_UNDEFINED",e))(ne||{}),se=(e=>(e.NEVER="NEVER",e.WITH_LAST="WITH_LAST",e.WITH_UNDEFINED="WITH_UNDEFINED",e))(se||{}),I=globalThis.Promise,A=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=>O(c,o?[u]:[void 0,u],void 0));};super((a,o)=>{r=u=>s(o,false,u),n=u=>s(a,true,u),b(t)?O(t,[n,r],r):q(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=>{O(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=>{O(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}};A.all=e=>new A(I.all(e));A.allSettled=e=>new A(I.allSettled(e));A.any=e=>new A(I.any(e));A.race=e=>new A(I.race(e));A.reject=e=>{let t=new A;return queueMicrotask(()=>t.reject(e)),t};A.resolve=e=>new A(I.resolve(e));A.try=(e,...t)=>new A(O(e,t,n=>A.reject(n)));A.withResolvers=()=>{let e=new A;return {promise:e,reject:e.reject,resolve:e.resolve}};var Me=A,C=Me;function oe(e={}){let t=0;e=x(oe.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,h=new Map,y=!ee(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=T=>{for(let[g,v]of T){h.delete(g);let E=a&&v.sequence<d.sequence;if(!(v.resolved||v.started&&!E))switch(v.started&&(v.getPromise=(()=>v.result)),O(r,[v.getPromise],0),u){case "WITH_UNDEFINED":v.resolve(void 0);break;case "WITH_LAST":d==null||d.then(v.resolve,v.reject);break;}}h.size||(t=0);},p=T=>{if(f=null,y){h.delete(T);let[v,E]=[...h.entries()][0]||[];return v&&E&&_(v,E)}let g=[...h.entries()];if(l===true&&e.trailing){let v=g.findIndex(([E])=>E===T);g=g.slice(0,v);}else l||(g=g.slice(0,-1));m(g),h.delete(T);},w=async(T,g)=>{var v;try{g.started=!0,d=g,f=g,(v=g.result)!=null||(g.result=C.try(g.getPromise));let E=await g.result;if(!!a&&g.sequence<d.sequence)return m([[T,g]]);g.resolve(E),i&&O(i,[E],void 0);}catch(E){switch(n&&O(n,[E],void 0),o){case "REJECT":g.reject(E);case "NEVER":break;case "RESOLVE_UNDEFINED":g.resolve(void 0);break;case "RESOLVE_ERROR":g.resolve(E);break}}p(T);},_=y?w:Se(w,s,e);return T=>{let g=Symbol("deferred-queue-item-id"),v=new C;return v.getPromise=b(T)?T:()=>T,v.started=false,v.sequence=++t,h.set(g,v),(!f||!y)&&_(g,v),v}}oe.defaults={delay:100,resolveError:"REJECT",resolveIgnored:"WITH_LAST"};var Ne=oe;function L(e,t={}){let{thisArg:n}=t;n!==void 0&&(e=e.bind(n));let r=Ne(t);return (...i)=>r(()=>e(...i))}var dt=L;function J(e=J.defaults.duration,t,n=false){let r=new C,i=s=>{let a=O(async()=>{let o=await(b(s)?s():s);return n?o!=null?o:new Error(`${J.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}J.defaults={duration:100,delayTimeoutMsg:"Timed out after"};var ve=J;function Ue(e,t){return ve(e,t,true)}var Le=Ue,B=(e,t)=>{let n=false,r=C.try(async()=>{var i,s;t=x(B.defaults,t!=null?t:{},[],(p,w)=>{switch(p){case "retry":case "retryDelay":case "retryDelayJitterMax":return w!==0&&!Q(w)}return !!te(w)});let{retry:a,retryBackOff:o,retryDelay:u,retryDelayJitter:c,retryDelayJitterMax:l}=t,f=u,d=0,h,y,m=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 ve(f+p);}if(n)break;try{y=void 0,h=await e();}catch(p){y=p!=null?p:new Error(p);}if(n||a===0||d>a)break;m=!!((s=await O((i=t.retryIf)!=null?i:y,[h,d,y],y))!=null?s:y);}while(m);return y!==void 0?I.reject(y):h});return r.onEarlyFinalize.push(()=>{n=true;}),r};B.defaults={retry:1,retryBackOff:"exponential",retryDelay:300,retryDelayJitter:true,retryDelayJitterMax:100};var ft=B,V=1e4,ie=2147483647,ae=class extends C{constructor(e,t,n,r){super(e),this.started=new Date,this._setup=()=>{var i,s,a,o;this._signals=re([(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 O((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=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}},pt=ae;function k(e,...t){var n;let r=x(k.defaults,H(e)?{timeout:e}:F(e)?e:{},[],"empty");r.timeout=Math.min(ee(r.timeout)?r.timeout:V,ie);let i=t.map(o=>b(o)?C.try(o):o),s=i.length<=1?i[0]instanceof C?i[0]:new C(i[0]):(b(C[r.batchFunc])?C[r.batchFunc]:C.all)(i),a=Le(r.timeout,r.onTimeout);return new pt(C.race([s,a]),a,r,re([(n=r.abortCtrl)==null?void 0:n.signal,r.signal].filter(Boolean)))}k.defaults={abortOnEarlyFinalize:true,batchFunc:"all",timeout:V};var ht=k,D=class extends C{};D.deferred=Ne;D.deferredCallback=dt;D.delay=ve;D.delayReject=Le;D.retry=ft;D.timeout=ht;var mt=D,ye=mt;var ce={};_e(ce,{ApiClient:()=>ue,ContentType:()=>S,FetchAs:()=>K,FetchError:()=>X,POST_METHODS:()=>He,ResolveError:()=>ne,ResolveIgnored:()=>se,TIMEOUT_FALLBACK:()=>V,TIMEOUT_MAX:()=>ie,TimeoutPromise:()=>ae,createClient:()=>qe,createPostClient:()=>Je,default:()=>Ae,defaultErrorMsgs:()=>we,executeInterceptors:()=>Be,fetch:()=>Fe,mergeOptions:()=>$e});var Be=async(e,t,n,...r)=>{var i;for(let s of [...n!=null?n:[]].filter(b)){if(t!=null&&t.aborted)break;e=(i=await O(s,[e,...r],void 0))!=null?i:e;}return e},G=Be;var ge=(e,t={})=>{let n=b(t.fetchFunc)?t.fetchFunc:ge.fetch;if(!Q(t.retry))return n(e,t);let r=0;return B(()=>(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 O(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})))};ge.fetch=globalThis.fetch;var ke=ge;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"},K=(o=>(o.arrayBuffer="arrayBuffer",o.blob="blob",o.bytes="bytes",o.formData="formData",o.json="json",o.response="response",o.text="text",o))(K||{});var X=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 vt=async(e,t="json",n)=>{var u;if(!b(n)||t==="response"){let c=e[t];return b(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 be([],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,O(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()},ze=vt,be=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 $e=(...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:[...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=$e,j=e=>U(e)?e:b(e)?[e]:[];var we=Object.freeze({aborted:"Request aborted",invalidUrl:"Invalid URL",parseFailed:"Failed to parse response as",timedout:"Request timed out",requestFailed:"Request failed with status code:"}),He=["POST","PUT","PATCH","DELETE"],Ee=(e,t={})=>{F(t)||(t={});let n,r=R({errMsgs:we},t.ignoreGlobalDefaults?void 0:Ee.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 O(o,[],void 0);return await Oe(De(d)?d:new Error(d),e,r,n)},r.onTimeout=async()=>{let d=await O(u,[],void 0);return await Oe(d!=null?d:new Error(r.errMsgs.timedout),e,r,n)},k(r,async()=>{var d,h,y,m;try{r.body=await O(r.body,[],P=>Promise.reject(P)),e=await G(e,i.signal,(d=r.interceptors)==null?void 0:d.request,r);let{body:p,errMsgs:w,validateUrl:_=!1}=r;if((h=r.signal)!=null||(r.signal=i.signal),_&&!Ie(e,!1))throw new Error(w.invalidUrl);He.includes(`${r.method}`.toUpperCase())&&!["undefined","string"].includes(typeof p)&&F(p,!0)&&a.get("content-type")===S.APPLICATION_JSON&&(r.body=JSON.stringify(r.body)),n=await ke(e,r),n=await G(n,i.signal,(y=r.interceptors)==null?void 0:y.response,e,r);let g=n==null?void 0:n.status;if(!(g>=200&&g<300)){let P=await O(()=>{var Te;return (Te=n==null?void 0:n.clone())==null?void 0:Te.json()},[],void 0);throw new Error(P,{cause:P})}let E=ze(n,s,r.onDownloadProgress);return q(E)&&(E=await E.catch(P=>Promise.reject(new Error(`${w.parseFailed} ${s}. ${P==null?void 0:P.message}`,{cause:P})))),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 Oe(p,e,r,n),Promise.reject(w)}})};Ee.defaults={abortOnEarlyFinalize:true,errMsgs:{...we},headers:new Headers,interceptors:{error:[],request:[],response:[],result:[]},timeout:6e4,validateUrl:false};var Oe=async(e,t,n,r)=>{var s,a,o;return await G(new X(((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=Ee;var qe=(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 L((...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},We=qe;var Je=(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 L((...l)=>{var y,m;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=(m=l[1])!=null?m: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},Ve=Je;var ue=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)]),W(this.apiBaseUrl)&&(u.request=[d=>(W(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,h)=>{let y=h.toLowerCase().includes("client"),m=c.includes(h)?We:Ve;return {[h]:{enumerable:false,value:m(R(i,{interceptors:u,method:y?void 0:h.toUpperCase()}),{ignoreGlobalDefaults:true,...s},a),writable:false},...d}},{});Object.defineProperties(this,f);}},Ge=ue;var Fe=M,yt=new Ge(void 0,{commonOptions:{ignoreGlobalDefaults:false},withBaseClients:false});Object.defineProperties(Fe,["delete","get","head","options","patch","post","put"].reduce((e,t)=>({[t]:{enumerable:false,value:yt[t],writable:false},...e}),{}));var Ae=Fe;var de=Ae;Object.keys(ce).forEach(e=>{["default","fetch"].includes(e)||(de[e])!=null||(de[e]=ce[e]);});var Dr=de,fe=ye;Object.keys(le).forEach(e=>{["default","PromisE"].includes(e)||(fe[e])!=null||(fe[e]=le[e]);});var pe=globalThis;(pe.superutils)!=null||(pe.superutils={});var Xe;((Xe=pe.superutils).PromisE)!=null||(Xe.PromisE=fe);
|
|
2
|
+
return Dr;})();//# sourceMappingURL=index.min.js.map
|
|
2
3
|
//# sourceMappingURL=index.min.js.map
|