@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 +98 -78
- package/dist/browser/index.min.js +2 -1
- package/dist/browser/index.min.js.map +1 -1
- package/dist/index.cjs +111 -35
- package/dist/index.d.cts +83 -184
- package/dist/index.d.ts +83 -184
- package/dist/index.js +108 -35
- 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,124 @@ 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
|
+
'[DUMMYJSON-DOT-COM]', // 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 {
|
|
637
|
-
|
|
638
|
-
//
|
|
639
|
-
const
|
|
640
|
-
|
|
641
|
-
|
|
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
|
-
//
|
|
657
|
-
const
|
|
673
|
+
// Use them independently
|
|
674
|
+
const result = await authApi.post(
|
|
675
|
+
'/login',
|
|
658
676
|
{
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
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
|
-
|
|
672
|
-
|
|
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
|