@ahoo-wang/fetcher 1.5.0 → 1.5.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/dist/fetchExchange.d.ts +40 -4
- package/dist/fetchExchange.d.ts.map +1 -1
- package/dist/fetcher.d.ts +75 -10
- package/dist/fetcher.d.ts.map +1 -1
- package/dist/index.es.js +282 -205
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/dist/resultExtractor.d.ts.map +1 -1
- package/dist/types.d.ts +18 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/fetchExchange.d.ts
CHANGED
|
@@ -1,6 +1,42 @@
|
|
|
1
1
|
import { Fetcher } from './fetcher';
|
|
2
2
|
import { FetchRequest, RequestHeaders } from './fetchRequest';
|
|
3
3
|
import { UrlParams } from './urlBuilder';
|
|
4
|
+
import { RequiredBy } from './types';
|
|
5
|
+
export interface AttributesCapable {
|
|
6
|
+
/**
|
|
7
|
+
* Shared attributes for passing data between interceptors.
|
|
8
|
+
*
|
|
9
|
+
* This property allows interceptors to share arbitrary data with each other.
|
|
10
|
+
* Interceptors can read from and write to this object to pass information
|
|
11
|
+
* along the interceptor chain.
|
|
12
|
+
*
|
|
13
|
+
* @remarks
|
|
14
|
+
* - This property is optional and may be undefined initially
|
|
15
|
+
* - Interceptors should initialize this property if they need to use it
|
|
16
|
+
* - Use string keys to avoid conflicts between different interceptors
|
|
17
|
+
* - Consider namespacing your keys (e.g., 'mylib.retryCount' instead of 'retryCount')
|
|
18
|
+
* - Be mindful of memory usage when storing large objects
|
|
19
|
+
*/
|
|
20
|
+
attributes?: Record<string, any>;
|
|
21
|
+
}
|
|
22
|
+
export interface FetchExchangeInit extends AttributesCapable {
|
|
23
|
+
/**
|
|
24
|
+
* The Fetcher instance that initiated this exchange.
|
|
25
|
+
*/
|
|
26
|
+
fetcher: Fetcher;
|
|
27
|
+
/**
|
|
28
|
+
* The request configuration including url, method, headers, body, etc.
|
|
29
|
+
*/
|
|
30
|
+
request: FetchRequest;
|
|
31
|
+
/**
|
|
32
|
+
* The response object, undefined until the request completes successfully.
|
|
33
|
+
*/
|
|
34
|
+
response?: Response;
|
|
35
|
+
/**
|
|
36
|
+
* Any error that occurred during the request processing, undefined if no error occurred.
|
|
37
|
+
*/
|
|
38
|
+
error?: Error | any;
|
|
39
|
+
}
|
|
4
40
|
/**
|
|
5
41
|
* Container for HTTP request/response data that flows through the interceptor chain.
|
|
6
42
|
*
|
|
@@ -42,7 +78,7 @@ import { UrlParams } from './urlBuilder';
|
|
|
42
78
|
* };
|
|
43
79
|
* ```
|
|
44
80
|
*/
|
|
45
|
-
export declare class FetchExchange {
|
|
81
|
+
export declare class FetchExchange implements RequiredBy<FetchExchangeInit, 'attributes'> {
|
|
46
82
|
/**
|
|
47
83
|
* The Fetcher instance that initiated this exchange.
|
|
48
84
|
*/
|
|
@@ -54,11 +90,11 @@ export declare class FetchExchange {
|
|
|
54
90
|
/**
|
|
55
91
|
* The response object, undefined until the request completes successfully.
|
|
56
92
|
*/
|
|
57
|
-
response
|
|
93
|
+
response?: Response;
|
|
58
94
|
/**
|
|
59
95
|
* Any error that occurred during the request processing, undefined if no error occurred.
|
|
60
96
|
*/
|
|
61
|
-
error
|
|
97
|
+
error?: Error | any;
|
|
62
98
|
/**
|
|
63
99
|
* Shared attributes for passing data between interceptors.
|
|
64
100
|
*
|
|
@@ -74,7 +110,7 @@ export declare class FetchExchange {
|
|
|
74
110
|
* - Be mindful of memory usage when storing large objects
|
|
75
111
|
*/
|
|
76
112
|
attributes: Record<string, any>;
|
|
77
|
-
constructor(
|
|
113
|
+
constructor(exchangeInit: FetchExchangeInit);
|
|
78
114
|
/**
|
|
79
115
|
* Ensures that request headers object exists, creating it if necessary.
|
|
80
116
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchExchange.d.ts","sourceRoot":"","sources":["../src/fetchExchange.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"fetchExchange.d.ts","sourceRoot":"","sources":["../src/fetchExchange.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;;;;;;OAaG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,OAAO,EAAE,YAAY,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,qBAAa,aACX,YAAW,UAAU,CAAC,iBAAiB,EAAE,YAAY,CAAC;IACtD;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,OAAO,EAAE,YAAY,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC;IAEpB;;;;;;;;;;;;;OAaG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAEpB,YAAY,EAAE,iBAAiB;IAQ3C;;;;;;;;OAQG;IACH,oBAAoB,IAAI,cAAc;IAOtC;;;;;;;;;;OAUG;IACH,sBAAsB,IAAI,QAAQ,CAAC,SAAS,CAAC;IAgB7C;;;;OAIG;IACH,QAAQ,IAAI,OAAO;IAInB;;;;OAIG;IACH,WAAW,IAAI,OAAO;IAItB;;;;;;;;;OASG;IACH,IAAI,gBAAgB,IAAI,QAAQ,CAQ/B;CACF"}
|
package/dist/fetcher.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { UrlBuilder, UrlBuilderCapable } from './urlBuilder';
|
|
2
2
|
import { TimeoutCapable } from './timeout';
|
|
3
|
-
import { FetchExchange } from './fetchExchange';
|
|
3
|
+
import { FetchExchange, FetchExchangeInit } from './fetchExchange';
|
|
4
4
|
import { BaseURLCapable, FetchRequest, FetchRequestInit, RequestHeaders, RequestHeadersCapable } from './fetchRequest';
|
|
5
5
|
import { InterceptorManager } from './interceptorManager';
|
|
6
6
|
import { UrlTemplateStyle } from './urlTemplateResolver';
|
|
@@ -68,10 +68,13 @@ export declare class Fetcher implements UrlBuilderCapable, RequestHeadersCapable
|
|
|
68
68
|
*
|
|
69
69
|
* @param url - The URL path for the request (relative to baseURL if set)
|
|
70
70
|
* @param request - Request configuration including headers, body, parameters, etc.
|
|
71
|
+
* @param attributes - Optional shared attributes that can be accessed by interceptors
|
|
72
|
+
* throughout the request lifecycle. These attributes allow passing
|
|
73
|
+
* custom data between different interceptors.
|
|
71
74
|
* @returns Promise that resolves to the HTTP response
|
|
72
75
|
* @throws FetchError if the request fails and no response is generated
|
|
73
76
|
*/
|
|
74
|
-
fetch(url: string, request?: FetchRequestInit): Promise<Response>;
|
|
77
|
+
fetch(url: string, request?: FetchRequestInit, attributes?: Record<string, any>): Promise<Response>;
|
|
75
78
|
/**
|
|
76
79
|
* Processes an HTTP request through the Fetcher's internal workflow.
|
|
77
80
|
*
|
|
@@ -82,10 +85,48 @@ export declare class Fetcher implements UrlBuilderCapable, RequestHeadersCapable
|
|
|
82
85
|
* @param request - Complete request configuration object
|
|
83
86
|
* @param resultExtractor - Function to extract the desired result from the exchange.
|
|
84
87
|
* Defaults to ExchangeResultExtractor which returns the entire exchange object.
|
|
88
|
+
* @param attributes - Optional shared attributes that can be accessed by interceptors
|
|
89
|
+
* throughout the request lifecycle. These attributes allow passing
|
|
90
|
+
* custom data between different interceptors.
|
|
85
91
|
* @returns Promise that resolves to the extracted result based on resultExtractor
|
|
86
92
|
* @throws Error if an unhandled error occurs during request processing
|
|
87
93
|
*/
|
|
88
|
-
request<R = FetchExchange>(request: FetchRequest, resultExtractor?: ResultExtractor<R>): Promise<R>;
|
|
94
|
+
request<R = FetchExchange>(request: FetchRequest, resultExtractor?: ResultExtractor<R>, attributes?: Record<string, any>): Promise<R>;
|
|
95
|
+
/**
|
|
96
|
+
* Executes an HTTP request exchange and processes the result using a result extractor.
|
|
97
|
+
*
|
|
98
|
+
* This method creates a FetchExchange object, runs it through the interceptor chain,
|
|
99
|
+
* and then applies a result extractor function to transform the exchange into the desired result type.
|
|
100
|
+
* It's the core method that powers all HTTP request functionality in the Fetcher.
|
|
101
|
+
*
|
|
102
|
+
* @template R - The type of result to return after processing the exchange
|
|
103
|
+
* @param exchangeInit - The initial configuration for the exchange, excluding fetcher, response, and error properties
|
|
104
|
+
* @param resultExtractor - A function that transforms the completed exchange into the desired result type.
|
|
105
|
+
* Defaults to returning the exchange object itself.
|
|
106
|
+
* @returns A Promise that resolves to the result of applying the resultExtractor to the completed exchange
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```typescript
|
|
110
|
+
* // Basic usage with default result extractor (returns the exchange)
|
|
111
|
+
* const exchange = await fetcher.exchange({
|
|
112
|
+
* request: { url: '/api/users', method: 'GET' }
|
|
113
|
+
* });
|
|
114
|
+
* console.log(exchange.response.status);
|
|
115
|
+
*
|
|
116
|
+
* // Using a custom result extractor to get the response object
|
|
117
|
+
* const response = await fetcher.exchange(
|
|
118
|
+
* { request: { url: '/api/users', method: 'GET' } },
|
|
119
|
+
* (exchange) => exchange.requiredResponse
|
|
120
|
+
* );
|
|
121
|
+
*
|
|
122
|
+
* // Using a built-in result extractor to get JSON data
|
|
123
|
+
* const users = await fetcher.exchange(
|
|
124
|
+
* { request: { url: '/api/users', method: 'GET' } },
|
|
125
|
+
* ResultExtractors.Json
|
|
126
|
+
* );
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
exchange<R>(exchangeInit: Omit<FetchExchangeInit, 'fetcher'>, resultExtractor?: ResultExtractor<R>): Promise<R>;
|
|
89
130
|
/**
|
|
90
131
|
* Internal helper method for making HTTP requests with a specific method.
|
|
91
132
|
*
|
|
@@ -95,6 +136,9 @@ export declare class Fetcher implements UrlBuilderCapable, RequestHeadersCapable
|
|
|
95
136
|
* @param method - The HTTP method to use for the request
|
|
96
137
|
* @param url - The URL path for the request
|
|
97
138
|
* @param request - Additional request options
|
|
139
|
+
* @param attributes - Optional shared attributes that can be accessed by interceptors
|
|
140
|
+
* throughout the request lifecycle. These attributes allow passing
|
|
141
|
+
* custom data between different interceptors.
|
|
98
142
|
* @returns Promise that resolves to the HTTP response
|
|
99
143
|
*/
|
|
100
144
|
private methodFetch;
|
|
@@ -106,9 +150,12 @@ export declare class Fetcher implements UrlBuilderCapable, RequestHeadersCapable
|
|
|
106
150
|
*
|
|
107
151
|
* @param url - The URL path for the request
|
|
108
152
|
* @param request - Request options excluding method and body
|
|
153
|
+
* @param attributes - Optional shared attributes that can be accessed by interceptors
|
|
154
|
+
* throughout the request lifecycle. These attributes allow passing
|
|
155
|
+
* custom data between different interceptors.
|
|
109
156
|
* @returns Promise that resolves to the HTTP response
|
|
110
157
|
*/
|
|
111
|
-
get(url: string, request?: Omit<FetchRequestInit, 'method' | 'body'>): Promise<Response>;
|
|
158
|
+
get(url: string, request?: Omit<FetchRequestInit, 'method' | 'body'>, attributes?: Record<string, any>): Promise<Response>;
|
|
112
159
|
/**
|
|
113
160
|
* Makes a POST HTTP request.
|
|
114
161
|
*
|
|
@@ -116,9 +163,12 @@ export declare class Fetcher implements UrlBuilderCapable, RequestHeadersCapable
|
|
|
116
163
|
*
|
|
117
164
|
* @param url - The URL path for the request
|
|
118
165
|
* @param request - Request options including body and other parameters
|
|
166
|
+
* @param attributes - Optional shared attributes that can be accessed by interceptors
|
|
167
|
+
* throughout the request lifecycle. These attributes allow passing
|
|
168
|
+
* custom data between different interceptors.
|
|
119
169
|
* @returns Promise that resolves to the HTTP response
|
|
120
170
|
*/
|
|
121
|
-
post(url: string, request?: Omit<FetchRequestInit, 'method'>): Promise<Response>;
|
|
171
|
+
post(url: string, request?: Omit<FetchRequestInit, 'method'>, attributes?: Record<string, any>): Promise<Response>;
|
|
122
172
|
/**
|
|
123
173
|
* Makes a PUT HTTP request.
|
|
124
174
|
*
|
|
@@ -126,9 +176,12 @@ export declare class Fetcher implements UrlBuilderCapable, RequestHeadersCapable
|
|
|
126
176
|
*
|
|
127
177
|
* @param url - The URL path for the request
|
|
128
178
|
* @param request - Request options including body and other parameters
|
|
179
|
+
* @param attributes - Optional shared attributes that can be accessed by interceptors
|
|
180
|
+
* throughout the request lifecycle. These attributes allow passing
|
|
181
|
+
* custom data between different interceptors.
|
|
129
182
|
* @returns Promise that resolves to the HTTP response
|
|
130
183
|
*/
|
|
131
|
-
put(url: string, request?: Omit<FetchRequestInit, 'method'>): Promise<Response>;
|
|
184
|
+
put(url: string, request?: Omit<FetchRequestInit, 'method'>, attributes?: Record<string, any>): Promise<Response>;
|
|
132
185
|
/**
|
|
133
186
|
* Makes a DELETE HTTP request.
|
|
134
187
|
*
|
|
@@ -136,9 +189,12 @@ export declare class Fetcher implements UrlBuilderCapable, RequestHeadersCapable
|
|
|
136
189
|
*
|
|
137
190
|
* @param url - The URL path for the request
|
|
138
191
|
* @param request - Request options excluding method and body
|
|
192
|
+
* @param attributes - Optional shared attributes that can be accessed by interceptors
|
|
193
|
+
* throughout the request lifecycle. These attributes allow passing
|
|
194
|
+
* custom data between different interceptors.
|
|
139
195
|
* @returns Promise that resolves to the HTTP response
|
|
140
196
|
*/
|
|
141
|
-
delete(url: string, request?: Omit<FetchRequestInit, 'method'>): Promise<Response>;
|
|
197
|
+
delete(url: string, request?: Omit<FetchRequestInit, 'method'>, attributes?: Record<string, any>): Promise<Response>;
|
|
142
198
|
/**
|
|
143
199
|
* Makes a PATCH HTTP request.
|
|
144
200
|
*
|
|
@@ -146,9 +202,12 @@ export declare class Fetcher implements UrlBuilderCapable, RequestHeadersCapable
|
|
|
146
202
|
*
|
|
147
203
|
* @param url - The URL path for the request
|
|
148
204
|
* @param request - Request options including body and other parameters
|
|
205
|
+
* @param attributes - Optional shared attributes that can be accessed by interceptors
|
|
206
|
+
* throughout the request lifecycle. These attributes allow passing
|
|
207
|
+
* custom data between different interceptors.
|
|
149
208
|
* @returns Promise that resolves to the HTTP response
|
|
150
209
|
*/
|
|
151
|
-
patch(url: string, request?: Omit<FetchRequestInit, 'method'>): Promise<Response>;
|
|
210
|
+
patch(url: string, request?: Omit<FetchRequestInit, 'method'>, attributes?: Record<string, any>): Promise<Response>;
|
|
152
211
|
/**
|
|
153
212
|
* Makes a HEAD HTTP request.
|
|
154
213
|
*
|
|
@@ -157,9 +216,12 @@ export declare class Fetcher implements UrlBuilderCapable, RequestHeadersCapable
|
|
|
157
216
|
*
|
|
158
217
|
* @param url - The URL path for the request
|
|
159
218
|
* @param request - Request options excluding method and body
|
|
219
|
+
* @param attributes - Optional shared attributes that can be accessed by interceptors
|
|
220
|
+
* throughout the request lifecycle. These attributes allow passing
|
|
221
|
+
* custom data between different interceptors.
|
|
160
222
|
* @returns Promise that resolves to the HTTP response
|
|
161
223
|
*/
|
|
162
|
-
head(url: string, request?: Omit<FetchRequestInit, 'method' | 'body'>): Promise<Response>;
|
|
224
|
+
head(url: string, request?: Omit<FetchRequestInit, 'method' | 'body'>, attributes?: Record<string, any>): Promise<Response>;
|
|
163
225
|
/**
|
|
164
226
|
* Makes an OPTIONS HTTP request.
|
|
165
227
|
*
|
|
@@ -168,8 +230,11 @@ export declare class Fetcher implements UrlBuilderCapable, RequestHeadersCapable
|
|
|
168
230
|
*
|
|
169
231
|
* @param url - The URL path for the request
|
|
170
232
|
* @param request - Request options excluding method and body
|
|
233
|
+
* @param attributes - Optional shared attributes that can be accessed by interceptors
|
|
234
|
+
* throughout the request lifecycle. These attributes allow passing
|
|
235
|
+
* custom data between different interceptors.
|
|
171
236
|
* @returns Promise that resolves to the HTTP response
|
|
172
237
|
*/
|
|
173
|
-
options(url: string, request?: Omit<FetchRequestInit, 'method' | 'body'>): Promise<Response>;
|
|
238
|
+
options(url: string, request?: Omit<FetchRequestInit, 'method' | 'body'>, attributes?: Record<string, any>): Promise<Response>;
|
|
174
239
|
}
|
|
175
240
|
//# sourceMappingURL=fetcher.d.ts.map
|
package/dist/fetcher.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../src/fetcher.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../src/fetcher.ts"],"names":[],"mappings":"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"}
|