@seayoo-web/request 3.0.2 → 3.0.3

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 CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./retry-BhqDL0mQ.cjs"),q=require("./request.fetch-CO0NyBFt.cjs"),y=async function(t,s,e){return o.handleResponse(await o.retryRequest(R,t,s,e),t,s,e)};async function m(t,s,e,n){const r=e==null?void 0:e.body,d=(e==null?void 0:e.method)==="PUT"?"PUT":"POST";if(s instanceof Blob){const u=new o.RequestGlobalConfig(n),g=await R(t,u,{...e,method:d,body:s});return o.handleResponse(g,t,u,e)}const c=new FormData,f={...s};r instanceof Object&&Object.entries(r).forEach(([u,g])=>{g instanceof Blob?f[u]=g:Array.isArray(g)?g.forEach((a,i)=>{c.append(`${u}[${i}]`,String(a))}):c.append(u,String(g))});for(const u in f)c.append(u,f[u]);const b=new o.RequestGlobalConfig(n),w=await R(t,b,{...e,method:d,body:c});return o.handleResponse(w,t,b,e)}const R=async function(t,s,e){const n=await o.convertOptions(t,s,e),r=n.method,d=e==null?void 0:e.onUploadProgress,c=o.ue(n.url,n.params);return await new Promise(f=>{let b=null,w=!1;const u=function(){w||(a.abort(),w=!0)};function g(){b!==null&&clearTimeout(b),n.abort&&n.abort.removeEventListener("abort",u)}const a=new XMLHttpRequest;if(a.open(r,c,!0),d){let i=1;a.upload.addEventListener("progress",h=>{i=h.total,d({total:h.total,loaded:h.loaded})}),a.addEventListener("load",()=>{d({loaded:i,total:i})})}a.addEventListener("load",()=>{const i=a.status;g(),f({url:c,method:r,status:i,statusText:a.statusText,headers:E(a),body:r==="HEAD"||i===204?"":a.responseText})}),a.addEventListener("error",i=>{g(),f({url:c,method:r,status:a.status||-1,statusText:a.statusText||o.RequestInternalError.NetworkError,body:"",rawError:i})},!0),a.addEventListener("abort",()=>{g(),f({url:c,method:r,status:0,statusText:o.RequestInternalError.Aborted,body:""})}),Object.entries(n.headers).forEach(([i,h])=>{a.setRequestHeader(i,h)}),n.credentials==="include"&&(a.withCredentials=!0),a.send(n.body||void 0),n.abort&&n.abort.addEventListener("abort",u),n.timeout>0&&(b=setTimeout(u,n.timeout))})};function E(t){const s={};if(!t)return s;const e=t.getAllResponseHeaders();return e&&e!=="null"&&e.replace(/\r/g,"").split(`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./retry-B6wqEvx2.cjs"),q=require("./request.fetch-BKECwfmu.cjs"),y=async function(t,s,e){return o.handleResponse(await o.retryRequest(R,t,s,e),t,s,e)};async function m(t,s,e,n){const r=e==null?void 0:e.body,d=(e==null?void 0:e.method)==="PUT"?"PUT":"POST";if(s instanceof Blob){const u=new o.RequestGlobalConfig(n),g=await R(t,u,{...e,method:d,body:s});return o.handleResponse(g,t,u,e)}const c=new FormData,f={...s};r instanceof Object&&Object.entries(r).forEach(([u,g])=>{g instanceof Blob?f[u]=g:Array.isArray(g)?g.forEach((a,i)=>{c.append(`${u}[${i}]`,String(a))}):c.append(u,String(g))});for(const u in f)c.append(u,f[u]);const b=new o.RequestGlobalConfig(n),w=await R(t,b,{...e,method:d,body:c});return o.handleResponse(w,t,b,e)}const R=async function(t,s,e){const n=await o.convertOptions(t,s,e),r=n.method,d=e==null?void 0:e.onUploadProgress,c=o.ue(n.url,n.params);return await new Promise(f=>{let b=null,w=!1;const u=function(){w||(a.abort(),w=!0)};function g(){b!==null&&clearTimeout(b),n.abort&&n.abort.removeEventListener("abort",u)}const a=new XMLHttpRequest;if(a.open(r,c,!0),d){let i=1;a.upload.addEventListener("progress",h=>{i=h.total,d({total:h.total,loaded:h.loaded})}),a.addEventListener("load",()=>{d({loaded:i,total:i})})}a.addEventListener("load",()=>{const i=a.status;g(),f({url:c,method:r,status:i,statusText:a.statusText,headers:E(a),body:r==="HEAD"||i===204?"":a.responseText})}),a.addEventListener("error",i=>{g(),f({url:c,method:r,status:a.status||-1,statusText:a.statusText||o.RequestInternalError.NetworkError,body:"",rawError:i})},!0),a.addEventListener("abort",()=>{g(),f({url:c,method:r,status:0,statusText:o.RequestInternalError.Aborted,body:""})}),Object.entries(n.headers).forEach(([i,h])=>{a.setRequestHeader(i,h)}),n.credentials==="include"&&(a.withCredentials=!0),a.send(n.body||void 0),n.abort&&n.abort.addEventListener("abort",u),n.timeout>0&&(b=setTimeout(u,n.timeout))})};function E(t){const s={};if(!t)return s;const e=t.getAllResponseHeaders();return e&&e!=="null"&&e.replace(/\r/g,"").split(`
2
2
  `).forEach(n=>{const r=n.trim();if(!r)return;const d=r.split(":"),c=d[0].trim();c&&(s[c]=(d[1]||"").trim())}),s}async function H(t,s,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=o.ue(t,e,!0);return new Promise(c=>{n[r]=function(f){if(r in window&&delete n[r],s(f))return f;console.warn("response type check failed",t,f),c(null)},o.Qe(d).catch(function(){c(null),delete n[r]})})}async function T(t,s,e={}){const n=window;return"var"in e||(e.var="jsonxData"+Math.random().toString(16).slice(2)),t?await o.Qe(o.ue(t,e,!0)).then(()=>{const r=n[e.var+""];return s(r)?r:(console.warn("response type check failed",t,r),null)}).catch(()=>null):null}const x=async function(t,s,e){return await m(t,s,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 p(t){if(!o.Ot.window)throw new Error("Default Module Only Support In Browser");return o.Ot.fetch?new o.NetRequestHandler(q.fetchRequest,t):new o.NetRequestHandler(y,t)}const l=p(),C=l.setConfig,j=l.request,L=l.head,S=l.get,O=l.post,k=l.del,v=l.put,D=l.patch;exports.RequestInternalError=o.RequestInternalError;exports.getResponseRulesDescription=o.getResponseRulesDescription;exports.NetRequest=p;exports.del=k;exports.get=S;exports.head=L;exports.jsonp=H;exports.jsonx=T;exports.patch=D;exports.post=O;exports.put=v;exports.request=j;exports.setGlobalConfig=C;exports.upload=x;
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import { h as w, r as T, R as y, c as x, u as p, a as R, Q as q, O as E, N as H } from "./retry-DjjIq-kG.js";
2
- import { g as z } from "./retry-DjjIq-kG.js";
3
- import { f as C } from "./request.fetch-D3jWQQuh.js";
1
+ import { h as w, r as T, R as y, c as x, u as p, a as R, Q as q, O as E, N as H } from "./retry-Bmcs0Nz4.js";
2
+ import { g as z } from "./retry-Bmcs0Nz4.js";
3
+ import { f as C } from "./request.fetch-TS7Bh-c3.js";
4
4
  const L = async function(t, a, e) {
5
5
  return w(await T(m, t, a, e), t, a, e);
6
6
  };
package/dist/node.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./retry-BhqDL0mQ.cjs"),y=require("./request.fetch-CO0NyBFt.cjs"),b=require("node:http"),g=require("node:https"),w=async function(r,u,c){return e.handleResponse(await e.retryRequest(E,r,u,c),r,u,c)},E=async function(r,u,c){const t=await e.convertOptions(r,u,c);if(!e.$t(t.url))return{url:t.url,method:t.method,status:-1,statusText:e.RequestInternalError.URLFormatError,headers:{},body:""};const p=/^https:\/\//i.test(t.url)?g:b,a=new URL(t.url),i=t.params;i instanceof Object&&Object.keys(i).forEach(n=>a.searchParams.set(n,i[n]));const f=t.method==="HEAD";return new Promise(n=>{const d=p.request(a,{headers:t.headers,method:t.method,timeout:t.timeout>0?t.timeout:void 0},function(o){const l=[];o.on("data",h=>l.push(h)),o.on("end",()=>{const h=e.fromEntries(Object.entries(o.headers).map(([R,m])=>[R.toLowerCase(),Array.isArray(m)?m.join(","):m]));n({url:a.toString(),method:t.method,status:o.statusCode||-1,statusText:o.statusMessage||e.RequestInternalError.Unknown,headers:h,body:f||o.statusCode===204?"":Buffer.concat(l).toString("utf-8")})})});d.on("error",o=>{n({url:a.toString(),method:t.method,status:-1,statusText:e.RequestInternalError.NetworkError,body:"",rawError:o})}),d.on("timeout",()=>{n({url:a.toString(),method:t.method,status:-1,statusText:e.RequestInternalError.Timeout,body:""})}),t.body&&d.write(t.body),d.end()})};function q(r){return e.Ot.fetch?new e.NetRequestHandler(y.fetchRequest,r):new e.NetRequestHandler(w,r)}const s=q(),C=s.setConfig,N=s.head,O=s.get,S=s.post,T=s.del,j=s.put,x=s.patch;exports.NetRequest=q;exports.del=T;exports.get=O;exports.head=N;exports.patch=x;exports.post=S;exports.put=j;exports.setGlobalConfig=C;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./retry-B6wqEvx2.cjs"),y=require("./request.fetch-BKECwfmu.cjs"),b=require("node:http"),g=require("node:https"),w=async function(r,u,c){return e.handleResponse(await e.retryRequest(E,r,u,c),r,u,c)},E=async function(r,u,c){const t=await e.convertOptions(r,u,c);if(!e.$t(t.url))return{url:t.url,method:t.method,status:-1,statusText:e.RequestInternalError.URLFormatError,headers:{},body:""};const p=/^https:\/\//i.test(t.url)?g:b,a=new URL(t.url),i=t.params;i instanceof Object&&Object.keys(i).forEach(n=>a.searchParams.set(n,i[n]));const f=t.method==="HEAD";return new Promise(n=>{const d=p.request(a,{headers:t.headers,method:t.method,timeout:t.timeout>0?t.timeout:void 0},function(o){const l=[];o.on("data",h=>l.push(h)),o.on("end",()=>{const h=e.fromEntries(Object.entries(o.headers).map(([R,m])=>[R.toLowerCase(),Array.isArray(m)?m.join(","):m]));n({url:a.toString(),method:t.method,status:o.statusCode||-1,statusText:o.statusMessage||e.RequestInternalError.Unknown,headers:h,body:f||o.statusCode===204?"":Buffer.concat(l).toString("utf-8")})})});d.on("error",o=>{n({url:a.toString(),method:t.method,status:-1,statusText:e.RequestInternalError.NetworkError,body:"",rawError:o})}),d.on("timeout",()=>{n({url:a.toString(),method:t.method,status:-1,statusText:e.RequestInternalError.Timeout,body:""})}),t.body&&d.write(t.body),d.end()})};function q(r){return e.Ot.fetch?new e.NetRequestHandler(y.fetchRequest,r):new e.NetRequestHandler(w,r)}const s=q(),C=s.setConfig,N=s.head,O=s.get,S=s.post,T=s.del,j=s.put,x=s.patch;exports.NetRequest=q;exports.del=T;exports.get=O;exports.head=N;exports.patch=x;exports.post=S;exports.put=j;exports.setGlobalConfig=C;
package/dist/node.js CHANGED
@@ -1,5 +1,5 @@
1
- import { h as b, r as q, c as w, $ as g, a as d, f as E, N as p, O } from "./retry-DjjIq-kG.js";
2
- import { f as x } from "./request.fetch-D3jWQQuh.js";
1
+ import { h as b, r as q, c as w, $ as g, a as d, f as E, N as p, O } from "./retry-Bmcs0Nz4.js";
2
+ import { f as x } from "./request.fetch-TS7Bh-c3.js";
3
3
  import C from "node:http";
4
4
  import N from "node:https";
5
5
  const T = async function(o, a, u) {
@@ -1 +1 @@
1
- "use strict";const s=require("./retry-BhqDL0mQ.cjs"),m=async function(a,n,i){return s.handleResponse(await s.retryRequest(w,a,n,i),a,n,i)},w=async function(a,n,i){const t=await s.convertOptions(a,n,i),c=new URL(t.url),u=t.params;u instanceof Object&&Object.keys(u).forEach(e=>c.searchParams.set(e,u[e]));const r=s.Ot.AbortController?new AbortController:null;function d(){r&&!r.signal.aborted&&r.abort()}t.abort&&t.abort.addEventListener("abort",d);const h=t.timeout>0?setTimeout(d,t.timeout):null,l=t.method==="HEAD";return await fetch(c,{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 o={url:c.toString(),method:t.method,status:e.status,statusText:e.statusText,headers:s.fromEntries([...e.headers.entries()])},b=l||e.status===204?"":await e.text().catch(f=>f);return b instanceof Error?{...o,body:"",statusText:s.RequestInternalError.Unknown,rawError:b}:{...o,body:b}}).catch(e=>{const o=r==null?void 0:r.signal.aborted;return{url:c.toString(),method:t.method,status:o?0:-1,statusText:o?s.RequestInternalError.Aborted:s.RequestInternalError.NetworkError,body:"",rawError:e}}).finally(()=>{h!==null&&clearTimeout(h),t.abort&&t.abort.removeEventListener("abort",d)})};exports.fetchRequest=m;
1
+ "use strict";const s=require("./retry-B6wqEvx2.cjs"),m=async function(a,n,i){return s.handleResponse(await s.retryRequest(w,a,n,i),a,n,i)},w=async function(a,n,i){const t=await s.convertOptions(a,n,i),c=new URL(t.url),u=t.params;u instanceof Object&&Object.keys(u).forEach(e=>c.searchParams.set(e,u[e]));const r=s.Ot.AbortController?new AbortController:null;function d(){r&&!r.signal.aborted&&r.abort()}t.abort&&t.abort.addEventListener("abort",d);const h=t.timeout>0?setTimeout(d,t.timeout):null,l=t.method==="HEAD";return await fetch(c,{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 o={url:c.toString(),method:t.method,status:e.status,statusText:e.statusText,headers:s.fromEntries([...e.headers.entries()])},b=l||e.status===204?"":await e.text().catch(f=>f);return b instanceof Error?{...o,body:"",statusText:s.RequestInternalError.Unknown,rawError:b}:{...o,body:b}}).catch(e=>{const o=r==null?void 0:r.signal.aborted;return{url:c.toString(),method:t.method,status:o?0:-1,statusText:o?s.RequestInternalError.Aborted:s.RequestInternalError.NetworkError,body:"",rawError:e}}).finally(()=>{h!==null&&clearTimeout(h),t.abort&&t.abort.removeEventListener("abort",d)})};exports.fetchRequest=m;
@@ -1,4 +1,4 @@
1
- import { h as m, r as w, c as y, O as E, f as R, a as b } from "./retry-DjjIq-kG.js";
1
+ import { h as m, r as w, c as y, O as E, f as R, a as b } from "./retry-Bmcs0Nz4.js";
2
2
  const x = async function(s, o, n) {
3
3
  return m(await w(g, s, o, n), s, o, n);
4
4
  }, g = async function(s, o, n) {
@@ -0,0 +1,3 @@
1
+ "use strict";var dt=Object.defineProperty;var _t=(e,t,s)=>t in e?dt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var v=(e,t,s)=>_t(e,typeof t!="symbol"?t+"":t,s);var mt=Object.defineProperty,gt=(e,t,s)=>t in e?mt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,o=(e,t,s)=>gt(e,typeof t!="symbol"?t+"":t,s);const u=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:Function("return this")(),j={wx:"wx"in u&&O(u.wx)&&"getSystemInfo"in u.wx&&_(u.wx.getSystemInfo),fetch:"fetch"in u&&_(u.fetch),window:"window"in u&&O(u.window),requestAnimationFrame:"requestAnimationFrame"in u&&_(u.requestAnimationFrame),localStorage:"localStorage"in u&&O(u.localStorage)&&"getItem"in u.localStorage&&_(u.localStorage.getItem),sessionStorage:"sessionStorage"in u&&O(u.sessionStorage)&&"getItem"in u.sessionStorage&&_(u.sessionStorage.getItem),File:"File"in u&&_(u.File),Blob:"Blob"in u&&_(u.Blob),Proxy:"Proxy"in u&&_(u.Proxy),Request:"Request"in u&&_(u.Request),FormData:"FormData"in u&&_(u.FormData),TextDecoder:"TextDecoder"in u&&_(u.TextDecoder),ResizeObserver:"ResizeObserver"in u&&_(u.ResizeObserver),AbortController:"AbortController"in u&&_(u.AbortController),URLSearchParams:"URLSearchParams"in u&&_(u.URLSearchParams)};function _(e){return typeof e=="function"}function O(e){return typeof e=="object"&&e!==null}function pt(e){return new Promise(t=>setTimeout(t,Math.max(0,e)))}function q(){}function nt(e,t){const s={log:console.log.bind(console),error:console.error.bind(console),warn:console.warn.bind(console)},r=`[${e}]`;return["log","error","warn"].forEach(n=>{const i=console[n];s[n]=(...a)=>{i.apply(console,[r,...a])}}),s}function bt(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 yt=/^(?:https?:)?\/\/.+$/i,wt=/^https?:\/\/.+$/i,kt=/^\{[\d\D]*\}$/,vt=/^\[[\d\D]*\]$/;function $t(e){return typeof e=="string"}function U(e,t=!1){return t?yt.test(e):wt.test(e)}function jt(e){return e==null}function it(e,...t){return e!==null&&typeof e=="object"&&!(e instanceof Map)&&!(e instanceof Set)&&!(e instanceof WeakMap)&&!(e instanceof WeakSet)&&!Array.isArray(e)&&t.every(s=>s in e)}function b(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,t){return Array.isArray(e)&&e.every(s=>t(s))}function M(e){if(typeof e!="number"||Number.isNaN(e)||!Number.isFinite(e)||Number.isInteger(e)&&!Number.isSafeInteger(e))return!1;if(e===0)return!0;const t=Math.abs(e);return t>=Number.EPSILON&&t<=Number.MAX_SAFE_INTEGER}function ot(e){return kt.test(e)||vt.test(e)}function E(e){return e?e[0].toLowerCase()+e.slice(1):""}const at=/_\w*/,lt=/-\w*/;function Z(e){const t=at.test(e)?e.replace(/(?:^_*|_*$)/g,"").replace(/_+([^_])/g,(s,r)=>r.toUpperCase()):lt.test(e)?e.replace(/(?:^-*|-*$)/g,"").replace(/-+(\w)/g,(s,r)=>r.toUpperCase()):e;return E(t)}function Y(e){return at.test(e)?E(e).replace(/(?:^_*|_*$)/g,"").replace(/_+([^_])/g,(t,s)=>"_"+s.toLowerCase()):lt.test(e)?E(e.replace(/(?:^-*|-*$)/g,"")).replace(/-+(\w)/g,(t,s)=>"_"+s.toLowerCase()):E(e).replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`)}function Nt(e,t=20){const s=Math.max(t,10);return e.length<=s?e:e.slice(0,s-3)+"..."}function L(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 A(e,t=!1){return typeof e=="string"?Z(e):Array.isArray(e)?e.map(s=>!t||typeof s=="string"?A(s):typeof s=="object"&&s?A(s,!0):s):b(e)?Object.keys(e).reduce((s,r)=>{const n=Z(String(r)),i=n.charAt(0).toLowerCase()+n.slice(1);return s[i]=t?e[r]:A(e[r]),s},{}):e}function F(e,t=!1){return typeof e=="string"?Y(e):Array.isArray(e)?e.map(s=>!t||typeof s=="string"?F(s):typeof s=="object"&&s?F(s,t):s):b(e)?Object.keys(e).reduce((s,r)=>{const n=Y(String(r));return s[n]=t?e[r]:F(e[r]),s},{}):e}nt("LoadUtils");async function Rt(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 tt(e){return Object.getOwnPropertyNames(e).forEach(function(t){delete e[t]}),e}const g=nt("Validator");function x(e){return e?`"${Nt(e).replace(/"/g,'\\"')}"`:"empty string"}function P(e){return typeof e=="object"&&e&&"constructor"in e&&typeof e.constructor=="function"?e.constructor.name||"ClassInstance":Object.prototype.toString.call(e).replace(/(?:.+ |]$)/g,"")}function C(e){return typeof e=="bigint"}function l(e){return new Error(`${e?`${e}()`:"method"} is not allowed after locked`)}class H{constructor(){o(this,"_ps",{}),o(this,"_allow",[]),o(this,"_reject",[]),o(this,"_locked",!1),o(this,"_opt",!1),o(this,"_null",!1)}pattern(t,s){if(this._locked)throw l("pattern");return this._ps[`#${t||"custom"}`]=s,this}url(t=!1){if(this._locked)throw l("url");return this._ps.url=t?/^(?:https?:)?\/\/.+$/i:/^https?:\/\/.+$/i,this}dataUri(){if(this._locked)throw l("dataUri");return this._ps.dataUri=/^data:[a-z]+\/[a-z]+;base64,[\w+/=]+$/,this}enum(...t){if(this._locked)throw l("enum");const s=t[0];return B(t,$t)?(this._allow=t,tt(this._ps)):b(s)&&(this._allow=Object.values(s).map(r=>`${r}`),tt(this._ps)),this}disallow(...t){return this._reject.push(...t),this}optional(){if(this._locked)throw l("optional");return this._opt=!0,this}maybeNull(){if(this._locked)throw l("maybeNull");return this._null=!0,this}lock(){return this._locked=!0,this}clone(){const t=new H;return t._ps={...this._ps},t._allow=[...this._allow],t._reject=[...this._reject],t._locked=!1,t}validate(t,s=g.warn){if(t===void 0)return this._opt||(s("should be a string, but got undefined"),!1);if(t===null)return this._null||(s("should be a string, but got null"),!1);if(typeof t!="string")return s(`should be a string, but got ${typeof t}`),!1;if(this._allow.length>0)return this._allow.includes(t)||(s(`${x(t)} is not allowed, just support ${this._allow.map(x).join(", ")}`),!1);if(this._reject.length>0&&this._reject.some(n=>typeof n=="string"?n===t:n.test(t)))return s(`${x(t)} is not allowed`),!1;const r=Object.keys(this._ps);return r.length>0&&!r.some(n=>{const i=this._ps[n];return i instanceof RegExp?i.test(t):i(t)})?(s(`${x(t)} is not match pattern ${r.join(" | ")}`),!1):!0}}class G{constructor(){o(this,"_int",!1),o(this,"_min",-1/0),o(this,"_max",1/0),o(this,"_allow",[]),o(this,"_reject",[]),o(this,"_infinite",!1),o(this,"_unsafe",!1),o(this,"_nan",!1),o(this,"_locked",!1),o(this,"_opt",!1),o(this,"_null",!1)}int(){if(this._locked)throw l("int");return this._int=!0,this}min(t){if(this._locked)throw l("min");return Number.isNaN(t)||(this._min=t),this}max(t){if(this._locked)throw l("max");return Number.isNaN(t)||(this._max=t),this}allowNaN(){if(this._locked)throw l("allowNaN");return this._nan=!0,this}allowInfinity(){if(this._locked)throw l("allowInfinity");return this._infinite=!0,this._unsafe=!0,this}unsafe(){if(this._locked)throw l("unsafe");return this._unsafe=!0,this}enum(...t){if(this._locked)throw l("enum");const s=t[0];return B(t,M)?(this._allow=t,this._reject=[]):b(s)&&(this._allow=Object.values(s).map(r=>M(r)?r:null).filter(r=>r!==null),this._reject=[]),this}disallow(...t){if(this._locked)throw l("disallow");return this._reject.push(...t),this}optional(){if(this._locked)throw l("optional");return this._opt=!0,this}maybeNull(){if(this._locked)throw l("maybeNull");return this._null=!0,this}lock(){return this._locked=!0,this}clone(){const t=new G;return t._int=this._int,t._min=this._min,t._max=this._max,t._allow=[...this._allow],t._reject=[...this._reject],t._infinite=this._infinite,t._unsafe=this._unsafe,t._nan=this._nan,t._locked=!1,t}validate(t,s=g.warn){return t===void 0?this._opt||(s("should be a number, but got undefined"),!1):t===null?this._null||(s("should be a number, but got null"),!1):typeof t!="number"?(s(`should be a number, but got ${typeof t}`),!1):Number.isNaN(t)?this._nan||(s("should be a number, but got NaN"),!1):!Number.isFinite(t)&&!this._infinite?(s("should be a number, but got Infinity"),!1):this._allow.length>0?this._allow.includes(t)||(s(`${t} is not allowed, just support ${this._allow.join(", ")}`),!1):this._reject.length>0&&this._reject.includes(t)?(s(`${t} is not allowed`),!1):this._int&&Math.ceil(t)!==t?(s(`${t} is not an integer`),!1):!M(t)&&!this._unsafe?(s(`${t} is not a safe number`),!1):t>=this._min&&t<=this._max||(s(`${t} is not in range [${this._min}, ${this._max}]`),!1)}}class K{constructor(){o(this,"_min",null),o(this,"_max",null),o(this,"_allow",[]),o(this,"_reject",[]),o(this,"_locked",!1),o(this,"_opt",!1),o(this,"_null",!1)}min(t){if(this._locked)throw l("min");return this._min=t,this}max(t){if(this._locked)throw l("max");return this._max=t,this}enum(...t){if(this._locked)throw l("enum");const s=t[0];return B(t,C)?(this._allow=t,this._reject=[]):b(s)&&(this._allow=Object.values(s).map(r=>C(r)?r:null).filter(r=>r!==null),this._reject=[]),this}disallow(...t){if(this._locked)throw l("disallow");return this._reject.push(...t),this}optional(){if(this._locked)throw l("optional");return this._opt=!0,this}maybeNull(){if(this._locked)throw l("maybeNull");return this._null=!0,this}lock(){return this._locked=!0,this}clone(){const t=new K;return t._min=this._min,t._max=this._max,t._allow=[...this._allow],t._reject=[...this._reject],t._locked=!1,t}validate(t,s=g.warn){return t===void 0?this._opt||(s("should be a bigint, but got undefined"),!1):t===null?this._null||(s("should be a bigint, but got null"),!1):C(t)?this._allow.length>0?this._allow.includes(t)||(s(`${t} is not allowed, just support ${this._allow.join(", ")}`),!1):this._reject.length>0&&this._reject.includes(t)?(s(`${t} is not allowed`),!1):(this._min!==null?t>=this._min:!0)&&(this._max!==null?t<=this._max:!0)||(s(`${t} is not in range [${this._min===null?-1/0:this._min}, ${this._max===null?1/0:this._max}]`),!1):(s(`should be a bigint, but got ${typeof t}`),!1)}}class z{constructor(){o(this,"_locked",!1),o(this,"_opt",!1),o(this,"_null",!1)}optional(){if(this._locked)throw l("optional");return this._opt=!0,this}maybeNull(){if(this._locked)throw l("maybeNull");return this._null=!0,this}lock(){return this._locked=!0,this}clone(){return new z}validate(t,s=g.warn){return t===void 0?this._opt||(s("should be a boolean, but got undefined"),!1):t===null?this._null||(s("should be a boolean, but got null"),!1):typeof t!="boolean"?(s(`should be a boolean, but got ${typeof t}`),!1):!0}}class N{constructor(t){o(this,"_shape"),o(this,"_plain",!1),o(this,"_locked",!1),o(this,"_opt",!1),o(this,"_null",!1),this._shape=t}plain(){if(this._locked)throw l("plain");return this._plain=!0,this}optional(){if(this._locked)throw l("optional");return this._opt=!0,this}maybeNull(){if(this._locked)throw l("maybeNull");return this._null=!0,this}lock(){return this._locked=!0,this}get shape(){return{...this._shape}}clone(){const t=new N(this._shape);return t._plain=this._plain,t._locked=!1,t}match(t,s){return t in this._shape?this._shape[t].validate(s,q):!1}validate(t,s=g.warn){return t===void 0?this._opt||(s("should be a object, but got undefined"),!1):t===null?this._null||(s("should be a object, but got null"),!1):it(t)?this._plain&&!b(t)?(s(`should be a plain object, but got ${P(t)}`),!1):Object.keys(this._shape).every(r=>this._shape[r].validate(t[r],(...n)=>{s(`[.${String(r)}]`,...n)})):(s(`should be a object, but got ${P(t)}`),!1)}}class V{constructor(t){o(this,"_val"),o(this,"_locked",!1),o(this,"_opt",!1),o(this,"_null",!1),this._val=t}optional(){if(this._locked)throw l("optional");return this._opt=!0,this}maybeNull(){if(this._locked)throw l("maybeNull");return this._null=!0,this}lock(){return this._locked=!0,this}clone(){return new V(this._val)}validate(t,s=g.warn){return t===void 0?this._opt||(s("should be a record, but got undefined"),!1):t===null?this._null||(s("should be a record, but got null"),!1):b(t)?Object.keys(t).every(r=>this._val.validate(t[r],(...n)=>{s(`[:${r}]`,...n)})):(s(`should be a record, but got ${P(t)}`),!1)}}class W{constructor(t){o(this,"_val"),o(this,"_min",0),o(this,"_max",1/0),o(this,"_locked",!1),o(this,"_opt",!1),o(this,"_null",!1),this._val=t}min(t){if(this._locked)throw l("min");return this._min=t,this}max(t){if(this._locked)throw l("max");return this._max=t,this}optional(){if(this._locked)throw l("optional");return this._opt=!0,this}maybeNull(){if(this._locked)throw l("maybeNull");return this._null=!0,this}lock(){return this._locked=!0,this}clone(){const t=new W(this._val);return t._min=this._min,t._max=this._max,t._locked=!1,t}validate(t,s=g.warn){return t===void 0?this._opt||(s("should be a array, but got undefined"),!1):t===null?this._null||(s("should be a array, but got null"),!1):Array.isArray(t)?t.length<this._min||t.length>this._max?(this._min===this._max?s(`should be a array with length ${this._min}`):s(`should be a array with length between ${this._min} and ${this._max}`),!1):t.every((r,n)=>this._val.validate(r,(...i)=>{s(`[${n}]`,...i)})):(s(`should be a array, but got ${typeof t}`),!1)}}class J{constructor(...t){o(this,"_vs"),o(this,"_locked",!1),o(this,"_opt",!1),o(this,"_null",!1),this._vs=t}optional(){if(this._locked)throw l("optional");return this._opt=!0,this}maybeNull(){if(this._locked)throw l("maybeNull");return this._null=!0,this}lock(){return this._locked=!0,this}clone(){return new J(...this._vs)}validate(t,s=g.warn){return t===void 0?this._opt||(s("should be a tuple, but got undefined"),!1):t===null?this._null||(s("should be a tuple, but got null"),!1):Array.isArray(t)?t.length!==this._vs.length?(s(`should be a tuple with length ${this._vs.length}, but got ${t.length}`),!1):this._vs.every((r,n)=>r.validate(t[n],(...i)=>{s(`[idx:${n}]`,...i)})):(s(`should be a tuple, but got ${typeof t}`),!1)}}class Q{constructor(...t){o(this,"_vs"),o(this,"_key",""),o(this,"_locked",!1),o(this,"_opt",!1),o(this,"_null",!1),this._vs=t}optional(){if(this._locked)throw l("optional");return this._opt=!0,this}maybeNull(){if(this._locked)throw l("maybeNull");return this._null=!0,this}key(t){if(this._locked)throw l("key");return this._vs.every(s=>s instanceof N)?this._key=t:g.warn("union type key can only be used when all validators are ObjectValidator"),this}satisfies(){return this}lock(){return this._locked=!0,this}get validators(){return[...this._vs]}clone(){const t=new Q(...this._vs);return t._key=this._key,t._locked=!1,t}validate(t,s=g.warn){if(t===void 0)return this._opt||(s("should be a union, but got undefined"),!1);if(t===null)return this._null||(s("should be a union, but got null"),!1);if(this._key&&it(t)&&t){const n=t[this._key];if(n===void 0)return s(`key field "${this._key}" is not found`,t),!1;const i=this._vs.find(a=>a instanceof N&&a.match(this._key,n));return i?i.validate(t,s):(s(`key field "${this._key}" value is match union definition`,n),!1)}const r=this._vs.some(n=>n.validate(t,q));return r||s("value is not match union definition",t),r}}class S{constructor(t,s){o(this,"_name",""),o(this,"_guard"),o(this,"_locked",!1),o(this,"_opt",!1),o(this,"_null",!1),this._name=t,this._guard=s}optional(){if(this._locked)throw l("optional");return this._opt=!0,this}maybeNull(){if(this._locked)throw l("maybeNull");return this._null=!0,this}lock(){return this._locked=!0,this}clone(){return new S(this._name,this._guard)}validate(t,s=g.warn){const r=this._name||"custom type";return t===void 0?this._opt||(s(`should be ${r}, but got undefined`),!1):t===null?this._null||(s(`should be ${r}, but got null`),!1):this._guard(t)||(s(`custom validation${this._name?`(${this._name})`:""} failed`),!1)}}function Ot(e,t){if(typeof e=="string"){if(!t)throw new Error("custom type guard must be defined");return new S(e,t)}return new S("",e)}const xt={shape(e){return e},define(e){return e},guard(e){return function(t){return e.validate(t)}},object(e){return new N(e)},record(e){return new V(e)},array(e){return new W(e)},tuple(...e){return new J(...e)},union(...e){return new Q(...e)},string(){return new H},bool(){return new z},number(){return new G},bigint(){return new K},custom:Ot,unknown(){return{validate(e){return!0}}},never(){return{validate(e){return!1}}}},Et=e=>b(e)&&Object.keys(e).length===0;xt.custom("EmptyObject",Et);function At(e,t="数据未能正确识别"){return typeof e=="function"?{guard:e,message:t}:{guard:e.guard,message:e.message||t}}function Ft(e,t=""){return!t||U(e,!0)?et(e):(et(t)+"/"+e).replace(/\/{2,}/g,"/").replace(/:\//,"://")}function et(e){return U(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 St(e,t){const s={};return(e.match(/([^=&#?]+)=[^&#]*/g)||[]).forEach(function(r){const n=r.split("="),i=n[0],a=decodeURIComponent(n[1]||"");s[i]!==void 0?s[i]+=","+a:s[i]=a}),t!==!0?s[t]||"":s}function Ut(e,t){if(t){if(t===!0)return e.replace(/\?[^#]*/,"")}else return e;const s=e.split("#"),r=s[0].split("?"),n=r[0],i=r.length>1?r[1]:"",a=s.length>1?"#"+s[1]:"",h=typeof t=="string"?[t]:Array.isArray(t)?t:[];return!h.length||!i?s[0]+a:(h.map(c=>c.replace(/([\\(){}[\]^$+\-*?|])/g,"\\$1")),(n+"?"+i.replace(new RegExp("(?:^|&)(?:"+h.join("|")+")=[^&$]+","g"),"").replace(/^&/,"")).replace(/\?$/,"")+a)}function Tt(e,t,s=!1){const r=typeof t=="string"?t:Object.keys(t).map(a=>`${a}=${encodeURIComponent(t[a])}`).join("&");if(!r)return e;const n=e.split("#");s&&(n[0]=Ut(n[0],(r.match(/([^=&#?]+)=[^&#]+/g)||[]).map(a=>a.replace(/=.+$/,""))));const i=n[0].indexOf("?")+1?"&":"?";return(n[0]+i+r+(n.length>1?"#"+n[1]:"")).replace(/\?&/,"?")}function Mt(e){const t=e.match(/(?:\?|&)([^=]+)(?:&|$)/g);return t?t.join("").replace(/(?:\?|^&+|&+$)/g,"").replace(/&{2}/g,"&").split("&").sort():[]}class Ct{constructor(t=500){v(this,"ttl");v(this,"cache");this.cache={},this.ttl=Math.max(t,0)}getKey(t,s){const r=t.replace(/#.+/,""),n=r.replace(/\?.+/g,""),i=Object.assign(St(r,!0),s),a=Mt(r),h=Object.keys(i).sort().map(c=>`${c}#${i[c]}`);return`${n}_${h.join(",")}_${a.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 ut{constructor(t){v(this,"config",{baseURL:"/",maxRetry:0,retryInterval:100,retryResolve:"network",timeout:1e4,cacheTTL:500,credentials:"same-origin",defaultTypeGuardMessage:"响应数据未能正确识别",responseRule:{ok:{resolve:"body"},failed:{resolve:"json",messageField:"message"}}});t&&this.set(t)}set(t){if(t.baseURL&&!/^\/.+/.test(t.baseURL)&&!U(t.baseURL))throw console.warn("baseURL 需要以 / 开头,或者是完整的 url 地址"),new Error("BaseURLError");Object.assign(this.config,t)}get(t){return this.config[t]}getFullUrl(t){return Ft(t,this.config.baseURL)}showMessage(t,s,r,n){this.config.messageHandler&&s&&this.config.messageHandler(t,s,r,n)}}var T=(e=>(e.UnexpectResponse="UnexpectResponse",e.Aborted="Aborted",e.Unknown="Unknown",e.NetworkError="NetworkError",e.Timeout="Timeout",e.NotSupport="NotSupport",e.URLFormatError="URLFormatError",e))(T||{});function Lt(e,t,s,r){if(t.ok&&!jt(t.data)&&r){const n=At(r,s.get("defaultTypeGuardMessage"));return n.guard(t.data)||(t.code=T.UnexpectResponse,s.showMessage(!0,`${e} ${n.message}`,t.code,t.status),console.error(t.code,e,t.data),t.data=null,t.message=n.message),t}return t}class Pt{constructor(t,s){v(this,"agent");v(this,"config");v(this,"cache");this.config=new ut(s),this.agent=t,this.cache=new Ct(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:T.Unknown,message:r instanceof Error?`${r.message}
2
+ ${r.stack||""}`:String(r),headers:{},data:null}}}async guard(t,s,r){return Lt(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 n=Object.assign({},r||null);n.method="GET";const i=this.cache.getKey(t,n.params),a=this.cache.get(i);if(a)return this.guard(t,await a,s||null);const h=this.request(t,n);return this.cache.set(i,h),this.guard(t,await h,s||null)}async post(t,s,r,n){const i=Object.assign({},n||null);return i.method="POST",i.body=s||{},this.guard(t,await this.request(t,i),r||null)}async del(t,s,r){const n=Object.assign({},r||null);return n.method="DELETE",this.guard(t,await this.request(t,n),s||null)}async put(t,s,r,n){const i=Object.assign({},n||null);return i.method="PUT",i.body=s||{},this.guard(t,await this.request(t,i),r||null)}async patch(t,s,r,n){const i=Object.assign({},n||null);return i.method="PATCH",i.body=s||{},this.guard(t,await this.request(t,i),r||null)}}async function Dt(e,t,s){var w;const r=Object.assign({method:"GET"},s),n=j.FormData?r.body instanceof FormData:!1,i=n&&r.method!=="POST"&&r.method!=="PUT"?"POST":r.method,a=i==="GET"||i==="HEAD"||i==="DELETE";a&&r.body!==void 0&&(console.warn("request body is invalid with method get, head, delete"),delete r.body);const h=Object.assign(n||a?{}:{"Content-Type":j.Blob&&r.body instanceof Blob?r.body.type||"application/octet-stream":"application/json;charset=utf-8"},r.headers),c=r.params||{},m={};Object.keys(c).forEach($=>{c[$]!==void 0&&(m[$]=It(c[$]))});const f=t.getFullUrl(e),d=qt(r.body),p=r.timeout||t.get("timeout"),y=await async function(){const $=t.get("requestTransformer");if($)return await $({headers:h,params:m,method:i,url:f,body:d})}(),k=typeof y=="string"&&y?y:f;return(w=t.get("logHandler"))==null||w({type:"ready",url:k,method:i,headers:h,timeout:p,body:d}),{url:k,method:i,body:d,params:m,headers:h,timeout:p,abort:r.abort,credentials:r.credentials||t.get("credentials")}}function It(e){return typeof e=="string"?e:Array.isArray(e)?e.join(","):e+""}function qt(e){if(e)return typeof e=="string"||j.URLSearchParams&&e instanceof URLSearchParams||e instanceof ArrayBuffer||j.Blob&&e instanceof Blob||j.FormData&&e instanceof FormData?e:JSON.stringify(e)}const ht="data",R="message";function Bt(e,t,s,r,n){const i=n||r;return X(e)?Jt(i.ok||r.ok,e,t,s):Gt(i.failed||r.failed,t,s)}const Ht=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||ht)+" 作为响应数据,读取 "+(r.messageField||R)+" 作为提示消息"),r.statusField&&t.push(" 当 "+r.statusField+" 为 "+(r.statusOKValue||"空值")+" 时是成功提示,否则是错误消息"),r.ignoreMessage&&t.push(" 并忽略以下消息:"+r.ignoreMessage);break}return t.join(`
3
+ `)};function Gt(e,t,s){const r=e||{resolve:"json",messageField:R},n={ok:!1,code:t,message:s,data:null};switch(r.resolve){case"body":n.message=st(s)||s;break;case"json":const{code:i,message:a}=Kt(s,r.converter,r.statusField,r.messageField);n.code=i||t,n.message=st(s)||a;break}return n}function Kt(e,t,s,r=R){if(!ot(e))return{message:""};const n=I(L(e),t);return!n||!b(n)?{message:e}:{code:s?D(n,s):"",message:D(n,r)||e}}function D(e,t){const s=Array.isArray(t)?t:[t];for(const r of s)if(r in e)return zt(e[r]);return""}function zt(e){return e?typeof e=="string"?e:JSON.stringify(e):""}const Vt=/<title>([^<]+)<\/title>/i,Wt=/<message>([^<]+)<\/message>/i;function st(e){const t=e.match(Vt);if(t)return t[1];const s=e.match(Wt);return s?s[1]:""}function Jt(e,t,s,r){const n=e||{resolve:"body"},i={ok:!0,code:s,message:"",data:null};if(t===204||!r)return i;if(n.resolve==="body")return i.data=ot(r)?I(L(r),e.converter):r,i;const a=I(L(r),e.converter);if(!a||!b(a))return i.ok=!1,i.code="ResponseFormatError",i.message="响应内容无法格式化为 Object",i;const h=n.statusField,c=n.statusOKValue||"",m=n.dataField||ht,f=n.messageField||R,d=n.ignoreMessage||"";if(h&&!(h in a))return i.ok=!1,i.code="ResponseFieldMissing",i.message="响应内容找不到状态字段 "+h,i;const p=h?a[h]+"":"";return i.ok=h?p===c:!0,i.code=p||s,i.data=m===!0?a:m in a?a[m]:null,i.message=D(a,f),d&&i.message&&(Array.isArray(d)&&d.includes(i.message)||typeof d=="string"&&i.message===d)&&(i.message=""),i}function X(e){return e>=200&&e<400}function I(e,t){return t==="camelize"?A(e):t==="snakify"?F(e):e}const Qt=bt("APIError");function Xt(e){const t={};for(const n in e.headers)(n.startsWith("x-")||n.includes("trace")||n.includes("server")||/\b(?:id|uuid)\b/.test(n))&&(t[n]=e.headers[n]);const s=e.url.replace(/^(?:https?:)?\/*/i,"").replace(/\?.+/,""),r=e.status<0?"unknown":e.status;return{sentryError:new Qt(`${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 ct(e){return e.reduce((t,[s,r])=>(s&&(t[s]=r||""),t),{})}function Zt(e,t,s,r){var y;const n=e.status,i=e.method,a=ct(Object.entries(e.headers||{}).map(([k,w])=>[k.toLowerCase(),w])),{ok:h,code:c,data:m,message:f}=Bt(n,e.statusText,e.body,s.get("responseRule"),r==null?void 0:r.responseRule);if(!X(n)){const k=Xt({url:e.url,method:e.method,status:n,code:c,message:f,body:e.body,headers:a,error:e.rawError});(s.get("errorHandler")||Yt)({url:t,method:i,status:n,code:c,message:f,headers:a,rawError:e.rawError,responseBody:e.body,...k})}if(n<0)return rt({ok:!1,status:n,code:e.statusText,headers:{},message:"",data:null},`${i} ${t} ${e.statusText}`,i,t,s,r);const d={ok:h,data:m,code:c,message:f,status:n,headers:a};(y=s.get("responseHandler"))==null||y({...d},i,t);const p=h?f:f||e.statusText;return rt(d,p,i,t,s,r)}function rt(e,t,s,r,n,i){const a=n.get("message"),h=a===!1||(i==null?void 0:i.message)===!1?!1:(i==null?void 0:i.message)||a;if(h!==!1){const c=typeof h=="function"?h(e,s,r,t):t;c instanceof Error?n.showMessage(!0,c.message,e.code,e.status):c&&typeof c=="object"&&"message"in c?n.showMessage(!1,c.message,e.code,e.status):n.showMessage(!e.ok,c,e.code,e.status)}return e}function Yt(e){const t={};for(const s in e)s.startsWith("sentry")||(t[s]=e[s]);console.error("RequestError",t)}async function ft(e,t,s,r,n){const i=n||0,a=Math.max(0,Math.min(10,(r==null?void 0:r.maxRetry)??s.get("maxRetry")??0)),h=(r==null?void 0:r.retryResolve)??s.get("retryResolve"),c=s.get("logHandler")||q;c({type:"prepare",url:t,method:(r==null?void 0:r.method)||"GET",retry:i,maxRetry:a,message:i===0?"start":`retry ${i}/${a} start`,headers:r==null?void 0:r.headers,options:r});const m=Date.now(),f=await e(t,s,r),d=f.status,p=Date.now()-m,y=`[cost ${p}][${d}] ${d<0?f.body:""}`;c({type:"finished",url:t,method:f.method,retry:i,maxRetry:a,message:i===0?`finish ${y}`:`retry ${i}/${a} finish ${y}`,response:f,headers:f.headers,cost:p});const k=X(d);if(!a||h==="network"&&d>0||h==="status"&&k||Array.isArray(h)&&!h.includes(d)||typeof h=="function"&&h(f,i)!==!0||i>=a)return f;const w=(r==null?void 0:r.retryInterval)??s.get("retryInterval")??100;return await pt(Math.max(100,w==="2EB"?Math.pow(2,i)*100:typeof w=="function"?w(i+1)||0:w)),await ft(e,t,s,r,i+1)}exports.$t=U;exports.NetRequestHandler=Pt;exports.Ot=j;exports.Qe=Rt;exports.RequestGlobalConfig=ut;exports.RequestInternalError=T;exports.convertOptions=Dt;exports.fromEntries=ct;exports.getResponseRulesDescription=Ht;exports.handleResponse=Zt;exports.retryRequest=ft;exports.ue=Tt;
@@ -16,7 +16,8 @@ const u = typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : type
16
16
  FormData: "FormData" in u && _(u.FormData),
17
17
  TextDecoder: "TextDecoder" in u && _(u.TextDecoder),
18
18
  ResizeObserver: "ResizeObserver" in u && _(u.ResizeObserver),
19
- AbortController: "AbortController" in u && _(u.AbortController)
19
+ AbortController: "AbortController" in u && _(u.AbortController),
20
+ URLSearchParams: "URLSearchParams" in u && _(u.URLSearchParams)
20
21
  };
21
22
  function _(e) {
22
23
  return typeof e == "function";
@@ -75,7 +76,7 @@ function b(e, ...t) {
75
76
  function B(e, t) {
76
77
  return Array.isArray(e) && e.every((s) => t(s));
77
78
  }
78
- function T(e) {
79
+ function U(e) {
79
80
  if (typeof e != "number" || Number.isNaN(e) || !Number.isFinite(e) || Number.isInteger(e) && !Number.isSafeInteger(e))
80
81
  return !1;
81
82
  if (e === 0)
@@ -86,16 +87,16 @@ function T(e) {
86
87
  function ot(e) {
87
88
  return bt.test(e) || yt.test(e);
88
89
  }
89
- function R(e) {
90
+ function E(e) {
90
91
  return e ? e[0].toLowerCase() + e.slice(1) : "";
91
92
  }
92
93
  const at = /_\w*/, lt = /-\w*/;
93
94
  function Z(e) {
94
95
  const t = at.test(e) ? e.replace(/(?:^_*|_*$)/g, "").replace(/_+([^_])/g, (s, r) => r.toUpperCase()) : lt.test(e) ? e.replace(/(?:^-*|-*$)/g, "").replace(/-+(\w)/g, (s, r) => r.toUpperCase()) : e;
95
- return R(t);
96
+ return E(t);
96
97
  }
97
98
  function Y(e) {
98
- return at.test(e) ? R(e).replace(/(?:^_*|_*$)/g, "").replace(/_+([^_])/g, (t, s) => "_" + s.toLowerCase()) : lt.test(e) ? R(e.replace(/(?:^-*|-*$)/g, "")).replace(/-+(\w)/g, (t, s) => "_" + s.toLowerCase()) : R(e).replace(/[A-Z]/g, (t) => `_${t.toLowerCase()}`);
99
+ return at.test(e) ? E(e).replace(/(?:^_*|_*$)/g, "").replace(/_+([^_])/g, (t, s) => "_" + s.toLowerCase()) : lt.test(e) ? E(e.replace(/(?:^-*|-*$)/g, "")).replace(/-+(\w)/g, (t, s) => "_" + s.toLowerCase()) : E(e).replace(/[A-Z]/g, (t) => `_${t.toLowerCase()}`);
99
100
  }
100
101
  function vt(e, t = 20) {
101
102
  const s = Math.max(t, 10);
@@ -145,13 +146,13 @@ function tt(e) {
145
146
  }), e;
146
147
  }
147
148
  const g = nt("Validator");
148
- function E(e) {
149
+ function R(e) {
149
150
  return e ? `"${vt(e).replace(/"/g, '\\"')}"` : "empty string";
150
151
  }
151
152
  function C(e) {
152
153
  return typeof e == "object" && e && "constructor" in e && typeof e.constructor == "function" ? e.constructor.name || "ClassInstance" : Object.prototype.toString.call(e).replace(/(?:.+ |]$)/g, "");
153
154
  }
154
- function U(e) {
155
+ function T(e) {
155
156
  return typeof e == "bigint";
156
157
  }
157
158
  function l(e) {
@@ -213,14 +214,14 @@ class q {
213
214
  if (typeof t != "string")
214
215
  return s(`should be a string, but got ${typeof t}`), !1;
215
216
  if (this._allow.length > 0)
216
- return this._allow.includes(t) || (s(`${E(t)} is not allowed, just support ${this._allow.map(E).join(", ")}`), !1);
217
+ return this._allow.includes(t) || (s(`${R(t)} is not allowed, just support ${this._allow.map(R).join(", ")}`), !1);
217
218
  if (this._reject.length > 0 && this._reject.some((n) => typeof n == "string" ? n === t : n.test(t)))
218
- return s(`${E(t)} is not allowed`), !1;
219
+ return s(`${R(t)} is not allowed`), !1;
219
220
  const r = Object.keys(this._ps);
220
221
  return r.length > 0 && !r.some((n) => {
221
222
  const i = this._ps[n];
222
223
  return i instanceof RegExp ? i.test(t) : i(t);
223
- }) ? (s(`${E(t)} is not match pattern ${r.join(" | ")}`), !1) : !0;
224
+ }) ? (s(`${R(t)} is not match pattern ${r.join(" | ")}`), !1) : !0;
224
225
  }
225
226
  }
226
227
  class H {
@@ -257,7 +258,7 @@ class H {
257
258
  enum(...t) {
258
259
  if (this._locked) throw l("enum");
259
260
  const s = t[0];
260
- return B(t, T) ? (this._allow = t, this._reject = []) : b(s) && (this._allow = Object.values(s).map((r) => T(r) ? r : null).filter((r) => r !== null), this._reject = []), this;
261
+ return B(t, U) ? (this._allow = t, this._reject = []) : b(s) && (this._allow = Object.values(s).map((r) => U(r) ? r : null).filter((r) => r !== null), this._reject = []), this;
261
262
  }
262
263
  disallow(...t) {
263
264
  if (this._locked) throw l("disallow");
@@ -279,7 +280,7 @@ class H {
279
280
  return t._int = this._int, t._min = this._min, t._max = this._max, t._allow = [...this._allow], t._reject = [...this._reject], t._infinite = this._infinite, t._unsafe = this._unsafe, t._nan = this._nan, t._locked = !1, t;
280
281
  }
281
282
  validate(t, s = g.warn) {
282
- return t === void 0 ? this._opt || (s("should be a number, but got undefined"), !1) : t === null ? this._null || (s("should be a number, but got null"), !1) : typeof t != "number" ? (s(`should be a number, but got ${typeof t}`), !1) : Number.isNaN(t) ? this._nan || (s("should be a number, but got NaN"), !1) : !Number.isFinite(t) && !this._infinite ? (s("should be a number, but got Infinity"), !1) : this._allow.length > 0 ? this._allow.includes(t) || (s(`${t} is not allowed, just support ${this._allow.join(", ")}`), !1) : this._reject.length > 0 && this._reject.includes(t) ? (s(`${t} is not allowed`), !1) : this._int && Math.ceil(t) !== t ? (s(`${t} is not an integer`), !1) : !T(t) && !this._unsafe ? (s(`${t} is not a safe number`), !1) : t >= this._min && t <= this._max || (s(`${t} is not in range [${this._min}, ${this._max}]`), !1);
283
+ return t === void 0 ? this._opt || (s("should be a number, but got undefined"), !1) : t === null ? this._null || (s("should be a number, but got null"), !1) : typeof t != "number" ? (s(`should be a number, but got ${typeof t}`), !1) : Number.isNaN(t) ? this._nan || (s("should be a number, but got NaN"), !1) : !Number.isFinite(t) && !this._infinite ? (s("should be a number, but got Infinity"), !1) : this._allow.length > 0 ? this._allow.includes(t) || (s(`${t} is not allowed, just support ${this._allow.join(", ")}`), !1) : this._reject.length > 0 && this._reject.includes(t) ? (s(`${t} is not allowed`), !1) : this._int && Math.ceil(t) !== t ? (s(`${t} is not an integer`), !1) : !U(t) && !this._unsafe ? (s(`${t} is not a safe number`), !1) : t >= this._min && t <= this._max || (s(`${t} is not in range [${this._min}, ${this._max}]`), !1);
283
284
  }
284
285
  }
285
286
  class G {
@@ -297,7 +298,7 @@ class G {
297
298
  enum(...t) {
298
299
  if (this._locked) throw l("enum");
299
300
  const s = t[0];
300
- return B(t, U) ? (this._allow = t, this._reject = []) : b(s) && (this._allow = Object.values(s).map((r) => U(r) ? r : null).filter((r) => r !== null), this._reject = []), this;
301
+ return B(t, T) ? (this._allow = t, this._reject = []) : b(s) && (this._allow = Object.values(s).map((r) => T(r) ? r : null).filter((r) => r !== null), this._reject = []), this;
301
302
  }
302
303
  disallow(...t) {
303
304
  if (this._locked) throw l("disallow");
@@ -319,7 +320,7 @@ class G {
319
320
  return t._min = this._min, t._max = this._max, t._allow = [...this._allow], t._reject = [...this._reject], t._locked = !1, t;
320
321
  }
321
322
  validate(t, s = g.warn) {
322
- return t === void 0 ? this._opt || (s("should be a bigint, but got undefined"), !1) : t === null ? this._null || (s("should be a bigint, but got null"), !1) : U(t) ? this._allow.length > 0 ? this._allow.includes(t) || (s(`${t} is not allowed, just support ${this._allow.join(", ")}`), !1) : this._reject.length > 0 && this._reject.includes(t) ? (s(`${t} is not allowed`), !1) : (this._min !== null ? t >= this._min : !0) && (this._max !== null ? t <= this._max : !0) || (s(
323
+ return t === void 0 ? this._opt || (s("should be a bigint, but got undefined"), !1) : t === null ? this._null || (s("should be a bigint, but got null"), !1) : T(t) ? this._allow.length > 0 ? this._allow.includes(t) || (s(`${t} is not allowed, just support ${this._allow.join(", ")}`), !1) : this._reject.length > 0 && this._reject.includes(t) ? (s(`${t} is not allowed`), !1) : (this._min !== null ? t >= this._min : !0) && (this._max !== null ? t <= this._max : !0) || (s(
323
324
  `${t} is not in range [${this._min === null ? -1 / 0 : this._min}, ${this._max === null ? 1 / 0 : this._max}]`
324
325
  ), !1) : (s(`should be a bigint, but got ${typeof t}`), !1);
325
326
  }
@@ -657,14 +658,14 @@ function Ot(e, t = "") {
657
658
  function et(e) {
658
659
  return I(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(/^\/+/, "");
659
660
  }
660
- function Et(e, t) {
661
+ function Rt(e, t) {
661
662
  const s = {};
662
663
  return (e.match(/([^=&#?]+)=[^&#]*/g) || []).forEach(function(r) {
663
664
  const n = r.split("="), i = n[0], a = decodeURIComponent(n[1] || "");
664
665
  s[i] !== void 0 ? s[i] += "," + a : s[i] = a;
665
666
  }), t !== !0 ? s[t] || "" : s;
666
667
  }
667
- function Rt(e, t) {
668
+ function Et(e, t) {
668
669
  if (t) {
669
670
  if (t === !0)
670
671
  return e.replace(/\?[^#]*/, "");
@@ -677,7 +678,7 @@ function Qt(e, t, s = !1) {
677
678
  if (!r)
678
679
  return e;
679
680
  const n = e.split("#");
680
- s && (n[0] = Rt(
681
+ s && (n[0] = Et(
681
682
  n[0],
682
683
  (r.match(/([^=&#?]+)=[^&#]+/g) || []).map((a) => a.replace(/=.+$/, ""))
683
684
  ));
@@ -695,7 +696,7 @@ class Ft {
695
696
  this.cache = {}, this.ttl = Math.max(t, 0);
696
697
  }
697
698
  getKey(t, s) {
698
- const r = t.replace(/#.+/, ""), n = r.replace(/\?.+/g, ""), i = Object.assign(Et(r, !0), s), a = At(r), h = Object.keys(i).sort().map((c) => `${c}#${i[c]}`);
699
+ const r = t.replace(/#.+/, ""), n = r.replace(/\?.+/g, ""), i = Object.assign(Rt(r, !0), s), a = At(r), h = Object.keys(i).sort().map((c) => `${c}#${i[c]}`);
699
700
  return `${n}_${h.join(",")}_${a.join(",")}`;
700
701
  }
701
702
  updateTTL(t) {
@@ -756,7 +757,7 @@ class St {
756
757
  }
757
758
  }
758
759
  var Q = /* @__PURE__ */ ((e) => (e.UnexpectResponse = "UnexpectResponse", e.Aborted = "Aborted", e.Unknown = "Unknown", e.NetworkError = "NetworkError", e.Timeout = "Timeout", e.NotSupport = "NotSupport", e.URLFormatError = "URLFormatError", e))(Q || {});
759
- function Tt(e, t, s, r) {
760
+ function Ut(e, t, s, r) {
760
761
  if (t.ok && !kt(t.data) && r) {
761
762
  const n = xt(r, s.get("defaultTypeGuardMessage"));
762
763
  return n.guard(t.data) || (t.code = Q.UnexpectResponse, s.showMessage(!0, `${e} ${n.message}`, t.code, t.status), console.error(t.code, e, t.data), t.data = null, t.message = n.message), t;
@@ -792,7 +793,7 @@ ${r.stack || ""}` : String(r),
792
793
  * 检查响应的数据类型
793
794
  */
794
795
  async guard(t, s, r) {
795
- return Tt(t, s, this.config, r);
796
+ return Ut(t, s, this.config, r);
796
797
  }
797
798
  /**
798
799
  * 修改默认请求配置: baseURL / timeout / credentials / errorHandler / messageHandler / responseHandler / logHandler / responseRule
@@ -850,7 +851,7 @@ async function Zt(e, t, s) {
850
851
  r.headers
851
852
  ), c = r.params || {}, m = {};
852
853
  Object.keys(c).forEach(($) => {
853
- c[$] !== void 0 && (m[$] = Ut(c[$]));
854
+ c[$] !== void 0 && (m[$] = Tt(c[$]));
854
855
  });
855
856
  const f = t.getFullUrl(e), d = Mt(r.body), p = r.timeout || t.get("timeout"), y = await async function() {
856
857
  const $ = t.get("requestTransformer");
@@ -868,12 +869,12 @@ async function Zt(e, t, s) {
868
869
  credentials: r.credentials || t.get("credentials")
869
870
  };
870
871
  }
871
- function Ut(e) {
872
+ function Tt(e) {
872
873
  return typeof e == "string" ? e : Array.isArray(e) ? e.join(",") : e + "";
873
874
  }
874
875
  function Mt(e) {
875
876
  if (e)
876
- return typeof e == "string" || j.window && e instanceof URLSearchParams || e instanceof ArrayBuffer || j.Blob && e instanceof Blob || j.FormData && e instanceof FormData ? e : JSON.stringify(e);
877
+ return typeof e == "string" || j.URLSearchParams && e instanceof URLSearchParams || e instanceof ArrayBuffer || j.Blob && e instanceof Blob || j.FormData && e instanceof FormData ? e : JSON.stringify(e);
877
878
  }
878
879
  const ut = "data", x = "message";
879
880
  function Ct(e, t, s, r, n) {
package/dist/wx.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./retry-BhqDL0mQ.cjs"),l=async function(t,r,u){return e.handleResponse(await e.retryRequest(f,t,r,u),t,r,u)},f=async function(t,r,u){const s=await e.convertOptions(t,r,u),a=s.method==="PATCH"?"POST":s.method,c=e.ue(s.url,s.params);return e.Ot.wx?new Promise(d=>{wx.request({url:c,data:s.body,header:s.headers,method:a,dataType:"string",responseType:"text",fail(){d({url:c,method:a,status:-1,statusText:e.RequestInternalError.Unknown,body:""})},success(n){d({url:c,method:a,status:n.statusCode,statusText:n.statusCode+"",headers:{...n.header},body:s.method==="HEAD"||n.statusCode===204?"":p(n.data)})}})}):{url:c,method:a,status:-1,statusText:e.RequestInternalError.NotSupport,body:""}};function p(t){return typeof t=="string"?t:t instanceof ArrayBuffer&&e.Ot.TextDecoder?new TextDecoder().decode(t):JSON.stringify(t)}function i(t){return new e.NetRequestHandler(l,t)}const o=i(),y=o.setConfig,g=o.head,h=o.get,q=o.post,x=o.del,R=o.put;exports.NetRequest=i;exports.del=x;exports.get=h;exports.head=g;exports.post=q;exports.put=R;exports.setGlobalConfig=y;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./retry-B6wqEvx2.cjs"),l=async function(t,r,u){return e.handleResponse(await e.retryRequest(f,t,r,u),t,r,u)},f=async function(t,r,u){const s=await e.convertOptions(t,r,u),a=s.method==="PATCH"?"POST":s.method,c=e.ue(s.url,s.params);return e.Ot.wx?new Promise(d=>{wx.request({url:c,data:s.body,header:s.headers,method:a,dataType:"string",responseType:"text",fail(){d({url:c,method:a,status:-1,statusText:e.RequestInternalError.Unknown,body:""})},success(n){d({url:c,method:a,status:n.statusCode,statusText:n.statusCode+"",headers:{...n.header},body:s.method==="HEAD"||n.statusCode===204?"":p(n.data)})}})}):{url:c,method:a,status:-1,statusText:e.RequestInternalError.NotSupport,body:""}};function p(t){return typeof t=="string"?t:t instanceof ArrayBuffer&&e.Ot.TextDecoder?new TextDecoder().decode(t):JSON.stringify(t)}function i(t){return new e.NetRequestHandler(l,t)}const o=i(),y=o.setConfig,g=o.head,h=o.get,q=o.post,x=o.del,R=o.put;exports.NetRequest=i;exports.del=x;exports.get=h;exports.head=g;exports.post=q;exports.put=R;exports.setGlobalConfig=y;
package/dist/wx.js CHANGED
@@ -1,4 +1,4 @@
1
- import { h as f, r as p, c as l, u as h, O as i, a as d, N as y } from "./retry-DjjIq-kG.js";
1
+ import { h as f, r as p, c as l, u as h, O as i, a as d, N as y } from "./retry-Bmcs0Nz4.js";
2
2
  const x = async function(t, n, r) {
3
3
  return f(await p(m, t, n, r), t, n, r);
4
4
  }, m = async function(t, n, r) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seayoo-web/request",
3
- "version": "3.0.2",
3
+ "version": "3.0.3",
4
4
  "description": "request tools for seayoo web",
5
5
  "type": "module",
6
6
  "source": "./src/index.ts",
@@ -1,3 +0,0 @@
1
- "use strict";var dt=Object.defineProperty;var _t=(e,t,s)=>t in e?dt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var v=(e,t,s)=>_t(e,typeof t!="symbol"?t+"":t,s);var mt=Object.defineProperty,gt=(e,t,s)=>t in e?mt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,o=(e,t,s)=>gt(e,typeof t!="symbol"?t+"":t,s);const u=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:Function("return this")(),j={wx:"wx"in u&&x(u.wx)&&"getSystemInfo"in u.wx&&_(u.wx.getSystemInfo),fetch:"fetch"in u&&_(u.fetch),window:"window"in u&&x(u.window),requestAnimationFrame:"requestAnimationFrame"in u&&_(u.requestAnimationFrame),localStorage:"localStorage"in u&&x(u.localStorage)&&"getItem"in u.localStorage&&_(u.localStorage.getItem),sessionStorage:"sessionStorage"in u&&x(u.sessionStorage)&&"getItem"in u.sessionStorage&&_(u.sessionStorage.getItem),File:"File"in u&&_(u.File),Blob:"Blob"in u&&_(u.Blob),Proxy:"Proxy"in u&&_(u.Proxy),Request:"Request"in u&&_(u.Request),FormData:"FormData"in u&&_(u.FormData),TextDecoder:"TextDecoder"in u&&_(u.TextDecoder),ResizeObserver:"ResizeObserver"in u&&_(u.ResizeObserver),AbortController:"AbortController"in u&&_(u.AbortController)};function _(e){return typeof e=="function"}function x(e){return typeof e=="object"&&e!==null}function pt(e){return new Promise(t=>setTimeout(t,Math.max(0,e)))}function q(){}function nt(e,t){const s={log:console.log.bind(console),error:console.error.bind(console),warn:console.warn.bind(console)},r=`[${e}]`;return["log","error","warn"].forEach(n=>{const i=console[n];s[n]=(...a)=>{i.apply(console,[r,...a])}}),s}function bt(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 yt=/^(?:https?:)?\/\/.+$/i,wt=/^https?:\/\/.+$/i,kt=/^\{[\d\D]*\}$/,vt=/^\[[\d\D]*\]$/;function $t(e){return typeof e=="string"}function T(e,t=!1){return t?yt.test(e):wt.test(e)}function jt(e){return e==null}function it(e,...t){return e!==null&&typeof e=="object"&&!(e instanceof Map)&&!(e instanceof Set)&&!(e instanceof WeakMap)&&!(e instanceof WeakSet)&&!Array.isArray(e)&&t.every(s=>s in e)}function b(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,t){return Array.isArray(e)&&e.every(s=>t(s))}function M(e){if(typeof e!="number"||Number.isNaN(e)||!Number.isFinite(e)||Number.isInteger(e)&&!Number.isSafeInteger(e))return!1;if(e===0)return!0;const t=Math.abs(e);return t>=Number.EPSILON&&t<=Number.MAX_SAFE_INTEGER}function ot(e){return kt.test(e)||vt.test(e)}function E(e){return e?e[0].toLowerCase()+e.slice(1):""}const at=/_\w*/,lt=/-\w*/;function Z(e){const t=at.test(e)?e.replace(/(?:^_*|_*$)/g,"").replace(/_+([^_])/g,(s,r)=>r.toUpperCase()):lt.test(e)?e.replace(/(?:^-*|-*$)/g,"").replace(/-+(\w)/g,(s,r)=>r.toUpperCase()):e;return E(t)}function Y(e){return at.test(e)?E(e).replace(/(?:^_*|_*$)/g,"").replace(/_+([^_])/g,(t,s)=>"_"+s.toLowerCase()):lt.test(e)?E(e.replace(/(?:^-*|-*$)/g,"")).replace(/-+(\w)/g,(t,s)=>"_"+s.toLowerCase()):E(e).replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`)}function Nt(e,t=20){const s=Math.max(t,10);return e.length<=s?e:e.slice(0,s-3)+"..."}function L(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 A(e,t=!1){return typeof e=="string"?Z(e):Array.isArray(e)?e.map(s=>!t||typeof s=="string"?A(s):typeof s=="object"&&s?A(s,!0):s):b(e)?Object.keys(e).reduce((s,r)=>{const n=Z(String(r)),i=n.charAt(0).toLowerCase()+n.slice(1);return s[i]=t?e[r]:A(e[r]),s},{}):e}function F(e,t=!1){return typeof e=="string"?Y(e):Array.isArray(e)?e.map(s=>!t||typeof s=="string"?F(s):typeof s=="object"&&s?F(s,t):s):b(e)?Object.keys(e).reduce((s,r)=>{const n=Y(String(r));return s[n]=t?e[r]:F(e[r]),s},{}):e}nt("LoadUtils");async function Ot(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 tt(e){return Object.getOwnPropertyNames(e).forEach(function(t){delete e[t]}),e}const g=nt("Validator");function R(e){return e?`"${Nt(e).replace(/"/g,'\\"')}"`:"empty string"}function P(e){return typeof e=="object"&&e&&"constructor"in e&&typeof e.constructor=="function"?e.constructor.name||"ClassInstance":Object.prototype.toString.call(e).replace(/(?:.+ |]$)/g,"")}function C(e){return typeof e=="bigint"}function l(e){return new Error(`${e?`${e}()`:"method"} is not allowed after locked`)}class H{constructor(){o(this,"_ps",{}),o(this,"_allow",[]),o(this,"_reject",[]),o(this,"_locked",!1),o(this,"_opt",!1),o(this,"_null",!1)}pattern(t,s){if(this._locked)throw l("pattern");return this._ps[`#${t||"custom"}`]=s,this}url(t=!1){if(this._locked)throw l("url");return this._ps.url=t?/^(?:https?:)?\/\/.+$/i:/^https?:\/\/.+$/i,this}dataUri(){if(this._locked)throw l("dataUri");return this._ps.dataUri=/^data:[a-z]+\/[a-z]+;base64,[\w+/=]+$/,this}enum(...t){if(this._locked)throw l("enum");const s=t[0];return B(t,$t)?(this._allow=t,tt(this._ps)):b(s)&&(this._allow=Object.values(s).map(r=>`${r}`),tt(this._ps)),this}disallow(...t){return this._reject.push(...t),this}optional(){if(this._locked)throw l("optional");return this._opt=!0,this}maybeNull(){if(this._locked)throw l("maybeNull");return this._null=!0,this}lock(){return this._locked=!0,this}clone(){const t=new H;return t._ps={...this._ps},t._allow=[...this._allow],t._reject=[...this._reject],t._locked=!1,t}validate(t,s=g.warn){if(t===void 0)return this._opt||(s("should be a string, but got undefined"),!1);if(t===null)return this._null||(s("should be a string, but got null"),!1);if(typeof t!="string")return s(`should be a string, but got ${typeof t}`),!1;if(this._allow.length>0)return this._allow.includes(t)||(s(`${R(t)} is not allowed, just support ${this._allow.map(R).join(", ")}`),!1);if(this._reject.length>0&&this._reject.some(n=>typeof n=="string"?n===t:n.test(t)))return s(`${R(t)} is not allowed`),!1;const r=Object.keys(this._ps);return r.length>0&&!r.some(n=>{const i=this._ps[n];return i instanceof RegExp?i.test(t):i(t)})?(s(`${R(t)} is not match pattern ${r.join(" | ")}`),!1):!0}}class G{constructor(){o(this,"_int",!1),o(this,"_min",-1/0),o(this,"_max",1/0),o(this,"_allow",[]),o(this,"_reject",[]),o(this,"_infinite",!1),o(this,"_unsafe",!1),o(this,"_nan",!1),o(this,"_locked",!1),o(this,"_opt",!1),o(this,"_null",!1)}int(){if(this._locked)throw l("int");return this._int=!0,this}min(t){if(this._locked)throw l("min");return Number.isNaN(t)||(this._min=t),this}max(t){if(this._locked)throw l("max");return Number.isNaN(t)||(this._max=t),this}allowNaN(){if(this._locked)throw l("allowNaN");return this._nan=!0,this}allowInfinity(){if(this._locked)throw l("allowInfinity");return this._infinite=!0,this._unsafe=!0,this}unsafe(){if(this._locked)throw l("unsafe");return this._unsafe=!0,this}enum(...t){if(this._locked)throw l("enum");const s=t[0];return B(t,M)?(this._allow=t,this._reject=[]):b(s)&&(this._allow=Object.values(s).map(r=>M(r)?r:null).filter(r=>r!==null),this._reject=[]),this}disallow(...t){if(this._locked)throw l("disallow");return this._reject.push(...t),this}optional(){if(this._locked)throw l("optional");return this._opt=!0,this}maybeNull(){if(this._locked)throw l("maybeNull");return this._null=!0,this}lock(){return this._locked=!0,this}clone(){const t=new G;return t._int=this._int,t._min=this._min,t._max=this._max,t._allow=[...this._allow],t._reject=[...this._reject],t._infinite=this._infinite,t._unsafe=this._unsafe,t._nan=this._nan,t._locked=!1,t}validate(t,s=g.warn){return t===void 0?this._opt||(s("should be a number, but got undefined"),!1):t===null?this._null||(s("should be a number, but got null"),!1):typeof t!="number"?(s(`should be a number, but got ${typeof t}`),!1):Number.isNaN(t)?this._nan||(s("should be a number, but got NaN"),!1):!Number.isFinite(t)&&!this._infinite?(s("should be a number, but got Infinity"),!1):this._allow.length>0?this._allow.includes(t)||(s(`${t} is not allowed, just support ${this._allow.join(", ")}`),!1):this._reject.length>0&&this._reject.includes(t)?(s(`${t} is not allowed`),!1):this._int&&Math.ceil(t)!==t?(s(`${t} is not an integer`),!1):!M(t)&&!this._unsafe?(s(`${t} is not a safe number`),!1):t>=this._min&&t<=this._max||(s(`${t} is not in range [${this._min}, ${this._max}]`),!1)}}class K{constructor(){o(this,"_min",null),o(this,"_max",null),o(this,"_allow",[]),o(this,"_reject",[]),o(this,"_locked",!1),o(this,"_opt",!1),o(this,"_null",!1)}min(t){if(this._locked)throw l("min");return this._min=t,this}max(t){if(this._locked)throw l("max");return this._max=t,this}enum(...t){if(this._locked)throw l("enum");const s=t[0];return B(t,C)?(this._allow=t,this._reject=[]):b(s)&&(this._allow=Object.values(s).map(r=>C(r)?r:null).filter(r=>r!==null),this._reject=[]),this}disallow(...t){if(this._locked)throw l("disallow");return this._reject.push(...t),this}optional(){if(this._locked)throw l("optional");return this._opt=!0,this}maybeNull(){if(this._locked)throw l("maybeNull");return this._null=!0,this}lock(){return this._locked=!0,this}clone(){const t=new K;return t._min=this._min,t._max=this._max,t._allow=[...this._allow],t._reject=[...this._reject],t._locked=!1,t}validate(t,s=g.warn){return t===void 0?this._opt||(s("should be a bigint, but got undefined"),!1):t===null?this._null||(s("should be a bigint, but got null"),!1):C(t)?this._allow.length>0?this._allow.includes(t)||(s(`${t} is not allowed, just support ${this._allow.join(", ")}`),!1):this._reject.length>0&&this._reject.includes(t)?(s(`${t} is not allowed`),!1):(this._min!==null?t>=this._min:!0)&&(this._max!==null?t<=this._max:!0)||(s(`${t} is not in range [${this._min===null?-1/0:this._min}, ${this._max===null?1/0:this._max}]`),!1):(s(`should be a bigint, but got ${typeof t}`),!1)}}class z{constructor(){o(this,"_locked",!1),o(this,"_opt",!1),o(this,"_null",!1)}optional(){if(this._locked)throw l("optional");return this._opt=!0,this}maybeNull(){if(this._locked)throw l("maybeNull");return this._null=!0,this}lock(){return this._locked=!0,this}clone(){return new z}validate(t,s=g.warn){return t===void 0?this._opt||(s("should be a boolean, but got undefined"),!1):t===null?this._null||(s("should be a boolean, but got null"),!1):typeof t!="boolean"?(s(`should be a boolean, but got ${typeof t}`),!1):!0}}class N{constructor(t){o(this,"_shape"),o(this,"_plain",!1),o(this,"_locked",!1),o(this,"_opt",!1),o(this,"_null",!1),this._shape=t}plain(){if(this._locked)throw l("plain");return this._plain=!0,this}optional(){if(this._locked)throw l("optional");return this._opt=!0,this}maybeNull(){if(this._locked)throw l("maybeNull");return this._null=!0,this}lock(){return this._locked=!0,this}get shape(){return{...this._shape}}clone(){const t=new N(this._shape);return t._plain=this._plain,t._locked=!1,t}match(t,s){return t in this._shape?this._shape[t].validate(s,q):!1}validate(t,s=g.warn){return t===void 0?this._opt||(s("should be a object, but got undefined"),!1):t===null?this._null||(s("should be a object, but got null"),!1):it(t)?this._plain&&!b(t)?(s(`should be a plain object, but got ${P(t)}`),!1):Object.keys(this._shape).every(r=>this._shape[r].validate(t[r],(...n)=>{s(`[.${String(r)}]`,...n)})):(s(`should be a object, but got ${P(t)}`),!1)}}class V{constructor(t){o(this,"_val"),o(this,"_locked",!1),o(this,"_opt",!1),o(this,"_null",!1),this._val=t}optional(){if(this._locked)throw l("optional");return this._opt=!0,this}maybeNull(){if(this._locked)throw l("maybeNull");return this._null=!0,this}lock(){return this._locked=!0,this}clone(){return new V(this._val)}validate(t,s=g.warn){return t===void 0?this._opt||(s("should be a record, but got undefined"),!1):t===null?this._null||(s("should be a record, but got null"),!1):b(t)?Object.keys(t).every(r=>this._val.validate(t[r],(...n)=>{s(`[:${r}]`,...n)})):(s(`should be a record, but got ${P(t)}`),!1)}}class W{constructor(t){o(this,"_val"),o(this,"_min",0),o(this,"_max",1/0),o(this,"_locked",!1),o(this,"_opt",!1),o(this,"_null",!1),this._val=t}min(t){if(this._locked)throw l("min");return this._min=t,this}max(t){if(this._locked)throw l("max");return this._max=t,this}optional(){if(this._locked)throw l("optional");return this._opt=!0,this}maybeNull(){if(this._locked)throw l("maybeNull");return this._null=!0,this}lock(){return this._locked=!0,this}clone(){const t=new W(this._val);return t._min=this._min,t._max=this._max,t._locked=!1,t}validate(t,s=g.warn){return t===void 0?this._opt||(s("should be a array, but got undefined"),!1):t===null?this._null||(s("should be a array, but got null"),!1):Array.isArray(t)?t.length<this._min||t.length>this._max?(this._min===this._max?s(`should be a array with length ${this._min}`):s(`should be a array with length between ${this._min} and ${this._max}`),!1):t.every((r,n)=>this._val.validate(r,(...i)=>{s(`[${n}]`,...i)})):(s(`should be a array, but got ${typeof t}`),!1)}}class J{constructor(...t){o(this,"_vs"),o(this,"_locked",!1),o(this,"_opt",!1),o(this,"_null",!1),this._vs=t}optional(){if(this._locked)throw l("optional");return this._opt=!0,this}maybeNull(){if(this._locked)throw l("maybeNull");return this._null=!0,this}lock(){return this._locked=!0,this}clone(){return new J(...this._vs)}validate(t,s=g.warn){return t===void 0?this._opt||(s("should be a tuple, but got undefined"),!1):t===null?this._null||(s("should be a tuple, but got null"),!1):Array.isArray(t)?t.length!==this._vs.length?(s(`should be a tuple with length ${this._vs.length}, but got ${t.length}`),!1):this._vs.every((r,n)=>r.validate(t[n],(...i)=>{s(`[idx:${n}]`,...i)})):(s(`should be a tuple, but got ${typeof t}`),!1)}}class Q{constructor(...t){o(this,"_vs"),o(this,"_key",""),o(this,"_locked",!1),o(this,"_opt",!1),o(this,"_null",!1),this._vs=t}optional(){if(this._locked)throw l("optional");return this._opt=!0,this}maybeNull(){if(this._locked)throw l("maybeNull");return this._null=!0,this}key(t){if(this._locked)throw l("key");return this._vs.every(s=>s instanceof N)?this._key=t:g.warn("union type key can only be used when all validators are ObjectValidator"),this}satisfies(){return this}lock(){return this._locked=!0,this}get validators(){return[...this._vs]}clone(){const t=new Q(...this._vs);return t._key=this._key,t._locked=!1,t}validate(t,s=g.warn){if(t===void 0)return this._opt||(s("should be a union, but got undefined"),!1);if(t===null)return this._null||(s("should be a union, but got null"),!1);if(this._key&&it(t)&&t){const n=t[this._key];if(n===void 0)return s(`key field "${this._key}" is not found`,t),!1;const i=this._vs.find(a=>a instanceof N&&a.match(this._key,n));return i?i.validate(t,s):(s(`key field "${this._key}" value is match union definition`,n),!1)}const r=this._vs.some(n=>n.validate(t,q));return r||s("value is not match union definition",t),r}}class S{constructor(t,s){o(this,"_name",""),o(this,"_guard"),o(this,"_locked",!1),o(this,"_opt",!1),o(this,"_null",!1),this._name=t,this._guard=s}optional(){if(this._locked)throw l("optional");return this._opt=!0,this}maybeNull(){if(this._locked)throw l("maybeNull");return this._null=!0,this}lock(){return this._locked=!0,this}clone(){return new S(this._name,this._guard)}validate(t,s=g.warn){const r=this._name||"custom type";return t===void 0?this._opt||(s(`should be ${r}, but got undefined`),!1):t===null?this._null||(s(`should be ${r}, but got null`),!1):this._guard(t)||(s(`custom validation${this._name?`(${this._name})`:""} failed`),!1)}}function xt(e,t){if(typeof e=="string"){if(!t)throw new Error("custom type guard must be defined");return new S(e,t)}return new S("",e)}const Rt={shape(e){return e},define(e){return e},guard(e){return function(t){return e.validate(t)}},object(e){return new N(e)},record(e){return new V(e)},array(e){return new W(e)},tuple(...e){return new J(...e)},union(...e){return new Q(...e)},string(){return new H},bool(){return new z},number(){return new G},bigint(){return new K},custom:xt,unknown(){return{validate(e){return!0}}},never(){return{validate(e){return!1}}}},Et=e=>b(e)&&Object.keys(e).length===0;Rt.custom("EmptyObject",Et);function At(e,t="数据未能正确识别"){return typeof e=="function"?{guard:e,message:t}:{guard:e.guard,message:e.message||t}}function Ft(e,t=""){return!t||T(e,!0)?et(e):(et(t)+"/"+e).replace(/\/{2,}/g,"/").replace(/:\//,"://")}function et(e){return T(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 St(e,t){const s={};return(e.match(/([^=&#?]+)=[^&#]*/g)||[]).forEach(function(r){const n=r.split("="),i=n[0],a=decodeURIComponent(n[1]||"");s[i]!==void 0?s[i]+=","+a:s[i]=a}),t!==!0?s[t]||"":s}function Tt(e,t){if(t){if(t===!0)return e.replace(/\?[^#]*/,"")}else return e;const s=e.split("#"),r=s[0].split("?"),n=r[0],i=r.length>1?r[1]:"",a=s.length>1?"#"+s[1]:"",h=typeof t=="string"?[t]:Array.isArray(t)?t:[];return!h.length||!i?s[0]+a:(h.map(c=>c.replace(/([\\(){}[\]^$+\-*?|])/g,"\\$1")),(n+"?"+i.replace(new RegExp("(?:^|&)(?:"+h.join("|")+")=[^&$]+","g"),"").replace(/^&/,"")).replace(/\?$/,"")+a)}function Ut(e,t,s=!1){const r=typeof t=="string"?t:Object.keys(t).map(a=>`${a}=${encodeURIComponent(t[a])}`).join("&");if(!r)return e;const n=e.split("#");s&&(n[0]=Tt(n[0],(r.match(/([^=&#?]+)=[^&#]+/g)||[]).map(a=>a.replace(/=.+$/,""))));const i=n[0].indexOf("?")+1?"&":"?";return(n[0]+i+r+(n.length>1?"#"+n[1]:"")).replace(/\?&/,"?")}function Mt(e){const t=e.match(/(?:\?|&)([^=]+)(?:&|$)/g);return t?t.join("").replace(/(?:\?|^&+|&+$)/g,"").replace(/&{2}/g,"&").split("&").sort():[]}class Ct{constructor(t=500){v(this,"ttl");v(this,"cache");this.cache={},this.ttl=Math.max(t,0)}getKey(t,s){const r=t.replace(/#.+/,""),n=r.replace(/\?.+/g,""),i=Object.assign(St(r,!0),s),a=Mt(r),h=Object.keys(i).sort().map(c=>`${c}#${i[c]}`);return`${n}_${h.join(",")}_${a.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 ut{constructor(t){v(this,"config",{baseURL:"/",maxRetry:0,retryInterval:100,retryResolve:"network",timeout:1e4,cacheTTL:500,credentials:"same-origin",defaultTypeGuardMessage:"响应数据未能正确识别",responseRule:{ok:{resolve:"body"},failed:{resolve:"json",messageField:"message"}}});t&&this.set(t)}set(t){if(t.baseURL&&!/^\/.+/.test(t.baseURL)&&!T(t.baseURL))throw console.warn("baseURL 需要以 / 开头,或者是完整的 url 地址"),new Error("BaseURLError");Object.assign(this.config,t)}get(t){return this.config[t]}getFullUrl(t){return Ft(t,this.config.baseURL)}showMessage(t,s,r,n){this.config.messageHandler&&s&&this.config.messageHandler(t,s,r,n)}}var U=(e=>(e.UnexpectResponse="UnexpectResponse",e.Aborted="Aborted",e.Unknown="Unknown",e.NetworkError="NetworkError",e.Timeout="Timeout",e.NotSupport="NotSupport",e.URLFormatError="URLFormatError",e))(U||{});function Lt(e,t,s,r){if(t.ok&&!jt(t.data)&&r){const n=At(r,s.get("defaultTypeGuardMessage"));return n.guard(t.data)||(t.code=U.UnexpectResponse,s.showMessage(!0,`${e} ${n.message}`,t.code,t.status),console.error(t.code,e,t.data),t.data=null,t.message=n.message),t}return t}class Pt{constructor(t,s){v(this,"agent");v(this,"config");v(this,"cache");this.config=new ut(s),this.agent=t,this.cache=new Ct(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:U.Unknown,message:r instanceof Error?`${r.message}
2
- ${r.stack||""}`:String(r),headers:{},data:null}}}async guard(t,s,r){return Lt(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 n=Object.assign({},r||null);n.method="GET";const i=this.cache.getKey(t,n.params),a=this.cache.get(i);if(a)return this.guard(t,await a,s||null);const h=this.request(t,n);return this.cache.set(i,h),this.guard(t,await h,s||null)}async post(t,s,r,n){const i=Object.assign({},n||null);return i.method="POST",i.body=s||{},this.guard(t,await this.request(t,i),r||null)}async del(t,s,r){const n=Object.assign({},r||null);return n.method="DELETE",this.guard(t,await this.request(t,n),s||null)}async put(t,s,r,n){const i=Object.assign({},n||null);return i.method="PUT",i.body=s||{},this.guard(t,await this.request(t,i),r||null)}async patch(t,s,r,n){const i=Object.assign({},n||null);return i.method="PATCH",i.body=s||{},this.guard(t,await this.request(t,i),r||null)}}async function Dt(e,t,s){var w;const r=Object.assign({method:"GET"},s),n=j.FormData?r.body instanceof FormData:!1,i=n&&r.method!=="POST"&&r.method!=="PUT"?"POST":r.method,a=i==="GET"||i==="HEAD"||i==="DELETE";a&&r.body!==void 0&&(console.warn("request body is invalid with method get, head, delete"),delete r.body);const h=Object.assign(n||a?{}:{"Content-Type":j.Blob&&r.body instanceof Blob?r.body.type||"application/octet-stream":"application/json;charset=utf-8"},r.headers),c=r.params||{},m={};Object.keys(c).forEach($=>{c[$]!==void 0&&(m[$]=It(c[$]))});const f=t.getFullUrl(e),d=qt(r.body),p=r.timeout||t.get("timeout"),y=await async function(){const $=t.get("requestTransformer");if($)return await $({headers:h,params:m,method:i,url:f,body:d})}(),k=typeof y=="string"&&y?y:f;return(w=t.get("logHandler"))==null||w({type:"ready",url:k,method:i,headers:h,timeout:p,body:d}),{url:k,method:i,body:d,params:m,headers:h,timeout:p,abort:r.abort,credentials:r.credentials||t.get("credentials")}}function It(e){return typeof e=="string"?e:Array.isArray(e)?e.join(","):e+""}function qt(e){if(e)return typeof e=="string"||j.window&&e instanceof URLSearchParams||e instanceof ArrayBuffer||j.Blob&&e instanceof Blob||j.FormData&&e instanceof FormData?e:JSON.stringify(e)}const ht="data",O="message";function Bt(e,t,s,r,n){const i=n||r;return X(e)?Jt(i.ok||r.ok,e,t,s):Gt(i.failed||r.failed,t,s)}const Ht=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||O)+" 作为错误消息");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||ht)+" 作为响应数据,读取 "+(r.messageField||O)+" 作为提示消息"),r.statusField&&t.push(" 当 "+r.statusField+" 为 "+(r.statusOKValue||"空值")+" 时是成功提示,否则是错误消息"),r.ignoreMessage&&t.push(" 并忽略以下消息:"+r.ignoreMessage);break}return t.join(`
3
- `)};function Gt(e,t,s){const r=e||{resolve:"json",messageField:O},n={ok:!1,code:t,message:s,data:null};switch(r.resolve){case"body":n.message=st(s)||s;break;case"json":const{code:i,message:a}=Kt(s,r.converter,r.statusField,r.messageField);n.code=i||t,n.message=st(s)||a;break}return n}function Kt(e,t,s,r=O){if(!ot(e))return{message:""};const n=I(L(e),t);return!n||!b(n)?{message:e}:{code:s?D(n,s):"",message:D(n,r)||e}}function D(e,t){const s=Array.isArray(t)?t:[t];for(const r of s)if(r in e)return zt(e[r]);return""}function zt(e){return e?typeof e=="string"?e:JSON.stringify(e):""}const Vt=/<title>([^<]+)<\/title>/i,Wt=/<message>([^<]+)<\/message>/i;function st(e){const t=e.match(Vt);if(t)return t[1];const s=e.match(Wt);return s?s[1]:""}function Jt(e,t,s,r){const n=e||{resolve:"body"},i={ok:!0,code:s,message:"",data:null};if(t===204||!r)return i;if(n.resolve==="body")return i.data=ot(r)?I(L(r),e.converter):r,i;const a=I(L(r),e.converter);if(!a||!b(a))return i.ok=!1,i.code="ResponseFormatError",i.message="响应内容无法格式化为 Object",i;const h=n.statusField,c=n.statusOKValue||"",m=n.dataField||ht,f=n.messageField||O,d=n.ignoreMessage||"";if(h&&!(h in a))return i.ok=!1,i.code="ResponseFieldMissing",i.message="响应内容找不到状态字段 "+h,i;const p=h?a[h]+"":"";return i.ok=h?p===c:!0,i.code=p||s,i.data=m===!0?a:m in a?a[m]:null,i.message=D(a,f),d&&i.message&&(Array.isArray(d)&&d.includes(i.message)||typeof d=="string"&&i.message===d)&&(i.message=""),i}function X(e){return e>=200&&e<400}function I(e,t){return t==="camelize"?A(e):t==="snakify"?F(e):e}const Qt=bt("APIError");function Xt(e){const t={};for(const n in e.headers)(n.startsWith("x-")||n.includes("trace")||n.includes("server")||/\b(?:id|uuid)\b/.test(n))&&(t[n]=e.headers[n]);const s=e.url.replace(/^(?:https?:)?\/*/i,"").replace(/\?.+/,""),r=e.status<0?"unknown":e.status;return{sentryError:new Qt(`${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 ct(e){return e.reduce((t,[s,r])=>(s&&(t[s]=r||""),t),{})}function Zt(e,t,s,r){var y;const n=e.status,i=e.method,a=ct(Object.entries(e.headers||{}).map(([k,w])=>[k.toLowerCase(),w])),{ok:h,code:c,data:m,message:f}=Bt(n,e.statusText,e.body,s.get("responseRule"),r==null?void 0:r.responseRule);if(!X(n)){const k=Xt({url:e.url,method:e.method,status:n,code:c,message:f,body:e.body,headers:a,error:e.rawError});(s.get("errorHandler")||Yt)({url:t,method:i,status:n,code:c,message:f,headers:a,rawError:e.rawError,responseBody:e.body,...k})}if(n<0)return rt({ok:!1,status:n,code:e.statusText,headers:{},message:"",data:null},`${i} ${t} ${e.statusText}`,i,t,s,r);const d={ok:h,data:m,code:c,message:f,status:n,headers:a};(y=s.get("responseHandler"))==null||y({...d},i,t);const p=h?f:f||e.statusText;return rt(d,p,i,t,s,r)}function rt(e,t,s,r,n,i){const a=n.get("message"),h=a===!1||(i==null?void 0:i.message)===!1?!1:(i==null?void 0:i.message)||a;if(h!==!1){const c=typeof h=="function"?h(e,s,r,t):t;c instanceof Error?n.showMessage(!0,c.message,e.code,e.status):c&&typeof c=="object"&&"message"in c?n.showMessage(!1,c.message,e.code,e.status):n.showMessage(!e.ok,c,e.code,e.status)}return e}function Yt(e){const t={};for(const s in e)s.startsWith("sentry")||(t[s]=e[s]);console.error("RequestError",t)}async function ft(e,t,s,r,n){const i=n||0,a=Math.max(0,Math.min(10,(r==null?void 0:r.maxRetry)??s.get("maxRetry")??0)),h=(r==null?void 0:r.retryResolve)??s.get("retryResolve"),c=s.get("logHandler")||q;c({type:"prepare",url:t,method:(r==null?void 0:r.method)||"GET",retry:i,maxRetry:a,message:i===0?"start":`retry ${i}/${a} start`,headers:r==null?void 0:r.headers,options:r});const m=Date.now(),f=await e(t,s,r),d=f.status,p=Date.now()-m,y=`[cost ${p}][${d}] ${d<0?f.body:""}`;c({type:"finished",url:t,method:f.method,retry:i,maxRetry:a,message:i===0?`finish ${y}`:`retry ${i}/${a} finish ${y}`,response:f,headers:f.headers,cost:p});const k=X(d);if(!a||h==="network"&&d>0||h==="status"&&k||Array.isArray(h)&&!h.includes(d)||typeof h=="function"&&h(f,i)!==!0||i>=a)return f;const w=(r==null?void 0:r.retryInterval)??s.get("retryInterval")??100;return await pt(Math.max(100,w==="2EB"?Math.pow(2,i)*100:typeof w=="function"?w(i+1)||0:w)),await ft(e,t,s,r,i+1)}exports.$t=T;exports.NetRequestHandler=Pt;exports.Ot=j;exports.Qe=Ot;exports.RequestGlobalConfig=ut;exports.RequestInternalError=U;exports.convertOptions=Dt;exports.fromEntries=ct;exports.getResponseRulesDescription=Ht;exports.handleResponse=Zt;exports.retryRequest=ft;exports.ue=Ut;