@superutils/fetch 1.5.2 → 1.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -18,7 +18,7 @@ For full API reference check out the [docs page](https://alien45.github.io/super
18
18
  - [CDN / Browser](#cdn--browser)
19
19
  - [Usage](#usage)
20
20
  - [`fetch()`](#fetch): drop-in replacement for built-in `fetch()`
21
- - [`PromisE Features`](#promise-features): status, early finalization etc
21
+ - [`TimeoutPromise` Instance](#promise-features): finer control over the request
22
22
  - [`Method Specific Functions`](#methods)
23
23
  - [`fetch.get()`](#fetch-get)
24
24
  - [`fetch.get.deferred()`](#fetch-deferred): cancellable and debounced or throttled `fetch()`
@@ -67,7 +67,7 @@ OR,
67
67
 
68
68
  This will expose a global namespace with the following:
69
69
 
70
- ```javascript
70
+ ```java
71
71
  // Namespace: default export (function) from '@superutils/fetch' and all the exports as properties
72
72
  superutils.fetch
73
73
  // Namespace: default export (class) from '@superutils/promise' and all the exports as properties
@@ -77,7 +77,7 @@ const { fetch, PromisE } = superutils
77
77
 
78
78
  // Fetch usage
79
79
  fetch('url', { method: 'get', timeout: 10_000 })
80
- fetch.get()
80
+ fetch.get('url')
81
81
  fetch.createClient({ method: 'post', timeout: 30_000 }, {}, { delay: 500 })
82
82
 
83
83
  // PromisE usage
@@ -103,23 +103,23 @@ Use as a drop-in replacement to built-in `fetch()`.
103
103
  ```javascript
104
104
  import fetch from '@superutils/fetch'
105
105
 
106
- fetch('https://dummyjson.com/products/1')
106
+ fetch('[DUMMYJSON-DOT-COM]/products/1')
107
107
  .then(response => response.json())
108
108
  .then(console.log)
109
109
  ```
110
110
 
111
111
  <div id="promise-features"></div>
112
112
 
113
- ### PromisE Instance: status, early cancellation
113
+ ### `TimeoutPromise` Instance (extends `PromisE`): finer control over the request
114
114
 
115
- All fetch calls return a `PromisE` (`@superutils/promise`) instance which means they come with additional features available in `PromisE`:
115
+ All fetch calls return a `TimeoutPromise` instance from (`@superutils/promise`) which means they come with additional features available in `PromisE`:
116
116
 
117
117
  1. Status tracking: all instances come with `.pending`, `.resolved` and `.rejected` attributes that indicate the current state of the promise.
118
118
 
119
119
  ```javascript
120
120
  import fetch from '@superutils/fetch'
121
121
 
122
- const request = fetch('https://dummyjson.com/products/1')
122
+ const request = fetch('[DUMMYJSON-DOT-COM]/products/1')
123
123
 
124
124
  console.log(request.pending) // true
125
125
 
@@ -127,6 +127,8 @@ request.then(() => {
127
127
  console.log(request.resolved) // true
128
128
  console.log(request.pending) // false
129
129
  console.log(request.rejected) // false
130
+ console.log(request.aborted) // false
131
+ console.log(request.timedout) // false
130
132
  })
131
133
  ```
132
134
 
@@ -136,7 +138,7 @@ request.then(() => {
136
138
  import fetch from '@superutils/fetch'
137
139
 
138
140
  // Request that will take 5 seconds to resolve
139
- const request = fetch('https://dummyjson.com/products?delay=5000')
141
+ const request = fetch('[DUMMYJSON-DOT-COM]/products?delay=5000')
140
142
 
141
143
  request.then(result => console.log(result), console.warn)
142
144
 
@@ -150,6 +152,21 @@ request.onEarlyFinalize.push((resolved, valueOrReason) =>
150
152
  request.reject(new Error('No longer needed'))
151
153
  ```
152
154
 
155
+ 3. `abortCtrl`: an `AbortController` instance either provided in the options or created internally.
156
+
157
+ 4. `cancelAbort()`: function internally stop listening to abort signals. PS: the signal that has been passed to built-in `fetch` cannot be undone.
158
+
159
+ 5. `clearTimeout()`: function to clear timeout, effectively disabling abort on timeout.
160
+
161
+ 6. Promises:
162
+
163
+ - `data`: the fetch result promise and also an instance of `PromisE`.
164
+ - `timeout`: a promise that automatically rejects if request has not completed within provided `options.timeout` duration.
165
+
166
+ Both of these promises can be externally finalized which will result in the fetch/timeout promise to be resolved or rejected and `abortCtrl` aborted.
167
+
168
+ 7. `options`: all options provided to the fetch function
169
+
153
170
  <div id="methods"></div>
154
171
 
155
172
  ### Method Specific Functions
@@ -174,7 +191,7 @@ While `fetch()` provides access to all HTTP request methods by specifying it in
174
191
  - `fetch.post.deferred(...)`
175
192
  - `fetch.put.deferred(...)`
176
193
 
177
- All method specific functions by default return result parsed as JSON. No need for `response.json()` or `result.data.data` drilling.
194
+ All method specific functions by default return result parsed as JSON. No need for `response.json()` or "result.data.data" drilling.
178
195
 
179
196
  <div id="fetch-get"></div>
180
197
 
@@ -188,7 +205,7 @@ Equivalent to `fetch(url, { method: 'get', as: 'json' })`.
188
205
  import fetch from '@superutils/fetch'
189
206
 
190
207
  fetch
191
- .get('https://dummyjson.com/products/1')
208
+ .get('[DUMMYJSON-DOT-COM]/products/1')
192
209
  .then(product => console.log({ product }))
193
210
  ```
194
211
 
@@ -208,15 +225,13 @@ const searchProducts = fetch.get.deferred({
208
225
  })
209
226
 
210
227
  // User types 'iphone'
211
- searchProducts('https://dummyjson.com/products/search?q=iphone').then(
212
- result => {
213
- console.log('Result for "iphone":', result)
214
- },
215
- )
228
+ searchProducts('[DUMMYJSON-DOT-COM]/products/search?q=iphone').then(result => {
229
+ console.log('Result for "iphone":', result)
230
+ })
216
231
 
217
232
  // Before 300ms has passed, the user continues typing 'iphone 12'
218
233
  setTimeout(() => {
219
- searchProducts('https://dummyjson.com/products/search?q=iphone 12').then(
234
+ searchProducts('[DUMMYJSON-DOT-COM]/products/search?q=iphone 12').then(
220
235
  result => {
221
236
  console.log('Result for "iphone 12":', result)
222
237
  },
@@ -262,7 +277,7 @@ const getRandomQuote = fetch.get.deferred(
262
277
  // Ignored calls will resolve with the result of the last successful call.
263
278
  resolveIgnored: 'WITH_LAST',
264
279
  },
265
- 'https://dummyjson.com/quotes/random', // Default URL
280
+ '[DUMMYJSON-DOT-COM]/quotes/random', // Default URL
266
281
  { timeout: 3000 }, // Default fetch options
267
282
  )
268
283
 
@@ -289,7 +304,7 @@ import fetch from '@superutils/fetch'
289
304
 
290
305
  const newProduct = { title: 'Perfume Oil' }
291
306
 
292
- fetch.post('https://dummyjson.com/products/add', newProduct).then(
307
+ fetch.post('[DUMMYJSON-DOT-COM]/products/add', newProduct).then(
293
308
  createdProduct => console.log('Product created:', createdProduct),
294
309
  error => console.error('Failed to create product:', error),
295
310
  )
@@ -315,7 +330,7 @@ const saveProductThrottled = fetch.post.deferred(
315
330
  trailing: true, // Ensures the very last update is always saved
316
331
  onResult: product => console.log(`[Saved] Product: ${product.title}`),
317
332
  },
318
- 'https://dummyjson.com/products/add', // Default URL
333
+ '[DUMMYJSON-DOT-COM]/products/add', // Default URL
319
334
  )
320
335
  // Simulate a user typing quickly, triggering multiple saves.
321
336
  console.log('User starts typing...')
@@ -356,7 +371,7 @@ const requestNewToken = fetch.post.deferred(
356
371
  currentRefreshToken = refreshToken
357
372
  },
358
373
  },
359
- 'https://dummyjson.com/auth/refresh', // Default URL
374
+ '[DUMMYJSON-DOT-COM]/auth/refresh', // Default URL
360
375
  () => ({
361
376
  refreshToken: currentRefreshToken,
362
377
  expiresInMins: 30,
@@ -367,7 +382,7 @@ const requestNewToken = fetch.post.deferred(
367
382
  // First authenticate user to get the initial refresh token and then request new refresh tokens
368
383
  fetch
369
384
  .post<{ refreshToken: string }>(
370
- 'https://dummyjson.com/auth/login',
385
+ '[DUMMYJSON-DOT-COM]/auth/login',
371
386
  {
372
387
  username: 'emilys',
373
388
  password: 'emilyspass',
@@ -446,7 +461,7 @@ const interceptors = {
446
461
  // You can transform the response by returning different `Response` object or even make a completely new HTTP reuqest.
447
462
  // You can transform the response by returning different `Response` object or even make a completely new HTTP request.
448
463
  // The subsequent response interceptors will receive the returned response
449
- return fetch('https://dummyjson.com/products/1') // promise will be resolved automatically
464
+ return fetch('[DUMMYJSON-DOT-COM]/products/1') // promise will be resolved automatically
450
465
  },
451
466
  ],
452
467
  result: [
@@ -462,7 +477,7 @@ const interceptors = {
462
477
  ],
463
478
  }
464
479
  fetch
465
- .get('https://dummyjson.com/products/1', { interceptors })
480
+ .get('[DUMMYJSON-DOT-COM]/products/1', { interceptors })
466
481
  .then(product => console.log({ product }))
467
482
  ```
468
483
 
@@ -485,7 +500,7 @@ interceptors.error.push((err, url, options) => {
485
500
  })
486
501
 
487
502
  // Each time a requst is made using @superutils/fetch, the above interceptors will be executed when appropriate
488
- fetch('https://dummyjson.com/products/1').then(console.log, console.warn)
503
+ fetch('[DUMMYJSON-DOT-COM]/products/1').then(console.log, console.warn)
489
504
  ```
490
505
 
491
506
  <div id="retry"></div>
@@ -497,7 +512,7 @@ The `retry` option provides a robust mechanism to automatically re-attempt faile
497
512
  ```javascript
498
513
  import fetch from '@superutils/fetch'
499
514
 
500
- fetch.get('https://dummyjson.com/products/1', {
515
+ fetch.get('[DUMMYJSON-DOT-COM]/products/1', {
501
516
  retry: 3, // Max number of retries.
502
517
  retryBackOff: 'linear', // Backoff strategy: 'linear' or 'exponential'.
503
518
  // Delay in milliseconds.
@@ -523,7 +538,7 @@ A request can be automatically cancelled by simply providing a `timeout` duratio
523
538
  ```javascript
524
539
  import fetch from '@superutils/fetch'
525
540
 
526
- fetch.get('https://dummyjson.com/products/1', {
541
+ fetch.get('[DUMMYJSON-DOT-COM]/products/1', {
527
542
  timeout: 5000,
528
543
  })
529
544
  ```
@@ -551,7 +566,7 @@ To retrieve the response in a different format (e.g., as text, a blob, or the ra
551
566
  ```typescript
552
567
  import fetch, { FetchAs } from '@superutils/fetch'
553
568
 
554
- fetch.get('https://dummyjson.com/products/1', {
569
+ fetch.get('[DUMMYJSON-DOT-COM]/products/1', {
555
570
  as: FetchAs.text,
556
571
  })
557
572
  ```
@@ -570,11 +585,11 @@ import { createClient } from '@superutils/fetch'
570
585
  // Create a "GET" client with default headers and a 5-second timeout
571
586
  const apiClient = createClient(
572
587
  {
573
- // fixed options cannot be overridden
588
+ // fixed options (cannot be overridden)
574
589
  method: 'get',
575
590
  },
576
591
  {
577
- // default options can be overridden
592
+ // common options (can be overridden)
578
593
  headers: {
579
594
  Authorization: 'Bearer my-secret-token',
580
595
  'Content-Type': 'application/json',
@@ -582,14 +597,14 @@ const apiClient = createClient(
582
597
  timeout: 5000,
583
598
  },
584
599
  {
585
- // default defer options (can be overridden)
600
+ // defer options (can be overridden)
586
601
  delay: 300,
587
602
  retry: 2, // If request fails, retry up to two more times
588
603
  },
589
604
  )
590
605
 
591
606
  // Use it just like the standard fetch
592
- apiClient('https://dummyjson.com/products/1', {
607
+ apiClient('[DUMMYJSON-DOT-COM]/products/1', {
593
608
  // The 'method' property cannot be overridden as it is used in the fixed options when creating the client.
594
609
  // In TypeScript, the compiler will not allow this property.
595
610
  // In Javascript, it will simply be ignored.
@@ -600,14 +615,14 @@ apiClient('https://dummyjson.com/products/1', {
600
615
  // create a deferred client using "apiClient"
601
616
  const deferredClient = apiClient.deferred(
602
617
  { retry: 0 }, // disable retrying by overriding the `retry` defer option
603
- 'https://dummyjson.com/products/1',
618
+ '[DUMMYJSON-DOT-COM]/products/1',
604
619
  { timeout: 3000 },
605
620
  )
606
621
  deferredClient({ timeout: 10000 }) // timeout is overridden by individual request
607
622
  .then(console.log, console.warn)
608
623
  ```
609
624
 
610
- ### `createPostClient(mandatoryOptions, commonOptions, commonDeferOptions)`: Reusable Post-like Clients
625
+ ### `createPostClient(fixedOptions, commonOptions, commonDeferOptions)`: Reusable Post-like Clients
611
626
 
612
627
  While `createClient()` is versatile enough for any HTTP method, `createPostClient()` is specifically designed for methods that require a request body, such as `DELETE`, `PATCH`, `POST`, and `PUT`. If a method is not provided, it defaults to `POST`. The generated client accepts an additional second parameter (`data`) for the request payload.
613
628
 
@@ -627,7 +642,7 @@ const postClient = createPostClient(
627
642
 
628
643
  // Invoking `postClient()` automatically applies the pre-configured options
629
644
  postClient(
630
- 'https://dummyjson.com/products/add',
645
+ '[DUMMYJSON-DOT-COM]/products/add',
631
646
  { title: 'New Product' }, // data/body
632
647
  {}, // other options
633
648
  ).then(console.log)
@@ -638,7 +653,7 @@ const updateProduct = postClient.deferred(
638
653
  delay: 300, // debounce duration
639
654
  onResult: console.log, // prints only successful results
640
655
  },
641
- 'https://dummyjson.com/products/add',
656
+ '[DUMMYJSON-DOT-COM]/products/add',
642
657
  {
643
658
  method: 'patch',
644
659
  timeout: 3000,
@@ -1,2 +1,2 @@
1
- this.superutils=this.superutils||{};this.superutils.fetch=(function(){'use strict';var Je=Object.defineProperty;var Te=(e,t)=>{for(var s in t)Je(e,s,{get:t[s],enumerable:true});};var ue={};Te(ue,{PromisE:()=>x,PromisEBase:()=>je,ResolveError:()=>oe,ResolveIgnored:()=>ie,TIMEOUT_FALLBACK:()=>K,TIMEOUT_MAX:()=>$,TimeoutPromise:()=>le,default:()=>Ee,deferred:()=>ae,deferredCallback:()=>z,delay:()=>W,delayReject:()=>Ne,retry:()=>k,timeout:()=>B});var T=(e,t=true)=>!!e&&typeof e=="object"&&(!t||[Object.prototype,null].includes(Object.getPrototypeOf(e)));var N=e=>Array.isArray(e);var Ke=e=>Number.isInteger(e);var V=e=>typeof e=="number"&&!Number.isNaN(e)&&Number.isFinite(e),te=e=>Ke(e)&&e>0,re=e=>V(e)&&e>0,ne=(e,t=false,s=false)=>{if(e==null)return true;switch(typeof e){case "number":return !V(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 n=typeof e=="object"&&Object.getPrototypeOf(e);return n===Object.prototype||n===null?t?!Object.getOwnPropertyNames(e).length:!Object.keys(e).length:s};var y=e=>typeof e=="function";var Ae=e=>e instanceof URL,Ce=(e,t=true,s=["localhost"])=>{if(!e)return false;try{if(typeof e!="string"&&!Ae(e))return !1;let n=Ae(e)?e:new URL(e);if(!t)return !0;if(!(s.includes(n.hostname)||n.host.split(".").length>1))return !1;let o=`${e}`;return o.endsWith(n.hostname)&&(o+="/"),n.href===o}catch(n){return false}};var ge=e=>e instanceof Error,J=e=>e instanceof Promise;var Ge=e=>typeof e=="symbol";var b=(e,t,s)=>{try{let n=y(e)?e(...y(t)?t():t):e;return J(n)?n.catch(r=>y(s)?s(r):s):n}catch(n){return y(s)?s(n):s}},M=b;new Date().getTime();var Ze=(e,t=true,s=true)=>M(()=>[...s&&Object.getOwnPropertySymbols(e)||[],...t?Object.keys(e).sort():Object.keys(e)],[],[]),Ye=Ze,q=(e,t="null")=>JSON.parse(M(JSON.stringify,[e],t)),C=(e,t,s,n=false,r=true)=>{let o=T(t,false)||y(t)?t:{};if(!T(e,false)&&!y(t))return o;let a=new Set(s!=null?s:[]),i=Ye(e,true,true).filter(d=>!a.has(d));for(let d of i){let c=d,l=e[c];if(o.hasOwnProperty(c)&&(n==="empty"?!ne(o[c]):y(n)?!n(c,o[c],l):true))continue;if([void 0,null,1/0,NaN].includes(l)||!T(l,false)){o[c]=l;continue}o[c]=(()=>{switch(Object.getPrototypeOf(l)){case Array.prototype:return q(l,"[]");case ArrayBuffer.prototype:return l.slice(0);case Date.prototype:return new Date(l.getTime());case Map.prototype:return new Map(q(Array.from(l),"[]"));case RegExp.prototype:return new RegExp(l);case Set.prototype:return new Set(q(Array.from(l)));case Uint8Array.prototype:return new Uint8Array([...l]);case URL.prototype:return new URL(l);}if(Ge(c)||!r)return q(l);let f=[...a].map(O=>String(O).startsWith(String(c).concat("."))&&String(O).split(String(c).concat("."))[1]).filter(Boolean);return f.length?C(l,o[c],f,n,r):q(l)})();}return o};var se=(e,t=0)=>N(e)?Array.from(new Set(e.flat(t))):[],ee=(e,t=50,s={})=>{let{leading:n=ee.defaults.leading,onError:r=ee.defaults.onError,thisArg:o}=s,{tid:a}=s;o!==void 0&&(e=e.bind(o));let i=(...l)=>M(e,l,r),d=null,c=n==="global";return (...l)=>{clearTimeout(a),a=setTimeout(()=>{d!==l&&i(...l),d=c?true:null;},t),!(!n||d)&&(d=l,i(...l));}};ee.defaults={leading:false,onError:void 0};var et=ee,be=(e,t=50,s={})=>{let{defaults:n}=be,{onError:r=n.onError,trailing:o=n.trailing,thisArg:a}=s,{tid:i}=s,d=(...l)=>M(a!==void 0?e.bind(a):e,l,y(r)?u=>M(r,[u],void 0):void 0),c=null;return (...l)=>{if(i){c=l;return}i=setTimeout(()=>{if(i=void 0,!o)return;let u=c;c=null,u&&u!==l&&d(...u);},t),d(...l);}};be.defaults={onError:void 0,trailing:false};var tt=be,xe=(e,t=50,s={})=>s.throttle?tt(e,t,s):et(e,t,s);var A=class extends Promise{constructor(t){let s,n;super((r,o)=>{n=a=>{o(a),this._state=2,this.onFinalize.forEach(i=>b(i,[void 0,a],void 0));},s=a=>{r(a),this._state=1,this.onFinalize.forEach(i=>b(i,[a,void 0],void 0));},y(t)?b(t,[s,n],n):J(t)?t.then(s,n):t!==void 0&&s(t);}),this._state=0,this.onEarlyFinalize=[],this.onFinalize=[],this.resolve=r=>{var o,a;this.pending&&((o=this._resolve)==null||o.call(this,r),(a=this.onEarlyFinalize)==null||a.forEach(i=>{b(i,[true,r],void 0);}));},this.reject=r=>{var o,a;this.pending&&((o=this._reject)==null||o.call(this,r),(a=this.onEarlyFinalize)==null||a.forEach(i=>{b(i,[false,r],void 0);}));},this._resolve=s,this._reject=n;}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(globalThis.Promise.all(e));A.allSettled=e=>new A(globalThis.Promise.allSettled(e));A.any=e=>new A(globalThis.Promise.any(e));A.race=e=>new A(globalThis.Promise.race(e));A.reject=e=>{let t=new A;return queueMicrotask(()=>t.reject(e)),t};A.resolve=e=>new A(globalThis.Promise.resolve(e));A.try=(e,...t)=>new A(s=>s(b(e,t,n=>globalThis.Promise.reject(n))));A.withResolvers=()=>{let e=new A;return {promise:e,reject:e.reject,resolve:e.resolve}};var je=A,I=je,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||{});function ae(e={}){let t=0;e=C(ae.defaults,e,[],"empty");let{onError:s,onIgnore:n,onResult:r}=e,{delay:o=0,ignoreStale:a,resolveError:i,resolveIgnored:d,thisArg:c,throttle:l}=e,u=null,p,f=new Map,O=!re(o);c!==void 0&&(s=s==null?void 0:s.bind(c),n=n==null?void 0:n.bind(c),r=r==null?void 0:r.bind(c));let m=w=>{for(let[g,h]of w){f.delete(g);let F=a&&h.sequence<p.sequence;if(!(h.resolved||h.started&&!F))switch(h.started&&(h.getPromise=(()=>h.result)),b(n,[h.getPromise],0),d){case "WITH_UNDEFINED":h.resolve(void 0);break;case "WITH_LAST":p==null||p.then(h.resolve,h.reject);break;}}f.size||(t=0);},v=w=>{if(u=null,O){f.delete(w);let[h,F]=[...f.entries()][0]||[];return h&&F&&E(h,F)}let g=[...f.entries()];if(l===true&&e.trailing){let h=g.findIndex(([F])=>F===w);g=g.slice(0,h);}else l||(g=g.slice(0,-1));m(g),f.delete(w);},_=async(w,g)=>{var h;try{g.started=!0,p=g,u=g,(h=g.result)!=null||(g.result=I.try(g.getPromise));let F=await g.result;if(!!a&&g.sequence<p.sequence)return m([[w,g]]);g.resolve(F),r&&b(r,[F],void 0);}catch(F){switch(s&&b(s,[F],void 0),i){case "REJECT":g.reject(F);case "NEVER":break;case "RESOLVE_UNDEFINED":g.resolve(void 0);break;case "RESOLVE_ERROR":g.resolve(F);break}}v(w);},E=O?_:xe(_,o,e);return w=>{let g=Symbol("deferred-queue-item-id"),h=new I;return h.getPromise=y(w)?w:()=>w,h.started=false,h.sequence=++t,f.set(g,h),(!u||!O)&&E(g,h),h}}ae.defaults={delay:100,resolveError:"REJECT",resolveIgnored:"WITH_LAST"};var Me=ae;function z(e,t={}){let{thisArg:s}=t;s!==void 0&&(e=e.bind(s));let n=Me(t);return (...r)=>n(()=>e(...r))}var ot=z;function W(e=W.defaults.duration,t,s=false){let n=new I,r=o=>{let a=b(async()=>{let i=await(y(o)?o():o);return s?i!=null?i:new Error(`${W.defaults.delayTimeoutMsg} ${e}ms`):i!=null?i:e},[],i=>Promise.reject(i));s?a.then(n.reject,n.reject):n.resolve(a);};return n.timeoutId=setTimeout(()=>r(t),e),n.pause=()=>clearTimeout(n.timeoutId),n.catch(()=>{}).finally(()=>n.pause()),n.onEarlyFinalize.push(()=>n.pause()),n}W.defaults={duration:100,delayTimeoutMsg:"Timed out after"};var Oe=W;function Ne(e,t){return Oe(e,t,true)}var Le=Ne,k=async(e,t)=>{var s,n;t=C(k.defaults,t!=null?t:{},[],(O,m)=>{switch(O){case "retry":case "retryDelay":case "retryDelayJitterMax":return m!==0&&!te(m)}return !!ne(m)});let{retry:r,retryBackOff:o,retryDelay:a,retryDelayJitter:i,retryDelayJitterMax:d}=t,c=a,l=-1,u,p,f=false;do{l++,o==="exponential"&&l>1&&(c*=2),i&&(c+=Math.floor(Math.random()*d)),l>0&&await Oe(c);try{p=void 0,u=await e();}catch(O){p=O;}if(r===0||l>=r)break;f=!!((n=await b((s=t.retryIf)!=null?s:p,[u,l,p],p))!=null?n:p);}while(f);return p!==void 0?Promise.reject(p):u};k.defaults={retry:1,retryBackOff:"exponential",retryDelay:300,retryDelayJitter:true,retryDelayJitterMax:100};var it=k,K=1e4,$=2147483647,le=class extends I{constructor(e,t,s,n){super(e),this.started=new Date,this._setup=()=>{var r,o,a,i;this._signals=se([(o=(r=this.options)==null?void 0:r.abortCtrl)==null?void 0:o.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),(i=this._signals)==null||i.forEach(d=>d==null?void 0:d.addEventListener("abort",this._handleAbort));},this._handleAbort=async()=>{var r,o;if(!((r=this._signals)!=null&&r.length)||!this.pending)return;let i=await b((o=this.options)==null?void 0:o.onAbort,[],void 0);i!=null||(i=new Error(`Aborted after ${new Date().getTime()-this.started.getTime()}ms`)),(i.name)!=null||(i.name="AbortError"),this.reject(i);},this._handleEarlyFinalize=()=>{var r,o,a,i;(r=this.options)!=null&&r.abortOnEarlyFinalize&&((i=(a=(o=this.options)==null?void 0:o.abortCtrl)==null?void 0:a.abort)==null||i.call(a));},this._handleFinalize=((r,o)=>{var a,i,d,c,l;this.cancelAbort(),this.clearTimeout(),!(!this.timeout.rejected&&!((a=this._signals)!=null&&a.find(u=>u==null?void 0:u.aborted)))&&((c=(d=(i=this.options)==null?void 0:i.abortCtrl)==null?void 0:d.signal)==null?void 0:c.aborted)===false&&((l=this.options)==null||l.abortCtrl.abort(o));}),this.data=e,this.options=T(s)?s:{},this.timeout=t,this._signals=n,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}},at=le;function B(e,...t){var s;let n=C(B.defaults,V(e)?{timeout:e}:T(e)?e:{},[],"empty");n.timeout=Math.min(re(n.timeout)?n.timeout:K,$);let r=t.map(i=>y(i)?I.try(i):i),o=r.length<=1?r[0]instanceof I?r[0]:new I(r[0]):(y(I[n.batchFunc])?I[n.batchFunc]:I.all)(r),a=Le(n.timeout,n.onTimeout);return new at(I.race([o,a]),a,n,se([(s=n.abortCtrl)==null?void 0:s.signal,n.signal].filter(Boolean)))}B.defaults={abortOnEarlyFinalize:true,batchFunc:"all",timeout:K};var lt=B,x=class extends I{};x.deferred=Me;x.deferredCallback=ot;x.delay=Oe;x.delayReject=Le;x.retry=it;x.timeout=lt;var ut=x,Ee=ut;var fe={};Te(fe,{ContentType:()=>G,FetchAs:()=>we,FetchError:()=>Z,ResolveError:()=>oe,ResolveIgnored:()=>ie,TIMEOUT_FALLBACK:()=>K,TIMEOUT_MAX:()=>$,TimeoutPromise:()=>le,createClient:()=>$e,createPostClient:()=>Be,default:()=>Fe,executeInterceptors:()=>Ue,fetch:()=>S,mergeOptions:()=>ke});var Ue=async(e,t,s,...n)=>{var r;for(let o of [...s!=null?s:[]].filter(y)){if(t!=null&&t.aborted)break;e=(r=await b(o,[e,...n],void 0))!=null?r:e;}return e},X=Ue;var ct=(e,t={})=>{let s=y(t.fetchFunc)?t.fetchFunc:globalThis.fetch;if(!te(t.retry))return s(e,t);let n=0;return k(()=>(n++,s(e,t)),{...t,retryIf:async(o,a,i)=>{var u;let{abortCtrl:d,retryIf:c,signal:l}=t;return d!=null&&d.signal.aborted||l!=null&&l.aborted?false:!!((u=await b(c,[o,a,i],void 0))!=null?u:i||!(o!=null&&o.ok))}}).catch(o=>Promise.reject(new Error(`Request failed after attempt #${n}`,{cause:o})))},ze=ct;var ke=(...e)=>e.reduce((t,s)=>{var a;s=T(s)?s:{};let{headers:n,interceptors:r={}}=t,{interceptors:o={}}=s;return s.headers&&new Headers(s.headers).forEach((i,d)=>n.set(d,i)),{...t,...s,errMsgs:C(s.errMsgs,t.errMsgs,[],"empty"),headers:n,interceptors:{error:[...D(r==null?void 0:r.error),...D(o==null?void 0:o.error)],request:[...D(r==null?void 0:r.request),...D(o==null?void 0:o.request)],response:[...D(r==null?void 0:r.response),...D(o==null?void 0:o.response)],result:[...D(r==null?void 0:r.result),...D(o==null?void 0:o.result)]},timeout:(a=s.timeout)!=null?a:t.timeout}},{headers:new Headers}),j=ke,D=e=>N(e)?e:y(e)?[e]:[];var G={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"},we=(i=>(i.arrayBuffer="arrayBuffer",i.blob="blob",i.bytes="bytes",i.formData="formData",i.json="json",i.response="response",i.text="text",i))(we||{});var Z=class e extends Error{constructor(t,s){super(t,{cause:s.cause}),this.name="FetchError",Object.defineProperties(this,{clone:{get(){return n=>new e(n,{cause:s.cause,options:s.options,response:s.response,url:s.url})}},options:{get(){return s.options}},response:{get(){return s.response}},url:{get(){return s.url}}});}};var ce=(e,t={})=>{T(t)||(t={});let s=false;t.fromPostClient&&(delete t.fromPostClient,s=true);let n,r=j({abortOnEarlyFinalize:ce.defaults.abortOnEarlyFinalize,errMsgs:ce.defaults.errMsgs,timeout:$,validateUrl:false},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:o,as:a,headers:i,onAbort:d,onTimeout:c}=r;return r.onAbort=async()=>{var O,m,v,_,E,w;let f=(w=(E=(v=await b(d,[],void 0))!=null?v:(m=(O=r.abortCtrl)==null?void 0:O.signal)==null?void 0:m.reason)!=null?E:(_=r.signal)==null?void 0:_.reason)!=null?w:r.errMsgs.aborted;return ge(f)&&f.name==="AbortError"&&(f.message=["This operation was aborted"].includes(f.message)?r.errMsgs.aborted:f.message),await _e(ge(f)?f:new Error(f),e,r,n)},r.onTimeout=async()=>{let f=await b(c,[],void 0);return await _e(f!=null?f:new Error(r.errMsgs.timedout),e,r,n)},B(r,async()=>{var f,O,m,v,_;try{e=await X(e,o.signal,(f=r.interceptors)==null?void 0:f.request,r);let{body:E,errMsgs:w,validateUrl:g=!1}=r;if((O=r.signal)!=null||(r.signal=o.signal),g&&!Ce(e,!1))throw new Error(w.invalidUrl);if(s){let P=i.get("content-type");P||(i.set("content-type",G.APPLICATION_JSON),P=G.APPLICATION_JSON),["delete","patch","post","put"].includes(`${r.method}`.toLowerCase())&&!["undefined","string"].includes(typeof E)&&T(E,!0)&&P===G.APPLICATION_JSON&&(r.body=JSON.stringify(y(E)?b(E,[],void 0):E));}n=await ze(e,r),n=await X(n,o.signal,(m=r.interceptors)==null?void 0:m.response,e,r);let h=(v=n==null?void 0:n.status)!=null?v:0;if(!(h>=200&&h<300)){let P=await b(()=>n.json(),[],void 0);throw new Error((P==null?void 0:P.message)||`${w.requestFailed} ${h}`,{cause:P})}let ve=n[a],U=y(ve)?ve.bind(n)():n;return J(U)&&(U=await U.catch(P=>Promise.reject(new Error(`${w.parseFailed} ${a}. ${P==null?void 0:P.message}`,{cause:P})))),U=await X(U,o.signal,(_=r.interceptors)==null?void 0:_.result,e,r),U}catch(E){let w=E;return w=await _e(E,e,r,n),Promise.reject(w)}})};ce.defaults={abortOnEarlyFinalize:true,errMsgs:{aborted:"Request aborted",invalidUrl:"Invalid URL",parseFailed:"Failed to parse response as",timedout:"Request timed out",requestFailed:"Request failed with status code:"},headers:new Headers,interceptors:{error:[],request:[],response:[],result:[]},timeout:6e4,validateUrl:false};var _e=async(e,t,s,n)=>{var o,a,i;return await X(new Z((o=e==null?void 0:e.message)!=null?o:e,{cause:(a=e==null?void 0:e.cause)!=null?a:e,response:n,options:s,url:t}),void 0,(i=s.interceptors)==null?void 0:i.error,t,s)},R=ce;var $e=(e,t,s)=>{function n(r,o){let a=j(R.defaults,t,o,e);return (a.as)!=null||(a.as="json"),R(r,a)}return n.deferred=(r,o,a)=>{let i;return z((...c)=>{var u,f;let l=(u=j(R.defaults,t,a,o===void 0?c[1]:c[0],e))!=null?u:{};return (l.as)!=null||(l.as="json"),(f=i==null?void 0:i.abort)==null||f.call(i),i=new AbortController,R(o!=null?o:c[0],l)},{...s,...r})},n},de=$e;var Be=(e,t,s)=>{function n(r,o,a){let i=j(R.defaults,t,a,e);return (i.as)!=null||(i.as="json"),i.body=o,(i.method)!=null||(i.method="post"),i.fromPostClient=true,R(r,i)}return n.deferred=(r,o,a,i)=>{let d;return z((...l)=>{var p,O,m;o!==void 0&&l.splice(0,0,o),a!==void 0&&l.splice(1,0,a);let u=(p=j(R.defaults,t,i,l[2],e))!=null?p:{};return (u.as)!=null||(u.as="json"),(O=d==null?void 0:d.abort)==null||O.call(d),d=new AbortController,u.body=(m=l[1])!=null?m:u.body,(u.method)!=null||(u.method="post"),u.fromPostClient=true,R(l[0],u)},{...s,...r})},n},Y=Be;var L={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=L.delete;S.get=L.get;S.head=L.head;S.options=L.options;S.patch=L.patch;S.post=L.post;S.put=L.put;var Fe=S;var pe=Fe;Object.keys(fe).forEach(e=>{["default","fetch"].includes(e)||(pe[e])!=null||(pe[e]=fe[e]);});var ur=pe,he=Ee;Object.keys(ue).forEach(e=>{["default","PromisE"].includes(e)||(he[e])!=null||(he[e]=ue[e]);});var me=globalThis;(me.superutils)!=null||(me.superutils={});var He;((He=me.superutils).PromisE)!=null||(He.PromisE=he);return ur;})();//# sourceMappingURL=index.min.js.map
1
+ this.superutils=this.superutils||{};this.superutils.fetch=(function(){'use strict';var Je=Object.defineProperty;var Te=(e,t)=>{for(var s in t)Je(e,s,{get:t[s],enumerable:true});};var ue={};Te(ue,{PromisE:()=>x,PromisEBase:()=>je,ResolveError:()=>oe,ResolveIgnored:()=>ie,TIMEOUT_FALLBACK:()=>K,TIMEOUT_MAX:()=>$,TimeoutPromise:()=>le,default:()=>Ee,deferred:()=>ae,deferredCallback:()=>z,delay:()=>W,delayReject:()=>Ne,retry:()=>k,timeout:()=>B});var T=(e,t=true)=>!!e&&typeof e=="object"&&(!t||[Object.prototype,null].includes(Object.getPrototypeOf(e)));var N=e=>Array.isArray(e);var Ke=e=>Number.isInteger(e);var V=e=>typeof e=="number"&&!Number.isNaN(e)&&Number.isFinite(e),te=e=>Ke(e)&&e>0,re=e=>V(e)&&e>0,ne=(e,t=false,s=false)=>{if(e==null)return true;switch(typeof e){case "number":return !V(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 n=typeof e=="object"&&Object.getPrototypeOf(e);return n===Object.prototype||n===null?t?!Object.getOwnPropertyNames(e).length:!Object.keys(e).length:s};var g=e=>typeof e=="function";var Ae=e=>e instanceof URL,Ce=(e,t=true,s=["localhost"])=>{if(!e)return false;try{if(typeof e!="string"&&!Ae(e))return !1;let n=Ae(e)?e:new URL(e);if(!t)return !0;if(!(s.includes(n.hostname)||n.host.split(".").length>1))return !1;let o=`${e}`;return o.endsWith(n.hostname)&&(o+="/"),n.href===o}catch(n){return false}};var ge=e=>e instanceof Error,J=e=>e instanceof Promise;var Ge=e=>typeof e=="symbol";var b=(e,t,s)=>{try{let n=g(e)?e(...g(t)?t():t):e;return J(n)?n.catch(r=>g(s)?s(r):s):n}catch(n){return g(s)?s(n):s}},M=b;new Date().getTime();var Ze=(e,t=true,s=true)=>M(()=>[...s&&Object.getOwnPropertySymbols(e)||[],...t?Object.keys(e).sort():Object.keys(e)],[],[]),Ye=Ze,q=(e,t="null")=>JSON.parse(M(JSON.stringify,[e],t)),C=(e,t,s,n=false,r=true)=>{let o=T(t,false)||g(t)?t:{};if(!T(e,false)&&!g(t))return o;let a=new Set(s!=null?s:[]),i=Ye(e,true,true).filter(d=>!a.has(d));for(let d of i){let c=d,l=e[c];if(o.hasOwnProperty(c)&&(n==="empty"?!ne(o[c]):g(n)?!n(c,o[c],l):true))continue;if([void 0,null,1/0,NaN].includes(l)||!T(l,false)){o[c]=l;continue}o[c]=(()=>{switch(Object.getPrototypeOf(l)){case Array.prototype:return q(l,"[]");case ArrayBuffer.prototype:return l.slice(0);case Date.prototype:return new Date(l.getTime());case Map.prototype:return new Map(q(Array.from(l),"[]"));case RegExp.prototype:return new RegExp(l);case Set.prototype:return new Set(q(Array.from(l)));case Uint8Array.prototype:return new Uint8Array([...l]);case URL.prototype:return new URL(l);}if(Ge(c)||!r)return q(l);let f=[...a].map(O=>String(O).startsWith(String(c).concat("."))&&String(O).split(String(c).concat("."))[1]).filter(Boolean);return f.length?C(l,o[c],f,n,r):q(l)})();}return o};var se=(e,t=0)=>N(e)?Array.from(new Set(e.flat(t))):[],ee=(e,t=50,s={})=>{let{leading:n=ee.defaults.leading,onError:r=ee.defaults.onError,thisArg:o}=s,{tid:a}=s;o!==void 0&&(e=e.bind(o));let i=(...l)=>M(e,l,r),d=null,c=n==="global";return (...l)=>{clearTimeout(a),a=setTimeout(()=>{d!==l&&i(...l),d=c?true:null;},t),!(!n||d)&&(d=l,i(...l));}};ee.defaults={leading:false,onError:void 0};var et=ee,be=(e,t=50,s={})=>{let{defaults:n}=be,{onError:r=n.onError,trailing:o=n.trailing,thisArg:a}=s,{tid:i}=s,d=(...l)=>M(a!==void 0?e.bind(a):e,l,g(r)?u=>M(r,[u],void 0):void 0),c=null;return (...l)=>{if(i){c=l;return}i=setTimeout(()=>{if(i=void 0,!o)return;let u=c;c=null,u&&u!==l&&d(...u);},t),d(...l);}};be.defaults={onError:void 0,trailing:false};var tt=be,xe=(e,t=50,s={})=>s.throttle?tt(e,t,s):et(e,t,s);var A=class extends Promise{constructor(t){let s,n;super((r,o)=>{n=a=>{o(a),this._state=2,this.onFinalize.forEach(i=>b(i,[void 0,a],void 0));},s=a=>{r(a),this._state=1,this.onFinalize.forEach(i=>b(i,[a,void 0],void 0));},g(t)?b(t,[s,n],n):J(t)?t.then(s,n):t!==void 0&&s(t);}),this._state=0,this.onEarlyFinalize=[],this.onFinalize=[],this.resolve=r=>{var o,a;this.pending&&((o=this._resolve)==null||o.call(this,r),(a=this.onEarlyFinalize)==null||a.forEach(i=>{b(i,[true,r],void 0);}));},this.reject=r=>{var o,a;this.pending&&((o=this._reject)==null||o.call(this,r),(a=this.onEarlyFinalize)==null||a.forEach(i=>{b(i,[false,r],void 0);}));},this._resolve=s,this._reject=n;}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(globalThis.Promise.all(e));A.allSettled=e=>new A(globalThis.Promise.allSettled(e));A.any=e=>new A(globalThis.Promise.any(e));A.race=e=>new A(globalThis.Promise.race(e));A.reject=e=>{let t=new A;return queueMicrotask(()=>t.reject(e)),t};A.resolve=e=>new A(globalThis.Promise.resolve(e));A.try=(e,...t)=>new A(s=>s(b(e,t,n=>globalThis.Promise.reject(n))));A.withResolvers=()=>{let e=new A;return {promise:e,reject:e.reject,resolve:e.resolve}};var je=A,I=je,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||{});function ae(e={}){let t=0;e=C(ae.defaults,e,[],"empty");let{onError:s,onIgnore:n,onResult:r}=e,{delay:o=0,ignoreStale:a,resolveError:i,resolveIgnored:d,thisArg:c,throttle:l}=e,u=null,p,f=new Map,O=!re(o);c!==void 0&&(s=s==null?void 0:s.bind(c),n=n==null?void 0:n.bind(c),r=r==null?void 0:r.bind(c));let m=E=>{for(let[y,h]of E){f.delete(y);let F=a&&h.sequence<p.sequence;if(!(h.resolved||h.started&&!F))switch(h.started&&(h.getPromise=(()=>h.result)),b(n,[h.getPromise],0),d){case "WITH_UNDEFINED":h.resolve(void 0);break;case "WITH_LAST":p==null||p.then(h.resolve,h.reject);break;}}f.size||(t=0);},v=E=>{if(u=null,O){f.delete(E);let[h,F]=[...f.entries()][0]||[];return h&&F&&w(h,F)}let y=[...f.entries()];if(l===true&&e.trailing){let h=y.findIndex(([F])=>F===E);y=y.slice(0,h);}else l||(y=y.slice(0,-1));m(y),f.delete(E);},_=async(E,y)=>{var h;try{y.started=!0,p=y,u=y,(h=y.result)!=null||(y.result=I.try(y.getPromise));let F=await y.result;if(!!a&&y.sequence<p.sequence)return m([[E,y]]);y.resolve(F),r&&b(r,[F],void 0);}catch(F){switch(s&&b(s,[F],void 0),i){case "REJECT":y.reject(F);case "NEVER":break;case "RESOLVE_UNDEFINED":y.resolve(void 0);break;case "RESOLVE_ERROR":y.resolve(F);break}}v(E);},w=O?_:xe(_,o,e);return E=>{let y=Symbol("deferred-queue-item-id"),h=new I;return h.getPromise=g(E)?E:()=>E,h.started=false,h.sequence=++t,f.set(y,h),(!u||!O)&&w(y,h),h}}ae.defaults={delay:100,resolveError:"REJECT",resolveIgnored:"WITH_LAST"};var Me=ae;function z(e,t={}){let{thisArg:s}=t;s!==void 0&&(e=e.bind(s));let n=Me(t);return (...r)=>n(()=>e(...r))}var ot=z;function W(e=W.defaults.duration,t,s=false){let n=new I,r=o=>{let a=b(async()=>{let i=await(g(o)?o():o);return s?i!=null?i:new Error(`${W.defaults.delayTimeoutMsg} ${e}ms`):i!=null?i:e},[],i=>Promise.reject(i));s?a.then(n.reject,n.reject):n.resolve(a);};return n.timeoutId=setTimeout(()=>r(t),e),n.pause=()=>clearTimeout(n.timeoutId),n.catch(()=>{}).finally(()=>n.pause()),n.onEarlyFinalize.push(()=>n.pause()),n}W.defaults={duration:100,delayTimeoutMsg:"Timed out after"};var Oe=W;function Ne(e,t){return Oe(e,t,true)}var Le=Ne,k=async(e,t)=>{var s,n;t=C(k.defaults,t!=null?t:{},[],(O,m)=>{switch(O){case "retry":case "retryDelay":case "retryDelayJitterMax":return m!==0&&!te(m)}return !!ne(m)});let{retry:r,retryBackOff:o,retryDelay:a,retryDelayJitter:i,retryDelayJitterMax:d}=t,c=a,l=-1,u,p,f=false;do{l++,o==="exponential"&&l>1&&(c*=2),i&&(c+=Math.floor(Math.random()*d)),l>0&&await Oe(c);try{p=void 0,u=await e();}catch(O){p=O;}if(r===0||l>=r)break;f=!!((n=await b((s=t.retryIf)!=null?s:p,[u,l,p],p))!=null?n:p);}while(f);return p!==void 0?Promise.reject(p):u};k.defaults={retry:1,retryBackOff:"exponential",retryDelay:300,retryDelayJitter:true,retryDelayJitterMax:100};var it=k,K=1e4,$=2147483647,le=class extends I{constructor(e,t,s,n){super(e),this.started=new Date,this._setup=()=>{var r,o,a,i;this._signals=se([(o=(r=this.options)==null?void 0:r.abortCtrl)==null?void 0:o.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),(i=this._signals)==null||i.forEach(d=>d==null?void 0:d.addEventListener("abort",this._handleAbort));},this._handleAbort=async()=>{var r,o;if(!((r=this._signals)!=null&&r.length)||!this.pending)return;let i=await b((o=this.options)==null?void 0:o.onAbort,[],void 0);i!=null||(i=new Error(`Aborted after ${new Date().getTime()-this.started.getTime()}ms`)),(i.name)!=null||(i.name="AbortError"),this.reject(i);},this._handleEarlyFinalize=()=>{var r,o,a,i;(r=this.options)!=null&&r.abortOnEarlyFinalize&&((i=(a=(o=this.options)==null?void 0:o.abortCtrl)==null?void 0:a.abort)==null||i.call(a));},this._handleFinalize=((r,o)=>{var a,i,d,c,l;this.cancelAbort(),this.clearTimeout(),!(!this.timeout.rejected&&!((a=this._signals)!=null&&a.find(u=>u==null?void 0:u.aborted)))&&((c=(d=(i=this.options)==null?void 0:i.abortCtrl)==null?void 0:d.signal)==null?void 0:c.aborted)===false&&((l=this.options)==null||l.abortCtrl.abort(o));}),this.data=e,this.options=T(s)?s:{},this.timeout=t,this._signals=n,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}},at=le;function B(e,...t){var s;let n=C(B.defaults,V(e)?{timeout:e}:T(e)?e:{},[],"empty");n.timeout=Math.min(re(n.timeout)?n.timeout:K,$);let r=t.map(i=>g(i)?I.try(i):i),o=r.length<=1?r[0]instanceof I?r[0]:new I(r[0]):(g(I[n.batchFunc])?I[n.batchFunc]:I.all)(r),a=Le(n.timeout,n.onTimeout);return new at(I.race([o,a]),a,n,se([(s=n.abortCtrl)==null?void 0:s.signal,n.signal].filter(Boolean)))}B.defaults={abortOnEarlyFinalize:true,batchFunc:"all",timeout:K};var lt=B,x=class extends I{};x.deferred=Me;x.deferredCallback=ot;x.delay=Oe;x.delayReject=Le;x.retry=it;x.timeout=lt;var ut=x,Ee=ut;var fe={};Te(fe,{ContentType:()=>G,FetchAs:()=>we,FetchError:()=>Z,ResolveError:()=>oe,ResolveIgnored:()=>ie,TIMEOUT_FALLBACK:()=>K,TIMEOUT_MAX:()=>$,TimeoutPromise:()=>le,createClient:()=>$e,createPostClient:()=>Be,default:()=>Fe,executeInterceptors:()=>Ue,fetch:()=>S,mergeOptions:()=>ke});var Ue=async(e,t,s,...n)=>{var r;for(let o of [...s!=null?s:[]].filter(g)){if(t!=null&&t.aborted)break;e=(r=await b(o,[e,...n],void 0))!=null?r:e;}return e},X=Ue;var ct=(e,t={})=>{let s=g(t.fetchFunc)?t.fetchFunc:globalThis.fetch;if(!te(t.retry))return s(e,t);let n=0;return k(()=>(n++,s(e,t)),{...t,retryIf:async(o,a,i)=>{var u;let{abortCtrl:d,retryIf:c,signal:l}=t;return d!=null&&d.signal.aborted||l!=null&&l.aborted?false:!!((u=await b(c,[o,a,i],void 0))!=null?u:i||!(o!=null&&o.ok))}}).catch(o=>Promise.reject(new Error(`Request failed after attempt #${n}`,{cause:o})))},ze=ct;var ke=(...e)=>e.reduce((t,s)=>{var a;s=T(s)?s:{};let{headers:n,interceptors:r={}}=t,{interceptors:o={}}=s;return s.headers&&new Headers(s.headers).forEach((i,d)=>n.set(d,i)),{...t,...s,errMsgs:C(s.errMsgs,t.errMsgs,[],"empty"),headers:n,interceptors:{error:[...D(r==null?void 0:r.error),...D(o==null?void 0:o.error)],request:[...D(r==null?void 0:r.request),...D(o==null?void 0:o.request)],response:[...D(r==null?void 0:r.response),...D(o==null?void 0:o.response)],result:[...D(r==null?void 0:r.result),...D(o==null?void 0:o.result)]},timeout:(a=s.timeout)!=null?a:t.timeout}},{headers:new Headers}),j=ke,D=e=>N(e)?e:g(e)?[e]:[];var G={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"},we=(i=>(i.arrayBuffer="arrayBuffer",i.blob="blob",i.bytes="bytes",i.formData="formData",i.json="json",i.response="response",i.text="text",i))(we||{});var Z=class e extends Error{constructor(t,s){super(t,{cause:s.cause}),this.name="FetchError",Object.defineProperties(this,{clone:{get(){return n=>new e(n,{cause:s.cause,options:s.options,response:s.response,url:s.url})}},options:{get(){return s.options}},response:{get(){return s.response}},url:{get(){return s.url}}});}};var ce=(e,t={})=>{T(t)||(t={});let s=false;t.fromPostClient&&(delete t.fromPostClient,s=true);let n,r=j({abortOnEarlyFinalize:ce.defaults.abortOnEarlyFinalize,errMsgs:ce.defaults.errMsgs,timeout:$,validateUrl:false},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:o,as:a,headers:i,onAbort:d,onTimeout:c}=r;return r.onAbort=async()=>{var O,m,v,_,w,E;let f=(E=(w=(v=await b(d,[],void 0))!=null?v:(m=(O=r.abortCtrl)==null?void 0:O.signal)==null?void 0:m.reason)!=null?w:(_=r.signal)==null?void 0:_.reason)!=null?E:r.errMsgs.aborted;return ge(f)&&f.name==="AbortError"&&(f.message=["This operation was aborted"].includes(f.message)?r.errMsgs.aborted:f.message),await _e(ge(f)?f:new Error(f),e,r,n)},r.onTimeout=async()=>{let f=await b(c,[],void 0);return await _e(f!=null?f:new Error(r.errMsgs.timedout),e,r,n)},B(r,async()=>{var f,O,m,v,_;try{r.body=await b(r.body,[],P=>Promise.reject(P)),e=await X(e,o.signal,(f=r.interceptors)==null?void 0:f.request,r);let{body:w,errMsgs:E,validateUrl:y=!1}=r;if((O=r.signal)!=null||(r.signal=o.signal),y&&!Ce(e,!1))throw new Error(E.invalidUrl);if(s){let P=i.get("content-type");P||(i.set("content-type",G.APPLICATION_JSON),P=G.APPLICATION_JSON),["delete","patch","post","put"].includes(`${r.method}`.toLowerCase())&&!["undefined","string"].includes(typeof w)&&T(w,!0)&&P===G.APPLICATION_JSON&&(r.body=JSON.stringify(r.body));}n=await ze(e,r),n=await X(n,o.signal,(m=r.interceptors)==null?void 0:m.response,e,r);let h=(v=n==null?void 0:n.status)!=null?v:0;if(!(h>=200&&h<300)){let P=await b(()=>n.json(),[],void 0);throw new Error((P==null?void 0:P.message)||`${E.requestFailed} ${h}`,{cause:P})}let ve=n[a],U=g(ve)?ve.bind(n)():n;return J(U)&&(U=await U.catch(P=>Promise.reject(new Error(`${E.parseFailed} ${a}. ${P==null?void 0:P.message}`,{cause:P})))),U=await X(U,o.signal,(_=r.interceptors)==null?void 0:_.result,e,r),U}catch(w){let E=w;return E=await _e(w,e,r,n),Promise.reject(E)}})};ce.defaults={abortOnEarlyFinalize:true,errMsgs:{aborted:"Request aborted",invalidUrl:"Invalid URL",parseFailed:"Failed to parse response as",timedout:"Request timed out",requestFailed:"Request failed with status code:"},headers:new Headers,interceptors:{error:[],request:[],response:[],result:[]},timeout:6e4,validateUrl:false};var _e=async(e,t,s,n)=>{var o,a,i;return await X(new Z((o=e==null?void 0:e.message)!=null?o:e,{cause:(a=e==null?void 0:e.cause)!=null?a:e,response:n,options:s,url:t}),void 0,(i=s.interceptors)==null?void 0:i.error,t,s)},R=ce;var $e=(e,t,s)=>{function n(r,o){let a=j(R.defaults,t,o,e);return (a.as)!=null||(a.as="json"),R(r,a)}return n.deferred=(r,o,a)=>{let i;return z((...c)=>{var u,f;let l=(u=j(R.defaults,t,a,o===void 0?c[1]:c[0],e))!=null?u:{};return (l.as)!=null||(l.as="json"),(f=i==null?void 0:i.abort)==null||f.call(i),i=new AbortController,R(o!=null?o:c[0],l)},{...s,...r})},n},de=$e;var Be=(e,t,s)=>{function n(r,o,a){let i=j(R.defaults,t,a,e);return (i.as)!=null||(i.as="json"),i.body=o!=null?o:i.body,(i.method)!=null||(i.method="post"),i.fromPostClient=true,R(r,i)}return n.deferred=(r,o,a,i)=>{let d;return z((...l)=>{var p,O,m;o!==void 0&&l.splice(0,0,o),a!==void 0&&l.splice(1,0,a);let u=(p=j(R.defaults,t,i,l[2],e))!=null?p:{};return (u.as)!=null||(u.as="json"),(O=d==null?void 0:d.abort)==null||O.call(d),d=new AbortController,u.body=(m=l[1])!=null?m:u.body,(u.method)!=null||(u.method="post"),u.fromPostClient=true,R(l[0],u)},{...s,...r})},n},Y=Be;var L={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=L.delete;S.get=L.get;S.head=L.head;S.options=L.options;S.patch=L.patch;S.post=L.post;S.put=L.put;var Fe=S;var pe=Fe;Object.keys(fe).forEach(e=>{["default","fetch"].includes(e)||(pe[e])!=null||(pe[e]=fe[e]);});var ur=pe,he=Ee;Object.keys(ue).forEach(e=>{["default","PromisE"].includes(e)||(he[e])!=null||(he[e]=ue[e]);});var me=globalThis;(me.superutils)!=null||(me.superutils={});var He;((He=me.superutils).PromisE)!=null||(He.PromisE=he);return ur;})();//# sourceMappingURL=index.min.js.map
2
2
  //# sourceMappingURL=index.min.js.map