@ahoo-wang/fetcher 1.2.2 → 1.2.5
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 +48 -3
- package/README.zh-CN.md +48 -3
- package/dist/fetcher.d.ts +3 -0
- package/dist/fetcher.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.es.js +382 -232
- 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/urlBuilder.d.ts +10 -1
- package/dist/urlBuilder.d.ts.map +1 -1
- package/dist/urlTemplateResolver.d.ts +307 -0
- package/dist/urlTemplateResolver.d.ts.map +1 -0
- package/dist/urls.d.ts +0 -47
- package/dist/urls.d.ts.map +1 -1
- package/package.json +3 -2
package/dist/urlBuilder.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BaseURLCapable, FetchRequest } from './fetchRequest';
|
|
2
|
+
import { UrlTemplateResolver, UrlTemplateStyle } from './urlTemplateResolver';
|
|
2
3
|
/**
|
|
3
4
|
* Container for URL parameters including path and query parameters.
|
|
4
5
|
*
|
|
@@ -54,17 +55,25 @@ export declare class UrlBuilder implements BaseURLCapable {
|
|
|
54
55
|
* This is typically the root of your API endpoint (e.g., 'https://api.example.com').
|
|
55
56
|
*/
|
|
56
57
|
readonly baseURL: string;
|
|
58
|
+
readonly urlTemplateResolver: UrlTemplateResolver;
|
|
57
59
|
/**
|
|
58
60
|
* Initializes a new UrlBuilder instance.
|
|
59
61
|
*
|
|
60
62
|
* @param baseURL - Base URL that all constructed URLs will be based on
|
|
63
|
+
* @param urlTemplateStyle - Optional style configuration for URL template resolution.
|
|
64
|
+
* Determines how path parameters are parsed and resolved.
|
|
65
|
+
* Defaults to UriTemplate style if not specified.
|
|
61
66
|
*
|
|
62
67
|
* @example
|
|
63
68
|
* ```typescript
|
|
69
|
+
* // Create a URL builder with default URI template style
|
|
64
70
|
* const urlBuilder = new UrlBuilder('https://api.example.com');
|
|
71
|
+
*
|
|
72
|
+
* // Create a URL builder with Express-style template resolution
|
|
73
|
+
* const expressUrlBuilder = new UrlBuilder('https://api.example.com', UrlTemplateStyle.Express);
|
|
65
74
|
* ```
|
|
66
75
|
*/
|
|
67
|
-
constructor(baseURL: string);
|
|
76
|
+
constructor(baseURL: string, urlTemplateStyle?: UrlTemplateStyle);
|
|
68
77
|
/**
|
|
69
78
|
* Builds a complete URL, including path parameter replacement and query parameter addition.
|
|
70
79
|
*
|
package/dist/urlBuilder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlBuilder.d.ts","sourceRoot":"","sources":["../src/urlBuilder.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"urlBuilder.d.ts","sourceRoot":"","sources":["../src/urlBuilder.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAEL,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAE/B;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE3B;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,UAAW,YAAW,cAAc;IAC/C;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAElD;;;;;;;;;;;;;;;;OAgBG;gBACS,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,gBAAgB;IAKhE;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM;IAc9C;;;;;;;;OAQG;IACH,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM;CAGjD;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;CACxB"}
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enumeration of URL template path styles.
|
|
3
|
+
*
|
|
4
|
+
* This enum defines the supported URL template path styles for parameter resolution.
|
|
5
|
+
* Each style has its own pattern for defining path parameters in URL templates.
|
|
6
|
+
*/
|
|
7
|
+
export declare enum UrlTemplateStyle {
|
|
8
|
+
/**
|
|
9
|
+
* URI Template style following RFC 6570 specification.
|
|
10
|
+
* Uses curly braces to define parameters, e.g., /users/{id}/posts/{postId}
|
|
11
|
+
*
|
|
12
|
+
* @see https://www.rfc-editor.org/rfc/rfc6570.html
|
|
13
|
+
*
|
|
14
|
+
* @see {@link UriTemplateResolver}
|
|
15
|
+
*/
|
|
16
|
+
UriTemplate = 0,
|
|
17
|
+
/**
|
|
18
|
+
* Express.js style for defining route parameters.
|
|
19
|
+
* Uses colons to define parameters, e.g., /users/:id/posts/:postId
|
|
20
|
+
*
|
|
21
|
+
* @see {@link ExpressUrlTemplateResolver}
|
|
22
|
+
*/
|
|
23
|
+
Express = 1
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Gets the appropriate URL template resolver based on the specified style.
|
|
27
|
+
*
|
|
28
|
+
* This factory function returns a URL template resolver instance based on the requested style.
|
|
29
|
+
* If no style is specified or if the UriTemplate style is requested, it returns the default
|
|
30
|
+
* URI template resolver. If Express style is requested, it returns the Express-style resolver.
|
|
31
|
+
*
|
|
32
|
+
* @param style - The URL template path style to use (optional).
|
|
33
|
+
* If not provided, defaults to UriTemplate style.
|
|
34
|
+
* @returns A UrlTemplateResolver instance corresponding to the requested style
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* // Get default URI template resolver
|
|
39
|
+
* const resolver = getUrlTemplateResolver();
|
|
40
|
+
*
|
|
41
|
+
* // Get URI template resolver explicitly
|
|
42
|
+
* const uriResolver = getUrlTemplateResolver(UrlTemplatePathStyle.UriTemplate);
|
|
43
|
+
*
|
|
44
|
+
* // Get Express-style resolver
|
|
45
|
+
* const expressResolver = getUrlTemplateResolver(UrlTemplatePathStyle.Express);
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare function getUrlTemplateResolver(style?: UrlTemplateStyle): UrlTemplateResolver;
|
|
49
|
+
/**
|
|
50
|
+
* Interface for resolving URL templates by extracting path parameters and replacing placeholders.
|
|
51
|
+
*
|
|
52
|
+
* This interface provides methods to work with URL templates that contain parameter placeholders.
|
|
53
|
+
* It supports extracting parameter names from templates and replacing placeholders with actual values.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* // Example usage of UrlTemplateResolver
|
|
58
|
+
* const resolver: UrlTemplateResolver = new UriTemplateResolver();
|
|
59
|
+
*
|
|
60
|
+
* // Extract path parameters
|
|
61
|
+
* const params = resolver.extractPathParams('/users/{id}/posts/{postId}');
|
|
62
|
+
* // params = ['id', 'postId']
|
|
63
|
+
*
|
|
64
|
+
* // Resolve URL template with parameters
|
|
65
|
+
* const url = resolver.resolve('/users/{id}/posts/{postId}', { id: 123, postId: 456 });
|
|
66
|
+
* // url = '/users/123/posts/456'
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export interface UrlTemplateResolver {
|
|
70
|
+
/**
|
|
71
|
+
* Extracts path parameters from the URL.
|
|
72
|
+
* @param urlTemplate - The URL template string containing parameter placeholders
|
|
73
|
+
* @returns An array of parameter names extracted from the URL template
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* const resolver: UrlTemplateResolver = uriTemplateResolver;
|
|
78
|
+
* const params = resolver.extractPathParams('/users/{id}/posts/{postId}');
|
|
79
|
+
* // params = ['id', 'postId']
|
|
80
|
+
*
|
|
81
|
+
* const noParams = resolver.extractPathParams('/users/profile');
|
|
82
|
+
* // noParams = []
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
extractPathParams(urlTemplate: string): string[];
|
|
86
|
+
/**
|
|
87
|
+
* Replaces placeholders in the URL with path parameters.
|
|
88
|
+
* @param urlTemplate - The URL template string containing parameter placeholders
|
|
89
|
+
* @param pathParams - Object containing parameter values to replace placeholders
|
|
90
|
+
* @returns The URL with placeholders replaced by actual values
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```typescript
|
|
94
|
+
* const resolver: UrlTemplateResolver = uriTemplateResolver;
|
|
95
|
+
* const url = resolver.resolve('/users/{id}/posts/{postId}', { id: 123, postId: 456 });
|
|
96
|
+
* // url = '/users/123/posts/456'
|
|
97
|
+
*
|
|
98
|
+
* // With Express-style resolver
|
|
99
|
+
* const expressResolver: UrlTemplateResolver = new ExpressUrlTemplateResolver();
|
|
100
|
+
* const expressUrl = expressResolver.resolve('/users/:id/posts/:postId', { id: 123, postId: 456 });
|
|
101
|
+
* // expressUrl = '/users/123/posts/456'
|
|
102
|
+
* ```
|
|
103
|
+
*
|
|
104
|
+
* @throws Error when required path parameters are missing
|
|
105
|
+
* @example
|
|
106
|
+
* ```typescript
|
|
107
|
+
* const resolver: UrlTemplateResolver = uriTemplateResolver;
|
|
108
|
+
* try {
|
|
109
|
+
* resolver.resolve('/users/{id}', { name: 'John' });
|
|
110
|
+
* } catch (error) {
|
|
111
|
+
* console.error(error.message); // "Missing required path parameter: id"
|
|
112
|
+
* }
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
115
|
+
resolve(urlTemplate: string, pathParams?: Record<string, any> | null): string;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Replaces placeholders in a URL template with actual parameter values.
|
|
119
|
+
*
|
|
120
|
+
* @param urlTemplate - The URL template string containing parameter placeholders
|
|
121
|
+
* @param pathParamRegex - Regular expression to match parameter placeholders
|
|
122
|
+
* @param pathParams - Object containing parameter values to replace placeholders
|
|
123
|
+
* @returns The URL with placeholders replaced by actual values
|
|
124
|
+
* @throws Error when required path parameters are missing
|
|
125
|
+
*/
|
|
126
|
+
export declare function urlTemplateRegexResolve(urlTemplate: string, pathParamRegex: RegExp, pathParams?: Record<string, any> | null): string;
|
|
127
|
+
/**
|
|
128
|
+
* Extracts parameter names from a URL template using a regular expression.
|
|
129
|
+
*
|
|
130
|
+
* @param urlTemplate - The URL template string containing parameter placeholders
|
|
131
|
+
* @param pathParamRegex - Regular expression to match parameter placeholders
|
|
132
|
+
* @returns An array of parameter names extracted from the URL template
|
|
133
|
+
*/
|
|
134
|
+
export declare function urlTemplateRegexExtract(urlTemplate: string, pathParamRegex: RegExp): string[];
|
|
135
|
+
/**
|
|
136
|
+
* https://www.rfc-editor.org/rfc/rfc6570.html
|
|
137
|
+
*
|
|
138
|
+
* Implementation of URI Template resolution following RFC 6570 specification.
|
|
139
|
+
* Handles URI templates with parameters enclosed in curly braces like {paramName}.
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```typescript
|
|
143
|
+
* const resolver = uriTemplateResolver;
|
|
144
|
+
*
|
|
145
|
+
* // Extract path parameters
|
|
146
|
+
* const params = resolver.extractPathParams('/users/{id}/posts/{postId}');
|
|
147
|
+
* // params = ['id', 'postId']
|
|
148
|
+
*
|
|
149
|
+
* // Resolve URL template with parameters
|
|
150
|
+
* const url = resolver.resolve('/users/{id}/posts/{postId}', { id: 123, postId: 456 });
|
|
151
|
+
* // url = '/users/123/posts/456'
|
|
152
|
+
* ```
|
|
153
|
+
*/
|
|
154
|
+
export declare class UriTemplateResolver implements UrlTemplateResolver {
|
|
155
|
+
/**
|
|
156
|
+
* Regular expression pattern to match path parameters in the format {paramName}
|
|
157
|
+
*
|
|
158
|
+
* This regex is used to identify and extract path parameters from URL patterns.
|
|
159
|
+
* It matches any text enclosed in curly braces {} and captures the content inside.
|
|
160
|
+
*
|
|
161
|
+
* Example matches:
|
|
162
|
+
* - {id} -> captures "id"
|
|
163
|
+
* - {userId} -> captures "userId"
|
|
164
|
+
* - {category-name} -> captures "category-name"
|
|
165
|
+
*/
|
|
166
|
+
private static PATH_PARAM_REGEX;
|
|
167
|
+
/**
|
|
168
|
+
* Extracts path parameters from a URL string.
|
|
169
|
+
*
|
|
170
|
+
* @param urlTemplate - The URL string to extract path parameters from
|
|
171
|
+
* @returns An array of path parameter names without the curly braces, or an empty array if no matches found
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* ```typescript
|
|
175
|
+
* const resolver = uriTemplateResolver;
|
|
176
|
+
*
|
|
177
|
+
* // Extract multiple parameters
|
|
178
|
+
* const params = resolver.extractPathParams('/users/{id}/posts/{postId}');
|
|
179
|
+
* // params = ['id', 'postId']
|
|
180
|
+
*
|
|
181
|
+
* // Extract parameters from full URLs
|
|
182
|
+
* const urlParams = resolver.extractPathParams('https://api.example.com/{resource}/{id}');
|
|
183
|
+
* // urlParams = ['resource', 'id']
|
|
184
|
+
*
|
|
185
|
+
* // No parameters
|
|
186
|
+
* const noParams = resolver.extractPathParams('/users/profile');
|
|
187
|
+
* // noParams = []
|
|
188
|
+
* ```
|
|
189
|
+
*/
|
|
190
|
+
extractPathParams(urlTemplate: string): string[];
|
|
191
|
+
/**
|
|
192
|
+
* Replaces placeholders in the URL with path parameters.
|
|
193
|
+
*
|
|
194
|
+
* @param urlTemplate - Path string containing placeholders, e.g., "http://localhost/users/{id}/posts/{postId}"
|
|
195
|
+
* @param pathParams - Path parameter object used to replace placeholders in the URL
|
|
196
|
+
* @returns Path string with placeholders replaced
|
|
197
|
+
* @throws Error when required path parameters are missing
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
* ```typescript
|
|
201
|
+
* const resolver = uriTemplateResolver;
|
|
202
|
+
*
|
|
203
|
+
* // Replace parameters
|
|
204
|
+
* const url = resolver.resolve('/users/{id}/posts/{postId}', { id: 123, postId: 456 });
|
|
205
|
+
* // url = '/users/123/posts/456'
|
|
206
|
+
*
|
|
207
|
+
* // Handle string parameter values
|
|
208
|
+
* const stringUrl = resolver.resolve('/users/{username}', { username: 'john_doe' });
|
|
209
|
+
* // stringUrl = '/users/john_doe'
|
|
210
|
+
*
|
|
211
|
+
* // URL encode parameter values
|
|
212
|
+
* const encodedUrl = resolver.resolve('/search/{query}', { query: 'hello world' });
|
|
213
|
+
* // encodedUrl = '/search/hello%20world'
|
|
214
|
+
* ```
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* ```typescript
|
|
218
|
+
* // Missing required parameter throws an error
|
|
219
|
+
* const resolver = uriTemplateResolver;
|
|
220
|
+
* try {
|
|
221
|
+
* resolver.resolve('/users/{id}', { name: 'John' });
|
|
222
|
+
* } catch (error) {
|
|
223
|
+
* console.error(error.message); // "Missing required path parameter: id"
|
|
224
|
+
* }
|
|
225
|
+
* ```
|
|
226
|
+
*/
|
|
227
|
+
resolve(urlTemplate: string, pathParams?: Record<string, any> | null): string;
|
|
228
|
+
}
|
|
229
|
+
export declare const uriTemplateResolver: UriTemplateResolver;
|
|
230
|
+
/**
|
|
231
|
+
* Express-style URL template resolver.
|
|
232
|
+
* Handles URI templates with parameters in the format :paramName.
|
|
233
|
+
*
|
|
234
|
+
* @example
|
|
235
|
+
* ```typescript
|
|
236
|
+
* const resolver = expressUrlTemplateResolver;
|
|
237
|
+
*
|
|
238
|
+
* // Extract path parameters
|
|
239
|
+
* const params = resolver.extractPathParams('/users/:id/posts/:postId');
|
|
240
|
+
* // params = ['id', 'postId']
|
|
241
|
+
*
|
|
242
|
+
* // Resolve URL template with parameters
|
|
243
|
+
* const url = resolver.resolve('/users/:id/posts/:postId', { id: 123, postId: 456 });
|
|
244
|
+
* // url = '/users/123/posts/456'
|
|
245
|
+
* ```
|
|
246
|
+
*/
|
|
247
|
+
export declare class ExpressUrlTemplateResolver implements UrlTemplateResolver {
|
|
248
|
+
/**
|
|
249
|
+
* Regular expression pattern to match Express-style path parameters in the format :paramName
|
|
250
|
+
*/
|
|
251
|
+
private static PATH_PARAM_REGEX;
|
|
252
|
+
/**
|
|
253
|
+
* Extracts path parameters from an Express-style URL string.
|
|
254
|
+
*
|
|
255
|
+
* @param urlTemplate - The URL string with Express-style parameter placeholders
|
|
256
|
+
* @returns An array of parameter names extracted from the URL template
|
|
257
|
+
*
|
|
258
|
+
* @example
|
|
259
|
+
* ```typescript
|
|
260
|
+
* const resolver = new expressUrlTemplateResolver;
|
|
261
|
+
*
|
|
262
|
+
* // Extract multiple parameters
|
|
263
|
+
* const params = resolver.extractPathParams('/users/:id/posts/:postId');
|
|
264
|
+
* // params = ['id', 'postId']
|
|
265
|
+
*
|
|
266
|
+
* // No parameters
|
|
267
|
+
* const noParams = resolver.extractPathParams('/users/profile');
|
|
268
|
+
* // noParams = []
|
|
269
|
+
* ```
|
|
270
|
+
*/
|
|
271
|
+
extractPathParams(urlTemplate: string): string[];
|
|
272
|
+
/**
|
|
273
|
+
* Replaces Express-style placeholders in the URL with path parameters.
|
|
274
|
+
*
|
|
275
|
+
* @param urlTemplate - Path string containing Express-style placeholders
|
|
276
|
+
* @param pathParams - Object containing parameter values to replace placeholders
|
|
277
|
+
* @returns Path string with placeholders replaced
|
|
278
|
+
* @throws Error when required path parameters are missing
|
|
279
|
+
*
|
|
280
|
+
* @example
|
|
281
|
+
* ```typescript
|
|
282
|
+
* const resolver = expressUrlTemplateResolver;
|
|
283
|
+
*
|
|
284
|
+
* // Replace parameters
|
|
285
|
+
* const url = resolver.resolve('/users/:id/posts/:postId', { id: 123, postId: 456 });
|
|
286
|
+
* // url = '/users/123/posts/456'
|
|
287
|
+
*
|
|
288
|
+
* // Handle string parameter values
|
|
289
|
+
* const stringUrl = resolver.resolve('/users/:username', { username: 'john_doe' });
|
|
290
|
+
* // stringUrl = '/users/john_doe'
|
|
291
|
+
* ```
|
|
292
|
+
*
|
|
293
|
+
* @example
|
|
294
|
+
* ```typescript
|
|
295
|
+
* // Missing required parameter throws an error
|
|
296
|
+
* const resolver = expressUrlTemplateResolver;
|
|
297
|
+
* try {
|
|
298
|
+
* resolver.resolve('/users/:id', { name: 'John' });
|
|
299
|
+
* } catch (error) {
|
|
300
|
+
* console.error(error.message); // "Missing required path parameter: id"
|
|
301
|
+
* }
|
|
302
|
+
* ```
|
|
303
|
+
*/
|
|
304
|
+
resolve(urlTemplate: string, pathParams?: Record<string, any> | null): string;
|
|
305
|
+
}
|
|
306
|
+
export declare const expressUrlTemplateResolver: ExpressUrlTemplateResolver;
|
|
307
|
+
//# sourceMappingURL=urlTemplateResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlTemplateResolver.d.ts","sourceRoot":"","sources":["../src/urlTemplateResolver.ts"],"names":[],"mappings":"AAaA;;;;;GAKG;AACH,oBAAY,gBAAgB;IAC1B;;;;;;;OAOG;IACH,WAAW,IAAA;IAEX;;;;;OAKG;IACH,OAAO,IAAA;CACR;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,CAAC,EAAE,gBAAgB,GAAG,mBAAmB,CAKpF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,mBAAmB;IAElC;;;;;;;;;;;;;;OAcG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC;CAE/E;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,UAU3H;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,CAO7F;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,mBAAoB,YAAW,mBAAmB;IAC7D;;;;;;;;;;OAUG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAgB;IAE/C;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE;IAIhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,MAAM;CAG9E;AAED,eAAO,MAAM,mBAAmB,qBAA4B,CAAC;AAE7D;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,0BAA2B,YAAW,mBAAmB;IACpE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAe;IAE9C;;;;;;;;;;;;;;;;;;OAkBG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE;IAIhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,MAAM;CAG9E;AAED,eAAO,MAAM,0BAA0B,4BAAmC,CAAC"}
|
package/dist/urls.d.ts
CHANGED
|
@@ -31,51 +31,4 @@ export declare function isAbsoluteURL(url: string): boolean;
|
|
|
31
31
|
* ```
|
|
32
32
|
*/
|
|
33
33
|
export declare function combineURLs(baseURL: string, relativeURL: string): string;
|
|
34
|
-
/**
|
|
35
|
-
* Extracts path parameters from a URL string.
|
|
36
|
-
*
|
|
37
|
-
* @param url - The URL string to extract path parameters from
|
|
38
|
-
* @returns An array of path parameter names without the curly braces, or an empty array if no matches found
|
|
39
|
-
*
|
|
40
|
-
* @example
|
|
41
|
-
* ```typescript
|
|
42
|
-
* extractPathParams('/users/{id}/posts/{postId}');
|
|
43
|
-
* // Returns: ['id', 'postId']
|
|
44
|
-
*
|
|
45
|
-
* extractPathParams('https://api.example.com/{resource}/{id}');
|
|
46
|
-
* // Returns: ['resource', 'id']
|
|
47
|
-
*
|
|
48
|
-
* extractPathParams('/users/profile');
|
|
49
|
-
* // Returns: []
|
|
50
|
-
* ```
|
|
51
|
-
*/
|
|
52
|
-
export declare function extractPathParams(url: string): string[];
|
|
53
|
-
/**
|
|
54
|
-
* Replaces placeholders in the URL with path parameters.
|
|
55
|
-
*
|
|
56
|
-
* @param url - Path string containing placeholders, e.g., "http://localhost/users/{id}/posts/{postId}"
|
|
57
|
-
* @param path - Path parameter object used to replace placeholders in the URL
|
|
58
|
-
* @returns Path string with placeholders replaced
|
|
59
|
-
* @throws Error when required path parameters are missing
|
|
60
|
-
*
|
|
61
|
-
* @example
|
|
62
|
-
* ```typescript
|
|
63
|
-
* const urlBuilder = new UrlBuilder('https://api.example.com');
|
|
64
|
-
* const result = urlBuilder.interpolateUrl('/users/{id}/posts/{postId}', {
|
|
65
|
-
* path: { id: 123, postId: 456 }
|
|
66
|
-
* });
|
|
67
|
-
* // Result: https://api.example.com/users/123/posts/456
|
|
68
|
-
* ```
|
|
69
|
-
*
|
|
70
|
-
* @example
|
|
71
|
-
* ```typescript
|
|
72
|
-
* // Missing required parameter throws an error
|
|
73
|
-
* try {
|
|
74
|
-
* urlBuilder.interpolateUrl('/users/{id}', { name: 'John' });
|
|
75
|
-
* } catch (error) {
|
|
76
|
-
* console.error(error.message); // "Missing required path parameter: id"
|
|
77
|
-
* }
|
|
78
|
-
* ```
|
|
79
|
-
*/
|
|
80
|
-
export declare function interpolateUrl(url: string, path?: Record<string, any> | null): string;
|
|
81
34
|
//# sourceMappingURL=urls.d.ts.map
|
package/dist/urls.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urls.d.ts","sourceRoot":"","sources":["../src/urls.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,WAExC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,UAQ/D
|
|
1
|
+
{"version":3,"file":"urls.d.ts","sourceRoot":"","sources":["../src/urls.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,WAExC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,UAQ/D"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ahoo-wang/fetcher",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.5",
|
|
4
4
|
"description": "Ultra-lightweight (2.7kB min+gzip) HTTP client with built-in path parameters, query parameters, and Axios-like API. The foundation of the Fetcher ecosystem with powerful interceptor system and LLM streaming API support.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"fetch",
|
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
"build": "vite build",
|
|
55
55
|
"test": "vitest run --coverage",
|
|
56
56
|
"lint": "eslint . --fix",
|
|
57
|
-
"clean": "rm -rf dist"
|
|
57
|
+
"clean": "rm -rf dist",
|
|
58
|
+
"analyze": "npx vite-bundle-analyzer -p auto"
|
|
58
59
|
}
|
|
59
60
|
}
|