@superutils/fetch 1.3.0 → 1.4.2
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 +3 -3
- package/dist/index.d.ts +102 -60
- package/dist/index.js +90 -103
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -12,9 +12,9 @@ For full API reference check out the [docs page](https://alien45.github.io/super
|
|
|
12
12
|
|
|
13
13
|
## Table of Contents
|
|
14
14
|
|
|
15
|
-
- Features
|
|
16
|
-
- Installation
|
|
17
|
-
- Usage
|
|
15
|
+
- [Features](#features)
|
|
16
|
+
- [Installation](#installation)
|
|
17
|
+
- [Usage](#usage)
|
|
18
18
|
- [`fetch()`](#fetch): drop-in replacement for built-in `fetch()`
|
|
19
19
|
- [`PromisE Features`](#promise-features): status, early finalization etc
|
|
20
20
|
- [`Method Specific Functions`](#methods)
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _superutils_promise from '@superutils/promise';
|
|
2
|
-
import { RetryOptions, RetryIfFunc, DeferredAsyncOptions, IPromisE_Timeout } from '@superutils/promise';
|
|
2
|
+
import { RetryOptions, RetryIfFunc, TimeoutOptions, DeferredAsyncOptions, IPromisE_Timeout } from '@superutils/promise';
|
|
3
3
|
export { DeferredAsyncOptions, ResolveError, ResolveIgnored } from '@superutils/promise';
|
|
4
4
|
import { ValueOrPromise } from '@superutils/core';
|
|
5
5
|
|
|
@@ -258,18 +258,16 @@ type FetchCustomOptions = {
|
|
|
258
258
|
*
|
|
259
259
|
* Default: `globalThis.fetch`
|
|
260
260
|
*/
|
|
261
|
-
fetchFunc?:
|
|
261
|
+
fetchFunc?: FetchFunc;
|
|
262
262
|
errMsgs?: FetchErrMsgs;
|
|
263
263
|
/**
|
|
264
264
|
* Interceptor/transformer callback executed at different stages of the request.
|
|
265
265
|
* See {@link FetchInterceptors} for more details.
|
|
266
266
|
*/
|
|
267
267
|
interceptors?: FetchInterceptors;
|
|
268
|
-
/** Request timeout in milliseconds */
|
|
269
|
-
timeout?: number;
|
|
270
268
|
/** Whether to validate URL before making the request. Default: `true` */
|
|
271
269
|
validateUrl?: boolean;
|
|
272
|
-
} & FetchRetryOptions
|
|
270
|
+
} & FetchRetryOptions & TimeoutOptions<[]>;
|
|
273
271
|
/** Default args */
|
|
274
272
|
type FetchDeferredArgs<OmitMethod extends boolean = false> = [
|
|
275
273
|
url?: string | URL,
|
|
@@ -287,6 +285,7 @@ type FetchErrMsgs = {
|
|
|
287
285
|
/** Error message to be used when request fails */
|
|
288
286
|
requestFailed?: string;
|
|
289
287
|
};
|
|
288
|
+
type FetchFunc = (...args: FetchArgs) => Promise<Response>;
|
|
290
289
|
/**
|
|
291
290
|
* Fetch request options
|
|
292
291
|
*/
|
|
@@ -461,13 +460,17 @@ declare class FetchError extends Error {
|
|
|
461
460
|
* .then(console.log, console.warn)
|
|
462
461
|
* ```
|
|
463
462
|
*/
|
|
464
|
-
declare const createClient: <FixedOpts extends FetchOptions | undefined, CommonOpts extends ExcludeOptions<FixedOpts> | undefined, FixedAs extends FetchAs | undefined = FetchAsFromOptions<FixedOpts, undefined
|
|
463
|
+
declare const createClient: <FixedOpts extends FetchOptions | undefined, CommonOpts extends ExcludeOptions<FixedOpts> | undefined, FixedAs extends FetchAs | undefined = FetchAsFromOptions<FixedOpts, undefined>, CommonDelay extends number = number>(
|
|
465
464
|
/** Mandatory fetch options that cannot be overriden by individual request */
|
|
466
465
|
fixedOptions?: FixedOpts,
|
|
467
466
|
/** Common fetch options that can be overriden by individual request */
|
|
468
|
-
commonOptions?: FetchOptions & CommonOpts, commonDeferOptions?: DeferredAsyncOptions<unknown,
|
|
469
|
-
<T, TOptions extends ExcludeOptions<FixedOpts> | undefined = ExcludeOptions<FixedOpts> | undefined, TAs extends FetchAs = FixedAs extends FetchAs ? FixedAs : FetchAsFromOptions<TOptions, FetchAsFromOptions<CommonOpts>>, TReturn = FetchResult<T>[TAs]>(url: FetchArgs[0], options?: TOptions): _superutils_promise.IPromisE_Timeout<TReturn
|
|
470
|
-
|
|
467
|
+
commonOptions?: FetchOptions & CommonOpts, commonDeferOptions?: DeferredAsyncOptions<unknown, CommonDelay>) => {
|
|
468
|
+
<T = unknown, TOptions extends ExcludeOptions<FixedOpts> | undefined = ExcludeOptions<FixedOpts> | undefined, TAs extends FetchAs = FixedAs extends FetchAs ? FixedAs : FetchAsFromOptions<TOptions, FetchAsFromOptions<CommonOpts>>, TReturn = FetchResult<T>[TAs]>(url: FetchArgs[0], options?: TOptions): Omit<_superutils_promise.IPromisE_Timeout<TReturn>, "abortCtrl"> & {
|
|
469
|
+
abortCtrl: AbortController;
|
|
470
|
+
};
|
|
471
|
+
deferred<ThisArg, Delay extends CommonDelay | number, DefaultUrl extends FetchArgs[0] | undefined = string | URL | undefined, DefaultOptions extends ExcludeOptions<FixedOpts> | undefined = ExcludeOptions<FixedOpts> | undefined>(deferOptions?: DeferredAsyncOptions<ThisArg, Delay>, defaultUrl?: DefaultUrl, defaultOptions?: DefaultOptions): <TResult = unknown, TOptions_1 extends ExcludeOptions<FixedOpts> | undefined = ExcludeOptions<FixedOpts> | undefined, TAs_1 extends FetchAs = FixedAs extends FetchAs ? FixedAs : FetchAsFromOptions<TOptions_1, FetchAsFromOptions<CommonOpts>>, TReturn_1 = FetchResult<TResult>[TAs_1]>(...args: DefaultUrl extends undefined ? [url: FetchArgs[0], options?: TOptions_1] : [options?: TOptions_1]) => Omit<_superutils_promise.IPromisE_Timeout<TReturn_1>, "abortCtrl"> & {
|
|
472
|
+
abortCtrl: AbortController;
|
|
473
|
+
};
|
|
471
474
|
};
|
|
472
475
|
|
|
473
476
|
/**
|
|
@@ -516,13 +519,17 @@ commonOptions?: FetchOptions & CommonOpts, commonDeferOptions?: DeferredAsyncOpt
|
|
|
516
519
|
* updateProduct({ title: 'New title 2' }) // executed
|
|
517
520
|
* ```
|
|
518
521
|
*/
|
|
519
|
-
declare const createPostClient: <FixedOpts extends PostOptions | undefined, CommonOpts extends ExcludePostOptions<FixedOpts> | undefined, FixedAs extends FetchAs | undefined = FetchAsFromOptions<FixedOpts, undefined
|
|
522
|
+
declare const createPostClient: <FixedOpts extends PostOptions | undefined, CommonOpts extends ExcludePostOptions<FixedOpts> | undefined, FixedAs extends FetchAs | undefined = FetchAsFromOptions<FixedOpts, undefined>, CommonDelay extends number = number>(
|
|
520
523
|
/** Mandatory fetch options that cannot be overriden by individual request */
|
|
521
524
|
fixedOptions?: FixedOpts,
|
|
522
525
|
/** Common fetch options that can be overriden by individual request */
|
|
523
|
-
commonOptions?: PostOptions & CommonOpts, commonDeferOptions?: DeferredAsyncOptions<unknown,
|
|
524
|
-
<T = unknown, TOptions extends ExcludePostOptions<FixedOpts> | undefined = ExcludePostOptions<FixedOpts> | undefined, TAs extends FetchAs = FixedAs extends FetchAs ? FixedAs : FetchAsFromOptions<TOptions, FetchAsFromOptions<CommonOpts>>, TReturn = FetchResult<T>[TAs]>(url: PostArgs[0], data?: PostArgs[1], options?: TOptions): IPromisE_Timeout<TReturn
|
|
525
|
-
|
|
526
|
+
commonOptions?: PostOptions & CommonOpts, commonDeferOptions?: DeferredAsyncOptions<unknown, CommonDelay>) => {
|
|
527
|
+
<T = unknown, TOptions extends ExcludePostOptions<FixedOpts> | undefined = ExcludePostOptions<FixedOpts> | undefined, TAs extends FetchAs = FixedAs extends FetchAs ? FixedAs : FetchAsFromOptions<TOptions, FetchAsFromOptions<CommonOpts>>, TReturn = FetchResult<T>[TAs]>(url: PostArgs[0], data?: PostArgs[1], options?: TOptions): Omit<_superutils_promise.IPromisE_Timeout<TReturn>, "abortCtrl"> & {
|
|
528
|
+
abortCtrl: AbortController;
|
|
529
|
+
};
|
|
530
|
+
deferred<ThisArg, Delay extends CommonDelay | number, DefaultOptions extends ExcludePostOptions<FixedOpts> | undefined = ExcludePostOptions<FixedOpts> | undefined, DefaultUrl extends PostArgs[0] | undefined = string | URL | undefined, DefaultData extends PostArgs[1] = PostBody | (() => PostBody) | undefined>(deferOptions?: DeferredAsyncOptions<ThisArg, Delay>, defaultUrl?: DefaultUrl, defaultData?: DefaultData, defaultOptions?: DefaultOptions): <TResult = unknown, TOptions_1 extends ExcludePostOptions<FixedOpts> | undefined = ExcludePostOptions<FixedOpts> | undefined, TAs_1 extends FetchAs = FixedAs extends FetchAs ? FixedAs : FetchAsFromOptions<TOptions_1, FetchAsFromOptions<CommonOpts>>, TReturn_1 = FetchResult<TResult>[TAs_1]>(...args: PostDeferredCbArgs<DefaultUrl, DefaultData, TOptions_1>) => Omit<_superutils_promise.IPromisE_Timeout<TReturn_1>, "abortCtrl"> & {
|
|
531
|
+
abortCtrl: AbortController;
|
|
532
|
+
};
|
|
526
533
|
};
|
|
527
534
|
|
|
528
535
|
/** Node.js setTimeout limit is 2147483647 (2^31-1). Larger values fire immediately. */
|
|
@@ -546,7 +553,10 @@ declare const MAX_TIMEOUT = 2147483647;
|
|
|
546
553
|
* ```
|
|
547
554
|
*/
|
|
548
555
|
declare const fetch: {
|
|
549
|
-
<T, TOptions extends FetchOptions = FetchOptions, TAs extends FetchAs = TOptions["as"] extends FetchAs ? TOptions["as"] : FetchAs.json, TReturn = FetchResult<T>[TAs]>(url: string | URL, options?: FetchOptions & TOptions): IPromisE_Timeout<TReturn
|
|
556
|
+
<T, TOptions extends FetchOptions = FetchOptions, TAs extends FetchAs = TOptions["as"] extends FetchAs ? TOptions["as"] : FetchAs.json, TReturn = FetchResult<T>[TAs]>(url: string | URL, options?: FetchOptions & TOptions): Omit<IPromisE_Timeout<TReturn>, "abortCtrl"> & {
|
|
557
|
+
/** An `AbortController` instance to control the request. */
|
|
558
|
+
abortCtrl: AbortController;
|
|
559
|
+
};
|
|
550
560
|
/** Default fetch options */
|
|
551
561
|
defaults: FetchOptionsDefault;
|
|
552
562
|
};
|
|
@@ -567,19 +577,23 @@ declare const fetch: {
|
|
|
567
577
|
* ```
|
|
568
578
|
*/
|
|
569
579
|
declare const fetchResponse: {
|
|
570
|
-
<T = Response, TOptions extends FetchOptions = FetchOptions, TAs extends FetchAs = TOptions["as"] extends FetchAs ? TOptions["as"] : FetchAs.response, TReturn = FetchResult<T>[TAs]>(url: FetchArgs[0], options?: Parameters<typeof fetch<T, TOptions, TAs, TReturn>>[1]): IPromisE_Timeout<TReturn
|
|
580
|
+
<T = Response, TOptions extends FetchOptions = FetchOptions, TAs extends FetchAs = TOptions["as"] extends FetchAs ? TOptions["as"] : FetchAs.response, TReturn = FetchResult<T>[TAs]>(url: FetchArgs[0], options?: Parameters<typeof fetch<T, TOptions, TAs, TReturn>>[1]): Omit<_superutils_promise.IPromisE_Timeout<TReturn>, "abortCtrl"> & {
|
|
581
|
+
abortCtrl: AbortController;
|
|
582
|
+
};
|
|
571
583
|
defaults: FetchOptionsDefault;
|
|
572
584
|
};
|
|
573
585
|
|
|
574
586
|
declare const methods: {
|
|
575
587
|
/** Make HTTP requests with method GET */
|
|
576
588
|
get: {
|
|
577
|
-
<T, TOptions extends ({
|
|
589
|
+
<T = unknown, TOptions extends ({
|
|
578
590
|
headers?: HeadersInit | undefined;
|
|
579
591
|
} & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = ({
|
|
580
592
|
headers?: HeadersInit | undefined;
|
|
581
|
-
} & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<T>[TAs]>(url: FetchArgs[0], options?: TOptions | undefined): _superutils_promise.IPromisE_Timeout<TReturn
|
|
582
|
-
|
|
593
|
+
} & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<T>[TAs]>(url: FetchArgs[0], options?: TOptions | undefined): Omit<_superutils_promise.IPromisE_Timeout<TReturn>, "abortCtrl"> & {
|
|
594
|
+
abortCtrl: AbortController;
|
|
595
|
+
};
|
|
596
|
+
deferred<ThisArg, Delay extends number, DefaultUrl extends FetchArgs[0] | undefined = string | URL | undefined, DefaultOptions extends ({
|
|
583
597
|
headers?: HeadersInit | undefined;
|
|
584
598
|
} & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = ({
|
|
585
599
|
headers?: HeadersInit | undefined;
|
|
@@ -587,16 +601,20 @@ declare const methods: {
|
|
|
587
601
|
headers?: HeadersInit | undefined;
|
|
588
602
|
} & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = ({
|
|
589
603
|
headers?: HeadersInit | undefined;
|
|
590
|
-
} & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<TResult>[TAs]>(...args: DefaultUrl extends undefined ? [url: string | URL, options?: TOptions | undefined] : [options?: TOptions | undefined]) => _superutils_promise.IPromisE_Timeout<TReturn
|
|
604
|
+
} & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<TResult>[TAs]>(...args: DefaultUrl extends undefined ? [url: string | URL, options?: TOptions | undefined] : [options?: TOptions | undefined]) => Omit<_superutils_promise.IPromisE_Timeout<TReturn>, "abortCtrl"> & {
|
|
605
|
+
abortCtrl: AbortController;
|
|
606
|
+
};
|
|
591
607
|
};
|
|
592
608
|
/** Make HTTP requests with method HEAD */
|
|
593
609
|
head: {
|
|
594
|
-
<T, TOptions extends ({
|
|
610
|
+
<T = unknown, TOptions extends ({
|
|
595
611
|
headers?: HeadersInit | undefined;
|
|
596
612
|
} & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = ({
|
|
597
613
|
headers?: HeadersInit | undefined;
|
|
598
|
-
} & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<T>[TAs]>(url: FetchArgs[0], options?: TOptions | undefined): _superutils_promise.IPromisE_Timeout<TReturn
|
|
599
|
-
|
|
614
|
+
} & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<T>[TAs]>(url: FetchArgs[0], options?: TOptions | undefined): Omit<_superutils_promise.IPromisE_Timeout<TReturn>, "abortCtrl"> & {
|
|
615
|
+
abortCtrl: AbortController;
|
|
616
|
+
};
|
|
617
|
+
deferred<ThisArg, Delay extends number, DefaultUrl extends FetchArgs[0] | undefined = string | URL | undefined, DefaultOptions extends ({
|
|
600
618
|
headers?: HeadersInit | undefined;
|
|
601
619
|
} & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = ({
|
|
602
620
|
headers?: HeadersInit | undefined;
|
|
@@ -604,16 +622,20 @@ declare const methods: {
|
|
|
604
622
|
headers?: HeadersInit | undefined;
|
|
605
623
|
} & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = ({
|
|
606
624
|
headers?: HeadersInit | undefined;
|
|
607
|
-
} & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<TResult>[TAs]>(...args: DefaultUrl extends undefined ? [url: string | URL, options?: TOptions | undefined] : [options?: TOptions | undefined]) => _superutils_promise.IPromisE_Timeout<TReturn
|
|
625
|
+
} & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<TResult>[TAs]>(...args: DefaultUrl extends undefined ? [url: string | URL, options?: TOptions | undefined] : [options?: TOptions | undefined]) => Omit<_superutils_promise.IPromisE_Timeout<TReturn>, "abortCtrl"> & {
|
|
626
|
+
abortCtrl: AbortController;
|
|
627
|
+
};
|
|
608
628
|
};
|
|
609
629
|
/** Make HTTP requests with method OPTIONS */
|
|
610
630
|
options: {
|
|
611
|
-
<T, TOptions extends ({
|
|
631
|
+
<T = unknown, TOptions extends ({
|
|
612
632
|
headers?: HeadersInit | undefined;
|
|
613
633
|
} & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = ({
|
|
614
634
|
headers?: HeadersInit | undefined;
|
|
615
|
-
} & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<T>[TAs]>(url: FetchArgs[0], options?: TOptions | undefined): _superutils_promise.IPromisE_Timeout<TReturn
|
|
616
|
-
|
|
635
|
+
} & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<T>[TAs]>(url: FetchArgs[0], options?: TOptions | undefined): Omit<_superutils_promise.IPromisE_Timeout<TReturn>, "abortCtrl"> & {
|
|
636
|
+
abortCtrl: AbortController;
|
|
637
|
+
};
|
|
638
|
+
deferred<ThisArg, Delay extends number, DefaultUrl extends FetchArgs[0] | undefined = string | URL | undefined, DefaultOptions extends ({
|
|
617
639
|
headers?: HeadersInit | undefined;
|
|
618
640
|
} & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = ({
|
|
619
641
|
headers?: HeadersInit | undefined;
|
|
@@ -621,7 +643,9 @@ declare const methods: {
|
|
|
621
643
|
headers?: HeadersInit | undefined;
|
|
622
644
|
} & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = ({
|
|
623
645
|
headers?: HeadersInit | undefined;
|
|
624
|
-
} & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<TResult>[TAs]>(...args: DefaultUrl extends undefined ? [url: string | URL, options?: TOptions | undefined] : [options?: TOptions | undefined]) => _superutils_promise.IPromisE_Timeout<TReturn
|
|
646
|
+
} & Omit<FetchOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<TResult>[TAs]>(...args: DefaultUrl extends undefined ? [url: string | URL, options?: TOptions | undefined] : [options?: TOptions | undefined]) => Omit<_superutils_promise.IPromisE_Timeout<TReturn>, "abortCtrl"> & {
|
|
647
|
+
abortCtrl: AbortController;
|
|
648
|
+
};
|
|
625
649
|
};
|
|
626
650
|
/** Make HTTP requests with method DELETE */
|
|
627
651
|
delete: {
|
|
@@ -629,14 +653,20 @@ declare const methods: {
|
|
|
629
653
|
headers?: HeadersInit | undefined;
|
|
630
654
|
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = ({
|
|
631
655
|
headers?: HeadersInit | undefined;
|
|
632
|
-
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<T>[TAs]>(url: PostArgs[0], data?: PostArgs[1], options?: TOptions | undefined): _superutils_promise.IPromisE_Timeout<TReturn
|
|
633
|
-
|
|
656
|
+
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<T>[TAs]>(url: PostArgs[0], data?: PostArgs[1], options?: TOptions | undefined): Omit<_superutils_promise.IPromisE_Timeout<TReturn>, "abortCtrl"> & {
|
|
657
|
+
abortCtrl: AbortController;
|
|
658
|
+
};
|
|
659
|
+
deferred<ThisArg, Delay extends number, DefaultOptions extends ({
|
|
634
660
|
headers?: HeadersInit | undefined;
|
|
635
|
-
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined =
|
|
661
|
+
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = ({
|
|
636
662
|
headers?: HeadersInit | undefined;
|
|
637
|
-
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = {
|
|
663
|
+
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, DefaultUrl extends PostArgs[0] | undefined = string | URL | undefined, DefaultData extends PostArgs[1] = PostBody | (() => PostBody) | undefined>(deferOptions?: _superutils_promise.DeferredAsyncOptions<ThisArg, Delay>, defaultUrl?: DefaultUrl | undefined, defaultData?: DefaultData | undefined, defaultOptions?: DefaultOptions | undefined): <TResult = unknown, TOptions extends ({
|
|
638
664
|
headers?: HeadersInit | undefined;
|
|
639
|
-
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never
|
|
665
|
+
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = ({
|
|
666
|
+
headers?: HeadersInit | undefined;
|
|
667
|
+
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<TResult>[TAs]>(...args: PostDeferredCbArgs<DefaultUrl, DefaultData, TOptions, [url: string | URL, data: PostBody | (() => PostBody), options: PostOptions]>) => Omit<_superutils_promise.IPromisE_Timeout<TReturn>, "abortCtrl"> & {
|
|
668
|
+
abortCtrl: AbortController;
|
|
669
|
+
};
|
|
640
670
|
};
|
|
641
671
|
/** Make HTTP requests with method PATCH */
|
|
642
672
|
patch: {
|
|
@@ -644,14 +674,20 @@ declare const methods: {
|
|
|
644
674
|
headers?: HeadersInit | undefined;
|
|
645
675
|
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = ({
|
|
646
676
|
headers?: HeadersInit | undefined;
|
|
647
|
-
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<T>[TAs]>(url: PostArgs[0], data?: PostArgs[1], options?: TOptions | undefined): _superutils_promise.IPromisE_Timeout<TReturn
|
|
648
|
-
|
|
677
|
+
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<T>[TAs]>(url: PostArgs[0], data?: PostArgs[1], options?: TOptions | undefined): Omit<_superutils_promise.IPromisE_Timeout<TReturn>, "abortCtrl"> & {
|
|
678
|
+
abortCtrl: AbortController;
|
|
679
|
+
};
|
|
680
|
+
deferred<ThisArg, Delay extends number, DefaultOptions extends ({
|
|
649
681
|
headers?: HeadersInit | undefined;
|
|
650
|
-
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined =
|
|
682
|
+
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = ({
|
|
651
683
|
headers?: HeadersInit | undefined;
|
|
652
|
-
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = {
|
|
684
|
+
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, DefaultUrl extends PostArgs[0] | undefined = string | URL | undefined, DefaultData extends PostArgs[1] = PostBody | (() => PostBody) | undefined>(deferOptions?: _superutils_promise.DeferredAsyncOptions<ThisArg, Delay>, defaultUrl?: DefaultUrl | undefined, defaultData?: DefaultData | undefined, defaultOptions?: DefaultOptions | undefined): <TResult = unknown, TOptions extends ({
|
|
653
685
|
headers?: HeadersInit | undefined;
|
|
654
|
-
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never
|
|
686
|
+
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = ({
|
|
687
|
+
headers?: HeadersInit | undefined;
|
|
688
|
+
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<TResult>[TAs]>(...args: PostDeferredCbArgs<DefaultUrl, DefaultData, TOptions, [url: string | URL, data: PostBody | (() => PostBody), options: PostOptions]>) => Omit<_superutils_promise.IPromisE_Timeout<TReturn>, "abortCtrl"> & {
|
|
689
|
+
abortCtrl: AbortController;
|
|
690
|
+
};
|
|
655
691
|
};
|
|
656
692
|
/** Make HTTP requests with method POST */
|
|
657
693
|
post: {
|
|
@@ -659,14 +695,20 @@ declare const methods: {
|
|
|
659
695
|
headers?: HeadersInit | undefined;
|
|
660
696
|
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = ({
|
|
661
697
|
headers?: HeadersInit | undefined;
|
|
662
|
-
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<T>[TAs]>(url: PostArgs[0], data?: PostArgs[1], options?: TOptions | undefined): _superutils_promise.IPromisE_Timeout<TReturn
|
|
663
|
-
|
|
698
|
+
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<T>[TAs]>(url: PostArgs[0], data?: PostArgs[1], options?: TOptions | undefined): Omit<_superutils_promise.IPromisE_Timeout<TReturn>, "abortCtrl"> & {
|
|
699
|
+
abortCtrl: AbortController;
|
|
700
|
+
};
|
|
701
|
+
deferred<ThisArg, Delay extends number, DefaultOptions extends ({
|
|
664
702
|
headers?: HeadersInit | undefined;
|
|
665
|
-
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined =
|
|
703
|
+
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = ({
|
|
666
704
|
headers?: HeadersInit | undefined;
|
|
667
|
-
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = {
|
|
705
|
+
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, DefaultUrl extends PostArgs[0] | undefined = string | URL | undefined, DefaultData extends PostArgs[1] = PostBody | (() => PostBody) | undefined>(deferOptions?: _superutils_promise.DeferredAsyncOptions<ThisArg, Delay>, defaultUrl?: DefaultUrl | undefined, defaultData?: DefaultData | undefined, defaultOptions?: DefaultOptions | undefined): <TResult = unknown, TOptions extends ({
|
|
668
706
|
headers?: HeadersInit | undefined;
|
|
669
|
-
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never
|
|
707
|
+
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = ({
|
|
708
|
+
headers?: HeadersInit | undefined;
|
|
709
|
+
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<TResult>[TAs]>(...args: PostDeferredCbArgs<DefaultUrl, DefaultData, TOptions, [url: string | URL, data: PostBody | (() => PostBody), options: PostOptions]>) => Omit<_superutils_promise.IPromisE_Timeout<TReturn>, "abortCtrl"> & {
|
|
710
|
+
abortCtrl: AbortController;
|
|
711
|
+
};
|
|
670
712
|
};
|
|
671
713
|
/** Make HTTP requests with method PUT */
|
|
672
714
|
put: {
|
|
@@ -674,14 +716,20 @@ declare const methods: {
|
|
|
674
716
|
headers?: HeadersInit | undefined;
|
|
675
717
|
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = ({
|
|
676
718
|
headers?: HeadersInit | undefined;
|
|
677
|
-
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<T>[TAs]>(url: PostArgs[0], data?: PostArgs[1], options?: TOptions | undefined): _superutils_promise.IPromisE_Timeout<TReturn
|
|
678
|
-
|
|
719
|
+
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<T>[TAs]>(url: PostArgs[0], data?: PostArgs[1], options?: TOptions | undefined): Omit<_superutils_promise.IPromisE_Timeout<TReturn>, "abortCtrl"> & {
|
|
720
|
+
abortCtrl: AbortController;
|
|
721
|
+
};
|
|
722
|
+
deferred<ThisArg, Delay extends number, DefaultOptions extends ({
|
|
679
723
|
headers?: HeadersInit | undefined;
|
|
680
|
-
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined =
|
|
724
|
+
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = ({
|
|
681
725
|
headers?: HeadersInit | undefined;
|
|
682
|
-
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = {
|
|
726
|
+
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, DefaultUrl extends PostArgs[0] | undefined = string | URL | undefined, DefaultData extends PostArgs[1] = PostBody | (() => PostBody) | undefined>(deferOptions?: _superutils_promise.DeferredAsyncOptions<ThisArg, Delay>, defaultUrl?: DefaultUrl | undefined, defaultData?: DefaultData | undefined, defaultOptions?: DefaultOptions | undefined): <TResult = unknown, TOptions extends ({
|
|
683
727
|
headers?: HeadersInit | undefined;
|
|
684
|
-
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never
|
|
728
|
+
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined = ({
|
|
729
|
+
headers?: HeadersInit | undefined;
|
|
730
|
+
} & Omit<PostOptions, "headers" | "method"> & Partial<Record<"method", never>>) | undefined, TAs extends FetchAs = FetchAsFromOptions<TOptions, FetchAs.json>, TReturn = FetchResult<TResult>[TAs]>(...args: PostDeferredCbArgs<DefaultUrl, DefaultData, TOptions, [url: string | URL, data: PostBody | (() => PostBody), options: PostOptions]>) => Omit<_superutils_promise.IPromisE_Timeout<TReturn>, "abortCtrl"> & {
|
|
731
|
+
abortCtrl: AbortController;
|
|
732
|
+
};
|
|
685
733
|
};
|
|
686
734
|
};
|
|
687
735
|
/**
|
|
@@ -828,21 +876,15 @@ declare const defaultFetch: typeof fetchResponse & typeof methods;
|
|
|
828
876
|
declare const executeInterceptors: <T, TArgs extends unknown[]>(value: T, signal?: AbortSignal, interceptors?: Interceptor<T, TArgs>[], ...args: TArgs) => Promise<T>;
|
|
829
877
|
|
|
830
878
|
/**
|
|
831
|
-
*
|
|
832
|
-
*
|
|
833
|
-
* @param options The fetch options object.
|
|
879
|
+
* Executes the built-in `fetch()` (or a custom `fetchFunc` if provided) with support for automatic retries.
|
|
834
880
|
*
|
|
835
|
-
*
|
|
836
|
-
|
|
837
|
-
declare const getAbortCtrl: (options: Partial<FetchOptions>) => AbortController;
|
|
838
|
-
|
|
839
|
-
/**
|
|
840
|
-
* Execute built-in `fetch()` and retry if request fails and `options.retry > 0`.
|
|
881
|
+
* If `options.retry` is greater than 0, the request will be retried if it fails or if the response is not OK,
|
|
882
|
+
* unless overridden by `options.retryIf`.
|
|
841
883
|
*
|
|
842
|
-
* @param url request URL
|
|
843
|
-
* @param options (optional)
|
|
884
|
+
* @param url The request URL.
|
|
885
|
+
* @param options (optional) Fetch options, including retry settings.
|
|
844
886
|
*
|
|
845
|
-
* @returns
|
|
887
|
+
* @returns A promise resolving to the Response.
|
|
846
888
|
*/
|
|
847
889
|
declare const getResponse: (url: FetchArgs[0], options?: FetchArgs[1]) => Promise<Response>;
|
|
848
890
|
|
|
@@ -864,4 +906,4 @@ declare const mergeFetchOptions: (...allOptions: FetchOptions[]) => FetchOptions
|
|
|
864
906
|
/** Merges partial fetch options ignoring empty or undefined. Otherwise, will return the first argument. */
|
|
865
907
|
declare const mergePartialOptions: (...optionsAr: (Partial<FetchOptions> | undefined)[]) => Partial<FetchOptions> | undefined;
|
|
866
908
|
|
|
867
|
-
export { ContentType, type ExcludeOptions, type ExcludePostOptions, type FetchArgs, type FetchArgsInterceptor, FetchAs, type FetchAsFromOptions, type FetchCustomOptions, type FetchDeferredArgs, type FetchErrMsgs, FetchError, type FetchInterceptorError, type FetchInterceptorRequest, type FetchInterceptorResponse, type FetchInterceptorResult, type FetchInterceptors, type FetchOptions, type FetchOptionsDefault, type FetchOptionsInterceptor, type FetchResult, type FetchRetryOptions, type Interceptor, MAX_TIMEOUT, type PostArgs, type PostBody, type PostDeferredCbArgs, type PostOptions, createClient, createPostClient, defaultFetch as default, executeInterceptors, fetch, fetchResponse,
|
|
909
|
+
export { ContentType, type ExcludeOptions, type ExcludePostOptions, type FetchArgs, type FetchArgsInterceptor, FetchAs, type FetchAsFromOptions, type FetchCustomOptions, type FetchDeferredArgs, type FetchErrMsgs, FetchError, type FetchFunc, type FetchInterceptorError, type FetchInterceptorRequest, type FetchInterceptorResponse, type FetchInterceptorResult, type FetchInterceptors, type FetchOptions, type FetchOptionsDefault, type FetchOptionsInterceptor, type FetchResult, type FetchRetryOptions, type Interceptor, MAX_TIMEOUT, type PostArgs, type PostBody, type PostDeferredCbArgs, type PostOptions, createClient, createPostClient, defaultFetch as default, executeInterceptors, fetch, fetchResponse, getResponse, mergeFetchOptions, mergePartialOptions };
|
package/dist/index.js
CHANGED
|
@@ -4,8 +4,8 @@ import { deferredCallback } from "@superutils/promise";
|
|
|
4
4
|
// src/fetch.ts
|
|
5
5
|
import {
|
|
6
6
|
fallbackIfFails as fallbackIfFails3,
|
|
7
|
+
isError,
|
|
7
8
|
isFn as isFn2,
|
|
8
|
-
isPositiveNumber,
|
|
9
9
|
isPromise,
|
|
10
10
|
isUrlValid
|
|
11
11
|
} from "@superutils/core";
|
|
@@ -29,31 +29,13 @@ var executeInterceptors = async (value, signal, interceptors, ...args) => {
|
|
|
29
29
|
};
|
|
30
30
|
var executeInterceptors_default = executeInterceptors;
|
|
31
31
|
|
|
32
|
-
// src/getAbortCtrl.ts
|
|
33
|
-
var getAbortCtrl = (options) => {
|
|
34
|
-
options != null ? options : options = {};
|
|
35
|
-
if (!(options.abortCtrl instanceof AbortController))
|
|
36
|
-
options.abortCtrl = new AbortController();
|
|
37
|
-
const { abortCtrl, signal } = options;
|
|
38
|
-
if (signal instanceof AbortSignal && !signal.aborted) {
|
|
39
|
-
const handleAbort = () => abortCtrl.abort();
|
|
40
|
-
signal.addEventListener("abort", handleAbort, { once: true });
|
|
41
|
-
abortCtrl.signal.addEventListener(
|
|
42
|
-
"abort",
|
|
43
|
-
() => signal.removeEventListener("abort", handleAbort),
|
|
44
|
-
{ once: true }
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
return abortCtrl;
|
|
48
|
-
};
|
|
49
|
-
|
|
50
32
|
// src/getResponse.ts
|
|
51
33
|
import { fallbackIfFails as fallbackIfFails2, isPositiveInteger } from "@superutils/core";
|
|
52
34
|
import { retry } from "@superutils/promise";
|
|
53
|
-
var getResponse =
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
35
|
+
var getResponse = (url, options = {}) => {
|
|
36
|
+
var _a;
|
|
37
|
+
const fetchFunc = (_a = options.fetchFunc) != null ? _a : globalThis.fetch;
|
|
38
|
+
if (!isPositiveInteger(options.retry)) return fetchFunc(url, options);
|
|
57
39
|
let attemptCount = 0;
|
|
58
40
|
const response = retry(
|
|
59
41
|
() => {
|
|
@@ -63,14 +45,14 @@ var getResponse = async (url, options = {}) => {
|
|
|
63
45
|
{
|
|
64
46
|
...options,
|
|
65
47
|
retryIf: async (res, count, error) => {
|
|
66
|
-
var
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
return !!((
|
|
70
|
-
|
|
48
|
+
var _a2;
|
|
49
|
+
const { abortCtrl, retryIf, signal } = options;
|
|
50
|
+
if ((abortCtrl == null ? void 0 : abortCtrl.signal.aborted) || (signal == null ? void 0 : signal.aborted)) return false;
|
|
51
|
+
return !!((_a2 = await fallbackIfFails2(
|
|
52
|
+
retryIf,
|
|
71
53
|
[res, count, error],
|
|
72
|
-
|
|
73
|
-
)) != null ?
|
|
54
|
+
void 0
|
|
55
|
+
)) != null ? _a2 : !!error || !(res == null ? void 0 : res.ok));
|
|
74
56
|
}
|
|
75
57
|
}
|
|
76
58
|
).catch(
|
|
@@ -201,70 +183,69 @@ import {
|
|
|
201
183
|
var MAX_TIMEOUT = 2147483647;
|
|
202
184
|
var fetch = (url, options = {}) => {
|
|
203
185
|
var _a, _b, _c;
|
|
204
|
-
let
|
|
205
|
-
const
|
|
206
|
-
|
|
207
|
-
(_a =
|
|
208
|
-
(_b =
|
|
209
|
-
(_c =
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
options: _options,
|
|
229
|
-
url
|
|
230
|
-
}),
|
|
231
|
-
void 0,
|
|
232
|
-
// should execute regardless of abort status
|
|
233
|
-
(_e = _options.interceptors) == null ? void 0 : _e.error,
|
|
186
|
+
let response;
|
|
187
|
+
const opts = mergeFetchOptions_default(fetch.defaults, options);
|
|
188
|
+
opts.abortCtrl = opts.abortCtrl instanceof AbortController ? opts.abortCtrl : new AbortController();
|
|
189
|
+
(_a = opts.as) != null ? _a : opts.as = "json" /* json */;
|
|
190
|
+
(_b = opts.method) != null ? _b : opts.method = "get";
|
|
191
|
+
(_c = opts.signal) != null ? _c : opts.signal = opts.abortCtrl.signal;
|
|
192
|
+
const { abortCtrl, as: parseAs, headers, onAbort, onTimeout } = opts;
|
|
193
|
+
opts.onAbort = async () => {
|
|
194
|
+
var _a2, _b2, _c2, _d, _e, _f;
|
|
195
|
+
const err = (_f = (_e = (_c2 = await fallbackIfFails3(onAbort, [], void 0)) != null ? _c2 : (_b2 = (_a2 = opts.abortCtrl) == null ? void 0 : _a2.signal) == null ? void 0 : _b2.reason) != null ? _e : (_d = opts.signal) == null ? void 0 : _d.reason) != null ? _f : opts.errMsgs.aborted;
|
|
196
|
+
if (isError(err) && err.name === "AbortError") {
|
|
197
|
+
err.message = ["This operation was aborted"].includes(err.message) ? opts.errMsgs.aborted : err.message;
|
|
198
|
+
}
|
|
199
|
+
return await interceptErr(
|
|
200
|
+
isError(err) ? err : new Error(err),
|
|
201
|
+
url,
|
|
202
|
+
opts,
|
|
203
|
+
response
|
|
204
|
+
);
|
|
205
|
+
};
|
|
206
|
+
opts.onTimeout = async () => {
|
|
207
|
+
const err = await fallbackIfFails3(onTimeout, [], void 0);
|
|
208
|
+
return await interceptErr(
|
|
209
|
+
err != null ? err : new Error(opts.errMsgs.timedout),
|
|
234
210
|
url,
|
|
235
|
-
|
|
236
|
-
|
|
211
|
+
opts,
|
|
212
|
+
response
|
|
213
|
+
);
|
|
237
214
|
};
|
|
238
|
-
|
|
215
|
+
return PromisE_timeout(opts, async () => {
|
|
239
216
|
var _a2, _b2, _c2, _d;
|
|
240
217
|
try {
|
|
218
|
+
let contentType = headers.get("content-type");
|
|
219
|
+
if (!contentType) {
|
|
220
|
+
headers.set("content-type", ContentType.APPLICATION_JSON);
|
|
221
|
+
contentType = ContentType.APPLICATION_JSON;
|
|
222
|
+
}
|
|
241
223
|
url = await executeInterceptors_default(
|
|
242
224
|
url,
|
|
243
225
|
abortCtrl.signal,
|
|
244
|
-
(_a2 =
|
|
245
|
-
|
|
226
|
+
(_a2 = opts.interceptors) == null ? void 0 : _a2.request,
|
|
227
|
+
opts
|
|
246
228
|
);
|
|
247
|
-
const { body, errMsgs, validateUrl = true } =
|
|
248
|
-
(_b2 =
|
|
229
|
+
const { body, errMsgs, validateUrl = true } = opts;
|
|
230
|
+
(_b2 = opts.signal) != null ? _b2 : opts.signal = abortCtrl.signal;
|
|
249
231
|
if (validateUrl && !isUrlValid(url, false))
|
|
250
|
-
|
|
232
|
+
throw new Error(errMsgs.invalidUrl);
|
|
251
233
|
const shouldStringifyBody = [
|
|
252
234
|
ContentType.APPLICATION_JSON,
|
|
253
235
|
ContentType.APPLICATION_X_WWW_FORM_URLENCODED
|
|
254
236
|
].find((x) => contentType.includes(x)) && !["undefined", "string"].includes(typeof body);
|
|
255
237
|
if (shouldStringifyBody)
|
|
256
|
-
|
|
238
|
+
opts.body = JSON.stringify(
|
|
257
239
|
isFn2(body) ? fallbackIfFails3(body, [], void 0) : body
|
|
258
240
|
);
|
|
259
|
-
|
|
241
|
+
response = await getResponse_default(url, opts);
|
|
260
242
|
response = await executeInterceptors_default(
|
|
261
243
|
response,
|
|
262
244
|
abortCtrl.signal,
|
|
263
|
-
(_c2 =
|
|
245
|
+
(_c2 = opts.interceptors) == null ? void 0 : _c2.response,
|
|
264
246
|
url,
|
|
265
|
-
|
|
247
|
+
opts
|
|
266
248
|
);
|
|
267
|
-
errResponse = response;
|
|
268
249
|
const { status = 0 } = response;
|
|
269
250
|
const isSuccess = status >= 200 && status < 300;
|
|
270
251
|
if (!isSuccess) {
|
|
@@ -293,28 +274,20 @@ var fetch = (url, options = {}) => {
|
|
|
293
274
|
result = await executeInterceptors_default(
|
|
294
275
|
result,
|
|
295
276
|
abortCtrl.signal,
|
|
296
|
-
(_d =
|
|
277
|
+
(_d = opts.interceptors) == null ? void 0 : _d.result,
|
|
297
278
|
url,
|
|
298
|
-
|
|
279
|
+
opts
|
|
299
280
|
);
|
|
300
281
|
return result;
|
|
301
282
|
} catch (_err) {
|
|
302
|
-
|
|
283
|
+
let err = _err;
|
|
284
|
+
err = await interceptErr(_err, url, opts, response);
|
|
285
|
+
return Promise.reject(err);
|
|
303
286
|
}
|
|
304
|
-
};
|
|
305
|
-
return PromisE_timeout(
|
|
306
|
-
{
|
|
307
|
-
...options,
|
|
308
|
-
abortCtrl,
|
|
309
|
-
onAbort: () => processErr(new Error(_options.errMsgs.aborted)),
|
|
310
|
-
onTimeout: async () => processErr(new Error(_options.errMsgs.timedout)),
|
|
311
|
-
signal: _options.signal,
|
|
312
|
-
timeout
|
|
313
|
-
},
|
|
314
|
-
start
|
|
315
|
-
);
|
|
287
|
+
});
|
|
316
288
|
};
|
|
317
289
|
fetch.defaults = {
|
|
290
|
+
abortOnEarlyFinalize: true,
|
|
318
291
|
errMsgs: {
|
|
319
292
|
aborted: "Request aborted",
|
|
320
293
|
invalidUrl: "Invalid URL",
|
|
@@ -333,6 +306,23 @@ fetch.defaults = {
|
|
|
333
306
|
timeout: 3e4,
|
|
334
307
|
validateUrl: true
|
|
335
308
|
};
|
|
309
|
+
var interceptErr = async (err, url, options, response) => {
|
|
310
|
+
var _a, _b, _c;
|
|
311
|
+
const fErr = await executeInterceptors_default(
|
|
312
|
+
new FetchError((_a = err == null ? void 0 : err.message) != null ? _a : err, {
|
|
313
|
+
cause: (_b = err == null ? void 0 : err.cause) != null ? _b : err,
|
|
314
|
+
response,
|
|
315
|
+
options,
|
|
316
|
+
url
|
|
317
|
+
}),
|
|
318
|
+
void 0,
|
|
319
|
+
// should execute regardless of abort status
|
|
320
|
+
(_c = options.interceptors) == null ? void 0 : _c.error,
|
|
321
|
+
url,
|
|
322
|
+
options
|
|
323
|
+
);
|
|
324
|
+
return fErr;
|
|
325
|
+
};
|
|
336
326
|
var fetch_default = fetch;
|
|
337
327
|
|
|
338
328
|
// src/createClient.ts
|
|
@@ -350,20 +340,19 @@ var createClient = (fixedOptions, commonOptions, commonDeferOptions) => {
|
|
|
350
340
|
func.deferred = (deferOptions = {}, defaultUrl, defaultOptions) => {
|
|
351
341
|
let _abortCtrl;
|
|
352
342
|
const fetchCb = (...args) => {
|
|
353
|
-
var _a, _b;
|
|
354
|
-
const options = mergePartialOptions(
|
|
343
|
+
var _a, _b, _c;
|
|
344
|
+
const options = (_a = mergePartialOptions(
|
|
355
345
|
commonOptions,
|
|
356
346
|
defaultOptions,
|
|
357
347
|
defaultUrl === void 0 ? args[1] : args[0],
|
|
358
348
|
fixedOptions
|
|
359
|
-
);
|
|
360
|
-
((
|
|
361
|
-
_abortCtrl =
|
|
349
|
+
)) != null ? _a : {};
|
|
350
|
+
((_b = _abortCtrl == null ? void 0 : _abortCtrl.signal) == null ? void 0 : _b.aborted) === false && ((_c = _abortCtrl == null ? void 0 : _abortCtrl.abort) == null ? void 0 : _c.call(_abortCtrl));
|
|
351
|
+
_abortCtrl = new AbortController();
|
|
362
352
|
const promise = fetch_default(
|
|
363
353
|
defaultUrl != null ? defaultUrl : args[0],
|
|
364
354
|
options
|
|
365
355
|
);
|
|
366
|
-
promise.onEarlyFinalize.push(() => _abortCtrl == null ? void 0 : _abortCtrl.abort());
|
|
367
356
|
return promise;
|
|
368
357
|
};
|
|
369
358
|
return deferredCallback(fetchCb, {
|
|
@@ -392,21 +381,20 @@ var createPostClient = (fixedOptions, commonOptions, commonDeferOptions) => {
|
|
|
392
381
|
client.deferred = (deferOptions = {}, defaultUrl, defaultData, defaultOptions) => {
|
|
393
382
|
let _abortCtrl;
|
|
394
383
|
const postCb = (...args) => {
|
|
395
|
-
var _a, _b, _c, _d;
|
|
384
|
+
var _a, _b, _c, _d, _e;
|
|
396
385
|
if (defaultUrl !== void 0) args.splice(0, 0, defaultUrl);
|
|
397
386
|
if (defaultData !== void 0) args.splice(1, 0, defaultData);
|
|
398
|
-
const options = mergePartialOptions(
|
|
387
|
+
const options = (_a = mergePartialOptions(
|
|
399
388
|
commonOptions,
|
|
400
389
|
defaultOptions,
|
|
401
390
|
args[2],
|
|
402
391
|
fixedOptions
|
|
403
|
-
);
|
|
404
|
-
((
|
|
405
|
-
_abortCtrl =
|
|
406
|
-
options.body = (
|
|
407
|
-
(
|
|
392
|
+
)) != null ? _a : {};
|
|
393
|
+
((_b = _abortCtrl == null ? void 0 : _abortCtrl.signal) == null ? void 0 : _b.aborted) === false && ((_c = _abortCtrl == null ? void 0 : _abortCtrl.abort) == null ? void 0 : _c.call(_abortCtrl));
|
|
394
|
+
_abortCtrl = new AbortController();
|
|
395
|
+
options.body = (_d = args[1]) != null ? _d : options.body;
|
|
396
|
+
(_e = options.method) != null ? _e : options.method = "post";
|
|
408
397
|
const promise = fetch_default(args[0], options);
|
|
409
|
-
promise.onEarlyFinalize.push(() => _abortCtrl == null ? void 0 : _abortCtrl.abort());
|
|
410
398
|
return promise;
|
|
411
399
|
};
|
|
412
400
|
return deferredCallback2(postCb, {
|
|
@@ -478,7 +466,6 @@ export {
|
|
|
478
466
|
executeInterceptors,
|
|
479
467
|
fetch,
|
|
480
468
|
fetchResponse,
|
|
481
|
-
getAbortCtrl,
|
|
482
469
|
getResponse,
|
|
483
470
|
mergeFetchOptions,
|
|
484
471
|
mergePartialOptions
|
package/package.json
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
},
|
|
6
6
|
"description": "A lightweight `fetch` wrapper for browsers and Node.js, designed to simplify data fetching and reduce boilerplate.",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@superutils/core": "^1.1
|
|
9
|
-
"@superutils/promise": "^1.2.
|
|
8
|
+
"@superutils/core": "^1.2.1",
|
|
9
|
+
"@superutils/promise": "^1.2.2"
|
|
10
10
|
},
|
|
11
11
|
"files": [
|
|
12
12
|
"dist",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"name": "@superutils/fetch",
|
|
26
26
|
"peerDependencies": {
|
|
27
27
|
"@superutils/core": "^1.2.0",
|
|
28
|
-
"@superutils/promise": "^1.
|
|
28
|
+
"@superutils/promise": "^1.2.0"
|
|
29
29
|
},
|
|
30
30
|
"publishConfig": {
|
|
31
31
|
"access": "public"
|
|
@@ -45,5 +45,6 @@
|
|
|
45
45
|
"sideEffects": false,
|
|
46
46
|
"type": "module",
|
|
47
47
|
"types": "dist/index.d.ts",
|
|
48
|
-
"version": "1.
|
|
48
|
+
"version": "1.4.2",
|
|
49
|
+
"gitHead": "f7c9549f365ccb0791f7c420cb0d1acf67a6be3e"
|
|
49
50
|
}
|