@scirexs/fetchy 0.2.1 → 0.2.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 +18 -6
- package/esm/main.js +0 -32
- package/package.json +1 -1
- package/types/main.d.ts +21 -0
- package/types/main.d.ts.map +1 -1
package/README.md
CHANGED
|
@@ -56,7 +56,7 @@ Performs an HTTP request and returns the raw Response object.
|
|
|
56
56
|
- `options`: `FetchyOptions` (optional) - Configuration options
|
|
57
57
|
|
|
58
58
|
#### Returns
|
|
59
|
-
`Promise<Response | null>`
|
|
59
|
+
`Promise<Response>`; If configure `throwError.onError`, `Promise<Response | null>`
|
|
60
60
|
|
|
61
61
|
#### Example
|
|
62
62
|
```ts
|
|
@@ -83,7 +83,7 @@ Performs an HTTP request and automatically parses the response body.
|
|
|
83
83
|
- `options`: `FetchyOptions` (optional) - Configuration options
|
|
84
84
|
|
|
85
85
|
#### Returns
|
|
86
|
-
`Promise<T | string | Uint8Array | null>`
|
|
86
|
+
`Promise<T | string | Uint8Array>`; If configure `throwError.onError`, `Promise<T | string | Uint8Array | null>`
|
|
87
87
|
|
|
88
88
|
#### Example
|
|
89
89
|
```ts
|
|
@@ -200,11 +200,11 @@ If the timeout duration specified in the `timeout` option is exceeded, `abort("t
|
|
|
200
200
|
|
|
201
201
|
### HTTPStatusError
|
|
202
202
|
|
|
203
|
-
If `onErrorStatus` is set to `true`, an `HTTPStatusError` will be thrown when the response status is outside the 200 range. The error message format is: `404 Not Found`.
|
|
203
|
+
If `onErrorStatus` is set to `true`, an `HTTPStatusError` will be thrown when the response status is outside the 200 range. You can access its status and body through this error object. The error message format is: `404 Not Found: (no response body)`.
|
|
204
204
|
|
|
205
205
|
### RedirectError
|
|
206
206
|
|
|
207
|
-
If `redirect` is set to `"error"`, a `RedirectError` will be thrown when the response status is in the 300 range. The error message format is: `
|
|
207
|
+
If `redirect` is set to `"error"`, a `RedirectError` will be thrown when the response status is in the 300 range. You can access its status through this error object. The error message format is: `301 Moved Permanently`.
|
|
208
208
|
|
|
209
209
|
### Others
|
|
210
210
|
|
|
@@ -355,7 +355,6 @@ interface ApiResponse<T> {
|
|
|
355
355
|
data: T;
|
|
356
356
|
error?: string;
|
|
357
357
|
}
|
|
358
|
-
|
|
359
358
|
interface Todo {
|
|
360
359
|
id: number;
|
|
361
360
|
title: string;
|
|
@@ -367,11 +366,24 @@ const response = await fetchyb<ApiResponse<Todo>>(
|
|
|
367
366
|
"json"
|
|
368
367
|
);
|
|
369
368
|
|
|
370
|
-
if (response
|
|
369
|
+
if (response.success) {
|
|
371
370
|
console.log(response.data.title); // Fully typed
|
|
372
371
|
}
|
|
373
372
|
```
|
|
374
373
|
|
|
374
|
+
#### Restricting the Return Type
|
|
375
|
+
|
|
376
|
+
When setting the `throwError` property in `FetchyOptions`, the return type will include `null` even if you set it to `true` or `{ onError: true }`. To prevent this and ensure a non-nullable return type, add `as const` to the `throwError` property value:
|
|
377
|
+
```ts
|
|
378
|
+
interface User {
|
|
379
|
+
id: number;
|
|
380
|
+
name: string;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
const options = { timeout: 5, throwError: true as const }; // Add `as const`
|
|
384
|
+
const response = await fetchy("https://api.example.com/todos/1", "json", options); // `response` is User (not User | null)
|
|
385
|
+
```
|
|
386
|
+
|
|
375
387
|
## License
|
|
376
388
|
|
|
377
389
|
MIT
|
package/esm/main.js
CHANGED
|
@@ -98,38 +98,6 @@ async function fetchyb(url, type = "auto", options) {
|
|
|
98
98
|
return null;
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
|
-
/**
|
|
102
|
-
* Performs an HTTP request with enhanced features like timeout, retry, and automatic header management.
|
|
103
|
-
* Returns the raw Response object or null on failure, unless throwError is configured.
|
|
104
|
-
*
|
|
105
|
-
* @param url - The URL to fetch. Can be a string, URL object, or Request object.
|
|
106
|
-
* @param options - Configuration options for the request.
|
|
107
|
-
* @returns Response object or null on failure.
|
|
108
|
-
*
|
|
109
|
-
* @example
|
|
110
|
-
* ```ts
|
|
111
|
-
* import { fetchy } from "@scirexs/fetchy";
|
|
112
|
-
*
|
|
113
|
-
* // Simple GET request
|
|
114
|
-
* const response = await fetchy("https://api.example.com/data");
|
|
115
|
-
* if (response?.ok) {
|
|
116
|
-
* const data = await response.json();
|
|
117
|
-
* }
|
|
118
|
-
*
|
|
119
|
-
* // POST request with JSON body
|
|
120
|
-
* const response = await fetchy("https://api.example.com/create", {
|
|
121
|
-
* body: { name: "John", age: 30 },
|
|
122
|
-
* bearerToken: "your-token"
|
|
123
|
-
* });
|
|
124
|
-
*
|
|
125
|
-
* // With retry and timeout
|
|
126
|
-
* const response = await fetchy("https://api.example.com/data", {
|
|
127
|
-
* timeout: 10,
|
|
128
|
-
* retry: { max: 5, interval: 2 },
|
|
129
|
-
* throwError: { onErrorStatus: true }
|
|
130
|
-
* });
|
|
131
|
-
* ```
|
|
132
|
-
*/
|
|
133
101
|
async function fetchy(url, options) {
|
|
134
102
|
try {
|
|
135
103
|
const opts = _getOptions(options);
|
package/package.json
CHANGED
package/types/main.d.ts
CHANGED
|
@@ -26,6 +26,17 @@ interface Options {
|
|
|
26
26
|
abort?: AbortController;
|
|
27
27
|
userRedirect: "follow" | "error" | "manual";
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Infer helper type for response type overload.
|
|
31
|
+
* @internal
|
|
32
|
+
*/
|
|
33
|
+
type ThrowError = FetchyOptions & Partial<{
|
|
34
|
+
throwError: true;
|
|
35
|
+
}> | FetchyOptions & Partial<{
|
|
36
|
+
throwError: {
|
|
37
|
+
onError: true;
|
|
38
|
+
};
|
|
39
|
+
}>;
|
|
29
40
|
/**
|
|
30
41
|
* Error thrown when HTTP response has a non-OK status code (4xx, 5xx, ...).
|
|
31
42
|
* Only thrown when throwError.onErrorStatus is set to true.
|
|
@@ -98,9 +109,17 @@ declare class RedirectError extends Error {
|
|
|
98
109
|
* const bytes = await fetchyb("https://example.com/image.png", "bytes");
|
|
99
110
|
* ```
|
|
100
111
|
*/
|
|
112
|
+
declare function fetchyb(url: Input, type: "text", options?: undefined): Promise<string>;
|
|
113
|
+
declare function fetchyb(url: Input, type: "text", options: FetchyOptions & ThrowError): Promise<string>;
|
|
101
114
|
declare function fetchyb(url: Input, type: "text", options?: FetchyOptions): Promise<string | null>;
|
|
115
|
+
declare function fetchyb<T>(url: Input, type: "json", options?: undefined): Promise<T>;
|
|
116
|
+
declare function fetchyb<T>(url: Input, type: "json", options: FetchyOptions & ThrowError): Promise<T>;
|
|
102
117
|
declare function fetchyb<T>(url: Input, type: "json", options?: FetchyOptions): Promise<T | null>;
|
|
118
|
+
declare function fetchyb(url: Input, type: "bytes", options?: undefined): Promise<Uint8Array>;
|
|
119
|
+
declare function fetchyb(url: Input, type: "bytes", options: FetchyOptions & ThrowError): Promise<Uint8Array>;
|
|
103
120
|
declare function fetchyb(url: Input, type: "bytes", options?: FetchyOptions): Promise<Uint8Array | null>;
|
|
121
|
+
declare function fetchyb<T>(url: Input, type?: "auto", options?: undefined): Promise<T | string | Uint8Array>;
|
|
122
|
+
declare function fetchyb<T>(url: Input, type?: "auto", options?: FetchyOptions & ThrowError): Promise<T | string | Uint8Array>;
|
|
104
123
|
declare function fetchyb<T>(url: Input, type?: "auto", options?: FetchyOptions): Promise<T | string | Uint8Array | null>;
|
|
105
124
|
/**
|
|
106
125
|
* Performs an HTTP request with enhanced features like timeout, retry, and automatic header management.
|
|
@@ -134,6 +153,8 @@ declare function fetchyb<T>(url: Input, type?: "auto", options?: FetchyOptions):
|
|
|
134
153
|
* });
|
|
135
154
|
* ```
|
|
136
155
|
*/
|
|
156
|
+
declare function fetchy(url: Input, options?: undefined): Promise<Response>;
|
|
157
|
+
declare function fetchy(url: Input, options: FetchyOptions & ThrowError): Promise<Response>;
|
|
137
158
|
declare function fetchy(url: Input, options?: FetchyOptions): Promise<Response | null>;
|
|
138
159
|
/**
|
|
139
160
|
* Checks if a value is a string.
|
package/types/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,QAAQ,EACR,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,eAAe,EACf,uBAAuB,EACvB,OAAO,EACP,aAAa,EACb,SAAS,EACT,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,WAAW,EACX,KAAK,EACL,OAAO,EACP,MAAM,EACN,OAAO,EACP,eAAe,EACf,aAAa,GACd,CAAC;AAEF,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGxF;;;GAGG;AACH,QAAA,MAAM,OAAO,EAAE,OAUL,CAAC;AAGX;;;GAGG;AACH,KAAK,KAAK,GAAG,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC;AAMpC;;;GAGG;AACH,UAAU,OAAO;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,YAAY,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;CAC7C;
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|