@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.
@@ -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: Response | undefined;
93
+ response?: Response;
58
94
  /**
59
95
  * Any error that occurred during the request processing, undefined if no error occurred.
60
96
  */
61
- error: Error | any | undefined;
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(fetcher: Fetcher, request: FetchRequest, response?: Response, error?: Error | any);
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;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,qBAAa,aAAa;IACxB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,OAAO,EAAE,YAAY,CAAC;IAEtB;;OAEG;IACH,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IAE/B;;OAEG;IACH,KAAK,EAAE,KAAK,GAAG,GAAG,GAAG,SAAS,CAAC;IAE/B;;;;;;;;;;;;;OAaG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;gBAGnC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,YAAY,EACrB,QAAQ,CAAC,EAAE,QAAQ,EACnB,KAAK,CAAC,EAAE,KAAK,GAAG,GAAG;IAQrB;;;;;;;;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"}
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
@@ -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;AAChD,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAoB,MAAM,mBAAmB,CAAC;AAEtE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,cACf,SAAQ,cAAc,EACpB,qBAAqB,EACrB,cAAc;IAChB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAMD,eAAO,MAAM,eAAe,EAAE,cAG7B,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,OACX,YAAW,iBAAiB,EAAE,qBAAqB,EAAE,cAAc;IACnE,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAmB;IACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;IAE1C;;;;;;;OAOG;gBACS,OAAO,GAAE,cAAgC;IAOrD;;;;;;;;;;OAUG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAM3E;;;;;;;;;;;;OAYG;IAEG,OAAO,CAAC,CAAC,GAAG,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,eAAe,GAAE,eAAe,CAAC,CAAC,CAA6B,GAAG,OAAO,CAAC,CAAC,CAAC;IAiBpI;;;;;;;;;;OAUG;YACW,WAAW;IAWzB;;;;;;;;;OASG;IACG,GAAG,CACP,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,MAAM,CAAM,GACtD,OAAO,CAAC,QAAQ,CAAC;IAIpB;;;;;;;;OAQG;IACG,IAAI,CACR,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAM,GAC7C,OAAO,CAAC,QAAQ,CAAC;IAIpB;;;;;;;;OAQG;IACG,GAAG,CACP,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAM,GAC7C,OAAO,CAAC,QAAQ,CAAC;IAIpB;;;;;;;;OAQG;IACG,MAAM,CACV,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAM,GAC7C,OAAO,CAAC,QAAQ,CAAC;IAIpB;;;;;;;;OAQG;IACG,KAAK,CACT,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAM,GAC7C,OAAO,CAAC,QAAQ,CAAC;IAIpB;;;;;;;;;OASG;IACG,IAAI,CACR,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,MAAM,CAAM,GACtD,OAAO,CAAC,QAAQ,CAAC;IAIpB;;;;;;;;;OASG;IACG,OAAO,CACX,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,MAAM,CAAM,GACtD,OAAO,CAAC,QAAQ,CAAC;CAGrB"}
1
+ {"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../src/fetcher.ts"],"names":[],"mappings":"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"}