@ahoo-wang/fetcher 0.0.5 → 0.0.7

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 +1 @@
1
- {"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../src/fetcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAqC,cAAc,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EACL,cAAc,EACd,cAAc,EAEd,YAAY,EACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,cACf,SAAQ,cAAc,EACpB,cAAc,EACd,cAAc;CAAG;AAMrB;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,cAAc,EAAE,WAAW;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACnC;AAED;;;;;;;;;;GAUG;AACH,qBAAa,OAAQ,YAAW,cAAc,EAAE,cAAc;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,UAAU,CAAa;IAC/B,YAAY,EAAE,mBAAmB,CAA6B;IAE9D;;;;OAIG;gBACS,OAAO,GAAE,cAA+B;IAMpD;;;;;;OAMG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAoCzE;;;;;;;;;;OAUG;YACW,YAAY;IA+B1B;;;;;;OAMG;IACG,GAAG,CACP,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAM,GAC1E,OAAO,CAAC,QAAQ,CAAC;IAOpB;;;;;;OAMG;IACG,IAAI,CACR,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,MAAM,CAAM,GACtD,OAAO,CAAC,QAAQ,CAAC;IAOpB;;;;;;OAMG;IACG,GAAG,CACP,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,MAAM,CAAM,GACtD,OAAO,CAAC,QAAQ,CAAC;IAOpB;;;;;;OAMG;IACG,MAAM,CACV,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,MAAM,CAAM,GACtD,OAAO,CAAC,QAAQ,CAAC;IAOpB;;;;;;OAMG;IACG,KAAK,CACT,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,MAAM,CAAM,GACtD,OAAO,CAAC,QAAQ,CAAC;IAOpB;;;;;;OAMG;IACG,IAAI,CACR,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAM,GAC1E,OAAO,CAAC,QAAQ,CAAC;IAOpB;;;;;;OAMG;IACG,OAAO,CACX,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAM,GAC1E,OAAO,CAAC,QAAQ,CAAC;CAMrB"}
1
+ {"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../src/fetcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAqC,cAAc,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EACL,cAAc,EACd,cAAc,EAEd,YAAY,EACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,cACf,SAAQ,cAAc,EACpB,cAAc,EACd,cAAc;CAAG;AAMrB;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,cAAc,EAAE,WAAW;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACnC;AAED;;;;;;;;;;GAUG;AACH,qBAAa,OAAQ,YAAW,cAAc,EAAE,cAAc;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,UAAU,CAAa;IAC/B,YAAY,EAAE,mBAAmB,CAA6B;IAE9D;;;;OAIG;gBACS,OAAO,GAAE,cAA+B;IAMpD;;;;;;OAMG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAoCzE;;;;;;;;;;OAUG;YACW,YAAY;IAoC1B;;;;;;OAMG;IACG,GAAG,CACP,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAM,GAC1E,OAAO,CAAC,QAAQ,CAAC;IAOpB;;;;;;OAMG;IACG,IAAI,CACR,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,MAAM,CAAM,GACtD,OAAO,CAAC,QAAQ,CAAC;IAOpB;;;;;;OAMG;IACG,GAAG,CACP,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,MAAM,CAAM,GACtD,OAAO,CAAC,QAAQ,CAAC;IAOpB;;;;;;OAMG;IACG,MAAM,CACV,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,MAAM,CAAM,GACtD,OAAO,CAAC,QAAQ,CAAC;IAOpB;;;;;;OAMG;IACG,KAAK,CACT,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,MAAM,CAAM,GACtD,OAAO,CAAC,QAAQ,CAAC;IAOpB;;;;;;OAMG;IACG,IAAI,CACR,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAM,GAC1E,OAAO,CAAC,QAAQ,CAAC;IAOpB;;;;;;OAMG;IACG,OAAO,CACX,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAM,GAC1E,OAAO,CAAC,QAAQ,CAAC;CAMrB"}
package/dist/index.es.js CHANGED
@@ -1,10 +1,10 @@
1
- function f(r) {
1
+ function p(r) {
2
2
  return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(r);
3
3
  }
4
- function p(r, t) {
5
- return f(t) ? t : t ? r.replace(/\/?\/$/, "") + "/" + t.replace(/^\/+/, "") : r;
4
+ function m(r, t) {
5
+ return p(t) ? t : t ? r.replace(/\/?\/$/, "") + "/" + t.replace(/^\/+/, "") : r;
6
6
  }
7
- class m {
7
+ class d {
8
8
  /**
9
9
  * 创建UrlBuilder实例
10
10
  *
@@ -23,10 +23,10 @@ class m {
23
23
  * @throws 当路径参数中缺少必需的占位符时抛出错误
24
24
  */
25
25
  build(t, e, s) {
26
- let n = p(this.baseURL, t), o = this.interpolateUrl(n, e);
26
+ let i = m(this.baseURL, t), o = this.interpolateUrl(i, e);
27
27
  if (s) {
28
- const i = new URLSearchParams(s).toString();
29
- i && (o += "?" + i);
28
+ const n = new URLSearchParams(s).toString();
29
+ n && (o += "?" + n);
30
30
  }
31
31
  return o;
32
32
  }
@@ -39,24 +39,24 @@ class m {
39
39
  * @throws 当路径参数中缺少必需的占位符时抛出错误
40
40
  */
41
41
  interpolateUrl(t, e) {
42
- return e ? t.replace(/{([^}]+)}/g, (s, n) => {
43
- const o = e[n];
42
+ return e ? t.replace(/{([^}]+)}/g, (s, i) => {
43
+ const o = e[i];
44
44
  if (o === void 0)
45
- throw new Error(`Missing required path parameter: ${n}`);
45
+ throw new Error(`Missing required path parameter: ${i}`);
46
46
  return String(o);
47
47
  }) : t;
48
48
  }
49
49
  }
50
- function d(r, t) {
50
+ function T(r, t) {
51
51
  return typeof r < "u" ? r : t;
52
52
  }
53
53
  class a extends Error {
54
54
  constructor(t, e, s) {
55
- const n = `Request timeout of ${s}ms exceeded for ${e?.method || "GET"} ${t}`;
56
- super(n), this.name = "FetchTimeoutError", this.url = t, this.request = e, Object.setPrototypeOf(this, a.prototype);
55
+ const i = `Request timeout of ${s}ms exceeded for ${e?.method || "GET"} ${t}`;
56
+ super(i), this.name = "FetchTimeoutError", this.url = t, this.request = e, Object.setPrototypeOf(this, a.prototype);
57
57
  }
58
58
  }
59
- var c = /* @__PURE__ */ ((r) => (r.GET = "GET", r.POST = "POST", r.PUT = "PUT", r.DELETE = "DELETE", r.PATCH = "PATCH", r.HEAD = "HEAD", r.OPTIONS = "OPTIONS", r))(c || {}), T = /* @__PURE__ */ ((r) => (r.METHOD = "method", r.BODY = "body", r))(T || {});
59
+ var c = /* @__PURE__ */ ((r) => (r.GET = "GET", r.POST = "POST", r.PUT = "PUT", r.DELETE = "DELETE", r.PATCH = "PATCH", r.HEAD = "HEAD", r.OPTIONS = "OPTIONS", r))(c || {}), E = /* @__PURE__ */ ((r) => (r.METHOD = "method", r.BODY = "body", r))(E || {});
60
60
  class h {
61
61
  constructor() {
62
62
  this.interceptors = [];
@@ -95,22 +95,22 @@ class h {
95
95
  return e;
96
96
  }
97
97
  }
98
- class E {
98
+ class w {
99
99
  constructor() {
100
100
  this.request = new h(), this.response = new h(), this.error = new h();
101
101
  }
102
102
  }
103
- const w = {
103
+ const y = {
104
104
  baseURL: ""
105
105
  };
106
- class P {
106
+ class O {
107
107
  /**
108
108
  * 创建Fetcher实例
109
109
  *
110
110
  * @param options - Fetcher配置选项
111
111
  */
112
- constructor(t = w) {
113
- this.interceptors = new E(), this.urlBuilder = new m(t.baseURL), this.headers = t.headers, this.timeout = t.timeout;
112
+ constructor(t = y) {
113
+ this.interceptors = new w(), this.urlBuilder = new d(t.baseURL), this.headers = t.headers, this.timeout = t.timeout;
114
114
  }
115
115
  /**
116
116
  * 发起HTTP请求
@@ -124,7 +124,7 @@ class P {
124
124
  ...this.headers || {},
125
125
  ...e.headers || {}
126
126
  };
127
- let n = {
127
+ let i = {
128
128
  ...e,
129
129
  headers: Object.keys(s).length > 0 ? s : void 0
130
130
  };
@@ -133,12 +133,12 @@ class P {
133
133
  e.pathParams,
134
134
  e.queryParams
135
135
  );
136
- n = await this.interceptors.request.intercept(n);
136
+ i = await this.interceptors.request.intercept(i);
137
137
  try {
138
- let i = await this.timeoutFetch(o, n);
139
- return i = await this.interceptors.response.intercept(i), i;
140
- } catch (i) {
141
- throw await this.interceptors.error.intercept(i);
138
+ let n = await this.timeoutFetch(o, i);
139
+ return n = await this.interceptors.response.intercept(n), n;
140
+ } catch (n) {
141
+ throw await this.interceptors.error.intercept(n);
142
142
  }
143
143
  }
144
144
  /**
@@ -153,23 +153,25 @@ class P {
153
153
  * @throws FetchTimeoutError 当请求超时时抛出
154
154
  */
155
155
  async timeoutFetch(t, e) {
156
- const s = d(e.timeout, this.timeout);
156
+ const s = T(e.timeout, this.timeout);
157
157
  if (!s)
158
158
  return fetch(t, e);
159
- const n = new AbortController(), o = {
159
+ const i = new AbortController(), o = {
160
160
  ...e,
161
- signal: n.signal
161
+ signal: i.signal
162
162
  };
163
- let i = null;
164
- const u = new Promise((y, l) => {
165
- i = setTimeout(() => {
166
- n.abort(), l(new a(t, e, s));
163
+ let n = null;
164
+ const u = new Promise((P, f) => {
165
+ n = setTimeout(() => {
166
+ n && clearTimeout(n);
167
+ const l = new a(t, e, s);
168
+ i.abort(l), f(l);
167
169
  }, s);
168
170
  });
169
171
  try {
170
172
  return await Promise.race([fetch(t, o), u]);
171
173
  } finally {
172
- i && clearTimeout(i);
174
+ n && clearTimeout(n);
173
175
  }
174
176
  }
175
177
  /**
@@ -266,13 +268,13 @@ class P {
266
268
  }
267
269
  export {
268
270
  a as FetchTimeoutError,
269
- P as Fetcher,
270
- E as FetcherInterceptors,
271
+ O as Fetcher,
272
+ w as FetcherInterceptors,
271
273
  c as HttpMethod,
272
274
  h as InterceptorManager,
273
- T as RequestField,
274
- m as UrlBuilder,
275
- p as combineURLs,
276
- f as isAbsoluteURL,
277
- d as resolveTimeout
275
+ E as RequestField,
276
+ d as UrlBuilder,
277
+ m as combineURLs,
278
+ p as isAbsoluteURL,
279
+ T as resolveTimeout
278
280
  };
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 f(r,e){return a(e)?e:e?r.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):r}class d{constructor(e){this.baseURL=e}build(e,t,s){let i=f(this.baseURL,e),h=this.interpolateUrl(i,t);if(s){const o=new URLSearchParams(s).toString();o&&(h+="?"+o)}return h}interpolateUrl(e,t){return t?e.replace(/{([^}]+)}/g,(s,i)=>{const h=t[i];if(h===void 0)throw new Error(`Missing required path parameter: ${i}`);return String(h)}):e}}function m(r,e){return typeof r<"u"?r:e}class u extends Error{constructor(e,t,s){const i=`Request timeout of ${s}ms exceeded for ${t?.method||"GET"} ${e}`;super(i),this.name="FetchTimeoutError",this.url=e,this.request=t,Object.setPrototypeOf(this,u.prototype)}}var c=(r=>(r.GET="GET",r.POST="POST",r.PUT="PUT",r.DELETE="DELETE",r.PATCH="PATCH",r.HEAD="HEAD",r.OPTIONS="OPTIONS",r))(c||{}),p=(r=>(r.METHOD="method",r.BODY="body",r))(p||{});class l{constructor(){this.interceptors=[]}use(e){const t=this.interceptors.length;return this.interceptors.push(e),t}eject(e){this.interceptors[e]&&(this.interceptors[e]=null)}clear(){this.interceptors=[]}async intercept(e){let t=e;for(let s of this.interceptors)s&&(t=await s.intercept(t));return t}}class T{constructor(){this.request=new l,this.response=new l,this.error=new l}}const y={baseURL:""};class b{constructor(e=y){this.interceptors=new T,this.urlBuilder=new d(e.baseURL),this.headers=e.headers,this.timeout=e.timeout}async fetch(e,t={}){const s={...this.headers||{},...t.headers||{}};let i={...t,headers:Object.keys(s).length>0?s:void 0};const h=this.urlBuilder.build(e,t.pathParams,t.queryParams);i=await this.interceptors.request.intercept(i);try{let o=await this.timeoutFetch(h,i);return o=await this.interceptors.response.intercept(o),o}catch(o){throw await this.interceptors.error.intercept(o)}}async timeoutFetch(e,t){const s=m(t.timeout,this.timeout);if(!s)return fetch(e,t);const i=new AbortController,h={...t,signal:i.signal};let o=null;const E=new Promise((P,w)=>{o=setTimeout(()=>{i.abort(),w(new u(e,t,s))},s)});try{return await Promise.race([fetch(e,h),E])}finally{o&&clearTimeout(o)}}async get(e,t={}){return this.fetch(e,{...t,method:c.GET})}async post(e,t={}){return this.fetch(e,{...t,method:c.POST})}async put(e,t={}){return this.fetch(e,{...t,method:c.PUT})}async delete(e,t={}){return this.fetch(e,{...t,method:c.DELETE})}async patch(e,t={}){return this.fetch(e,{...t,method:c.PATCH})}async head(e,t={}){return this.fetch(e,{...t,method:c.HEAD})}async options(e,t={}){return this.fetch(e,{...t,method:c.OPTIONS})}}n.FetchTimeoutError=u,n.Fetcher=b,n.FetcherInterceptors=T,n.HttpMethod=c,n.InterceptorManager=l,n.RequestField=p,n.UrlBuilder=d,n.combineURLs=f,n.isAbsoluteURL=a,n.resolveTimeout=m,Object.defineProperty(n,Symbol.toStringTag,{value:"Module"})}));
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 f(r,e){return a(e)?e:e?r.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):r}class d{constructor(e){this.baseURL=e}build(e,t,s){let o=f(this.baseURL,e),h=this.interpolateUrl(o,t);if(s){const i=new URLSearchParams(s).toString();i&&(h+="?"+i)}return h}interpolateUrl(e,t){return t?e.replace(/{([^}]+)}/g,(s,o)=>{const h=t[o];if(h===void 0)throw new Error(`Missing required path parameter: ${o}`);return String(h)}):e}}function m(r,e){return typeof r<"u"?r:e}class u extends Error{constructor(e,t,s){const o=`Request timeout of ${s}ms exceeded for ${t?.method||"GET"} ${e}`;super(o),this.name="FetchTimeoutError",this.url=e,this.request=t,Object.setPrototypeOf(this,u.prototype)}}var c=(r=>(r.GET="GET",r.POST="POST",r.PUT="PUT",r.DELETE="DELETE",r.PATCH="PATCH",r.HEAD="HEAD",r.OPTIONS="OPTIONS",r))(c||{}),p=(r=>(r.METHOD="method",r.BODY="body",r))(p||{});class l{constructor(){this.interceptors=[]}use(e){const t=this.interceptors.length;return this.interceptors.push(e),t}eject(e){this.interceptors[e]&&(this.interceptors[e]=null)}clear(){this.interceptors=[]}async intercept(e){let t=e;for(let s of this.interceptors)s&&(t=await s.intercept(t));return t}}class T{constructor(){this.request=new l,this.response=new l,this.error=new l}}const b={baseURL:""};class w{constructor(e=b){this.interceptors=new T,this.urlBuilder=new d(e.baseURL),this.headers=e.headers,this.timeout=e.timeout}async fetch(e,t={}){const s={...this.headers||{},...t.headers||{}};let o={...t,headers:Object.keys(s).length>0?s:void 0};const h=this.urlBuilder.build(e,t.pathParams,t.queryParams);o=await this.interceptors.request.intercept(o);try{let i=await this.timeoutFetch(h,o);return i=await this.interceptors.response.intercept(i),i}catch(i){throw await this.interceptors.error.intercept(i)}}async timeoutFetch(e,t){const s=m(t.timeout,this.timeout);if(!s)return fetch(e,t);const o=new AbortController,h={...t,signal:o.signal};let i=null;const E=new Promise((g,P)=>{i=setTimeout(()=>{i&&clearTimeout(i);const y=new u(e,t,s);o.abort(y),P(y)},s)});try{return await Promise.race([fetch(e,h),E])}finally{i&&clearTimeout(i)}}async get(e,t={}){return this.fetch(e,{...t,method:c.GET})}async post(e,t={}){return this.fetch(e,{...t,method:c.POST})}async put(e,t={}){return this.fetch(e,{...t,method:c.PUT})}async delete(e,t={}){return this.fetch(e,{...t,method:c.DELETE})}async patch(e,t={}){return this.fetch(e,{...t,method:c.PATCH})}async head(e,t={}){return this.fetch(e,{...t,method:c.HEAD})}async options(e,t={}){return this.fetch(e,{...t,method:c.OPTIONS})}}n.FetchTimeoutError=u,n.Fetcher=w,n.FetcherInterceptors=T,n.HttpMethod=c,n.InterceptorManager=l,n.RequestField=p,n.UrlBuilder=d,n.combineURLs=f,n.isAbsoluteURL=a,n.resolveTimeout=m,Object.defineProperty(n,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ahoo-wang/fetcher",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "description": "Core library providing basic HTTP client functionality for Fetcher",
5
5
  "keywords": [
6
6
  "fetch",
@@ -25,7 +25,8 @@
25
25
  "exports": {
26
26
  ".": {
27
27
  "import": "./dist/index.es.js",
28
- "require": "./dist/index.umd.js"
28
+ "require": "./dist/index.umd.js",
29
+ "types": "./dist/index.d.ts"
29
30
  }
30
31
  },
31
32
  "files": [