@ahoo-wang/fetcher 0.8.5 → 0.8.6
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/fetchRequest.d.ts +37 -2
- package/dist/fetchRequest.d.ts.map +1 -1
- package/dist/fetcher.d.ts +4 -5
- package/dist/fetcher.d.ts.map +1 -1
- package/dist/index.es.js +64 -64
- package/dist/index.umd.js +1 -1
- package/dist/requestBodyInterceptor.d.ts.map +1 -1
- package/dist/types.d.ts +0 -30
- package/dist/types.d.ts.map +1 -1
- package/dist/urlBuilder.d.ts +1 -2
- package/dist/urlBuilder.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/fetchRequest.d.ts
CHANGED
|
@@ -1,6 +1,41 @@
|
|
|
1
1
|
import { TimeoutCapable } from './timeout';
|
|
2
|
-
import { HeadersCapable } from './types';
|
|
3
2
|
import { UrlParams } from './urlBuilder';
|
|
3
|
+
export interface BaseURLCapable {
|
|
4
|
+
/**
|
|
5
|
+
* 请求的 baseURL
|
|
6
|
+
* 当值为空时,表示不设置 baseURL,默认值为 undefined
|
|
7
|
+
*/
|
|
8
|
+
baseURL: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* HTTP方法枚举常量
|
|
12
|
+
*/
|
|
13
|
+
export declare enum HttpMethod {
|
|
14
|
+
GET = "GET",
|
|
15
|
+
POST = "POST",
|
|
16
|
+
PUT = "PUT",
|
|
17
|
+
DELETE = "DELETE",
|
|
18
|
+
PATCH = "PATCH",
|
|
19
|
+
HEAD = "HEAD",
|
|
20
|
+
OPTIONS = "OPTIONS"
|
|
21
|
+
}
|
|
22
|
+
export declare const ContentTypeHeader = "Content-Type";
|
|
23
|
+
export declare enum ContentTypeValues {
|
|
24
|
+
APPLICATION_JSON = "application/json",
|
|
25
|
+
TEXT_EVENT_STREAM = "text/event-stream"
|
|
26
|
+
}
|
|
27
|
+
export interface RequestHeaders {
|
|
28
|
+
'Content-Type'?: string;
|
|
29
|
+
'Accept'?: string;
|
|
30
|
+
'Authorization'?: string;
|
|
31
|
+
[key: string]: string | undefined;
|
|
32
|
+
}
|
|
33
|
+
export interface RequestHeadersCapable {
|
|
34
|
+
/**
|
|
35
|
+
* Request headers
|
|
36
|
+
*/
|
|
37
|
+
headers?: RequestHeaders;
|
|
38
|
+
}
|
|
4
39
|
/**
|
|
5
40
|
* Fetcher request configuration interface
|
|
6
41
|
*
|
|
@@ -23,7 +58,7 @@ import { UrlParams } from './urlBuilder';
|
|
|
23
58
|
* const response = await fetcher.fetch('/users/{id}', request);
|
|
24
59
|
* ```
|
|
25
60
|
*/
|
|
26
|
-
export interface FetchRequestInit extends TimeoutCapable,
|
|
61
|
+
export interface FetchRequestInit extends TimeoutCapable, RequestHeadersCapable, Omit<RequestInit, 'body' | 'headers'> {
|
|
27
62
|
urlParams?: UrlParams;
|
|
28
63
|
/**
|
|
29
64
|
* Request body
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchRequest.d.ts","sourceRoot":"","sources":["../src/fetchRequest.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"fetchRequest.d.ts","sourceRoot":"","sources":["../src/fetchRequest.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,oBAAY,UAAU;IACpB,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAEhD,oBAAY,iBAAiB;IAC3B,gBAAgB,qBAAqB;IACrC,iBAAiB,sBAAsB;CACxC;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,gBACf,SAAQ,cAAc,EACpB,qBAAqB,EACrB,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;CACvD;AAED,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACb"}
|
package/dist/fetcher.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { UrlBuilder, UrlBuilderCapable } from './urlBuilder';
|
|
2
2
|
import { TimeoutCapable } from './timeout';
|
|
3
|
-
import { BaseURLCapable, HeadersCapable } from './types';
|
|
4
3
|
import { FetcherInterceptors } from './interceptor';
|
|
5
4
|
import { FetchExchange } from './fetchExchange';
|
|
6
|
-
import { FetchRequest, FetchRequestInit } from './fetchRequest';
|
|
5
|
+
import { BaseURLCapable, FetchRequest, FetchRequestInit, RequestHeaders, RequestHeadersCapable } from './fetchRequest';
|
|
7
6
|
/**
|
|
8
7
|
* Fetcher configuration options interface
|
|
9
8
|
*
|
|
@@ -17,7 +16,7 @@ import { FetchRequest, FetchRequestInit } from './fetchRequest';
|
|
|
17
16
|
* };
|
|
18
17
|
* ```
|
|
19
18
|
*/
|
|
20
|
-
export interface FetcherOptions extends BaseURLCapable,
|
|
19
|
+
export interface FetcherOptions extends BaseURLCapable, RequestHeadersCapable, TimeoutCapable {
|
|
21
20
|
interceptors?: FetcherInterceptors;
|
|
22
21
|
}
|
|
23
22
|
export declare const DEFAULT_OPTIONS: FetcherOptions;
|
|
@@ -36,9 +35,9 @@ export declare const DEFAULT_OPTIONS: FetcherOptions;
|
|
|
36
35
|
* });
|
|
37
36
|
* ```
|
|
38
37
|
*/
|
|
39
|
-
export declare class Fetcher implements UrlBuilderCapable,
|
|
38
|
+
export declare class Fetcher implements UrlBuilderCapable, RequestHeadersCapable, TimeoutCapable {
|
|
40
39
|
urlBuilder: UrlBuilder;
|
|
41
|
-
headers?:
|
|
40
|
+
headers?: RequestHeaders;
|
|
42
41
|
timeout?: number;
|
|
43
42
|
interceptors: FetcherInterceptors;
|
|
44
43
|
/**
|
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,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAkB,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,
|
|
1
|
+
{"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../src/fetcher.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAkB,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,cAAc,EAEd,YAAY,EACZ,gBAAgB,EAEhB,cAAc,EACd,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AAGxB;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,cACf,SAAQ,cAAc,EACpB,qBAAqB,EACrB,cAAc;IAChB,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAMD,eAAO,MAAM,eAAe,EAAE,cAG7B,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,qBAAa,OACX,YAAW,iBAAiB,EAAE,qBAAqB,EAAE,cAAc;IAEnE,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE,cAAc,CAAmB;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,mBAAmB,CAAC;IAElC;;;;OAIG;gBACS,OAAO,GAAE,cAAgC;IAOrD;;;;;;OAMG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAU3E;;;;;;;OAOG;IACG,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAmB5D;;;;;;;;;;;;;;;OAeG;IACG,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAkBpE;;;;;;;OAOG;YACW,WAAW;IAWzB;;;;;;OAMG;IACG,GAAG,CACP,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,MAAM,CAAM,GACtD,OAAO,CAAC,QAAQ,CAAC;IAIpB;;;;;;OAMG;IACG,IAAI,CACR,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAM,GAC7C,OAAO,CAAC,QAAQ,CAAC;IAIpB;;;;;;OAMG;IACG,GAAG,CACP,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAM,GAC7C,OAAO,CAAC,QAAQ,CAAC;IAIpB;;;;;;OAMG;IACG,MAAM,CACV,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAM,GAC7C,OAAO,CAAC,QAAQ,CAAC;IAIpB;;;;;;OAMG;IACG,KAAK,CACT,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAM,GAC7C,OAAO,CAAC,QAAQ,CAAC;IAIpB;;;;;;OAMG;IACG,IAAI,CACR,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,MAAM,CAAM,GACtD,OAAO,CAAC,QAAQ,CAAC;IAIpB;;;;;;OAMG;IACG,OAAO,CACX,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,MAAM,CAAM,GACtD,OAAO,CAAC,QAAQ,CAAC;CAGrB"}
|
package/dist/index.es.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
function
|
|
1
|
+
function b(r) {
|
|
2
2
|
return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(r);
|
|
3
3
|
}
|
|
4
|
-
function
|
|
5
|
-
return
|
|
4
|
+
function E(r, e) {
|
|
5
|
+
return b(e) ? e : e ? r.replace(/\/?\/$/, "") + "/" + e.replace(/^\/+/, "") : r;
|
|
6
6
|
}
|
|
7
|
-
class
|
|
7
|
+
class w {
|
|
8
8
|
/**
|
|
9
9
|
* Creates a UrlBuilder instance
|
|
10
10
|
*
|
|
@@ -37,7 +37,7 @@ class P {
|
|
|
37
37
|
* ```
|
|
38
38
|
*/
|
|
39
39
|
build(e, t) {
|
|
40
|
-
const s = t?.path, o = t?.query, i =
|
|
40
|
+
const s = t?.path, o = t?.query, i = E(this.baseURL, e);
|
|
41
41
|
let n = this.interpolateUrl(i, s);
|
|
42
42
|
if (o) {
|
|
43
43
|
const c = new URLSearchParams(o).toString();
|
|
@@ -93,10 +93,10 @@ class P {
|
|
|
93
93
|
}) : e;
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
|
-
function
|
|
96
|
+
function P(r, e) {
|
|
97
97
|
return typeof r < "u" ? r : e;
|
|
98
98
|
}
|
|
99
|
-
class
|
|
99
|
+
class p extends Error {
|
|
100
100
|
/**
|
|
101
101
|
* Creates a new FetchTimeoutError instance
|
|
102
102
|
*
|
|
@@ -104,10 +104,10 @@ class f extends Error {
|
|
|
104
104
|
*/
|
|
105
105
|
constructor(e) {
|
|
106
106
|
const t = e.method || "GET", s = `Request timeout of ${e.timeout}ms exceeded for ${t} ${e.url}`;
|
|
107
|
-
super(s), this.name = "FetchTimeoutError", this.request = e, Object.setPrototypeOf(this,
|
|
107
|
+
super(s), this.name = "FetchTimeoutError", this.request = e, Object.setPrototypeOf(this, p.prototype);
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
|
-
async function
|
|
110
|
+
async function R(r) {
|
|
111
111
|
const e = r.url, t = r.timeout, s = r;
|
|
112
112
|
if (!t)
|
|
113
113
|
return fetch(e, s);
|
|
@@ -116,11 +116,11 @@ async function A(r) {
|
|
|
116
116
|
signal: o.signal
|
|
117
117
|
};
|
|
118
118
|
let n = null;
|
|
119
|
-
const c = new Promise((
|
|
119
|
+
const c = new Promise((_, I) => {
|
|
120
120
|
n = setTimeout(() => {
|
|
121
121
|
n && clearTimeout(n);
|
|
122
|
-
const
|
|
123
|
-
o.abort(
|
|
122
|
+
const f = new p(r);
|
|
123
|
+
o.abort(f), I(f);
|
|
124
124
|
}, t);
|
|
125
125
|
});
|
|
126
126
|
try {
|
|
@@ -129,13 +129,13 @@ async function A(r) {
|
|
|
129
129
|
n && clearTimeout(n);
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
|
-
var u = /* @__PURE__ */ ((r) => (r.GET = "GET", r.POST = "POST", r.PUT = "PUT", r.DELETE = "DELETE", r.PATCH = "PATCH", r.HEAD = "HEAD", r.OPTIONS = "OPTIONS", r))(u || {});
|
|
133
|
-
const d = "Content-Type";
|
|
134
|
-
var y = /* @__PURE__ */ ((r) => (r.APPLICATION_JSON = "application/json", r.TEXT_EVENT_STREAM = "text/event-stream", r))(y || {});
|
|
135
132
|
function a(r, e) {
|
|
136
133
|
return e ? r.filter(e).sort((t, s) => t.order - s.order) : [...r].sort((t, s) => t.order - s.order);
|
|
137
134
|
}
|
|
138
|
-
|
|
135
|
+
var u = /* @__PURE__ */ ((r) => (r.GET = "GET", r.POST = "POST", r.PUT = "PUT", r.DELETE = "DELETE", r.PATCH = "PATCH", r.HEAD = "HEAD", r.OPTIONS = "OPTIONS", r))(u || {});
|
|
136
|
+
const v = "Content-Type";
|
|
137
|
+
var y = /* @__PURE__ */ ((r) => (r.APPLICATION_JSON = "application/json", r.TEXT_EVENT_STREAM = "text/event-stream", r))(y || {});
|
|
138
|
+
class A {
|
|
139
139
|
constructor() {
|
|
140
140
|
this.name = "RequestBodyInterceptor", this.order = Number.MIN_SAFE_INTEGER + 200;
|
|
141
141
|
}
|
|
@@ -183,10 +183,10 @@ class F {
|
|
|
183
183
|
const s = { ...t };
|
|
184
184
|
s.body = JSON.stringify(t.body), s.headers || (s.headers = {});
|
|
185
185
|
const o = s.headers;
|
|
186
|
-
return o[
|
|
186
|
+
return o["Content-Type"] || (o["Content-Type"] = y.APPLICATION_JSON), e.request = s, e;
|
|
187
187
|
}
|
|
188
188
|
}
|
|
189
|
-
class
|
|
189
|
+
class F {
|
|
190
190
|
constructor() {
|
|
191
191
|
this.name = "FetchInterceptor", this.order = Number.MAX_SAFE_INTEGER - 100;
|
|
192
192
|
}
|
|
@@ -215,10 +215,10 @@ class g {
|
|
|
215
215
|
* console.log(result.response); // HTTP response object
|
|
216
216
|
*/
|
|
217
217
|
async intercept(e) {
|
|
218
|
-
return e.response = await
|
|
218
|
+
return e.response = await R(e.request), e;
|
|
219
219
|
}
|
|
220
220
|
}
|
|
221
|
-
class
|
|
221
|
+
class g {
|
|
222
222
|
constructor() {
|
|
223
223
|
this.name = "UrlResolveInterceptor", this.order = Number.MIN_SAFE_INTEGER + 100;
|
|
224
224
|
}
|
|
@@ -322,33 +322,33 @@ class h {
|
|
|
322
322
|
return t;
|
|
323
323
|
}
|
|
324
324
|
}
|
|
325
|
-
class
|
|
325
|
+
class N {
|
|
326
326
|
constructor() {
|
|
327
327
|
this.request = new h([
|
|
328
|
-
new
|
|
329
|
-
new
|
|
330
|
-
new
|
|
328
|
+
new g(),
|
|
329
|
+
new A(),
|
|
330
|
+
new F()
|
|
331
331
|
]), this.response = new h(), this.error = new h();
|
|
332
332
|
}
|
|
333
333
|
}
|
|
334
|
-
function
|
|
334
|
+
function d(r, e) {
|
|
335
335
|
if (!(r === void 0 && e === void 0))
|
|
336
336
|
return e === void 0 ? r : r === void 0 ? e : { ...r, ...e };
|
|
337
337
|
}
|
|
338
|
-
const
|
|
339
|
-
|
|
340
|
-
},
|
|
338
|
+
const l = {
|
|
339
|
+
"Content-Type": y.APPLICATION_JSON
|
|
340
|
+
}, T = {
|
|
341
341
|
baseURL: "",
|
|
342
|
-
headers:
|
|
342
|
+
headers: l
|
|
343
343
|
};
|
|
344
|
-
class
|
|
344
|
+
class S {
|
|
345
345
|
/**
|
|
346
346
|
* Create a Fetcher instance
|
|
347
347
|
*
|
|
348
348
|
* @param options - Fetcher configuration options
|
|
349
349
|
*/
|
|
350
|
-
constructor(e =
|
|
351
|
-
this.headers =
|
|
350
|
+
constructor(e = T) {
|
|
351
|
+
this.headers = l, this.urlBuilder = new w(e.baseURL), this.headers = e.headers ?? l, this.timeout = e.timeout, this.interceptors = e.interceptors ?? new N();
|
|
352
352
|
}
|
|
353
353
|
/**
|
|
354
354
|
* Make an HTTP request
|
|
@@ -374,10 +374,10 @@ class q {
|
|
|
374
374
|
* @throws Throws an exception when an error occurs during the request and is not handled by error interceptors
|
|
375
375
|
*/
|
|
376
376
|
async request(e) {
|
|
377
|
-
const t =
|
|
377
|
+
const t = d(e.headers, this.headers), s = {
|
|
378
378
|
...e,
|
|
379
379
|
headers: t,
|
|
380
|
-
timeout:
|
|
380
|
+
timeout: P(e.timeout, this.timeout)
|
|
381
381
|
}, o = {
|
|
382
382
|
fetcher: this,
|
|
383
383
|
request: s,
|
|
@@ -497,8 +497,8 @@ class q {
|
|
|
497
497
|
return this.methodFetch(u.OPTIONS, e, t);
|
|
498
498
|
}
|
|
499
499
|
}
|
|
500
|
-
const
|
|
501
|
-
class
|
|
500
|
+
const m = "default";
|
|
501
|
+
class q {
|
|
502
502
|
constructor() {
|
|
503
503
|
this.registrar = /* @__PURE__ */ new Map();
|
|
504
504
|
}
|
|
@@ -571,7 +571,7 @@ class O {
|
|
|
571
571
|
* const defaultFetcher = fetcherRegistrar.default;
|
|
572
572
|
*/
|
|
573
573
|
get default() {
|
|
574
|
-
return this.requiredGet(
|
|
574
|
+
return this.requiredGet(m);
|
|
575
575
|
}
|
|
576
576
|
/**
|
|
577
577
|
* Set the default Fetcher instance
|
|
@@ -582,7 +582,7 @@ class O {
|
|
|
582
582
|
* fetcherRegistrar.default = fetcher;
|
|
583
583
|
*/
|
|
584
584
|
set default(e) {
|
|
585
|
-
this.register(
|
|
585
|
+
this.register(m, e);
|
|
586
586
|
}
|
|
587
587
|
/**
|
|
588
588
|
* Get a copy of all registered fetchers
|
|
@@ -598,15 +598,15 @@ class O {
|
|
|
598
598
|
return new Map(this.registrar);
|
|
599
599
|
}
|
|
600
600
|
}
|
|
601
|
-
const
|
|
601
|
+
const O = new q();
|
|
602
602
|
function L(r, e) {
|
|
603
603
|
if (Object.keys(r).length === 0)
|
|
604
604
|
return e;
|
|
605
605
|
if (Object.keys(e).length === 0)
|
|
606
606
|
return r;
|
|
607
607
|
const t = {
|
|
608
|
-
path:
|
|
609
|
-
query:
|
|
608
|
+
path: d(r.urlParams?.path, e.urlParams?.path),
|
|
609
|
+
query: d(r.urlParams?.query, e.urlParams?.query)
|
|
610
610
|
}, s = {
|
|
611
611
|
...r.headers,
|
|
612
612
|
...e.headers
|
|
@@ -622,7 +622,7 @@ function L(r, e) {
|
|
|
622
622
|
signal: c
|
|
623
623
|
};
|
|
624
624
|
}
|
|
625
|
-
class
|
|
625
|
+
class U extends S {
|
|
626
626
|
/**
|
|
627
627
|
* Create a NamedFetcher instance and automatically register it with the global fetcherRegistrar
|
|
628
628
|
*
|
|
@@ -640,34 +640,34 @@ class _ extends q {
|
|
|
640
640
|
* headers: { 'Authorization': 'Bearer token' }
|
|
641
641
|
* });
|
|
642
642
|
*/
|
|
643
|
-
constructor(e, t =
|
|
644
|
-
super(t), this.name = e,
|
|
643
|
+
constructor(e, t = T) {
|
|
644
|
+
super(t), this.name = e, O.register(e, this);
|
|
645
645
|
}
|
|
646
646
|
}
|
|
647
|
-
const
|
|
647
|
+
const C = new U(m);
|
|
648
648
|
export {
|
|
649
|
-
|
|
649
|
+
v as ContentTypeHeader,
|
|
650
650
|
y as ContentTypeValues,
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
651
|
+
m as DEFAULT_FETCHER_NAME,
|
|
652
|
+
T as DEFAULT_OPTIONS,
|
|
653
|
+
F as FetchInterceptor,
|
|
654
|
+
p as FetchTimeoutError,
|
|
655
|
+
S as Fetcher,
|
|
656
|
+
N as FetcherInterceptors,
|
|
657
|
+
q as FetcherRegistrar,
|
|
658
658
|
u as HttpMethod,
|
|
659
659
|
h as InterceptorManager,
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
660
|
+
U as NamedFetcher,
|
|
661
|
+
A as RequestBodyInterceptor,
|
|
662
|
+
w as UrlBuilder,
|
|
663
|
+
g as UrlResolveInterceptor,
|
|
664
|
+
E as combineURLs,
|
|
665
|
+
C as fetcher,
|
|
666
|
+
O as fetcherRegistrar,
|
|
667
|
+
b as isAbsoluteURL,
|
|
668
|
+
d as mergeRecords,
|
|
669
669
|
L as mergeRequest,
|
|
670
|
-
|
|
671
|
-
|
|
670
|
+
P as resolveTimeout,
|
|
671
|
+
R as timeoutFetch,
|
|
672
672
|
a as toSorted
|
|
673
673
|
};
|
package/dist/index.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(n,a){typeof exports=="object"&&typeof module<"u"?a(exports):typeof define=="function"&&define.amd?define(["exports"],a):(n=typeof globalThis<"u"?globalThis:n||self,a(n.Fetcher={}))})(this,(function(n){"use strict";function a(r){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(r)}function
|
|
1
|
+
(function(n,a){typeof exports=="object"&&typeof module<"u"?a(exports):typeof define=="function"&&define.amd?define(["exports"],a):(n=typeof globalThis<"u"?globalThis:n||self,a(n.Fetcher={}))})(this,(function(n){"use strict";function a(r){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(r)}function E(r,e){return a(e)?e:e?r.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):r}class b{constructor(e){this.baseURL=e}build(e,t){const s=t?.path,o=t?.query,c=E(this.baseURL,e);let i=this.interpolateUrl(c,s);if(o){const h=new URLSearchParams(o).toString();h&&(i+="?"+h)}return i}resolveRequestUrl(e){return this.build(e.url,e.urlParams)}interpolateUrl(e,t){return t?e.replace(/{([^}]+)}/g,(s,o)=>{const c=t[o];if(c===void 0)throw new Error(`Missing required path parameter: ${o}`);return String(c)}):e}}function F(r,e){return typeof r<"u"?r:e}class d extends Error{constructor(e){const t=e.method||"GET",s=`Request timeout of ${e.timeout}ms exceeded for ${t} ${e.url}`;super(s),this.name="FetchTimeoutError",this.request=e,Object.setPrototypeOf(this,d.prototype)}}async function R(r){const e=r.url,t=r.timeout,s=r;if(!t)return fetch(e,s);const o=new AbortController,c={...s,signal:o.signal};let i=null;const h=new Promise((D,C)=>{i=setTimeout(()=>{i&&clearTimeout(i);const U=new d(r);o.abort(U),C(U)},t)});try{return await Promise.race([fetch(e,c),h])}finally{i&&clearTimeout(i)}}function l(r,e){return e?r.filter(e).sort((t,s)=>t.order-s.order):[...r].sort((t,s)=>t.order-s.order)}var u=(r=>(r.GET="GET",r.POST="POST",r.PUT="PUT",r.DELETE="DELETE",r.PATCH="PATCH",r.HEAD="HEAD",r.OPTIONS="OPTIONS",r))(u||{});const _="Content-Type";var m=(r=>(r.APPLICATION_JSON="application/json",r.TEXT_EVENT_STREAM="text/event-stream",r))(m||{});class g{constructor(){this.name="RequestBodyInterceptor",this.order=Number.MIN_SAFE_INTEGER+200}intercept(e){const t=e.request;if(t.body===void 0||t.body===null||typeof t.body!="object"||t.body instanceof ArrayBuffer||ArrayBuffer.isView(t.body)||t.body instanceof Blob||t.body instanceof File||t.body instanceof URLSearchParams||t.body instanceof FormData||t.body instanceof ReadableStream)return e;const s={...t};s.body=JSON.stringify(t.body),s.headers||(s.headers={});const o=s.headers;return o["Content-Type"]||(o["Content-Type"]=m.APPLICATION_JSON),e.request=s,e}}class P{constructor(){this.name="FetchInterceptor",this.order=Number.MAX_SAFE_INTEGER-100}async intercept(e){return e.response=await R(e.request),e}}class w{constructor(){this.name="UrlResolveInterceptor",this.order=Number.MIN_SAFE_INTEGER+100}intercept(e){const t=e.request;return t.url=e.fetcher.urlBuilder.resolveRequestUrl(t),e}}class f{constructor(e=[]){this.sortedInterceptors=[],this.sortedInterceptors=l(e)}get name(){return this.constructor.name}get order(){return Number.MIN_SAFE_INTEGER}use(e){return this.sortedInterceptors.some(t=>t.name===e.name)?!1:(this.sortedInterceptors=l([...this.sortedInterceptors,e]),!0)}eject(e){const t=this.sortedInterceptors;return this.sortedInterceptors=l(t,s=>s.name!==e),t.length!==this.sortedInterceptors.length}clear(){this.sortedInterceptors=[]}async intercept(e){let t=e;for(const s of this.sortedInterceptors)t=await s.intercept(t);return t}}class A{constructor(){this.request=new f([new w,new g,new P]),this.response=new f,this.error=new f}}function y(r,e){if(!(r===void 0&&e===void 0))return e===void 0?r:r===void 0?e:{...r,...e}}const p={"Content-Type":m.APPLICATION_JSON},I={baseURL:"",headers:p};class N{constructor(e=I){this.headers=p,this.urlBuilder=new b(e.baseURL),this.headers=e.headers??p,this.timeout=e.timeout,this.interceptors=e.interceptors??new A}async fetch(e,t={}){const s=t;s.url=e;const o=await this.request(s);if(!o.response)throw new Error(`Request to ${s.url} failed with no response`);return o.response}async request(e){const t=y(e.headers,this.headers),s={...e,headers:t,timeout:F(e.timeout,this.timeout)},o={fetcher:this,request:s,response:void 0,error:void 0,attributes:{}};return this.exchange(o)}async exchange(e){try{return e=await this.interceptors.request.intercept(e),e=await this.interceptors.response.intercept(e),e}catch(t){if(e.error=t,e=await this.interceptors.error.intercept(e),e.response)return e;throw e.error}}async methodFetch(e,t,s={}){return this.fetch(t,{...s,method:e})}async get(e,t={}){return this.methodFetch(u.GET,e,t)}async post(e,t={}){return this.methodFetch(u.POST,e,t)}async put(e,t={}){return this.methodFetch(u.PUT,e,t)}async delete(e,t={}){return this.methodFetch(u.DELETE,e,t)}async patch(e,t={}){return this.methodFetch(u.PATCH,e,t)}async head(e,t={}){return this.methodFetch(u.HEAD,e,t)}async options(e,t={}){return this.methodFetch(u.OPTIONS,e,t)}}const T="default";class S{constructor(){this.registrar=new Map}register(e,t){this.registrar.set(e,t)}unregister(e){return this.registrar.delete(e)}get(e){return this.registrar.get(e)}requiredGet(e){const t=this.get(e);if(!t)throw new Error(`Fetcher ${e} not found`);return t}get default(){return this.requiredGet(T)}set default(e){this.register(T,e)}get fetchers(){return new Map(this.registrar)}}const q=new S;function v(r,e){if(Object.keys(r).length===0)return e;if(Object.keys(e).length===0)return r;const t={path:y(r.urlParams?.path,e.urlParams?.path),query:y(r.urlParams?.query,e.urlParams?.query)},s={...r.headers,...e.headers},o=e.method??r.method,c=e.body??r.body,i=e.timeout??r.timeout,h=e.signal??r.signal;return{...r,...e,method:o,urlParams:t,headers:s,body:c,timeout:i,signal:h}}class O extends N{constructor(e,t=I){super(t),this.name=e,q.register(e,this)}}const L=new O(T);n.ContentTypeHeader=_,n.ContentTypeValues=m,n.DEFAULT_FETCHER_NAME=T,n.DEFAULT_OPTIONS=I,n.FetchInterceptor=P,n.FetchTimeoutError=d,n.Fetcher=N,n.FetcherInterceptors=A,n.FetcherRegistrar=S,n.HttpMethod=u,n.InterceptorManager=f,n.NamedFetcher=O,n.RequestBodyInterceptor=g,n.UrlBuilder=b,n.UrlResolveInterceptor=w,n.combineURLs=E,n.fetcher=L,n.fetcherRegistrar=q,n.isAbsoluteURL=a,n.mergeRecords=y,n.mergeRequest=v,n.resolveTimeout=F,n.timeoutFetch=R,n.toSorted=l,Object.defineProperty(n,Symbol.toStringTag,{value:"Module"})}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestBodyInterceptor.d.ts","sourceRoot":"","sources":["../src/requestBodyInterceptor.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"requestBodyInterceptor.d.ts","sourceRoot":"","sources":["../src/requestBodyInterceptor.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD;;;;;;;;;;;GAWG;AACH,qBAAa,sBAAuB,YAAW,WAAW;IACxD;;OAEG;IACH,IAAI,SAA4B;IAEhC;;;;;;;;;OASG;IACH,KAAK,SAAiC;IAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa;CA2ClD"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,33 +1,3 @@
|
|
|
1
|
-
export interface BaseURLCapable {
|
|
2
|
-
/**
|
|
3
|
-
* 请求的 baseURL
|
|
4
|
-
* 当值为空时,表示不设置 baseURL,默认值为 undefined
|
|
5
|
-
*/
|
|
6
|
-
baseURL: string;
|
|
7
|
-
}
|
|
8
|
-
export interface HeadersCapable {
|
|
9
|
-
/**
|
|
10
|
-
* 请求头
|
|
11
|
-
*/
|
|
12
|
-
headers?: Record<string, string>;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* HTTP方法枚举常量
|
|
16
|
-
*/
|
|
17
|
-
export declare enum HttpMethod {
|
|
18
|
-
GET = "GET",
|
|
19
|
-
POST = "POST",
|
|
20
|
-
PUT = "PUT",
|
|
21
|
-
DELETE = "DELETE",
|
|
22
|
-
PATCH = "PATCH",
|
|
23
|
-
HEAD = "HEAD",
|
|
24
|
-
OPTIONS = "OPTIONS"
|
|
25
|
-
}
|
|
26
|
-
export declare const ContentTypeHeader = "Content-Type";
|
|
27
|
-
export declare enum ContentTypeValues {
|
|
28
|
-
APPLICATION_JSON = "application/json",
|
|
29
|
-
TEXT_EVENT_STREAM = "text/event-stream"
|
|
30
|
-
}
|
|
31
1
|
/**
|
|
32
2
|
* 具备名称能力的接口
|
|
33
3
|
* 实现该接口的类型需要提供一个名称属性
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,QAAQ;QAChB;;;;WAIG;QACH,IAAI,CAAC,CAAC,GAAG,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;KAC7B;CACF"}
|
package/dist/urlBuilder.d.ts
CHANGED
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,
|
|
1
|
+
{"version":3,"file":"urlBuilder.d.ts","sourceRoot":"","sources":["../src/urlBuilder.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE3B;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,UAAW,YAAW,cAAc;IAC/C;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;;;;;;OASG;gBACS,OAAO,EAAE,MAAM;IAI3B;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM;IAc9C;;;;;;;;OAQG;IACH,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM;IAIhD;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,MAAM;CAWvE;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;CACxB"}
|