@seayoo-web/request 2.0.7 → 2.0.8
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/index.cjs +2 -2
- package/dist/index.js +17 -18
- package/dist/node.cjs +1 -1
- package/dist/node.js +4 -6
- package/dist/request.fetch-Dc_ujBlU.cjs +1 -0
- package/dist/{request.fetch-qLDV6Xdq.js → request.fetch-DfFYJr1l.js} +1 -1
- package/dist/{version-DNvZe-sl.js → retry-CaBI_Pfh.js} +31 -35
- package/dist/retry-DrW-Az-k.cjs +2 -0
- package/dist/wx.cjs +1 -1
- package/dist/wx.js +6 -8
- package/package.json +4 -9
- package/types/index.d.ts +0 -1
- package/types/node.d.ts +0 -1
- package/types/wx.d.ts +0 -1
- package/dist/request.fetch-CMHsH_k5.cjs +0 -1
- package/dist/version-DgNkLRed.cjs +0 -2
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./
|
|
2
|
-
`).forEach(n=>{const r=n.trim();if(!r)return;const d=r.split(":"),c=d[0].trim();c&&(o[c]=(d[1]||"").trim())}),o}async function
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./retry-DrW-Az-k.cjs"),y=require("./request.fetch-Dc_ujBlU.cjs"),m=async function(t,o,e){return s.handleResponse(await s.retryRequest(p,t,o,e),t,o,e)};async function q(t,o,e,n){const r=e==null?void 0:e.body,d=(e==null?void 0:e.method)==="PUT"?"PUT":"POST";if(o instanceof Blob){const i=new s.RequestGlobalConfig(n),f=await p(t,i,{...e,method:d,body:o});return s.handleResponse(f,t,i,e)}const c=new FormData,u={...o};r instanceof Object&&Object.entries(r).forEach(([i,f])=>{f instanceof Blob?u[i]=f:Array.isArray(f)?f.forEach((a,g)=>{c.append(`${i}[${g}]`,String(a))}):c.append(i,String(f))});for(const i in u)c.append(i,u[i]);const b=new s.RequestGlobalConfig(n),w=await p(t,b,{...e,method:d,body:c});return s.handleResponse(w,t,b,e)}const p=async function(t,o,e){const n=await s.convertOptions(t,o,e),r=n.method,d=e==null?void 0:e.onUploadProgress,c=s.Bt(n.url,n.params);return await new Promise(u=>{let b=null,w=!1;const i=function(){w||(a.abort(),w=!0)};function f(){b!==null&&clearTimeout(b),n.abort&&n.abort.removeEventListener("abort",i)}const a=new XMLHttpRequest;if(a.open(r,c,!0),d){let g=1;a.upload.addEventListener("progress",h=>{g=h.total,d({total:h.total,loaded:h.loaded})}),a.addEventListener("load",()=>{d({loaded:g,total:g})})}a.addEventListener("load",()=>{f(),u({url:c,method:r,status:a.status,statusText:a.statusText,headers:H(a),body:r==="HEAD"?"":a.responseText})}),a.addEventListener("error",g=>{f(),u({url:c,method:r,status:-1,statusText:"Unknown",body:"",rawError:g})},!0),a.addEventListener("abort",()=>{f(),u({url:c,method:r,status:-1,statusText:"Aborted",body:""})}),Object.entries(n.headers).forEach(([g,h])=>{a.setRequestHeader(g,h)}),n.credentials==="include"&&(a.withCredentials=!0),a.send(n.body||void 0),n.abort&&n.abort.addEventListener("abort",i),n.timeout>0&&(b=setTimeout(i,n.timeout))})};function H(t){const o={};if(!t)return o;const e=t.getAllResponseHeaders();return e&&e!=="null"&&e.replace(/\r/g,"").split(`
|
|
2
|
+
`).forEach(n=>{const r=n.trim();if(!r)return;const d=r.split(":"),c=d[0].trim();c&&(o[c]=(d[1]||"").trim())}),o}async function T(t,o,e={}){const n=window;"callback"in e||(e.callback="jsonxData"+Math.random().toString(16).slice(2));const r=e.callback+"";if(!t)return null;const d=s.Bt(t,e,!0);return new Promise(c=>{n[r]=function(u){if(r in window&&delete n[r],o(u))return u;console.warn("response type check faild",t,u),c(null)},s.je(d).catch(function(){c(null),delete n[r]})})}async function E(t,o,e={}){const n=window;return"var"in e||(e.var="jsonxData"+Math.random().toString(16).slice(2)),t?await s.je(s.Bt(t,e,!0)).then(()=>{const r=n[e.var+""];return o(r)?r:(console.warn("response type check faild",t,r),null)}).catch(()=>null):null}const j=async function(t,o,e){return await q(t,o,e,{baseURL:l.getConfig("baseURL"),logHandler:l.getConfig("logHandler"),errorHandler:l.getConfig("errorHandler"),requestTransformer:l.getConfig("requestTransformer"),messageHandler:l.getConfig("messageHandler"),responseHandler:l.getConfig("responseHandler")})};function R(t){if(!s.Support.window)throw new Error("Default Module Only Support In Browser");return s.Support.fetch?new s.NetRequestHandler(y.fetchRequest,t):new s.NetRequestHandler(m,t)}const l=R(),C=l.setConfig,S=l.request,x=l.head,L=l.get,U=l.post,k=l.del,v=l.put,D=l.patch;exports.getResponseRulesDescription=s.getResponseRulesDescription;exports.NetRequest=R;exports.del=k;exports.get=L;exports.head=x;exports.jsonp=T;exports.jsonx=E;exports.patch=D;exports.post=U;exports.put=v;exports.request=S;exports.setGlobalConfig=C;exports.upload=j;
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { h as w, r as
|
|
2
|
-
import { g as
|
|
3
|
-
import { f as x } from "./request.fetch-
|
|
1
|
+
import { h as w, r as E, R as y, c as T, B as p, j as q, S as R, N as H } from "./retry-CaBI_Pfh.js";
|
|
2
|
+
import { g as I } from "./retry-CaBI_Pfh.js";
|
|
3
|
+
import { f as x } from "./request.fetch-DfFYJr1l.js";
|
|
4
4
|
const C = async function(t, o, e) {
|
|
5
|
-
return w(await
|
|
5
|
+
return w(await E(m, t, o, e), t, o, e);
|
|
6
6
|
};
|
|
7
7
|
async function L(t, o, e, n) {
|
|
8
8
|
const r = e == null ? void 0 : e.body, i = (e == null ? void 0 : e.method) === "PUT" ? "PUT" : "POST";
|
|
@@ -97,7 +97,7 @@ function S(t) {
|
|
|
97
97
|
s && (o[s] = (i[1] || "").trim());
|
|
98
98
|
}), o;
|
|
99
99
|
}
|
|
100
|
-
async function
|
|
100
|
+
async function v(t, o, e = {}) {
|
|
101
101
|
const n = window;
|
|
102
102
|
"callback" in e || (e.callback = "jsonxData" + Math.random().toString(16).slice(2));
|
|
103
103
|
const r = e.callback + "";
|
|
@@ -109,14 +109,14 @@ async function j(t, o, e = {}) {
|
|
|
109
109
|
if (r in window && delete n[r], o(d))
|
|
110
110
|
return d;
|
|
111
111
|
console.warn("response type check faild", t, d), s(null);
|
|
112
|
-
},
|
|
112
|
+
}, q(i).catch(function() {
|
|
113
113
|
s(null), delete n[r];
|
|
114
114
|
});
|
|
115
115
|
});
|
|
116
116
|
}
|
|
117
117
|
async function D(t, o, e = {}) {
|
|
118
118
|
const n = window;
|
|
119
|
-
return "var" in e || (e.var = "jsonxData" + Math.random().toString(16).slice(2)), t ? await
|
|
119
|
+
return "var" in e || (e.var = "jsonxData" + Math.random().toString(16).slice(2)), t ? await q(p(t, e, !0)).then(() => {
|
|
120
120
|
const r = n[e.var + ""];
|
|
121
121
|
return o(r) ? r : (console.warn("response type check faild", t, r), null);
|
|
122
122
|
}).catch(() => null) : null;
|
|
@@ -131,25 +131,24 @@ const O = async function(t, o, e) {
|
|
|
131
131
|
responseHandler: c.getConfig("responseHandler")
|
|
132
132
|
});
|
|
133
133
|
};
|
|
134
|
-
function
|
|
134
|
+
function j(t) {
|
|
135
135
|
if (!R.window)
|
|
136
136
|
throw new Error("Default Module Only Support In Browser");
|
|
137
|
-
return R.fetch ? new
|
|
137
|
+
return R.fetch ? new H(x, t) : new H(C, t);
|
|
138
138
|
}
|
|
139
|
-
const c =
|
|
139
|
+
const c = j(), P = c.setConfig, A = c.request, B = c.head, M = c.get, N = c.post, X = c.del, F = c.put, G = c.patch;
|
|
140
140
|
export {
|
|
141
|
-
|
|
141
|
+
j as NetRequest,
|
|
142
142
|
X as del,
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
143
|
+
M as get,
|
|
144
|
+
I as getResponseRulesDescription,
|
|
145
|
+
B as head,
|
|
146
|
+
v as jsonp,
|
|
147
147
|
D as jsonx,
|
|
148
148
|
G as patch,
|
|
149
|
-
|
|
149
|
+
N as post,
|
|
150
150
|
F as put,
|
|
151
151
|
A as request,
|
|
152
152
|
P as setGlobalConfig,
|
|
153
|
-
O as upload
|
|
154
|
-
I as version
|
|
153
|
+
O as upload
|
|
155
154
|
};
|
package/dist/node.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./retry-DrW-Az-k.cjs"),y=require("./request.fetch-Dc_ujBlU.cjs"),R=require("node:http"),g=require("node:https"),w=async function(o,a,c){return e.handleResponse(await e.retryRequest(S,o,a,c),o,a,c)},S=async function(o,a,c){const t=await e.convertOptions(o,a,c);if(!e.X(t.url))return{url:t.url,method:t.method,status:-1,statusText:"URLFormatError",headers:{},body:""};const f=/^https:\/\//i.test(t.url)?g:R,u=new URL(t.url),i=t.params;i instanceof Object&&Object.keys(i).forEach(r=>u.searchParams.set(r,i[r]));const q=t.method==="HEAD";return new Promise(r=>{const d=f.request(u,{headers:t.headers,method:t.method,timeout:t.timeout>0?t.timeout:void 0},function(s){const p=[];s.on("data",h=>p.push(h)),s.on("end",()=>{const h=e.fromEntries(Object.entries(s.headers).map(([b,m])=>[b.toLowerCase(),Array.isArray(m)?m.join(","):m]));r({url:u.toString(),method:t.method,status:s.statusCode||-1,statusText:s.statusMessage||"Unknown",headers:h,body:q?"":Buffer.concat(p).toString("utf-8")})})});d.on("error",s=>{r({url:u.toString(),method:t.method,status:-1,statusText:"Unknown",body:"",rawError:s})}),d.on("timeout",()=>{r({url:u.toString(),method:t.method,status:-1,statusText:"Timeout",body:""})}),t.body&&d.write(t.body),d.end()})};function l(o){return e.Support.fetch?new e.NetRequestHandler(y.fetchRequest,o):new e.NetRequestHandler(w,o)}const n=l(),T=n.setConfig,j=n.head,C=n.get,E=n.post,N=n.del,O=n.put,U=n.patch;exports.NetRequest=l;exports.del=N;exports.get=C;exports.head=j;exports.patch=U;exports.post=E;exports.put=O;exports.setGlobalConfig=T;
|
package/dist/node.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { h as y, r as R, c as w,
|
|
2
|
-
import {
|
|
3
|
-
import { f as S } from "./request.fetch-qLDV6Xdq.js";
|
|
1
|
+
import { h as y, r as R, c as w, X as q, f as g, N as p, S } from "./retry-CaBI_Pfh.js";
|
|
2
|
+
import { f as x } from "./request.fetch-DfFYJr1l.js";
|
|
4
3
|
import E from "node:http";
|
|
5
4
|
import T from "node:https";
|
|
6
5
|
const U = async function(e, a, u) {
|
|
@@ -65,7 +64,7 @@ const U = async function(e, a, u) {
|
|
|
65
64
|
});
|
|
66
65
|
};
|
|
67
66
|
function C(e) {
|
|
68
|
-
return
|
|
67
|
+
return S.fetch ? new p(x, e) : new p(U, e);
|
|
69
68
|
}
|
|
70
69
|
const s = C(), H = s.setConfig, k = s.head, P = s.get, B = s.post, D = s.del, F = s.put, G = s.patch;
|
|
71
70
|
export {
|
|
@@ -76,6 +75,5 @@ export {
|
|
|
76
75
|
G as patch,
|
|
77
76
|
B as post,
|
|
78
77
|
F as put,
|
|
79
|
-
H as setGlobalConfig
|
|
80
|
-
v as version
|
|
78
|
+
H as setGlobalConfig
|
|
81
79
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const o=require("./retry-DrW-Az-k.cjs"),f=async function(a,n,i){return o.handleResponse(await o.retryRequest(w,a,n,i),a,n,i)},w=async function(a,n,i){const t=await o.convertOptions(a,n,i),s=new URL(t.url),u=t.params;u instanceof Object&&Object.keys(u).forEach(e=>s.searchParams.set(e,u[e]));const r=o.Support.AbortController?new AbortController:null;function c(){r&&!r.signal.aborted&&r.abort()}t.abort&&t.abort.addEventListener("abort",c);const h=t.timeout>0?setTimeout(c,t.timeout):null,l=t.method==="HEAD";return await fetch(s,{method:t.method,headers:Object.keys(t.headers).length>0?new Headers(t.headers):void 0,body:t.body,credentials:t.credentials,signal:r==null?void 0:r.signal,redirect:"follow"}).then(async e=>{const d=l?"":await e.text().catch(m=>m),b=o.fromEntries([...e.headers.entries()]);return d instanceof Error?{url:s.toString(),method:t.method,status:e.status,statusText:e.statusText||"Unknown",body:"",headers:b,rawError:d}:{url:s.toString(),method:t.method,status:e.status,statusText:e.statusText,headers:b,body:d}}).catch(e=>({url:s.toString(),method:t.method,status:-1,statusText:r!=null&&r.signal.aborted?"Aborted":"Unknown",body:"",rawError:e})).finally(()=>{h!==null&&clearTimeout(h),t.abort&&t.abort.removeEventListener("abort",c)})};exports.fetchRequest=f;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { h as l, r as f, c as w, S as y, f as p } from "./
|
|
1
|
+
import { h as l, r as f, c as w, S as y, f as p } from "./retry-CaBI_Pfh.js";
|
|
2
2
|
const x = async function(o, r, n) {
|
|
3
3
|
return l(await f(E, o, r, n), o, r, n);
|
|
4
4
|
}, E = async function(o, r, n) {
|
|
@@ -21,7 +21,7 @@ function K(e) {
|
|
|
21
21
|
}
|
|
22
22
|
function N() {
|
|
23
23
|
}
|
|
24
|
-
function
|
|
24
|
+
function G(e) {
|
|
25
25
|
const t = e || "CustomError";
|
|
26
26
|
return class extends Error {
|
|
27
27
|
constructor(s) {
|
|
@@ -29,10 +29,25 @@ function W(e) {
|
|
|
29
29
|
value: t,
|
|
30
30
|
enumerable: !1,
|
|
31
31
|
configurable: !0
|
|
32
|
-
}), "setPrototypeOf" in Object && Object.setPrototypeOf(this, new.target.prototype), "captureStackTrace" in Error && Error.captureStackTrace(this, this.constructor);
|
|
32
|
+
}), "setPrototypeOf" in Object && Object.setPrototypeOf(this, new.target.prototype), "captureStackTrace" in Error && typeof Error.captureStackTrace == "function" && Error.captureStackTrace(this, this.constructor);
|
|
33
33
|
}
|
|
34
34
|
};
|
|
35
35
|
}
|
|
36
|
+
const J = /^(?:https?:)?\/\/.+$/i, V = /^https?:\/\/.+$/i, W = /^\{[\d\D]*\}$/, z = /^\[[\d\D]*\]$/;
|
|
37
|
+
function F(e, t = !1) {
|
|
38
|
+
return t ? J.test(e) : V.test(e);
|
|
39
|
+
}
|
|
40
|
+
function X(e) {
|
|
41
|
+
return e == null;
|
|
42
|
+
}
|
|
43
|
+
function O(e, ...t) {
|
|
44
|
+
if (!e || typeof e != "object") return !1;
|
|
45
|
+
const s = Object.getPrototypeOf(e);
|
|
46
|
+
return s !== Object.prototype && s !== null ? !1 : t.every((r) => r in e);
|
|
47
|
+
}
|
|
48
|
+
function x(e) {
|
|
49
|
+
return W.test(e) || z.test(e);
|
|
50
|
+
}
|
|
36
51
|
function j(e) {
|
|
37
52
|
return e ? e[0].toLowerCase() + e.slice(1) : "";
|
|
38
53
|
}
|
|
@@ -44,22 +59,6 @@ function A(e) {
|
|
|
44
59
|
function M(e) {
|
|
45
60
|
return P.test(e) ? j(e).replace(/(?:^_*|_*$)/g, "").replace(/_+([^_])/g, (t, s) => "_" + s.toLowerCase()) : _.test(e) ? j(e.replace(/(?:^-*|-*$)/g, "")).replace(/-+(\w)/g, (t, s) => "_" + s.toLowerCase()) : j(e).replace(/[A-Z]/g, (t) => `_${t.toLowerCase()}`);
|
|
46
61
|
}
|
|
47
|
-
const G = /^(?:https?:)?\/\/.+$/i, J = /^https?:\/\/.+$/i, V = /^\{[\d\D]*\}$/, X = /^\[[\d\D]*\]$/;
|
|
48
|
-
function F(e, t = !1) {
|
|
49
|
-
return t ? G.test(e) : J.test(e);
|
|
50
|
-
}
|
|
51
|
-
function Z(e) {
|
|
52
|
-
return e == null;
|
|
53
|
-
}
|
|
54
|
-
function O(e, ...t) {
|
|
55
|
-
if (!e || typeof e != "object")
|
|
56
|
-
return !1;
|
|
57
|
-
const s = Object.getPrototypeOf(e);
|
|
58
|
-
return s !== Object.prototype && s !== null ? !1 : t.every((r) => r in e);
|
|
59
|
-
}
|
|
60
|
-
function B(e) {
|
|
61
|
-
return V.test(e) || X.test(e);
|
|
62
|
-
}
|
|
63
62
|
function k(e, t) {
|
|
64
63
|
try {
|
|
65
64
|
const s = JSON.parse(e);
|
|
@@ -97,7 +96,7 @@ async function we(e) {
|
|
|
97
96
|
}, r.setAttribute("src", e), s.appendChild(r);
|
|
98
97
|
});
|
|
99
98
|
}
|
|
100
|
-
function
|
|
99
|
+
function Z(e, t = "数据未能正确识别") {
|
|
101
100
|
return typeof e == "function" ? {
|
|
102
101
|
guard: e,
|
|
103
102
|
message: t
|
|
@@ -123,8 +122,7 @@ function ee(e, t) {
|
|
|
123
122
|
if (t) {
|
|
124
123
|
if (t === !0)
|
|
125
124
|
return e.replace(/\?[^#]*/, "");
|
|
126
|
-
} else
|
|
127
|
-
return e;
|
|
125
|
+
} else return e;
|
|
128
126
|
const s = e.split("#"), r = s[0].split("?"), a = r[0], n = r.length > 1 ? r[1] : "", o = s.length > 1 ? "#" + s[1] : "", c = typeof t == "string" ? [t] : Array.isArray(t) ? t : [];
|
|
129
127
|
return !c.length || !n ? s[0] + o : (c.map((i) => i.replace(/([\\(){}[\]^$+\-*?|])/g, "\\$1")), (a + "?" + n.replace(new RegExp("(?:^|&)(?:" + c.join("|") + ")=[^&$]+", "g"), "").replace(/^&/, "")).replace(/\?$/, "") + o);
|
|
130
128
|
}
|
|
@@ -212,8 +210,8 @@ class re {
|
|
|
212
210
|
}
|
|
213
211
|
const D = "UnexpectResponse";
|
|
214
212
|
function ne(e, t, s, r) {
|
|
215
|
-
if (t.ok && !
|
|
216
|
-
const a =
|
|
213
|
+
if (t.ok && !X(t.data) && r) {
|
|
214
|
+
const a = Z(r, "响应数据未能正确识别");
|
|
217
215
|
return a.guard(t.data) || (s.showMessage(!0, `${e} ${a.message}`, t.code, t.status), console.error(D, e, t.data), t.data = null, t.code = D, t.message = a.message), t;
|
|
218
216
|
}
|
|
219
217
|
return t;
|
|
@@ -379,7 +377,7 @@ function ie(e, t, s) {
|
|
|
379
377
|
return a;
|
|
380
378
|
}
|
|
381
379
|
function ue(e, t, s, r = w) {
|
|
382
|
-
if (!
|
|
380
|
+
if (!x(e))
|
|
383
381
|
return { message: "" };
|
|
384
382
|
const a = C(k(e), t);
|
|
385
383
|
return !a || !O(a) ? { message: e } : {
|
|
@@ -415,7 +413,7 @@ function fe(e, t, s, r) {
|
|
|
415
413
|
if (t === 204 || !r)
|
|
416
414
|
return n;
|
|
417
415
|
if (a.resolve === "body")
|
|
418
|
-
return n.data =
|
|
416
|
+
return n.data = x(r) ? C(k(r), e.converter) : r, n;
|
|
419
417
|
const o = C(k(r), e.converter);
|
|
420
418
|
if (!o || !O(o))
|
|
421
419
|
return n.ok = !1, n.code = "ResponseFormatError", n.message = "响应内容无法格式化为 Object", n;
|
|
@@ -431,7 +429,7 @@ function T(e) {
|
|
|
431
429
|
function C(e, t) {
|
|
432
430
|
return t === "camelize" ? R(e) : t === "snakify" ? $(e) : e;
|
|
433
431
|
}
|
|
434
|
-
const ge =
|
|
432
|
+
const ge = G("APIError");
|
|
435
433
|
function me(e) {
|
|
436
434
|
const t = {};
|
|
437
435
|
for (const a in e.headers)
|
|
@@ -489,7 +487,7 @@ function Oe(e, t, s, r) {
|
|
|
489
487
|
});
|
|
490
488
|
}
|
|
491
489
|
if (a < 0)
|
|
492
|
-
return
|
|
490
|
+
return B(
|
|
493
491
|
{ ok: !1, status: a, code: e.statusText, headers: {}, message: "", data: null },
|
|
494
492
|
`${n} ${t} ${e.statusText}`,
|
|
495
493
|
n,
|
|
@@ -500,9 +498,9 @@ function Oe(e, t, s, r) {
|
|
|
500
498
|
const l = { ok: c, data: h, code: i, message: u, status: a, headers: o };
|
|
501
499
|
(f = s.get("responseHandler")) == null || f({ ...l }, n, t);
|
|
502
500
|
const d = c ? u : u || e.statusText;
|
|
503
|
-
return
|
|
501
|
+
return B(l, d, n, t, s, r);
|
|
504
502
|
}
|
|
505
|
-
function
|
|
503
|
+
function B(e, t, s, r, a, n) {
|
|
506
504
|
const o = a.get("message"), c = o === !1 || (n == null ? void 0 : n.message) === !1 ? !1 : (n == null ? void 0 : n.message) || o;
|
|
507
505
|
if (c !== !1) {
|
|
508
506
|
const i = typeof c == "function" ? c(e, s, r, t) : t;
|
|
@@ -551,18 +549,16 @@ async function pe(e, t, s, r, a) {
|
|
|
551
549
|
)
|
|
552
550
|
), await pe(e, t, s, r, n + 1);
|
|
553
551
|
}
|
|
554
|
-
const ke = "2.0.7";
|
|
555
552
|
export {
|
|
556
|
-
|
|
557
|
-
F as K,
|
|
553
|
+
je as B,
|
|
558
554
|
Re as N,
|
|
559
555
|
re as R,
|
|
560
556
|
E as S,
|
|
561
|
-
|
|
557
|
+
F as X,
|
|
562
558
|
$e as c,
|
|
563
559
|
I as f,
|
|
564
560
|
Ee as g,
|
|
565
561
|
Oe as h,
|
|
566
|
-
|
|
567
|
-
|
|
562
|
+
we as j,
|
|
563
|
+
pe as r
|
|
568
564
|
};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var K=Object.defineProperty;var G=(e,t,s)=>t in e?K(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var y=(e,t,s)=>G(e,typeof t!="symbol"?t+"":t,s);const p=typeof globalThis<"u"?globalThis:typeof global<"u"?global:typeof window<"u"?window:{},w={fetch:"fetch"in p,window:"window"in p,FormData:"FormData"in p,Blob:"Blob"in p,wx:"wx"in p,TextDecoder:"TextDecoder"in p,AbortController:"AbortController"in p};function q(e){return e.reduce((t,[s,r])=>(s&&(t[s]=r||""),t),{})}function N(e){return new Promise(t=>setTimeout(t,Math.max(0,e)))}function J(){}function V(e){const t=e||"CustomError";return class extends Error{constructor(s){super(s),Object.defineProperty(this,"name",{value:t,enumerable:!1,configurable:!0}),"setPrototypeOf"in Object&&Object.setPrototypeOf(this,new.target.prototype),"captureStackTrace"in Error&&typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,this.constructor)}}}const W=/^(?:https?:)?\/\/.+$/i,X=/^https?:\/\/.+$/i,z=/^\{[\d\D]*\}$/,Z=/^\[[\d\D]*\]$/;function O(e,t=!1){return t?W.test(e):X.test(e)}function Q(e){return e==null}function k(e,...t){if(!e||typeof e!="object")return!1;const s=Object.getPrototypeOf(e);return s!==Object.prototype&&s!==null?!1:t.every(r=>r in e)}function P(e){return z.test(e)||Z.test(e)}function R(e){return e?e[0].toLowerCase()+e.slice(1):""}const _=/_\w*/,x=/-\w*/;function A(e){const t=_.test(e)?e.replace(/(?:^_*|_*$)/g,"").replace(/_+([^_])/g,(s,r)=>r.toUpperCase()):x.test(e)?e.replace(/(?:^-*|-*$)/g,"").replace(/-+(\w)/g,(s,r)=>r.toUpperCase()):e;return R(t)}function D(e){return _.test(e)?R(e).replace(/(?:^_*|_*$)/g,"").replace(/_+([^_])/g,(t,s)=>"_"+s.toLowerCase()):x.test(e)?R(e.replace(/(?:^-*|-*$)/g,"")).replace(/-+(\w)/g,(t,s)=>"_"+s.toLowerCase()):R(e).replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`)}function v(e,t){try{const s=JSON.parse(e);return t?t(s)?s:null:s}catch{return null}}""+Math.random().toString(32).slice(2);function $(e,t=!1){return typeof e=="string"?A(e):Array.isArray(e)?e.map(s=>!t||typeof s=="string"?$(s):typeof s=="object"&&s?$(s,!0):s):k(e)?Object.keys(e).reduce((s,r)=>{const a=A(String(r)),n=a.charAt(0).toLowerCase()+a.slice(1);return s[n]=t?e[r]:$(e[r]),s},{}):e}function E(e,t=!1){return typeof e=="string"?D(e):Array.isArray(e)?e.map(s=>!t||typeof s=="string"?E(s):typeof s=="object"&&s?E(s,t):s):k(e)?Object.keys(e).reduce((s,r)=>{const a=D(String(r));return s[a]=t?e[r]:E(e[r]),s},{}):e}async function Y(e){return await new Promise(function(t){const s=document.getElementsByTagName("head")[0],r=document.createElement("script");r.setAttribute("type","text/javascript"),r.setAttribute("charset","utf-8"),r.onload=function(){s.removeChild(r),t(!0)},r.onerror=function(){s.removeChild(r),t(!1)},r.setAttribute("src",e),s.appendChild(r)})}function ee(e,t="数据未能正确识别"){return typeof e=="function"?{guard:e,message:t}:{guard:e.guard,message:e.message||t}}function te(e,t=""){return!t||O(e,!0)?M(e):(M(t)+"/"+e).replace(/\/{2,}/g,"/").replace(/:\//,"://")}function M(e){return O(e,!0)?e.startsWith("http")?e:("location"in globalThis?location.protocol:"https:")+e:("location"in globalThis?location.origin:"http://127.0.0.1")+"/"+e.replace(/^\/+/,"")}function se(e,t){const s={};return(e.match(/([^=&#?]+)=[^&#]*/g)||[]).forEach(function(r){const a=r.split("="),n=a[0],o=decodeURIComponent(a[1]||"");s[n]!==void 0?s[n]+=","+o:s[n]=o}),t!==!0?s[t]||"":s}function re(e,t){if(t){if(t===!0)return e.replace(/\?[^#]*/,"")}else return e;const s=e.split("#"),r=s[0].split("?"),a=r[0],n=r.length>1?r[1]:"",o=s.length>1?"#"+s[1]:"",c=typeof t=="string"?[t]:Array.isArray(t)?t:[];return!c.length||!n?s[0]+o:(c.map(i=>i.replace(/([\\(){}[\]^$+\-*?|])/g,"\\$1")),(a+"?"+n.replace(new RegExp("(?:^|&)(?:"+c.join("|")+")=[^&$]+","g"),"").replace(/^&/,"")).replace(/\?$/,"")+o)}function ne(e,t,s=!1){const r=typeof t=="string"?t:Object.keys(t).map(o=>`${o}=${encodeURIComponent(t[o])}`).join("&");if(!r)return e;const a=e.split("#");s&&(a[0]=re(a[0],(r.match(/([^=&#?]+)=[^&#]+/g)||[]).map(o=>o.replace(/=.+$/,""))));const n=a[0].indexOf("?")+1?"&":"?";return(a[0]+n+r+(a.length>1?"#"+a[1]:"")).replace(/\?&/,"?")}function ae(e){const t=e.match(/(?:\?|&)([^=]+)(?:&|$)/g);return t?t.join("").replace(/(?:\?|^&+|&+$)/g,"").replace(/&{2}/g,"&").split("&").sort():[]}class oe{constructor(t=500){y(this,"ttl");y(this,"cache");this.cache={},this.ttl=Math.max(t,0)}getKey(t,s){const r=t.replace(/#.+/,""),a=r.replace(/\?.+/g,""),n=Object.assign(se(r,!0),s),o=ae(r),c=Object.keys(n).sort().map(i=>`${i}#${n[i]}`);return`${a}_${c.join(",")}_${o.join(",")}`}updateTTL(t){this.ttl=Math.max(t,0)}get(t){if(this.ttl===0)return null;const s=this.cache[t];return s?s.ttl<Date.now()?(delete this.cache[t],null):s.res:null}set(t,s){this.ttl!==0&&(this.cache[t]={ttl:Date.now()+this.ttl,res:s})}}class S{constructor(t){y(this,"config",{baseURL:"",maxRetry:0,retryInterval:1e3,retryResolve:"network",timeout:1e4,cacheTTL:500,credentials:"same-origin",responseRule:{ok:{resolve:"body"},failed:{resolve:"json",messageField:"message"}}});t&&this.set(t)}set(t){if(t.baseURL&&!/^\/.+/.test(t.baseURL)&&!O(t.baseURL))throw console.warn("baseURL 需要以 / 开头,或者是完整的 url 地址"),new Error("BaseURLError");Object.assign(this.config,t)}get(t){return this.config[t]}getFullUrl(t){return te(t,this.config.baseURL)}showMessage(t,s,r,a){this.config.messageHandler&&s&&this.config.messageHandler(t,s,r,a)}}const U="UnexpectResponse";function ce(e,t,s,r){if(t.ok&&!Q(t.data)&&r){const a=ee(r,"响应数据未能正确识别");return a.guard(t.data)||(s.showMessage(!0,`${e} ${a.message}`,t.code,t.status),console.error(U,e,t.data),t.data=null,t.code=U,t.message=a.message),t}return t}class ie{constructor(t,s){y(this,"agent");y(this,"config");y(this,"cache");this.config=new S(s),this.agent=t,this.cache=new oe(this.config.get("cacheTTL")),this.setConfig=this.setConfig.bind(this),this.getConfig=this.getConfig.bind(this),this.request=this.request.bind(this),this.get=this.get.bind(this),this.post=this.post.bind(this),this.del=this.del.bind(this),this.patch=this.patch.bind(this),this.put=this.put.bind(this),this.head=this.head.bind(this)}async request(t,s){try{return await this.agent(t,this.config,s)}catch(r){return console.error("RequestError",r),{ok:!1,status:-9,code:"Unkonwn",message:String(r),headers:{},data:null}}}async guard(t,s,r){return ce(t,s,this.config,r)}setConfig(t){this.config.set(t),this.cache.updateTTL(this.config.get("cacheTTL"))}getConfig(t){return this.config.get(t)}async head(t,s){const r=Object.assign({},s||null);return r.method="HEAD",this.guard(t,await this.request(t,r),null)}async get(t,s,r){const a=Object.assign({},r||null);a.method="GET";const n=this.cache.getKey(t,a.params),o=this.cache.get(n);if(o)return this.guard(t,await o,s||null);const c=this.request(t,a);return this.cache.set(n,c),this.guard(t,await c,s||null)}async post(t,s,r,a){const n=Object.assign({},a||null);return n.method="POST",n.body=s||{},this.guard(t,await this.request(t,n),r||null)}async del(t,s,r){const a=Object.assign({},r||null);return a.method="DELETE",this.guard(t,await this.request(t,a),s||null)}async put(t,s,r,a){const n=Object.assign({},a||null);return n.method="PUT",n.body=s||{},this.guard(t,await this.request(t,n),r||null)}async patch(t,s,r,a){const n=Object.assign({},a||null);return n.method="PATCH",n.body=s||{},this.guard(t,await this.request(t,n),r||null)}}async function ue(e,t,s){var g;const r=Object.assign({method:"GET"},s),a=w.FormData?r.body instanceof FormData:!1,n=a&&r.method!=="POST"&&r.method!=="PUT"?"POST":r.method,o=n==="GET"||n==="HEAD"||n==="DELETE";o&&r.body!==void 0&&(console.warn("request body is invalid with method get, head, delete"),delete r.body);const c=Object.assign(a||o?{}:{"Content-Type":w.Blob&&r.body instanceof Blob?r.body.type||"application/octet-stream":"application/json;charset=utf-8"},r.headers),i=r.params||{},h={};Object.keys(i).forEach(b=>{i[b]!==void 0&&(h[b]=le(i[b]))});const u=t.getFullUrl(e),l=he(r.body),d=r.timeout||t.get("timeout"),f=await async function(){const b=t.get("requestTransformer");if(b)return await b({headers:c,params:h,method:n,url:u,body:l})}(),m=typeof f=="string"&&f?f:u;return(g=t.get("logHandler"))==null||g({type:"ready",url:m,method:n,headers:c,timeout:d,body:l}),{url:m,method:n,body:l,params:h,headers:c,timeout:d,abort:r.abort,credentials:r.credentials||t.get("credentials")}}function le(e){return typeof e=="string"?e:Array.isArray(e)?e.join(","):e+""}function he(e){if(e)return typeof e=="string"||e instanceof URLSearchParams||e instanceof ArrayBuffer||w.Blob&&e instanceof Blob||w.FormData&&e instanceof FormData?e:JSON.stringify(e)}const H="data",j="message";function de(e,t,s,r,a){const n=a||r;return T(e)?we(n.ok||r.ok,e,t,s):ge(n.failed||r.failed,t,s)}const fe=function(e){const t=[],s=e.failed||{resolve:"json"};switch(t.push("- 当http状态码 <200 或者 >=400 时"),s.resolve){case"body":t.push(" 将响应内容格式化为字符串并作为错误消息");break;case"json":t.push(" 将响应解析为json,并读取 "+(s.messageField||j)+" 作为错误消息");break}const r=e.ok||{resolve:"body"};switch(t.push("- 当http状态码 >=200 并且 <400 时"),r.resolve){case"body":t.push(" 将响应尝试解析为 json,并作为数据内容返回");break;case"json":t.push(" 将响应解析为 json,读取 "+(r.dataField||H)+" 作为响应数据,读取 "+(r.messageField||j)+" 作为提示消息"),r.statusField&&t.push(" 当 "+r.statusField+" 为 "+(r.statusOKValue||"空值")+" 时是成功提示,否则是错误消息"),r.ignoreMessage&&t.push(" 并忽略以下消息:"+r.ignoreMessage);break}return t.join(`
|
|
2
|
+
`)};function ge(e,t,s){const r=e||{resolve:"json",messageField:j},a={ok:!1,code:t,message:s,data:null};switch(r.resolve){case"body":a.message=L(s)||s;break;case"json":const{code:n,message:o}=me(s,r.converter,r.statusField,r.messageField);a.code=n||t,a.message=L(s)||o;break}return a}function me(e,t,s,r=j){if(!P(e))return{message:""};const a=F(v(e),t);return!a||!k(a)?{message:e}:{code:s?C(a,s):"",message:C(a,r)||e}}function C(e,t){const s=Array.isArray(t)?t:[t];for(const r of s)if(r in e)return ye(e[r]);return""}function ye(e){return e?typeof e=="string"?e:JSON.stringify(e):""}const pe=/<title>([^<]+)<\/title>/i,be=/<message>([^<]+)<\/message>/i;function L(e){const t=e.match(pe);if(t)return t[1];const s=e.match(be);return s?s[1]:""}function we(e,t,s,r){const a=e||{resolve:"body"},n={ok:!0,code:s,message:"",data:null};if(t===204||!r)return n;if(a.resolve==="body")return n.data=P(r)?F(v(r),e.converter):r,n;const o=F(v(r),e.converter);if(!o||!k(o))return n.ok=!1,n.code="ResponseFormatError",n.message="响应内容无法格式化为 Object",n;const c=a.statusField,i=a.statusOKValue||"",h=a.dataField||H,u=a.messageField||j,l=a.ignoreMessage||"";if(c&&!(c in o))return n.ok=!1,n.code="ResponseFieldMissing",n.message="响应内容找不到状态字段 "+c,n;const d=c?o[c]+"":"";return n.ok=c?d===i:!0,n.code=d||s,n.data=h===!0?o:h in o?o[h]:null,n.message=C(o,u),l&&n.message&&(Array.isArray(l)&&l.includes(n.message)||typeof l=="string"&&n.message===l)&&(n.message=""),n}function T(e){return e>=200&&e<400}function F(e,t){return t==="camelize"?$(e):t==="snakify"?E(e):e}const je=V("APIError");function Re(e){const t={};for(const a in e.headers)(a.startsWith("x-")||a.includes("trace")||a.includes("server")||/\b(?:id|uuid)\b/.test(a))&&(t[a]=e.headers[a]);const s=e.url.replace(/^(?:https?:)?\/*/i,"").replace(/\?.+/,""),r=e.status<0?"unknown":e.status;return{sentryError:new je(`${s} | ${r}${e.code?` | ${e.code}`:""}`),sentryTags:{...t,status:r,method:e.method,code:e.code||"unknown",message:e.message||"empty"},sentryExtra:{url:e.url,responseBody:e.body||"empty",responseHeaders:e.headers,rawError:e.error}}}function $e(e,t,s,r){var f;const a=e.status,n=e.method,o=q(Object.entries(e.headers||{}).map(([m,g])=>[m.toLowerCase(),g])),{ok:c,code:i,data:h,message:u}=de(a,e.statusText,e.body,s.get("responseRule"),r==null?void 0:r.responseRule);if(!T(a)){const m=Re({url:e.url,method:e.method,status:a,code:i,message:u,body:e.body,headers:o,error:e.rawError});(s.get("errorHandler")||Ee)({url:t,method:n,status:a,code:i,message:u,headers:o,rawError:e.rawError,responseBody:e.body,...m})}if(a<0)return B({ok:!1,status:a,code:e.statusText,headers:{},message:"",data:null},`${n} ${t} ${e.statusText}`,n,t,s,r);const l={ok:c,data:h,code:i,message:u,status:a,headers:o};(f=s.get("responseHandler"))==null||f({...l},n,t);const d=c?u:u||e.statusText;return B(l,d,n,t,s,r)}function B(e,t,s,r,a,n){const o=a.get("message"),c=o===!1||(n==null?void 0:n.message)===!1?!1:(n==null?void 0:n.message)||o;if(c!==!1){const i=typeof c=="function"?c(e,s,r,t):t;i instanceof Error?a.showMessage(!0,i.message,e.code,e.status):i&&typeof i=="object"&&"message"in i?a.showMessage(!1,i.message,e.code,e.status):a.showMessage(!e.ok,i,e.code,e.status)}return e}function Ee(e){const t={};for(const s in e)s.startsWith("sentry")||(t[s]=e[s]);console.error("RequestError",t)}async function I(e,t,s,r,a){const n=a||0,o=Math.max(0,Math.min(10,(r==null?void 0:r.maxRetry)??s.get("maxRetry")??0)),c=(r==null?void 0:r.retryResolve)??s.get("retryResolve"),i=s.get("logHandler")||J;i({type:"prepear",url:t,method:(r==null?void 0:r.method)||"GET",retry:n,maxRetry:o,message:n===0?"start":`retry ${n}/${o} start`,headers:r==null?void 0:r.headers,options:r});const h=Date.now(),u=await e(t,s,r),l=u.status,d=Date.now()-h,f=`[cost ${d}][${l}] ${l<0?u.body:""}`;i({type:"finished",url:t,method:u.method,retry:n,maxRetry:o,message:n===0?`finish ${f}`:`retry ${n}/${o} finish ${f}`,response:u,headers:u.headers,cost:d});const m=T(l);if(!o||c==="network"&&l>0||c==="status"&&m||Array.isArray(c)&&!c.includes(l)||typeof c=="function"&&c(u,n)!==!0||n>=o)return u;const g=(r==null?void 0:r.retryInterval)??s.get("retryInterval")??1e3;return await N(Math.max(100,g==="2EB"?Math.pow(2,n)*1e3:typeof g=="function"?g(n+1)||0:g)),await I(e,t,s,r,n+1)}exports.Bt=ne;exports.NetRequestHandler=ie;exports.RequestGlobalConfig=S;exports.Support=w;exports.X=O;exports.convertOptions=ue;exports.fromEntries=q;exports.getResponseRulesDescription=fe;exports.handleResponse=$e;exports.je=Y;exports.retryRequest=I;
|
package/dist/wx.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./retry-DrW-Az-k.cjs"),p=async function(t,n,r){return s.handleResponse(await s.retryRequest(l,t,n,r),t,n,r)},l=async function(t,n,r){const e=await s.convertOptions(t,n,r),u=e.method==="PATCH"?"POST":e.method,a=s.Bt(e.url,e.params);return s.Support.wx?new Promise(d=>{wx.request({url:a,data:e.body,header:e.headers,method:u,dataType:"string",responseType:"text",fail(){d({url:a,method:u,status:-1,statusText:"Unknown",body:""})},success(c){d({url:a,method:u,status:c.statusCode,statusText:c.statusCode+"",headers:{...c.header},body:e.method==="HEAD"?"":f(c.data)})}})}):{url:a,method:u,status:-1,statusText:"NotSupport",body:""}};function f(t){return typeof t=="string"?t:t instanceof ArrayBuffer&&s.Support.TextDecoder?new TextDecoder().decode(t):JSON.stringify(t)}function i(t){return new s.NetRequestHandler(p,t)}const o=i(),y=o.setConfig,g=o.head,h=o.get,x=o.post,T=o.del,b=o.put;exports.NetRequest=i;exports.del=T;exports.get=h;exports.head=g;exports.post=x;exports.put=b;exports.setGlobalConfig=y;
|
package/dist/wx.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { h as i, r as p, c as f,
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}, y = async function(t, o, n) {
|
|
1
|
+
import { h as i, r as p, c as f, B as l, S as d, N as h } from "./retry-CaBI_Pfh.js";
|
|
2
|
+
const y = async function(t, o, n) {
|
|
3
|
+
return i(await p(x, t, o, n), t, o, n);
|
|
4
|
+
}, x = async function(t, o, n) {
|
|
6
5
|
const e = await f(t, o, n), r = e.method === "PATCH" ? "POST" : e.method, u = l(e.url, e.params);
|
|
7
6
|
return d.wx ? new Promise((c) => {
|
|
8
7
|
wx.request({
|
|
@@ -44,7 +43,7 @@ function m(t) {
|
|
|
44
43
|
return typeof t == "string" ? t : t instanceof ArrayBuffer && d.TextDecoder ? new TextDecoder().decode(t) : JSON.stringify(t);
|
|
45
44
|
}
|
|
46
45
|
function w(t) {
|
|
47
|
-
return new h(
|
|
46
|
+
return new h(y, t);
|
|
48
47
|
}
|
|
49
48
|
const s = w(), g = s.setConfig, q = s.head, R = s.get, b = s.post, S = s.del, C = s.put;
|
|
50
49
|
export {
|
|
@@ -54,6 +53,5 @@ export {
|
|
|
54
53
|
q as head,
|
|
55
54
|
b as post,
|
|
56
55
|
C as put,
|
|
57
|
-
g as setGlobalConfig
|
|
58
|
-
D as version
|
|
56
|
+
g as setGlobalConfig
|
|
59
57
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seayoo-web/request",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.8",
|
|
4
4
|
"description": "requst tools for seayoo web",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"source": "./src/index.ts",
|
|
@@ -58,16 +58,11 @@
|
|
|
58
58
|
"@vitest/coverage-istanbul": "^3.0.5",
|
|
59
59
|
"happy-dom": "^12.10.3",
|
|
60
60
|
"msw": "^2.7.0",
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
},
|
|
64
|
-
"dependencies": {
|
|
65
|
-
"@seayoo-web/utils": "^1.20.0"
|
|
61
|
+
"vitest": "^3.0.5",
|
|
62
|
+
"@seayoo-web/utils": "^2.0.1"
|
|
66
63
|
},
|
|
67
64
|
"scripts": {
|
|
68
|
-
"build": "
|
|
69
|
-
"emit-types": "tsc --emitDeclarationOnly",
|
|
70
|
-
"clear": "rimraf dist && rimraf node_modules",
|
|
65
|
+
"build": "vite build && tsc --emitDeclarationOnly",
|
|
71
66
|
"type-check": "tsc --noEmit",
|
|
72
67
|
"lint": "eslint ./src/**/*.ts",
|
|
73
68
|
"lint:fix": "eslint ./src/**/*.{ts,js} --fix",
|
package/types/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { NetRequestHandler } from "./inc/main";
|
|
2
2
|
import { xhrUpload } from "./inc/request.xhr";
|
|
3
3
|
import type { IRequestGlobalConfig } from "./inc/type";
|
|
4
|
-
export * from "./version";
|
|
5
4
|
export { jsonp, jsonx } from "./inc/jsonp";
|
|
6
5
|
export { getResponseRulesDescription } from "./inc/rule";
|
|
7
6
|
export type { IRequestOptions, IRequestGlobalConfig, IResponseRule, IResponseResult, IRequestLog } from "./inc/type";
|
package/types/node.d.ts
CHANGED
package/types/wx.d.ts
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";const r=require("./version-DgNkLRed.cjs"),f=async function(a,n,i){return r.handleResponse(await r.retryRequest(w,a,n,i),a,n,i)},w=async function(a,n,i){const t=await r.convertOptions(a,n,i),o=new URL(t.url),u=t.params;u instanceof Object&&Object.keys(u).forEach(e=>o.searchParams.set(e,u[e]));const s=r.Support.AbortController?new AbortController:null;function c(){s&&!s.signal.aborted&&s.abort()}t.abort&&t.abort.addEventListener("abort",c);const h=t.timeout>0?setTimeout(c,t.timeout):null,l=t.method==="HEAD";return await fetch(o,{method:t.method,headers:Object.keys(t.headers).length>0?new Headers(t.headers):void 0,body:t.body,credentials:t.credentials,signal:s==null?void 0:s.signal,redirect:"follow"}).then(async e=>{const d=l?"":await e.text().catch(m=>m),b=r.fromEntries([...e.headers.entries()]);return d instanceof Error?{url:o.toString(),method:t.method,status:e.status,statusText:e.statusText||"Unknown",body:"",headers:b,rawError:d}:{url:o.toString(),method:t.method,status:e.status,statusText:e.statusText,headers:b,body:d}}).catch(e=>({url:o.toString(),method:t.method,status:-1,statusText:s!=null&&s.signal.aborted?"Aborted":"Unknown",body:"",rawError:e})).finally(()=>{h!==null&&clearTimeout(h),t.abort&&t.abort.removeEventListener("abort",c)})};exports.fetchRequest=f;
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var K=Object.defineProperty;var N=(e,t,s)=>t in e?K(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var y=(e,t,s)=>N(e,typeof t!="symbol"?t+"":t,s);const p=typeof globalThis<"u"?globalThis:typeof global<"u"?global:typeof window<"u"?window:{},w={fetch:"fetch"in p,window:"window"in p,FormData:"FormData"in p,Blob:"Blob"in p,wx:"wx"in p,TextDecoder:"TextDecoder"in p,AbortController:"AbortController"in p};function P(e){return e.reduce((t,[s,r])=>(s&&(t[s]=r||""),t),{})}function W(e){return new Promise(t=>setTimeout(t,Math.max(0,e)))}function G(){}function J(e){const t=e||"CustomError";return class extends Error{constructor(s){super(s),Object.defineProperty(this,"name",{value:t,enumerable:!1,configurable:!0}),"setPrototypeOf"in Object&&Object.setPrototypeOf(this,new.target.prototype),"captureStackTrace"in Error&&Error.captureStackTrace(this,this.constructor)}}}function j(e){return e?e[0].toLowerCase()+e.slice(1):""}const _=/_\w*/,x=/-\w*/;function A(e){const t=_.test(e)?e.replace(/(?:^_*|_*$)/g,"").replace(/_+([^_])/g,(s,r)=>r.toUpperCase()):x.test(e)?e.replace(/(?:^-*|-*$)/g,"").replace(/-+(\w)/g,(s,r)=>r.toUpperCase()):e;return j(t)}function D(e){return _.test(e)?j(e).replace(/(?:^_*|_*$)/g,"").replace(/_+([^_])/g,(t,s)=>"_"+s.toLowerCase()):x.test(e)?j(e.replace(/(?:^-*|-*$)/g,"")).replace(/-+(\w)/g,(t,s)=>"_"+s.toLowerCase()):j(e).replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`)}const V=/^(?:https?:)?\/\/.+$/i,X=/^https?:\/\/.+$/i,Z=/^\{[\d\D]*\}$/,z=/^\[[\d\D]*\]$/;function O(e,t=!1){return t?V.test(e):X.test(e)}function Q(e){return e==null}function v(e,...t){if(!e||typeof e!="object")return!1;const s=Object.getPrototypeOf(e);return s!==Object.prototype&&s!==null?!1:t.every(r=>r in e)}function B(e){return Z.test(e)||z.test(e)}function k(e,t){try{const s=JSON.parse(e);return t?t(s)?s:null:s}catch{return null}}""+Math.random().toString(32).slice(2);function E(e,t=!1){return typeof e=="string"?A(e):Array.isArray(e)?e.map(s=>!t||typeof s=="string"?E(s):typeof s=="object"&&s?E(s,!0):s):v(e)?Object.keys(e).reduce((s,r)=>{const a=A(String(r)),n=a.charAt(0).toLowerCase()+a.slice(1);return s[n]=t?e[r]:E(e[r]),s},{}):e}function $(e,t=!1){return typeof e=="string"?D(e):Array.isArray(e)?e.map(s=>!t||typeof s=="string"?$(s):typeof s=="object"&&s?$(s,t):s):v(e)?Object.keys(e).reduce((s,r)=>{const a=D(String(r));return s[a]=t?e[r]:$(e[r]),s},{}):e}async function Y(e){return await new Promise(function(t){const s=document.getElementsByTagName("head")[0],r=document.createElement("script");r.setAttribute("type","text/javascript"),r.setAttribute("charset","utf-8"),r.onload=function(){s.removeChild(r),t(!0)},r.onerror=function(){s.removeChild(r),t(!1)},r.setAttribute("src",e),s.appendChild(r)})}function ee(e,t="数据未能正确识别"){return typeof e=="function"?{guard:e,message:t}:{guard:e.guard,message:e.message||t}}function te(e,t=""){return!t||O(e,!0)?M(e):(M(t)+"/"+e).replace(/\/{2,}/g,"/").replace(/:\//,"://")}function M(e){return O(e,!0)?e.startsWith("http")?e:("location"in globalThis?location.protocol:"https:")+e:("location"in globalThis?location.origin:"http://127.0.0.1")+"/"+e.replace(/^\/+/,"")}function se(e,t){const s={};return(e.match(/([^=&#?]+)=[^&#]*/g)||[]).forEach(function(r){const a=r.split("="),n=a[0],o=decodeURIComponent(a[1]||"");s[n]!==void 0?s[n]+=","+o:s[n]=o}),t!==!0?s[t]||"":s}function re(e,t){if(t){if(t===!0)return e.replace(/\?[^#]*/,"")}else return e;const s=e.split("#"),r=s[0].split("?"),a=r[0],n=r.length>1?r[1]:"",o=s.length>1?"#"+s[1]:"",c=typeof t=="string"?[t]:Array.isArray(t)?t:[];return!c.length||!n?s[0]+o:(c.map(i=>i.replace(/([\\(){}[\]^$+\-*?|])/g,"\\$1")),(a+"?"+n.replace(new RegExp("(?:^|&)(?:"+c.join("|")+")=[^&$]+","g"),"").replace(/^&/,"")).replace(/\?$/,"")+o)}function ne(e,t,s=!1){const r=typeof t=="string"?t:Object.keys(t).map(o=>`${o}=${encodeURIComponent(t[o])}`).join("&");if(!r)return e;const a=e.split("#");s&&(a[0]=re(a[0],(r.match(/([^=&#?]+)=[^&#]+/g)||[]).map(o=>o.replace(/=.+$/,""))));const n=a[0].indexOf("?")+1?"&":"?";return(a[0]+n+r+(a.length>1?"#"+a[1]:"")).replace(/\?&/,"?")}function ae(e){const t=e.match(/(?:\?|&)([^=]+)(?:&|$)/g);return t?t.join("").replace(/(?:\?|^&+|&+$)/g,"").replace(/&{2}/g,"&").split("&").sort():[]}class oe{constructor(t=500){y(this,"ttl");y(this,"cache");this.cache={},this.ttl=Math.max(t,0)}getKey(t,s){const r=t.replace(/#.+/,""),a=r.replace(/\?.+/g,""),n=Object.assign(se(r,!0),s),o=ae(r),c=Object.keys(n).sort().map(i=>`${i}#${n[i]}`);return`${a}_${c.join(",")}_${o.join(",")}`}updateTTL(t){this.ttl=Math.max(t,0)}get(t){if(this.ttl===0)return null;const s=this.cache[t];return s?s.ttl<Date.now()?(delete this.cache[t],null):s.res:null}set(t,s){this.ttl!==0&&(this.cache[t]={ttl:Date.now()+this.ttl,res:s})}}class S{constructor(t){y(this,"config",{baseURL:"",maxRetry:0,retryInterval:1e3,retryResolve:"network",timeout:1e4,cacheTTL:500,credentials:"same-origin",responseRule:{ok:{resolve:"body"},failed:{resolve:"json",messageField:"message"}}});t&&this.set(t)}set(t){if(t.baseURL&&!/^\/.+/.test(t.baseURL)&&!O(t.baseURL))throw console.warn("baseURL 需要以 / 开头,或者是完整的 url 地址"),new Error("BaseURLError");Object.assign(this.config,t)}get(t){return this.config[t]}getFullUrl(t){return te(t,this.config.baseURL)}showMessage(t,s,r,a){this.config.messageHandler&&s&&this.config.messageHandler(t,s,r,a)}}const U="UnexpectResponse";function ce(e,t,s,r){if(t.ok&&!Q(t.data)&&r){const a=ee(r,"响应数据未能正确识别");return a.guard(t.data)||(s.showMessage(!0,`${e} ${a.message}`,t.code,t.status),console.error(U,e,t.data),t.data=null,t.code=U,t.message=a.message),t}return t}class ie{constructor(t,s){y(this,"agent");y(this,"config");y(this,"cache");this.config=new S(s),this.agent=t,this.cache=new oe(this.config.get("cacheTTL")),this.setConfig=this.setConfig.bind(this),this.getConfig=this.getConfig.bind(this),this.request=this.request.bind(this),this.get=this.get.bind(this),this.post=this.post.bind(this),this.del=this.del.bind(this),this.patch=this.patch.bind(this),this.put=this.put.bind(this),this.head=this.head.bind(this)}async request(t,s){try{return await this.agent(t,this.config,s)}catch(r){return console.error("RequestError",r),{ok:!1,status:-9,code:"Unkonwn",message:String(r),headers:{},data:null}}}async guard(t,s,r){return ce(t,s,this.config,r)}setConfig(t){this.config.set(t),this.cache.updateTTL(this.config.get("cacheTTL"))}getConfig(t){return this.config.get(t)}async head(t,s){const r=Object.assign({},s||null);return r.method="HEAD",this.guard(t,await this.request(t,r),null)}async get(t,s,r){const a=Object.assign({},r||null);a.method="GET";const n=this.cache.getKey(t,a.params),o=this.cache.get(n);if(o)return this.guard(t,await o,s||null);const c=this.request(t,a);return this.cache.set(n,c),this.guard(t,await c,s||null)}async post(t,s,r,a){const n=Object.assign({},a||null);return n.method="POST",n.body=s||{},this.guard(t,await this.request(t,n),r||null)}async del(t,s,r){const a=Object.assign({},r||null);return a.method="DELETE",this.guard(t,await this.request(t,a),s||null)}async put(t,s,r,a){const n=Object.assign({},a||null);return n.method="PUT",n.body=s||{},this.guard(t,await this.request(t,n),r||null)}async patch(t,s,r,a){const n=Object.assign({},a||null);return n.method="PATCH",n.body=s||{},this.guard(t,await this.request(t,n),r||null)}}async function ue(e,t,s){var g;const r=Object.assign({method:"GET"},s),a=w.FormData?r.body instanceof FormData:!1,n=a&&r.method!=="POST"&&r.method!=="PUT"?"POST":r.method,o=n==="GET"||n==="HEAD"||n==="DELETE";o&&r.body!==void 0&&(console.warn("request body is invalid with method get, head, delete"),delete r.body);const c=Object.assign(a||o?{}:{"Content-Type":w.Blob&&r.body instanceof Blob?r.body.type||"application/octet-stream":"application/json;charset=utf-8"},r.headers),i=r.params||{},h={};Object.keys(i).forEach(b=>{i[b]!==void 0&&(h[b]=le(i[b]))});const u=t.getFullUrl(e),l=he(r.body),d=r.timeout||t.get("timeout"),f=await async function(){const b=t.get("requestTransformer");if(b)return await b({headers:c,params:h,method:n,url:u,body:l})}(),m=typeof f=="string"&&f?f:u;return(g=t.get("logHandler"))==null||g({type:"ready",url:m,method:n,headers:c,timeout:d,body:l}),{url:m,method:n,body:l,params:h,headers:c,timeout:d,abort:r.abort,credentials:r.credentials||t.get("credentials")}}function le(e){return typeof e=="string"?e:Array.isArray(e)?e.join(","):e+""}function he(e){if(e)return typeof e=="string"||e instanceof URLSearchParams||e instanceof ArrayBuffer||w.Blob&&e instanceof Blob||w.FormData&&e instanceof FormData?e:JSON.stringify(e)}const H="data",R="message";function de(e,t,s,r,a){const n=a||r;return T(e)?we(n.ok||r.ok,e,t,s):ge(n.failed||r.failed,t,s)}const fe=function(e){const t=[],s=e.failed||{resolve:"json"};switch(t.push("- 当http状态码 <200 或者 >=400 时"),s.resolve){case"body":t.push(" 将响应内容格式化为字符串并作为错误消息");break;case"json":t.push(" 将响应解析为json,并读取 "+(s.messageField||R)+" 作为错误消息");break}const r=e.ok||{resolve:"body"};switch(t.push("- 当http状态码 >=200 并且 <400 时"),r.resolve){case"body":t.push(" 将响应尝试解析为 json,并作为数据内容返回");break;case"json":t.push(" 将响应解析为 json,读取 "+(r.dataField||H)+" 作为响应数据,读取 "+(r.messageField||R)+" 作为提示消息"),r.statusField&&t.push(" 当 "+r.statusField+" 为 "+(r.statusOKValue||"空值")+" 时是成功提示,否则是错误消息"),r.ignoreMessage&&t.push(" 并忽略以下消息:"+r.ignoreMessage);break}return t.join(`
|
|
2
|
-
`)};function ge(e,t,s){const r=e||{resolve:"json",messageField:R},a={ok:!1,code:t,message:s,data:null};switch(r.resolve){case"body":a.message=L(s)||s;break;case"json":const{code:n,message:o}=me(s,r.converter,r.statusField,r.messageField);a.code=n||t,a.message=L(s)||o;break}return a}function me(e,t,s,r=R){if(!B(e))return{message:""};const a=F(k(e),t);return!a||!v(a)?{message:e}:{code:s?C(a,s):"",message:C(a,r)||e}}function C(e,t){const s=Array.isArray(t)?t:[t];for(const r of s)if(r in e)return ye(e[r]);return""}function ye(e){return e?typeof e=="string"?e:JSON.stringify(e):""}const pe=/<title>([^<]+)<\/title>/i,be=/<message>([^<]+)<\/message>/i;function L(e){const t=e.match(pe);if(t)return t[1];const s=e.match(be);return s?s[1]:""}function we(e,t,s,r){const a=e||{resolve:"body"},n={ok:!0,code:s,message:"",data:null};if(t===204||!r)return n;if(a.resolve==="body")return n.data=B(r)?F(k(r),e.converter):r,n;const o=F(k(r),e.converter);if(!o||!v(o))return n.ok=!1,n.code="ResponseFormatError",n.message="响应内容无法格式化为 Object",n;const c=a.statusField,i=a.statusOKValue||"",h=a.dataField||H,u=a.messageField||R,l=a.ignoreMessage||"";if(c&&!(c in o))return n.ok=!1,n.code="ResponseFieldMissing",n.message="响应内容找不到状态字段 "+c,n;const d=c?o[c]+"":"";return n.ok=c?d===i:!0,n.code=d||s,n.data=h===!0?o:h in o?o[h]:null,n.message=C(o,u),l&&n.message&&(Array.isArray(l)&&l.includes(n.message)||typeof l=="string"&&n.message===l)&&(n.message=""),n}function T(e){return e>=200&&e<400}function F(e,t){return t==="camelize"?E(e):t==="snakify"?$(e):e}const Re=J("APIError");function je(e){const t={};for(const a in e.headers)(a.startsWith("x-")||a.includes("trace")||a.includes("server")||/\b(?:id|uuid)\b/.test(a))&&(t[a]=e.headers[a]);const s=e.url.replace(/^(?:https?:)?\/*/i,"").replace(/\?.+/,""),r=e.status<0?"unknown":e.status;return{sentryError:new Re(`${s} | ${r}${e.code?` | ${e.code}`:""}`),sentryTags:{...t,status:r,method:e.method,code:e.code||"unknown",message:e.message||"empty"},sentryExtra:{url:e.url,responseBody:e.body||"empty",responseHeaders:e.headers,rawError:e.error}}}function Ee(e,t,s,r){var f;const a=e.status,n=e.method,o=P(Object.entries(e.headers||{}).map(([m,g])=>[m.toLowerCase(),g])),{ok:c,code:i,data:h,message:u}=de(a,e.statusText,e.body,s.get("responseRule"),r==null?void 0:r.responseRule);if(!T(a)){const m=je({url:e.url,method:e.method,status:a,code:i,message:u,body:e.body,headers:o,error:e.rawError});(s.get("errorHandler")||$e)({url:t,method:n,status:a,code:i,message:u,headers:o,rawError:e.rawError,responseBody:e.body,...m})}if(a<0)return q({ok:!1,status:a,code:e.statusText,headers:{},message:"",data:null},`${n} ${t} ${e.statusText}`,n,t,s,r);const l={ok:c,data:h,code:i,message:u,status:a,headers:o};(f=s.get("responseHandler"))==null||f({...l},n,t);const d=c?u:u||e.statusText;return q(l,d,n,t,s,r)}function q(e,t,s,r,a,n){const o=a.get("message"),c=o===!1||(n==null?void 0:n.message)===!1?!1:(n==null?void 0:n.message)||o;if(c!==!1){const i=typeof c=="function"?c(e,s,r,t):t;i instanceof Error?a.showMessage(!0,i.message,e.code,e.status):i&&typeof i=="object"&&"message"in i?a.showMessage(!1,i.message,e.code,e.status):a.showMessage(!e.ok,i,e.code,e.status)}return e}function $e(e){const t={};for(const s in e)s.startsWith("sentry")||(t[s]=e[s]);console.error("RequestError",t)}async function I(e,t,s,r,a){const n=a||0,o=Math.max(0,Math.min(10,(r==null?void 0:r.maxRetry)??s.get("maxRetry")??0)),c=(r==null?void 0:r.retryResolve)??s.get("retryResolve"),i=s.get("logHandler")||G;i({type:"prepear",url:t,method:(r==null?void 0:r.method)||"GET",retry:n,maxRetry:o,message:n===0?"start":`retry ${n}/${o} start`,headers:r==null?void 0:r.headers,options:r});const h=Date.now(),u=await e(t,s,r),l=u.status,d=Date.now()-h,f=`[cost ${d}][${l}] ${l<0?u.body:""}`;i({type:"finished",url:t,method:u.method,retry:n,maxRetry:o,message:n===0?`finish ${f}`:`retry ${n}/${o} finish ${f}`,response:u,headers:u.headers,cost:d});const m=T(l);if(!o||c==="network"&&l>0||c==="status"&&m||Array.isArray(c)&&!c.includes(l)||typeof c=="function"&&c(u,n)!==!0||n>=o)return u;const g=(r==null?void 0:r.retryInterval)??s.get("retryInterval")??1e3;return await W(Math.max(100,g==="2EB"?Math.pow(2,n)*1e3:typeof g=="function"?g(n+1)||0:g)),await I(e,t,s,r,n+1)}const Oe="2.0.7";exports.Ee=Y;exports.K=O;exports.NetRequestHandler=ie;exports.RequestGlobalConfig=S;exports.Support=w;exports.Wt=ne;exports.convertOptions=ue;exports.fromEntries=P;exports.getResponseRulesDescription=fe;exports.handleResponse=Ee;exports.retryRequest=I;exports.version=Oe;
|