@seayoo-web/request 1.2.2 → 1.3.1

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.
@@ -0,0 +1,196 @@
1
+ /* eslint-disable */
2
+ var addSorting = (function() {
3
+ 'use strict';
4
+ var cols,
5
+ currentSort = {
6
+ index: 0,
7
+ desc: false
8
+ };
9
+
10
+ // returns the summary table element
11
+ function getTable() {
12
+ return document.querySelector('.coverage-summary');
13
+ }
14
+ // returns the thead element of the summary table
15
+ function getTableHeader() {
16
+ return getTable().querySelector('thead tr');
17
+ }
18
+ // returns the tbody element of the summary table
19
+ function getTableBody() {
20
+ return getTable().querySelector('tbody');
21
+ }
22
+ // returns the th element for nth column
23
+ function getNthColumn(n) {
24
+ return getTableHeader().querySelectorAll('th')[n];
25
+ }
26
+
27
+ function onFilterInput() {
28
+ const searchValue = document.getElementById('fileSearch').value;
29
+ const rows = document.getElementsByTagName('tbody')[0].children;
30
+ for (let i = 0; i < rows.length; i++) {
31
+ const row = rows[i];
32
+ if (
33
+ row.textContent
34
+ .toLowerCase()
35
+ .includes(searchValue.toLowerCase())
36
+ ) {
37
+ row.style.display = '';
38
+ } else {
39
+ row.style.display = 'none';
40
+ }
41
+ }
42
+ }
43
+
44
+ // loads the search box
45
+ function addSearchBox() {
46
+ var template = document.getElementById('filterTemplate');
47
+ var templateClone = template.content.cloneNode(true);
48
+ templateClone.getElementById('fileSearch').oninput = onFilterInput;
49
+ template.parentElement.appendChild(templateClone);
50
+ }
51
+
52
+ // loads all columns
53
+ function loadColumns() {
54
+ var colNodes = getTableHeader().querySelectorAll('th'),
55
+ colNode,
56
+ cols = [],
57
+ col,
58
+ i;
59
+
60
+ for (i = 0; i < colNodes.length; i += 1) {
61
+ colNode = colNodes[i];
62
+ col = {
63
+ key: colNode.getAttribute('data-col'),
64
+ sortable: !colNode.getAttribute('data-nosort'),
65
+ type: colNode.getAttribute('data-type') || 'string'
66
+ };
67
+ cols.push(col);
68
+ if (col.sortable) {
69
+ col.defaultDescSort = col.type === 'number';
70
+ colNode.innerHTML =
71
+ colNode.innerHTML + '<span class="sorter"></span>';
72
+ }
73
+ }
74
+ return cols;
75
+ }
76
+ // attaches a data attribute to every tr element with an object
77
+ // of data values keyed by column name
78
+ function loadRowData(tableRow) {
79
+ var tableCols = tableRow.querySelectorAll('td'),
80
+ colNode,
81
+ col,
82
+ data = {},
83
+ i,
84
+ val;
85
+ for (i = 0; i < tableCols.length; i += 1) {
86
+ colNode = tableCols[i];
87
+ col = cols[i];
88
+ val = colNode.getAttribute('data-value');
89
+ if (col.type === 'number') {
90
+ val = Number(val);
91
+ }
92
+ data[col.key] = val;
93
+ }
94
+ return data;
95
+ }
96
+ // loads all row data
97
+ function loadData() {
98
+ var rows = getTableBody().querySelectorAll('tr'),
99
+ i;
100
+
101
+ for (i = 0; i < rows.length; i += 1) {
102
+ rows[i].data = loadRowData(rows[i]);
103
+ }
104
+ }
105
+ // sorts the table using the data for the ith column
106
+ function sortByIndex(index, desc) {
107
+ var key = cols[index].key,
108
+ sorter = function(a, b) {
109
+ a = a.data[key];
110
+ b = b.data[key];
111
+ return a < b ? -1 : a > b ? 1 : 0;
112
+ },
113
+ finalSorter = sorter,
114
+ tableBody = document.querySelector('.coverage-summary tbody'),
115
+ rowNodes = tableBody.querySelectorAll('tr'),
116
+ rows = [],
117
+ i;
118
+
119
+ if (desc) {
120
+ finalSorter = function(a, b) {
121
+ return -1 * sorter(a, b);
122
+ };
123
+ }
124
+
125
+ for (i = 0; i < rowNodes.length; i += 1) {
126
+ rows.push(rowNodes[i]);
127
+ tableBody.removeChild(rowNodes[i]);
128
+ }
129
+
130
+ rows.sort(finalSorter);
131
+
132
+ for (i = 0; i < rows.length; i += 1) {
133
+ tableBody.appendChild(rows[i]);
134
+ }
135
+ }
136
+ // removes sort indicators for current column being sorted
137
+ function removeSortIndicators() {
138
+ var col = getNthColumn(currentSort.index),
139
+ cls = col.className;
140
+
141
+ cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, '');
142
+ col.className = cls;
143
+ }
144
+ // adds sort indicators for current column being sorted
145
+ function addSortIndicators() {
146
+ getNthColumn(currentSort.index).className += currentSort.desc
147
+ ? ' sorted-desc'
148
+ : ' sorted';
149
+ }
150
+ // adds event listeners for all sorter widgets
151
+ function enableUI() {
152
+ var i,
153
+ el,
154
+ ithSorter = function ithSorter(i) {
155
+ var col = cols[i];
156
+
157
+ return function() {
158
+ var desc = col.defaultDescSort;
159
+
160
+ if (currentSort.index === i) {
161
+ desc = !currentSort.desc;
162
+ }
163
+ sortByIndex(i, desc);
164
+ removeSortIndicators();
165
+ currentSort.index = i;
166
+ currentSort.desc = desc;
167
+ addSortIndicators();
168
+ };
169
+ };
170
+ for (i = 0; i < cols.length; i += 1) {
171
+ if (cols[i].sortable) {
172
+ // add the click event handler on the th so users
173
+ // dont have to click on those tiny arrows
174
+ el = getNthColumn(i).querySelector('.sorter').parentElement;
175
+ if (el.addEventListener) {
176
+ el.addEventListener('click', ithSorter(i));
177
+ } else {
178
+ el.attachEvent('onclick', ithSorter(i));
179
+ }
180
+ }
181
+ }
182
+ }
183
+ // adds sorting functionality to the UI
184
+ return function() {
185
+ if (!getTable()) {
186
+ return;
187
+ }
188
+ cols = loadColumns();
189
+ loadData();
190
+ addSearchBox();
191
+ addSortIndicators();
192
+ enableUI();
193
+ };
194
+ })();
195
+
196
+ window.addEventListener('load', addSorting);
@@ -24,10 +24,16 @@ export interface IBaseRequestOptions {
24
24
  export interface IRetryRequestOptions {
25
25
  /** 错误时重试的次数,不能超过 10 次 */
26
26
  maxRetry?: number;
27
- /** 重试策略:默认 network,可选 status */
28
- retryResolve?: ERetryResolve;
29
- /** 两次重试的间隔,如果设置时间,则单位 ms,或者设置函数返回等待的时间(单位ms),默认 1000,最小 100,函数参数 retryIndex 从 1 开始 */
30
- retryInterval?: number | ((retryIndex: number) => number);
27
+ /** 重试策略:默认 network,可选 status 或者指定特殊的 status 或自定义检查 */
28
+ retryResolve?: IRetryResolve;
29
+ /**
30
+ * 两次重试的间隔,如果设置时间,则单位 ms,或者设置函数返回等待的时间(单位ms),默认 1000,最小 100,函数参数 retryIndex 1 开始
31
+ *
32
+ * 特殊值 2EB 表示以 2 为底的指数退避,首次延迟为 1 秒,第二次为 2 秒,第三次为 4 秒,第四次为 8 秒...
33
+ *
34
+ * 扩展阅读 https://en.wikipedia.org/wiki/Exponential_backoff
35
+ */
36
+ retryInterval?: number | "2EB" | ((retryIndex: number) => number);
31
37
  }
32
38
  export interface IOtherRequestOptions {
33
39
  /** 如果设置为 false 则关闭通用提示,设置函数可以自定义提示,函数返回 falsly 则不提示 */
@@ -46,8 +52,6 @@ export type IRequestGlobalConfig = {
46
52
  /** 用于 get 请求的缓存时长,单位 ms,建议不小于 100 */
47
53
  cacheTTL?: number;
48
54
  /**
49
- * 全局 request 处理函数,headers 和 params 为引用型数据可直接修改,如果返回字符串,则替换原来的 url 进行请求
50
- *
51
55
  * 请改用 requestTransformer
52
56
  *
53
57
  * @deprecated
@@ -76,15 +80,17 @@ export type IRequestGlobalConfig = {
76
80
  /**
77
81
  * 失败重试策略:
78
82
  * network 仅仅网络错误时重试;
79
- * status 当网络错误或者 http状态码错误时重试;
83
+ * status 当网络错误或者 http状态码错误时(<200 || >=400)重试;
80
84
  */
81
- export type ERetryResolve = "network" | "status";
85
+ export type IRetryResolve = "network" | "status" | number[] | ((response: IRequestBaseResponse, count: number) => boolean);
82
86
  /** 响应内容解析规则配置 */
83
87
  export interface IResponseRule {
84
88
  /** http失败时 (status <200 || status >= 400) 解析策略 */
85
89
  failed: {
86
90
  /** 解析方式,如果解析方式为 json,则可以进一步指定错误消息字段 */
87
91
  resolve: "json" | "body";
92
+ /** 解析错误消息的状态字段,仅在 resolve 为 json 时有效,有值的话会替换 response 的 code */
93
+ statusField?: string;
88
94
  /** 解析错误消息的字段,仅在 resolve 为 json 时有效 */
89
95
  messageField?: string | string[];
90
96
  };
@@ -106,8 +112,8 @@ export interface IResponseRule {
106
112
  statusField?: string;
107
113
  /** 自定义状态成功时的取值 */
108
114
  statusOKValue?: string;
109
- /** 数据字段名,仅在自定义状态成功时有效 */
110
- dataField?: string;
115
+ /** 数据字段名,仅在自定义状态成功时有效,如果设置为 true 则整个 body json 当作数据字段 */
116
+ dataField?: string | true;
111
117
  /** 消息字段名,仅在自定义状态失败时有效 */
112
118
  messageField?: string | string[];
113
119
  /** 忽略特定的消息内容,如果可能是多个值,则设置为数组 */
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- var e=require("@seayoo-web/utils");function t(){return t=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},t.apply(this,arguments)}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var n=function(e,t,r){try{var n=Object.assign({method:"GET"},r),s=n.body instanceof FormData,o=s?"POST":n.method;"GET"!==o&&"HEAD"!==o&&"DELETE"!==o||void 0!==n.body&&(console.warn("request body is invalid with method get, head, delete"),delete n.body);var a=Object.assign(s?{}:{"Content-Type":"application/json;charset=utf-8"},n.headers),i=n.params||{},u={};Object.keys(i).forEach(function(e){var t;void 0!==i[e]&&(u[e]="string"==typeof(t=i[e])?t:Array.isArray(t)?t.join(","):t+"")});var l=t.getFullUrl(e),c=function(e){if(e)return e instanceof Blob||e instanceof ArrayBuffer||e instanceof FormData||e instanceof URLSearchParams||"string"==typeof e?e:JSON.stringify(e)}(n.body),d=n.timeout||t.get("timeout");return Promise.resolve(function(r){try{var n=function(n){var s;return r?n:Promise.resolve(null==(s=t.get("requestHandler"))?void 0:s(a,u,o,e))},s=t.get("requestTransformer"),i=function(){if(s)return Promise.resolve(s({headers:a,params:u,method:o,url:l,body:c})).then(function(e){return r=1,e})}();return Promise.resolve(i&&i.then?i.then(n):n(i))}catch(e){return Promise.reject(e)}}()).then(function(e){var r,s="string"==typeof e&&e?e:l;return null==(r=t.get("logHandler"))||r({type:"ready",url:s,method:o,headers:a,timeout:d,body:c}),{url:s,method:o,body:c,params:u,headers:a,timeout:d,credentials:n.credentials||t.get("credentials")}})}catch(e){return Promise.reject(e)}},s=function(e,t,r){try{return Promise.resolve(n(e,t,r)).then(function(e){var t=new URL(e.url),r=e.params;r instanceof Object&&Object.keys(r).forEach(function(e){return t.searchParams.set(e,r[e])});var n=new AbortController,s=e.timeout>0?setTimeout(function(){return n.abort()},e.timeout):null,o=new Request(t,{method:e.method,headers:new Headers(e.headers),body:e.body,credentials:e.credentials,signal:e.timeout>0?n.signal:null,redirect:"follow"});return Promise.resolve(fetch(o).then(function(r){try{var n=function(e){return{url:u,method:i,status:a,statusText:o,headers:s,body:e}},s=Object.fromEntries(r.headers.entries()),o=r.statusText,a=r.status,i=e.method,u=t.toString();return Promise.resolve("HEAD"===e.method?n(""):Promise.resolve(r.text()).then(n))}catch(e){return Promise.reject(e)}}).catch(function(r){return{url:t.toString(),method:e.method,status:-1,statusText:"NetworkError",body:String(r)}}).finally(function(){null!==s&&clearTimeout(s)}))})}catch(e){return Promise.reject(e)}},o="data",a="message";function i(e,t){for(var n,s=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e))){n&&(e=n);var s=0;return function(){return s>=e.length?{done:!0}:{done:!1,value:e[s++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(Array.isArray(t)?t:[t]);!(n=s()).done;){var o=n.value;if(o in e)return(a=e[o])?"string"==typeof a?a:JSON.stringify(a):""}var a;return""}var u=/<title>([^<]+)<\/title>/i,l=/<message>([^<]+)<\/message>/i;function c(e){var t=e.match(u);if(t)return t[1];var r=e.match(l);return r?r[1]:""}function d(e){return e>=200&&e<400}var h=function t(r,n,s,o,a){try{var i,u,l,c=a||0,h=Math.max(0,Math.min(10,null!=(i=null!=(u=null==o?void 0:o.maxRetry)?u:s.get("maxRetry"))?i:0)),f=null!=(l=null==o?void 0:o.retryResolve)?l:s.get("retryResolve"),m=s.get("logHandler")||e.noop;m({type:"prepear",url:n,method:(null==o?void 0:o.method)||"GET",retry:c,maxRetry:h,message:0===c?"start":"retry "+c+"/"+h+" start",headers:null==o?void 0:o.headers,options:o});var g=Date.now();return Promise.resolve(r(n,s,o)).then(function(a){var i,u,l=a.status,v=Date.now()-g,p="[cost "+v+"]["+l+"] "+(l<0?a.body:"");m({type:"finished",url:n,method:a.method,retry:c,maxRetry:h,message:0===c?"finish "+p:"retry "+c+"/"+h+" finish "+p,response:a,headers:a.headers,cost:v});var y=d(l);if(!h||"network"===f&&l>0||"status"===f&&y||c>=h)return a;var b=null!=(i=null!=(u=null==o?void 0:o.retryInterval)?u:s.get("retryInterval"))?i:0;return Promise.resolve(e.sleep(Math.max(100,"function"==typeof b?b(c+1)||0:b))).then(function(){return Promise.resolve(t(r,n,s,o,c+1))})})}catch(e){return Promise.reject(e)}};function f(r,n,s,u){var l,h;if(r.status<0)return m({ok:!1,status:r.status,code:r.statusText,headers:{},message:"",data:null},r.method+" "+n+" "+r.statusText,r.method,n,s,u);d(r.status)||null==(h=s.get("errorHandler"))||h(r.status,r.method,n);var f,g,v,p,y,b=t({},(f=r.status,g=r.statusText,v=r.body,p=s.get("responseRule"),y=(null==u?void 0:u.responseRule)||p,d(f)?function(t,r,n,s){var u=t||{resolve:"body"},l={ok:!0,code:n,message:"",data:null};if(202===r||204===r||!s)return l;if("body"===u.resolve)return l.data=e.isJsonLike(s)?e.parseJSON(s):s,l;var c=e.parseJSON(s);if(!c||!e.isStringRecord(c))return l.ok=!1,l.code="ResponseFormatError",l.message="响应内容无法格式化为 Object",l;var d=u.statusField,h=u.statusOKValue||"",f=u.dataField||o,m=u.messageField||a,g=u.ignoreMessage||"";if(d&&!(d in c))return l.ok=!1,l.code="ResponseFieldMissing",l.message="响应内容找不到状态字段 "+d,l;var v=d?c[d]+"":"";return l.ok=!d||v===h,l.code=v||n,l.data=f in c?c[f]:null,l.message=i(c,m),g&&l.message&&(Array.isArray(g)&&g.includes(l.message)||"string"==typeof g&&l.message===g)&&(l.message=""),l}(y.ok||p.ok,f,g,v):function(t,r,n){var s=t||{resolve:"json",messageField:a},o={ok:!1,code:r,message:n,data:null};switch(s.resolve){case"body":o.message=c(n)||n;break;case"json":o.message=c(n)||function(t,r){if(void 0===r&&(r=a),!e.isJsonLike(t))return"";var n=e.parseJSON(t);return n&&e.isStringRecord(n)&&i(n,r)||t}(n,s.messageField)}return o}(y.failed||p.failed,g,v)),{status:r.status,headers:Object.fromEntries(Object.entries(r.headers||{}).map(function(e){var t=e[1];return[e[0].toLowerCase(),t]}))});return null==(l=s.get("responseHandler"))||l(t({},b),r.method,n),m(b,b.ok?b.message:r.method+" "+n+" ["+(b.code||r.statusText)+"] "+(b.message||r.statusText),r.method,n,s,u)}function m(e,t,r,n,s,o){var a=s.get("message"),i=!1!==a&&!1!==(null==o?void 0:o.message)&&((null==o?void 0:o.message)||a);return!1!==i&&s.showMessage(!e.ok,"function"==typeof i?i(e,r,n,t):t),e}var g=/*#__PURE__*/function(){function t(e){this.config={baseURL:"",maxRetry:0,retryInterval:1e3,retryResolve:"network",timeout:5e3,cacheTTL:500,credentials:"same-origin",responseRule:{ok:{resolve:"body"},failed:{resolve:"json",messageField:"message"}}},e&&this.set(e)}var r=t.prototype;return r.set=function(t){if(t.baseURL&&!/^\/.+/.test(t.baseURL)&&!e.isFullURL(t.baseURL))throw console.warn("baseURL 需要以 / 开头,或者是完整的 url 地址"),new Error("BaseURLError");Object.assign(this.config,t)},r.get=function(e){return this.config[e]},r.getFullUrl=function(t){return t.startsWith("/")?e.getFullURL(t):e.getFullURL(t,this.config.baseURL)},r.showMessage=function(e,t){this.config.messageHandler&&t&&this.config.messageHandler(e,t)},t}(),v=function(r,s,o){try{return Promise.resolve(n(r,s,o)).then(function(r){var n=t({},r,{onUploadProgress:null==o?void 0:o.onUploadProgress}),s=n.method,a=n.onUploadProgress||e.noop,i=e.addParamsToString(n.url,n.params);return Promise.resolve(new Promise(function(e){var t=1,r=0,o=new XMLHttpRequest;o.open(s,i,!0),o.upload.addEventListener("progress",function(e){t=e.total,a({total:e.total,loaded:e.loaded})}),o.addEventListener("load",function(){r&&clearTimeout(r),a({loaded:t,total:t}),e({url:i,method:s,status:o.status,statusText:o.statusText,headers:p(o),body:"HEAD"===s?"":o.responseText})}),o.addEventListener("error",function(){r&&clearTimeout(r),e({url:i,method:s,status:-2,statusText:"Failed",body:""})}),o.addEventListener("abort",function(){r&&clearTimeout(r),e({url:i,method:s,status:-3,statusText:"Aborted",body:""})}),Object.entries(n.headers).forEach(function(e){o.setRequestHeader(e[0],e[1])}),"include"===n.credentials&&(o.withCredentials=!0),o.send(n.body||void 0),n.timeout>0&&(r=setTimeout(function(){o.abort()},n.timeout))}))})}catch(e){return Promise.reject(e)}};function p(e){var t={};if(!e)return t;var r=e.getAllResponseHeaders();return r&&"null"!==r&&r.replace(/\r/g,"").split("\n").forEach(function(e){var r=e.trim();if(r){var n=r.split(":"),s=n[0].trim();s&&(t[s]=(n[1]||"").trim())}}),t}var y=function(e,t,r){try{return Promise.resolve(h(s,e,t,r)).then(function(n){return f(n,e,t,r)})}catch(e){return Promise.reject(e)}},b=function(e,t,r){try{return Promise.resolve(h(v,e,t,r)).then(function(n){return f(n,e,t,r)})}catch(e){return Promise.reject(e)}},P=/*#__PURE__*/function(){function e(e){void 0===e&&(e=500),this.ttl=void 0,this.cache=void 0,this.cache={},this.ttl=Math.max(e,0)}var t=e.prototype;return t.getKey=function(e,t){return e+Object.keys(t||{}).sort().map(function(e){return e+"#"+(null==t?void 0:t[e])}).join(",")},t.updateTTL=function(e){this.ttl=Math.max(e,0)},t.get=function(e){if(0===this.ttl)return null;var t=this.cache[e];return t?t.ttl<Date.now()?(delete this.cache[e],null):t.res:null},t.set=function(e,t){0!==this.ttl&&(this.cache[e]={ttl:Date.now()+this.ttl,res:t})},e}(),j=/*#__PURE__*/function(){function t(e,t){this.agent=void 0,this.config=void 0,this.cache=void 0,this.config=new g(t),this.agent=e,this.cache=new P(this.config.get("cacheTTL")),this.setConfig=this.setConfig.bind(this),this.getConfig=this.getConfig.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)}var r=t.prototype;return r.exec=function(e,t){try{return Promise.resolve(this.agent(e,this.config,t))}catch(e){return Promise.reject(e)}},r.guard=function(t,r,n){try{return Promise.resolve(function(t,r,n,s){if(r.ok&&!e.isEmpty(r.data)&&s){var o=e.getTypeGuard(s,"响应数据未能正确识别");return o.guard(r.data)||(console.error("ResponseCheckFaild",t,r.data),n.showMessage(!0,t+" "+o.message),r.data=null),r}return r}(t,r,this.config,n))}catch(e){return Promise.reject(e)}},r.setConfig=function(e){this.config.set(e),this.cache.updateTTL(this.config.get("cacheTTL"))},r.getConfig=function(e){return this.config.get(e)},r.head=function(e,t){try{var r=this,n=Object.assign({},t||null);n.method="HEAD";var s=r.guard;return Promise.resolve(r.exec(e,n)).then(function(t){return s.call(r,e,t,null)})}catch(e){return Promise.reject(e)}},r.get=function(e,t,r){try{var n,s=function(r){if(n)return r;var s=o.exec(e,a);o.cache.set(i,s);var u=o.guard;return Promise.resolve(s).then(function(r){return u.call(o,e,r,t||null)})},o=this,a=Object.assign({},r||null);a.method="GET";var i=o.cache.getKey(e,a.params),u=o.cache.get(i),l=function(){if(u){var r=o.guard;return Promise.resolve(u).then(function(s){var a=r.call(o,e,s,t||null);return n=1,a})}}();return Promise.resolve(l&&l.then?l.then(s):s(l))}catch(e){return Promise.reject(e)}},r.post=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="POST",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},r.del=function(e,t,r){try{var n=this,s=Object.assign({},r||null);s.method="DELETE";var o=n.guard;return Promise.resolve(n.exec(e,s)).then(function(r){return o.call(n,e,r,t||null)})}catch(e){return Promise.reject(e)}},r.put=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="PUT",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},r.patch=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="PATCH",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},t}();function w(e){if("window"in globalThis)return"fetch"in window?new j(y,e):new j(b,e);throw new Error("Default Module Only Support In Browser")}var T=w(),x=T.setConfig,O=T.head,R=T.get,E=T.post,k=T.del,L=T.put,S=T.patch;exports.NetRequest=w,exports.del=k,exports.get=R,exports.getResponseRulesDescription=function(e){var t=[],r=e.failed||{resolve:"json"};switch(t.push("- 当http状态码 <200 或者 >=400 时"),r.resolve){case"body":t.push(" 将响应内容格式化为字符串并作为错误消息");break;case"json":t.push(" 将响应解析为json,并读取 "+(r.messageField||a)+" 作为错误消息")}var n=e.ok||{resolve:"body"};switch(t.push("- 当http状态码 >=200 并且 <400 时"),n.resolve){case"body":t.push(" 将响应尝试解析为 json,并作为数据内容返回");break;case"json":t.push(" 将响应解析为 json,读取 "+(n.dataField||o)+" 作为响应数据,读取 "+(n.messageField||a)+" 作为提示消息"),n.statusField&&t.push(" 当 "+n.statusField+" 为 "+(n.statusOKValue||"空值")+" 时是成功提示,否则是错误消息"),n.ignoreMessage&&t.push(" 并忽略以下消息:"+n.ignoreMessage)}return t.join("\n")},exports.head=O,exports.jsonp=function(t,r,n){void 0===n&&(n={});try{var s=window;"callback"in n||(n.callback="jsonxData"+Math.random().toString(16).slice(2));var o=n.callback+"";if(!t)return Promise.resolve(null);var a=e.addParamsToString(t,n,!0);return Promise.resolve(new Promise(function(n){s[o]=function(e){if(o in window&&delete s[o],r(e))return e;console.warn("response type check faild",t,e),n(null)},e.loadJS(a).catch(function(){n(null),delete s[o]})}))}catch(e){return Promise.reject(e)}},exports.jsonx=function(t,r,n){void 0===n&&(n={});try{var s=window;return"var"in n||(n.var="jsonxData"+Math.random().toString(16).slice(2)),Promise.resolve(t?e.loadJS(e.addParamsToString(t,n,!0)).then(function(){var e=s[n.var+""];return r(e)?e:(console.warn("response type check faild",t,e),null)}).catch(function(){return null}):null)}catch(e){return Promise.reject(e)}},exports.patch=S,exports.post=E,exports.put=L,exports.setGlobalConfig=x,exports.upload=function(e,r,n){try{return Promise.resolve(function(e,r,n,s){try{var o=new FormData,a=null==n?void 0:n.body,i=t({},r);for(var u in a instanceof Object&&Object.entries(a).forEach(function(e){var t=e[0],r=e[1];r instanceof Blob?i[t]=r:Array.isArray(r)?r.forEach(function(e,r){o.append(t+"["+r+"]",String(e))}):o.append(t,String(r))}),i)o.append(u,i[u]);var l=new g(s);return Promise.resolve(v(e,l,t({},n,{method:"POST",body:o}))).then(function(t){return f(t,e,l,n)})}catch(e){return Promise.reject(e)}}(e,r,n,{baseURL:T.getConfig("baseURL"),logHandler:T.getConfig("logHandler"),errorHandler:T.getConfig("errorHandler"),requestHandler:T.getConfig("requestHandler"),messageHandler:T.getConfig("messageHandler"),responseHandler:T.getConfig("responseHandler")}))}catch(e){return Promise.reject(e)}};
1
+ var e=require("@seayoo-web/utils");function t(){return t=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},t.apply(this,arguments)}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var n=function(e,t,r){try{var n=Object.assign({method:"GET"},r),s=n.body instanceof FormData,o=s?"POST":n.method;"GET"!==o&&"HEAD"!==o&&"DELETE"!==o||void 0!==n.body&&(console.warn("request body is invalid with method get, head, delete"),delete n.body);var a=Object.assign(s?{}:{"Content-Type":"application/json;charset=utf-8"},n.headers),i=n.params||{},u={};Object.keys(i).forEach(function(e){var t;void 0!==i[e]&&(u[e]="string"==typeof(t=i[e])?t:Array.isArray(t)?t.join(","):t+"")});var l=t.getFullUrl(e),c=function(e){if(e)return e instanceof Blob||e instanceof ArrayBuffer||e instanceof FormData||e instanceof URLSearchParams||"string"==typeof e?e:JSON.stringify(e)}(n.body),d=n.timeout||t.get("timeout");return Promise.resolve(function(r){try{var n=function(n){var s;return r?n:Promise.resolve(null==(s=t.get("requestHandler"))?void 0:s(a,u,o,e))},s=t.get("requestTransformer"),i=function(){if(s)return Promise.resolve(s({headers:a,params:u,method:o,url:l,body:c})).then(function(e){return r=1,e})}();return Promise.resolve(i&&i.then?i.then(n):n(i))}catch(e){return Promise.reject(e)}}()).then(function(e){var r,s="string"==typeof e&&e?e:l;return null==(r=t.get("logHandler"))||r({type:"ready",url:s,method:o,headers:a,timeout:d,body:c}),{url:s,method:o,body:c,params:u,headers:a,timeout:d,credentials:n.credentials||t.get("credentials")}})}catch(e){return Promise.reject(e)}},s=function(e,t,r){try{return Promise.resolve(n(e,t,r)).then(function(e){var t=new URL(e.url),r=e.params;r instanceof Object&&Object.keys(r).forEach(function(e){return t.searchParams.set(e,r[e])});var n=new AbortController,s=e.timeout>0?setTimeout(function(){return n.abort()},e.timeout):null,o=new Request(t,{method:e.method,headers:new Headers(e.headers),body:e.body,credentials:e.credentials,signal:e.timeout>0?n.signal:null,redirect:"follow"});return Promise.resolve(fetch(o).then(function(r){try{var n=function(e){return{url:u,method:i,status:a,statusText:o,headers:s,body:e}},s=Object.fromEntries(r.headers.entries()),o=r.statusText,a=r.status,i=e.method,u=t.toString();return Promise.resolve("HEAD"===e.method?n(""):Promise.resolve(r.text()).then(n))}catch(e){return Promise.reject(e)}}).catch(function(r){return{url:t.toString(),method:e.method,status:-1,statusText:"NetworkError",body:String(r)}}).finally(function(){null!==s&&clearTimeout(s)}))})}catch(e){return Promise.reject(e)}},o="data",a="message";function i(e,t){for(var n,s=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e))){n&&(e=n);var s=0;return function(){return s>=e.length?{done:!0}:{done:!1,value:e[s++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(Array.isArray(t)?t:[t]);!(n=s()).done;){var o=n.value;if(o in e)return(a=e[o])?"string"==typeof a?a:JSON.stringify(a):""}var a;return""}var u=/<title>([^<]+)<\/title>/i,l=/<message>([^<]+)<\/message>/i;function c(e){var t=e.match(u);if(t)return t[1];var r=e.match(l);return r?r[1]:""}function d(e){return e>=200&&e<400}var h=function t(r,n,s,o,a){try{var i,u,l,c=a||0,h=Math.max(0,Math.min(10,null!=(i=null!=(u=null==o?void 0:o.maxRetry)?u:s.get("maxRetry"))?i:0)),f=null!=(l=null==o?void 0:o.retryResolve)?l:s.get("retryResolve"),m=s.get("logHandler")||e.noop;m({type:"prepear",url:n,method:(null==o?void 0:o.method)||"GET",retry:c,maxRetry:h,message:0===c?"start":"retry "+c+"/"+h+" start",headers:null==o?void 0:o.headers,options:o});var g=Date.now();return Promise.resolve(r(n,s,o)).then(function(a){var i,u,l=a.status,v=Date.now()-g,p="[cost "+v+"]["+l+"] "+(l<0?a.body:"");m({type:"finished",url:n,method:a.method,retry:c,maxRetry:h,message:0===c?"finish "+p:"retry "+c+"/"+h+" finish "+p,response:a,headers:a.headers,cost:v});var y=d(l);if(!h||"network"===f&&l>0||"status"===f&&y||Array.isArray(f)&&!f.includes(l)||"function"==typeof f&&!0!==f(a,c)||c>=h)return a;var b=null!=(i=null!=(u=null==o?void 0:o.retryInterval)?u:s.get("retryInterval"))?i:1e3;return Promise.resolve(e.sleep(Math.max(100,"2EB"===b?1e3*Math.pow(2,c):"function"==typeof b?b(c+1)||0:b))).then(function(){return Promise.resolve(t(r,n,s,o,c+1))})})}catch(e){return Promise.reject(e)}};function f(r,n,s,u){var l,h;if(r.status<0)return m({ok:!1,status:r.status,code:r.statusText,headers:{},message:"",data:null},r.method+" "+n+" "+r.statusText,r.method,n,s,u);d(r.status)||null==(h=s.get("errorHandler"))||h(r.status,r.method,n);var f,g,v,p,y,b=t({},(f=r.status,g=r.statusText,v=r.body,p=s.get("responseRule"),y=(null==u?void 0:u.responseRule)||p,d(f)?function(t,r,n,s){var u=t||{resolve:"body"},l={ok:!0,code:n,message:"",data:null};if(202===r||204===r||!s)return l;if("body"===u.resolve)return l.data=e.isJsonLike(s)?e.parseJSON(s):s,l;var c=e.parseJSON(s);if(!c||!e.isStringRecord(c))return l.ok=!1,l.code="ResponseFormatError",l.message="响应内容无法格式化为 Object",l;var d=u.statusField,h=u.statusOKValue||"",f=u.dataField||o,m=u.messageField||a,g=u.ignoreMessage||"";if(d&&!(d in c))return l.ok=!1,l.code="ResponseFieldMissing",l.message="响应内容找不到状态字段 "+d,l;var v=d?c[d]+"":"";return l.ok=!d||v===h,l.code=v||n,l.data=!0===f?c:f in c?c[f]:null,l.message=i(c,m),g&&l.message&&(Array.isArray(g)&&g.includes(l.message)||"string"==typeof g&&l.message===g)&&(l.message=""),l}(y.ok||p.ok,f,g,v):function(t,r,n){var s=t||{resolve:"json",messageField:a},o={ok:!1,code:r,message:n,data:null};switch(s.resolve){case"body":o.message=c(n)||n;break;case"json":var u=function(t,r,n){if(void 0===n&&(n=a),!e.isJsonLike(t))return{message:""};var s=e.parseJSON(t);return s&&e.isStringRecord(s)?{code:r?i(s,r):"",message:i(s,n)||t}:{message:t}}(n,s.statusField,s.messageField),l=u.message;o.code=u.code||r,o.message=c(n)||l}return o}(y.failed||p.failed,g,v)),{status:r.status,headers:Object.fromEntries(Object.entries(r.headers||{}).map(function(e){var t=e[1];return[e[0].toLowerCase(),t]}))});return null==(l=s.get("responseHandler"))||l(t({},b),r.method,n),m(b,b.ok?b.message:r.method+" "+n+" ["+(b.code||r.statusText)+"] "+(b.message||r.statusText),r.method,n,s,u)}function m(e,t,r,n,s,o){var a=s.get("message"),i=!1!==a&&!1!==(null==o?void 0:o.message)&&((null==o?void 0:o.message)||a);return!1!==i&&s.showMessage(!e.ok,"function"==typeof i?i(e,r,n,t):t),e}var g=/*#__PURE__*/function(){function t(e){this.config={baseURL:"",maxRetry:0,retryInterval:1e3,retryResolve:"network",timeout:5e3,cacheTTL:500,credentials:"same-origin",responseRule:{ok:{resolve:"body"},failed:{resolve:"json",messageField:"message"}}},e&&this.set(e)}var r=t.prototype;return r.set=function(t){if(t.baseURL&&!/^\/.+/.test(t.baseURL)&&!e.isFullURL(t.baseURL))throw console.warn("baseURL 需要以 / 开头,或者是完整的 url 地址"),new Error("BaseURLError");Object.assign(this.config,t)},r.get=function(e){return this.config[e]},r.getFullUrl=function(t){return t.startsWith("/")?e.getFullURL(t):e.getFullURL(t,this.config.baseURL)},r.showMessage=function(e,t){this.config.messageHandler&&t&&this.config.messageHandler(e,t)},t}(),v=function(r,s,o){try{return Promise.resolve(n(r,s,o)).then(function(r){var n=t({},r,{onUploadProgress:null==o?void 0:o.onUploadProgress}),s=n.method,a=n.onUploadProgress||e.noop,i=e.addParamsToString(n.url,n.params);return Promise.resolve(new Promise(function(e){var t=1,r=0,o=new XMLHttpRequest;o.open(s,i,!0),o.upload.addEventListener("progress",function(e){t=e.total,a({total:e.total,loaded:e.loaded})}),o.addEventListener("load",function(){r&&clearTimeout(r),a({loaded:t,total:t}),e({url:i,method:s,status:o.status,statusText:o.statusText,headers:p(o),body:"HEAD"===s?"":o.responseText})}),o.addEventListener("error",function(){r&&clearTimeout(r),e({url:i,method:s,status:-1,statusText:"Failed",body:""})}),o.addEventListener("abort",function(){r&&clearTimeout(r),e({url:i,method:s,status:-1,statusText:"Aborted",body:""})}),Object.entries(n.headers).forEach(function(e){o.setRequestHeader(e[0],e[1])}),"include"===n.credentials&&(o.withCredentials=!0),o.send(n.body||void 0),n.timeout>0&&(r=setTimeout(function(){o.abort()},n.timeout))}))})}catch(e){return Promise.reject(e)}};function p(e){var t={};if(!e)return t;var r=e.getAllResponseHeaders();return r&&"null"!==r&&r.replace(/\r/g,"").split("\n").forEach(function(e){var r=e.trim();if(r){var n=r.split(":"),s=n[0].trim();s&&(t[s]=(n[1]||"").trim())}}),t}var y=function(e,t,r){try{return Promise.resolve(h(s,e,t,r)).then(function(n){return f(n,e,t,r)})}catch(e){return Promise.reject(e)}},b=function(e,t,r){try{return Promise.resolve(h(v,e,t,r)).then(function(n){return f(n,e,t,r)})}catch(e){return Promise.reject(e)}},P=/*#__PURE__*/function(){function e(e){void 0===e&&(e=500),this.ttl=void 0,this.cache=void 0,this.cache={},this.ttl=Math.max(e,0)}var t=e.prototype;return t.getKey=function(e,t){return e+Object.keys(t||{}).sort().map(function(e){return e+"#"+(null==t?void 0:t[e])}).join(",")},t.updateTTL=function(e){this.ttl=Math.max(e,0)},t.get=function(e){if(0===this.ttl)return null;var t=this.cache[e];return t?t.ttl<Date.now()?(delete this.cache[e],null):t.res:null},t.set=function(e,t){0!==this.ttl&&(this.cache[e]={ttl:Date.now()+this.ttl,res:t})},e}(),j=/*#__PURE__*/function(){function t(e,t){this.agent=void 0,this.config=void 0,this.cache=void 0,this.config=new g(t),this.agent=e,this.cache=new P(this.config.get("cacheTTL")),this.setConfig=this.setConfig.bind(this),this.getConfig=this.getConfig.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)}var r=t.prototype;return r.exec=function(e,t){try{return Promise.resolve(this.agent(e,this.config,t))}catch(e){return Promise.reject(e)}},r.guard=function(t,r,n){try{return Promise.resolve(function(t,r,n,s){if(r.ok&&!e.isEmpty(r.data)&&s){var o=e.getTypeGuard(s,"响应数据未能正确识别");return o.guard(r.data)||(console.error("ResponseCheckFaild",t,r.data),n.showMessage(!0,t+" "+o.message),r.data=null),r}return r}(t,r,this.config,n))}catch(e){return Promise.reject(e)}},r.setConfig=function(e){this.config.set(e),this.cache.updateTTL(this.config.get("cacheTTL"))},r.getConfig=function(e){return this.config.get(e)},r.head=function(e,t){try{var r=this,n=Object.assign({},t||null);n.method="HEAD";var s=r.guard;return Promise.resolve(r.exec(e,n)).then(function(t){return s.call(r,e,t,null)})}catch(e){return Promise.reject(e)}},r.get=function(e,t,r){try{var n,s=function(r){if(n)return r;var s=o.exec(e,a);o.cache.set(i,s);var u=o.guard;return Promise.resolve(s).then(function(r){return u.call(o,e,r,t||null)})},o=this,a=Object.assign({},r||null);a.method="GET";var i=o.cache.getKey(e,a.params),u=o.cache.get(i),l=function(){if(u){var r=o.guard;return Promise.resolve(u).then(function(s){var a=r.call(o,e,s,t||null);return n=1,a})}}();return Promise.resolve(l&&l.then?l.then(s):s(l))}catch(e){return Promise.reject(e)}},r.post=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="POST",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},r.del=function(e,t,r){try{var n=this,s=Object.assign({},r||null);s.method="DELETE";var o=n.guard;return Promise.resolve(n.exec(e,s)).then(function(r){return o.call(n,e,r,t||null)})}catch(e){return Promise.reject(e)}},r.put=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="PUT",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},r.patch=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="PATCH",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},t}();function w(e){if("window"in globalThis)return"fetch"in window?new j(y,e):new j(b,e);throw new Error("Default Module Only Support In Browser")}var T=w(),x=T.setConfig,O=T.head,R=T.get,E=T.post,k=T.del,L=T.put,S=T.patch;exports.NetRequest=w,exports.del=k,exports.get=R,exports.getResponseRulesDescription=function(e){var t=[],r=e.failed||{resolve:"json"};switch(t.push("- 当http状态码 <200 或者 >=400 时"),r.resolve){case"body":t.push(" 将响应内容格式化为字符串并作为错误消息");break;case"json":t.push(" 将响应解析为json,并读取 "+(r.messageField||a)+" 作为错误消息")}var n=e.ok||{resolve:"body"};switch(t.push("- 当http状态码 >=200 并且 <400 时"),n.resolve){case"body":t.push(" 将响应尝试解析为 json,并作为数据内容返回");break;case"json":t.push(" 将响应解析为 json,读取 "+(n.dataField||o)+" 作为响应数据,读取 "+(n.messageField||a)+" 作为提示消息"),n.statusField&&t.push(" 当 "+n.statusField+" 为 "+(n.statusOKValue||"空值")+" 时是成功提示,否则是错误消息"),n.ignoreMessage&&t.push(" 并忽略以下消息:"+n.ignoreMessage)}return t.join("\n")},exports.head=O,exports.jsonp=function(t,r,n){void 0===n&&(n={});try{var s=window;"callback"in n||(n.callback="jsonxData"+Math.random().toString(16).slice(2));var o=n.callback+"";if(!t)return Promise.resolve(null);var a=e.addParamsToString(t,n,!0);return Promise.resolve(new Promise(function(n){s[o]=function(e){if(o in window&&delete s[o],r(e))return e;console.warn("response type check faild",t,e),n(null)},e.loadJS(a).catch(function(){n(null),delete s[o]})}))}catch(e){return Promise.reject(e)}},exports.jsonx=function(t,r,n){void 0===n&&(n={});try{var s=window;return"var"in n||(n.var="jsonxData"+Math.random().toString(16).slice(2)),Promise.resolve(t?e.loadJS(e.addParamsToString(t,n,!0)).then(function(){var e=s[n.var+""];return r(e)?e:(console.warn("response type check faild",t,e),null)}).catch(function(){return null}):null)}catch(e){return Promise.reject(e)}},exports.patch=S,exports.post=E,exports.put=L,exports.setGlobalConfig=x,exports.upload=function(e,r,n){try{return Promise.resolve(function(e,r,n,s){try{var o=new FormData,a=null==n?void 0:n.body,i=t({},r);for(var u in a instanceof Object&&Object.entries(a).forEach(function(e){var t=e[0],r=e[1];r instanceof Blob?i[t]=r:Array.isArray(r)?r.forEach(function(e,r){o.append(t+"["+r+"]",String(e))}):o.append(t,String(r))}),i)o.append(u,i[u]);var l=new g(s);return Promise.resolve(v(e,l,t({},n,{method:"POST",body:o}))).then(function(t){return f(t,e,l,n)})}catch(e){return Promise.reject(e)}}(e,r,n,{baseURL:T.getConfig("baseURL"),logHandler:T.getConfig("logHandler"),errorHandler:T.getConfig("errorHandler"),requestHandler:T.getConfig("requestHandler"),messageHandler:T.getConfig("messageHandler"),responseHandler:T.getConfig("responseHandler")}))}catch(e){return Promise.reject(e)}};
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{isJsonLike as e,parseJSON as t,isStringRecord as r,noop as n,sleep as o,isFullURL as s,getFullURL as a,addParamsToString as i,isEmpty as u,getTypeGuard as c,loadJS as l}from"@seayoo-web/utils";function d(){return d=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},d.apply(this,arguments)}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var f=function(e,t,r){try{var n=Object.assign({method:"GET"},r),o=n.body instanceof FormData,s=o?"POST":n.method;"GET"!==s&&"HEAD"!==s&&"DELETE"!==s||void 0!==n.body&&(console.warn("request body is invalid with method get, head, delete"),delete n.body);var a=Object.assign(o?{}:{"Content-Type":"application/json;charset=utf-8"},n.headers),i=n.params||{},u={};Object.keys(i).forEach(function(e){var t;void 0!==i[e]&&(u[e]="string"==typeof(t=i[e])?t:Array.isArray(t)?t.join(","):t+"")});var c=t.getFullUrl(e),l=function(e){if(e)return e instanceof Blob||e instanceof ArrayBuffer||e instanceof FormData||e instanceof URLSearchParams||"string"==typeof e?e:JSON.stringify(e)}(n.body),d=n.timeout||t.get("timeout");return Promise.resolve(function(r){try{var n=function(n){var o;return r?n:Promise.resolve(null==(o=t.get("requestHandler"))?void 0:o(a,u,s,e))},o=t.get("requestTransformer"),i=function(){if(o)return Promise.resolve(o({headers:a,params:u,method:s,url:c,body:l})).then(function(e){return r=1,e})}();return Promise.resolve(i&&i.then?i.then(n):n(i))}catch(e){return Promise.reject(e)}}()).then(function(e){var r,o="string"==typeof e&&e?e:c;return null==(r=t.get("logHandler"))||r({type:"ready",url:o,method:s,headers:a,timeout:d,body:l}),{url:o,method:s,body:l,params:u,headers:a,timeout:d,credentials:n.credentials||t.get("credentials")}})}catch(e){return Promise.reject(e)}},m=function(e,t,r){try{return Promise.resolve(f(e,t,r)).then(function(e){var t=new URL(e.url),r=e.params;r instanceof Object&&Object.keys(r).forEach(function(e){return t.searchParams.set(e,r[e])});var n=new AbortController,o=e.timeout>0?setTimeout(function(){return n.abort()},e.timeout):null,s=new Request(t,{method:e.method,headers:new Headers(e.headers),body:e.body,credentials:e.credentials,signal:e.timeout>0?n.signal:null,redirect:"follow"});return Promise.resolve(fetch(s).then(function(r){try{var n=function(e){return{url:u,method:i,status:a,statusText:s,headers:o,body:e}},o=Object.fromEntries(r.headers.entries()),s=r.statusText,a=r.status,i=e.method,u=t.toString();return Promise.resolve("HEAD"===e.method?n(""):Promise.resolve(r.text()).then(n))}catch(e){return Promise.reject(e)}}).catch(function(r){return{url:t.toString(),method:e.method,status:-1,statusText:"NetworkError",body:String(r)}}).finally(function(){null!==o&&clearTimeout(o)}))})}catch(e){return Promise.reject(e)}},g="data",v="message",y=function(e){var t=[],r=e.failed||{resolve:"json"};switch(t.push("- 当http状态码 <200 或者 >=400 时"),r.resolve){case"body":t.push(" 将响应内容格式化为字符串并作为错误消息");break;case"json":t.push(" 将响应解析为json,并读取 "+(r.messageField||v)+" 作为错误消息")}var n=e.ok||{resolve:"body"};switch(t.push("- 当http状态码 >=200 并且 <400 时"),n.resolve){case"body":t.push(" 将响应尝试解析为 json,并作为数据内容返回");break;case"json":t.push(" 将响应解析为 json,读取 "+(n.dataField||g)+" 作为响应数据,读取 "+(n.messageField||v)+" 作为提示消息"),n.statusField&&t.push(" 当 "+n.statusField+" 为 "+(n.statusOKValue||"空值")+" 时是成功提示,否则是错误消息"),n.ignoreMessage&&t.push(" 并忽略以下消息:"+n.ignoreMessage)}return t.join("\n")};function p(e,t){for(var r,n=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return h(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?h(e,t):void 0}}(e))){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(Array.isArray(t)?t:[t]);!(r=n()).done;){var o=r.value;if(o in e)return(s=e[o])?"string"==typeof s?s:JSON.stringify(s):""}var s;return""}var b=/<title>([^<]+)<\/title>/i,P=/<message>([^<]+)<\/message>/i;function j(e){var t=e.match(b);if(t)return t[1];var r=e.match(P);return r?r[1]:""}function w(e){return e>=200&&e<400}var T=function e(t,r,s,a,i){try{var u,c,l,d=i||0,h=Math.max(0,Math.min(10,null!=(u=null!=(c=null==a?void 0:a.maxRetry)?c:s.get("maxRetry"))?u:0)),f=null!=(l=null==a?void 0:a.retryResolve)?l:s.get("retryResolve"),m=s.get("logHandler")||n;m({type:"prepear",url:r,method:(null==a?void 0:a.method)||"GET",retry:d,maxRetry:h,message:0===d?"start":"retry "+d+"/"+h+" start",headers:null==a?void 0:a.headers,options:a});var g=Date.now();return Promise.resolve(t(r,s,a)).then(function(n){var i,u,c=n.status,l=Date.now()-g,v="[cost "+l+"]["+c+"] "+(c<0?n.body:"");m({type:"finished",url:r,method:n.method,retry:d,maxRetry:h,message:0===d?"finish "+v:"retry "+d+"/"+h+" finish "+v,response:n,headers:n.headers,cost:l});var y=w(c);if(!h||"network"===f&&c>0||"status"===f&&y||d>=h)return n;var p=null!=(i=null!=(u=null==a?void 0:a.retryInterval)?u:s.get("retryInterval"))?i:0;return Promise.resolve(o(Math.max(100,"function"==typeof p?p(d+1)||0:p))).then(function(){return Promise.resolve(e(t,r,s,a,d+1))})})}catch(e){return Promise.reject(e)}};function x(n,o,s,a){var i,u;if(n.status<0)return O({ok:!1,status:n.status,code:n.statusText,headers:{},message:"",data:null},n.method+" "+o+" "+n.statusText,n.method,o,s,a);w(n.status)||null==(u=s.get("errorHandler"))||u(n.status,n.method,o);var c,l,h,f,m,y=d({},(c=n.status,l=n.statusText,h=n.body,f=s.get("responseRule"),m=(null==a?void 0:a.responseRule)||f,w(c)?function(n,o,s,a){var i=n||{resolve:"body"},u={ok:!0,code:s,message:"",data:null};if(202===o||204===o||!a)return u;if("body"===i.resolve)return u.data=e(a)?t(a):a,u;var c=t(a);if(!c||!r(c))return u.ok=!1,u.code="ResponseFormatError",u.message="响应内容无法格式化为 Object",u;var l=i.statusField,d=i.statusOKValue||"",h=i.dataField||g,f=i.messageField||v,m=i.ignoreMessage||"";if(l&&!(l in c))return u.ok=!1,u.code="ResponseFieldMissing",u.message="响应内容找不到状态字段 "+l,u;var y=l?c[l]+"":"";return u.ok=!l||y===d,u.code=y||s,u.data=h in c?c[h]:null,u.message=p(c,f),m&&u.message&&(Array.isArray(m)&&m.includes(u.message)||"string"==typeof m&&u.message===m)&&(u.message=""),u}(m.ok||f.ok,c,l,h):function(n,o,s){var a=n||{resolve:"json",messageField:v},i={ok:!1,code:o,message:s,data:null};switch(a.resolve){case"body":i.message=j(s)||s;break;case"json":i.message=j(s)||function(n,o){if(void 0===o&&(o=v),!e(n))return"";var s=t(n);return s&&r(s)&&p(s,o)||n}(s,a.messageField)}return i}(m.failed||f.failed,l,h)),{status:n.status,headers:Object.fromEntries(Object.entries(n.headers||{}).map(function(e){var t=e[1];return[e[0].toLowerCase(),t]}))});return null==(i=s.get("responseHandler"))||i(d({},y),n.method,o),O(y,y.ok?y.message:n.method+" "+o+" ["+(y.code||n.statusText)+"] "+(y.message||n.statusText),n.method,o,s,a)}function O(e,t,r,n,o,s){var a=o.get("message"),i=!1!==a&&!1!==(null==s?void 0:s.message)&&((null==s?void 0:s.message)||a);return!1!==i&&o.showMessage(!e.ok,"function"==typeof i?i(e,r,n,t):t),e}var E=/*#__PURE__*/function(){function e(e){this.config={baseURL:"",maxRetry:0,retryInterval:1e3,retryResolve:"network",timeout:5e3,cacheTTL:500,credentials:"same-origin",responseRule:{ok:{resolve:"body"},failed:{resolve:"json",messageField:"message"}}},e&&this.set(e)}var t=e.prototype;return t.set=function(e){if(e.baseURL&&!/^\/.+/.test(e.baseURL)&&!s(e.baseURL))throw console.warn("baseURL 需要以 / 开头,或者是完整的 url 地址"),new Error("BaseURLError");Object.assign(this.config,e)},t.get=function(e){return this.config[e]},t.getFullUrl=function(e){return e.startsWith("/")?a(e):a(e,this.config.baseURL)},t.showMessage=function(e,t){this.config.messageHandler&&t&&this.config.messageHandler(e,t)},e}(),R=function(e,t,r){try{return Promise.resolve(f(e,t,r)).then(function(e){var t=d({},e,{onUploadProgress:null==r?void 0:r.onUploadProgress}),o=t.method,s=t.onUploadProgress||n,a=i(t.url,t.params);return Promise.resolve(new Promise(function(e){var r=1,n=0,i=new XMLHttpRequest;i.open(o,a,!0),i.upload.addEventListener("progress",function(e){r=e.total,s({total:e.total,loaded:e.loaded})}),i.addEventListener("load",function(){n&&clearTimeout(n),s({loaded:r,total:r}),e({url:a,method:o,status:i.status,statusText:i.statusText,headers:k(i),body:"HEAD"===o?"":i.responseText})}),i.addEventListener("error",function(){n&&clearTimeout(n),e({url:a,method:o,status:-2,statusText:"Failed",body:""})}),i.addEventListener("abort",function(){n&&clearTimeout(n),e({url:a,method:o,status:-3,statusText:"Aborted",body:""})}),Object.entries(t.headers).forEach(function(e){i.setRequestHeader(e[0],e[1])}),"include"===t.credentials&&(i.withCredentials=!0),i.send(t.body||void 0),t.timeout>0&&(n=setTimeout(function(){i.abort()},t.timeout))}))})}catch(e){return Promise.reject(e)}};function k(e){var t={};if(!e)return t;var r=e.getAllResponseHeaders();return r&&"null"!==r&&r.replace(/\r/g,"").split("\n").forEach(function(e){var r=e.trim();if(r){var n=r.split(":"),o=n[0].trim();o&&(t[o]=(n[1]||"").trim())}}),t}var H=function(e,t,r){try{return Promise.resolve(T(m,e,t,r)).then(function(n){return x(n,e,t,r)})}catch(e){return Promise.reject(e)}},L=function(e,t,r){try{return Promise.resolve(T(R,e,t,r)).then(function(n){return x(n,e,t,r)})}catch(e){return Promise.reject(e)}},A=/*#__PURE__*/function(){function e(e){void 0===e&&(e=500),this.ttl=void 0,this.cache=void 0,this.cache={},this.ttl=Math.max(e,0)}var t=e.prototype;return t.getKey=function(e,t){return e+Object.keys(t||{}).sort().map(function(e){return e+"#"+(null==t?void 0:t[e])}).join(",")},t.updateTTL=function(e){this.ttl=Math.max(e,0)},t.get=function(e){if(0===this.ttl)return null;var t=this.cache[e];return t?t.ttl<Date.now()?(delete this.cache[e],null):t.res:null},t.set=function(e,t){0!==this.ttl&&(this.cache[e]={ttl:Date.now()+this.ttl,res:t})},e}(),C=/*#__PURE__*/function(){function e(e,t){this.agent=void 0,this.config=void 0,this.cache=void 0,this.config=new E(t),this.agent=e,this.cache=new A(this.config.get("cacheTTL")),this.setConfig=this.setConfig.bind(this),this.getConfig=this.getConfig.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)}var t=e.prototype;return t.exec=function(e,t){try{return Promise.resolve(this.agent(e,this.config,t))}catch(e){return Promise.reject(e)}},t.guard=function(e,t,r){try{return Promise.resolve(function(e,t,r,n){if(t.ok&&!u(t.data)&&n){var o=c(n,"响应数据未能正确识别");return o.guard(t.data)||(console.error("ResponseCheckFaild",e,t.data),r.showMessage(!0,e+" "+o.message),t.data=null),t}return t}(e,t,this.config,r))}catch(e){return Promise.reject(e)}},t.setConfig=function(e){this.config.set(e),this.cache.updateTTL(this.config.get("cacheTTL"))},t.getConfig=function(e){return this.config.get(e)},t.head=function(e,t){try{var r=this,n=Object.assign({},t||null);n.method="HEAD";var o=r.guard;return Promise.resolve(r.exec(e,n)).then(function(t){return o.call(r,e,t,null)})}catch(e){return Promise.reject(e)}},t.get=function(e,t,r){try{var n,o=function(r){if(n)return r;var o=s.exec(e,a);s.cache.set(i,o);var u=s.guard;return Promise.resolve(o).then(function(r){return u.call(s,e,r,t||null)})},s=this,a=Object.assign({},r||null);a.method="GET";var i=s.cache.getKey(e,a.params),u=s.cache.get(i),c=function(){if(u){var r=s.guard;return Promise.resolve(u).then(function(o){var a=r.call(s,e,o,t||null);return n=1,a})}}();return Promise.resolve(c&&c.then?c.then(o):o(c))}catch(e){return Promise.reject(e)}},t.post=function(e,t,r,n){try{var o=this,s=Object.assign({},n||null);s.method="POST",s.body=t;var a=o.guard;return Promise.resolve(o.exec(e,s)).then(function(t){return a.call(o,e,t,r||null)})}catch(e){return Promise.reject(e)}},t.del=function(e,t,r){try{var n=this,o=Object.assign({},r||null);o.method="DELETE";var s=n.guard;return Promise.resolve(n.exec(e,o)).then(function(r){return s.call(n,e,r,t||null)})}catch(e){return Promise.reject(e)}},t.put=function(e,t,r,n){try{var o=this,s=Object.assign({},n||null);s.method="PUT",s.body=t;var a=o.guard;return Promise.resolve(o.exec(e,s)).then(function(t){return a.call(o,e,t,r||null)})}catch(e){return Promise.reject(e)}},t.patch=function(e,t,r,n){try{var o=this,s=Object.assign({},n||null);s.method="PATCH",s.body=t;var a=o.guard;return Promise.resolve(o.exec(e,s)).then(function(t){return a.call(o,e,t,r||null)})}catch(e){return Promise.reject(e)}},e}(),F=function(e,t,r){void 0===r&&(r={});try{var n=window;return"var"in r||(r.var="jsonxData"+Math.random().toString(16).slice(2)),Promise.resolve(e?l(i(e,r,!0)).then(function(){var o=n[r.var+""];return t(o)?o:(console.warn("response type check faild",e,o),null)}).catch(function(){return null}):null)}catch(e){return Promise.reject(e)}},S=function(e,t,r){void 0===r&&(r={});try{var n=window;"callback"in r||(r.callback="jsonxData"+Math.random().toString(16).slice(2));var o=r.callback+"";if(!e)return Promise.resolve(null);var s=i(e,r,!0);return Promise.resolve(new Promise(function(r){n[o]=function(s){if(o in window&&delete n[o],t(s))return s;console.warn("response type check faild",e,s),r(null)},l(s).catch(function(){r(null),delete n[o]})}))}catch(e){return Promise.reject(e)}},U=function(e,t,r){try{return Promise.resolve(function(e,t,r,n){try{var o=new FormData,s=null==r?void 0:r.body,a=d({},t);for(var i in s instanceof Object&&Object.entries(s).forEach(function(e){var t=e[0],r=e[1];r instanceof Blob?a[t]=r:Array.isArray(r)?r.forEach(function(e,r){o.append(t+"["+r+"]",String(e))}):o.append(t,String(r))}),a)o.append(i,a[i]);var u=new E(n);return Promise.resolve(R(e,u,d({},r,{method:"POST",body:o}))).then(function(t){return x(t,e,u,r)})}catch(e){return Promise.reject(e)}}(e,t,r,{baseURL:D.getConfig("baseURL"),logHandler:D.getConfig("logHandler"),errorHandler:D.getConfig("errorHandler"),requestHandler:D.getConfig("requestHandler"),messageHandler:D.getConfig("messageHandler"),responseHandler:D.getConfig("responseHandler")}))}catch(e){return Promise.reject(e)}};function M(e){if("window"in globalThis)return"fetch"in window?new C(H,e):new C(L,e);throw new Error("Default Module Only Support In Browser")}var D=M(),q=D.setConfig,I=D.head,B=D.get,G=D.post,K=D.del,N=D.put,J=D.patch;export{M as NetRequest,K as del,B as get,y as getResponseRulesDescription,I as head,S as jsonp,F as jsonx,J as patch,G as post,N as put,q as setGlobalConfig,U as upload};
1
+ import{isJsonLike as e,parseJSON as t,isStringRecord as r,noop as n,sleep as s,isFullURL as o,getFullURL as a,addParamsToString as i,isEmpty as u,getTypeGuard as c,loadJS as l}from"@seayoo-web/utils";function d(){return d=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},d.apply(this,arguments)}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var f=function(e,t,r){try{var n=Object.assign({method:"GET"},r),s=n.body instanceof FormData,o=s?"POST":n.method;"GET"!==o&&"HEAD"!==o&&"DELETE"!==o||void 0!==n.body&&(console.warn("request body is invalid with method get, head, delete"),delete n.body);var a=Object.assign(s?{}:{"Content-Type":"application/json;charset=utf-8"},n.headers),i=n.params||{},u={};Object.keys(i).forEach(function(e){var t;void 0!==i[e]&&(u[e]="string"==typeof(t=i[e])?t:Array.isArray(t)?t.join(","):t+"")});var c=t.getFullUrl(e),l=function(e){if(e)return e instanceof Blob||e instanceof ArrayBuffer||e instanceof FormData||e instanceof URLSearchParams||"string"==typeof e?e:JSON.stringify(e)}(n.body),d=n.timeout||t.get("timeout");return Promise.resolve(function(r){try{var n=function(n){var s;return r?n:Promise.resolve(null==(s=t.get("requestHandler"))?void 0:s(a,u,o,e))},s=t.get("requestTransformer"),i=function(){if(s)return Promise.resolve(s({headers:a,params:u,method:o,url:c,body:l})).then(function(e){return r=1,e})}();return Promise.resolve(i&&i.then?i.then(n):n(i))}catch(e){return Promise.reject(e)}}()).then(function(e){var r,s="string"==typeof e&&e?e:c;return null==(r=t.get("logHandler"))||r({type:"ready",url:s,method:o,headers:a,timeout:d,body:l}),{url:s,method:o,body:l,params:u,headers:a,timeout:d,credentials:n.credentials||t.get("credentials")}})}catch(e){return Promise.reject(e)}},m=function(e,t,r){try{return Promise.resolve(f(e,t,r)).then(function(e){var t=new URL(e.url),r=e.params;r instanceof Object&&Object.keys(r).forEach(function(e){return t.searchParams.set(e,r[e])});var n=new AbortController,s=e.timeout>0?setTimeout(function(){return n.abort()},e.timeout):null,o=new Request(t,{method:e.method,headers:new Headers(e.headers),body:e.body,credentials:e.credentials,signal:e.timeout>0?n.signal:null,redirect:"follow"});return Promise.resolve(fetch(o).then(function(r){try{var n=function(e){return{url:u,method:i,status:a,statusText:o,headers:s,body:e}},s=Object.fromEntries(r.headers.entries()),o=r.statusText,a=r.status,i=e.method,u=t.toString();return Promise.resolve("HEAD"===e.method?n(""):Promise.resolve(r.text()).then(n))}catch(e){return Promise.reject(e)}}).catch(function(r){return{url:t.toString(),method:e.method,status:-1,statusText:"NetworkError",body:String(r)}}).finally(function(){null!==s&&clearTimeout(s)}))})}catch(e){return Promise.reject(e)}},g="data",v="message",y=function(e){var t=[],r=e.failed||{resolve:"json"};switch(t.push("- 当http状态码 <200 或者 >=400 时"),r.resolve){case"body":t.push(" 将响应内容格式化为字符串并作为错误消息");break;case"json":t.push(" 将响应解析为json,并读取 "+(r.messageField||v)+" 作为错误消息")}var n=e.ok||{resolve:"body"};switch(t.push("- 当http状态码 >=200 并且 <400 时"),n.resolve){case"body":t.push(" 将响应尝试解析为 json,并作为数据内容返回");break;case"json":t.push(" 将响应解析为 json,读取 "+(n.dataField||g)+" 作为响应数据,读取 "+(n.messageField||v)+" 作为提示消息"),n.statusField&&t.push(" 当 "+n.statusField+" 为 "+(n.statusOKValue||"空值")+" 时是成功提示,否则是错误消息"),n.ignoreMessage&&t.push(" 并忽略以下消息:"+n.ignoreMessage)}return t.join("\n")};function p(e,t){for(var r,n=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return h(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?h(e,t):void 0}}(e))){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(Array.isArray(t)?t:[t]);!(r=n()).done;){var s=r.value;if(s in e)return(o=e[s])?"string"==typeof o?o:JSON.stringify(o):""}var o;return""}var b=/<title>([^<]+)<\/title>/i,P=/<message>([^<]+)<\/message>/i;function j(e){var t=e.match(b);if(t)return t[1];var r=e.match(P);return r?r[1]:""}function w(e){return e>=200&&e<400}var T=function e(t,r,o,a,i){try{var u,c,l,d=i||0,h=Math.max(0,Math.min(10,null!=(u=null!=(c=null==a?void 0:a.maxRetry)?c:o.get("maxRetry"))?u:0)),f=null!=(l=null==a?void 0:a.retryResolve)?l:o.get("retryResolve"),m=o.get("logHandler")||n;m({type:"prepear",url:r,method:(null==a?void 0:a.method)||"GET",retry:d,maxRetry:h,message:0===d?"start":"retry "+d+"/"+h+" start",headers:null==a?void 0:a.headers,options:a});var g=Date.now();return Promise.resolve(t(r,o,a)).then(function(n){var i,u,c=n.status,l=Date.now()-g,v="[cost "+l+"]["+c+"] "+(c<0?n.body:"");m({type:"finished",url:r,method:n.method,retry:d,maxRetry:h,message:0===d?"finish "+v:"retry "+d+"/"+h+" finish "+v,response:n,headers:n.headers,cost:l});var y=w(c);if(!h||"network"===f&&c>0||"status"===f&&y||Array.isArray(f)&&!f.includes(c)||"function"==typeof f&&!0!==f(n,d)||d>=h)return n;var p=null!=(i=null!=(u=null==a?void 0:a.retryInterval)?u:o.get("retryInterval"))?i:1e3;return Promise.resolve(s(Math.max(100,"2EB"===p?1e3*Math.pow(2,d):"function"==typeof p?p(d+1)||0:p))).then(function(){return Promise.resolve(e(t,r,o,a,d+1))})})}catch(e){return Promise.reject(e)}};function x(n,s,o,a){var i,u;if(n.status<0)return O({ok:!1,status:n.status,code:n.statusText,headers:{},message:"",data:null},n.method+" "+s+" "+n.statusText,n.method,s,o,a);w(n.status)||null==(u=o.get("errorHandler"))||u(n.status,n.method,s);var c,l,h,f,m,y=d({},(c=n.status,l=n.statusText,h=n.body,f=o.get("responseRule"),m=(null==a?void 0:a.responseRule)||f,w(c)?function(n,s,o,a){var i=n||{resolve:"body"},u={ok:!0,code:o,message:"",data:null};if(202===s||204===s||!a)return u;if("body"===i.resolve)return u.data=e(a)?t(a):a,u;var c=t(a);if(!c||!r(c))return u.ok=!1,u.code="ResponseFormatError",u.message="响应内容无法格式化为 Object",u;var l=i.statusField,d=i.statusOKValue||"",h=i.dataField||g,f=i.messageField||v,m=i.ignoreMessage||"";if(l&&!(l in c))return u.ok=!1,u.code="ResponseFieldMissing",u.message="响应内容找不到状态字段 "+l,u;var y=l?c[l]+"":"";return u.ok=!l||y===d,u.code=y||o,u.data=!0===h?c:h in c?c[h]:null,u.message=p(c,f),m&&u.message&&(Array.isArray(m)&&m.includes(u.message)||"string"==typeof m&&u.message===m)&&(u.message=""),u}(m.ok||f.ok,c,l,h):function(n,s,o){var a=n||{resolve:"json",messageField:v},i={ok:!1,code:s,message:o,data:null};switch(a.resolve){case"body":i.message=j(o)||o;break;case"json":var u=function(n,s,o){if(void 0===o&&(o=v),!e(n))return{message:""};var a=t(n);return a&&r(a)?{code:s?p(a,s):"",message:p(a,o)||n}:{message:n}}(o,a.statusField,a.messageField),c=u.message;i.code=u.code||s,i.message=j(o)||c}return i}(m.failed||f.failed,l,h)),{status:n.status,headers:Object.fromEntries(Object.entries(n.headers||{}).map(function(e){var t=e[1];return[e[0].toLowerCase(),t]}))});return null==(i=o.get("responseHandler"))||i(d({},y),n.method,s),O(y,y.ok?y.message:n.method+" "+s+" ["+(y.code||n.statusText)+"] "+(y.message||n.statusText),n.method,s,o,a)}function O(e,t,r,n,s,o){var a=s.get("message"),i=!1!==a&&!1!==(null==o?void 0:o.message)&&((null==o?void 0:o.message)||a);return!1!==i&&s.showMessage(!e.ok,"function"==typeof i?i(e,r,n,t):t),e}var E=/*#__PURE__*/function(){function e(e){this.config={baseURL:"",maxRetry:0,retryInterval:1e3,retryResolve:"network",timeout:5e3,cacheTTL:500,credentials:"same-origin",responseRule:{ok:{resolve:"body"},failed:{resolve:"json",messageField:"message"}}},e&&this.set(e)}var t=e.prototype;return t.set=function(e){if(e.baseURL&&!/^\/.+/.test(e.baseURL)&&!o(e.baseURL))throw console.warn("baseURL 需要以 / 开头,或者是完整的 url 地址"),new Error("BaseURLError");Object.assign(this.config,e)},t.get=function(e){return this.config[e]},t.getFullUrl=function(e){return e.startsWith("/")?a(e):a(e,this.config.baseURL)},t.showMessage=function(e,t){this.config.messageHandler&&t&&this.config.messageHandler(e,t)},e}(),R=function(e,t,r){try{return Promise.resolve(f(e,t,r)).then(function(e){var t=d({},e,{onUploadProgress:null==r?void 0:r.onUploadProgress}),s=t.method,o=t.onUploadProgress||n,a=i(t.url,t.params);return Promise.resolve(new Promise(function(e){var r=1,n=0,i=new XMLHttpRequest;i.open(s,a,!0),i.upload.addEventListener("progress",function(e){r=e.total,o({total:e.total,loaded:e.loaded})}),i.addEventListener("load",function(){n&&clearTimeout(n),o({loaded:r,total:r}),e({url:a,method:s,status:i.status,statusText:i.statusText,headers:k(i),body:"HEAD"===s?"":i.responseText})}),i.addEventListener("error",function(){n&&clearTimeout(n),e({url:a,method:s,status:-1,statusText:"Failed",body:""})}),i.addEventListener("abort",function(){n&&clearTimeout(n),e({url:a,method:s,status:-1,statusText:"Aborted",body:""})}),Object.entries(t.headers).forEach(function(e){i.setRequestHeader(e[0],e[1])}),"include"===t.credentials&&(i.withCredentials=!0),i.send(t.body||void 0),t.timeout>0&&(n=setTimeout(function(){i.abort()},t.timeout))}))})}catch(e){return Promise.reject(e)}};function k(e){var t={};if(!e)return t;var r=e.getAllResponseHeaders();return r&&"null"!==r&&r.replace(/\r/g,"").split("\n").forEach(function(e){var r=e.trim();if(r){var n=r.split(":"),s=n[0].trim();s&&(t[s]=(n[1]||"").trim())}}),t}var H=function(e,t,r){try{return Promise.resolve(T(m,e,t,r)).then(function(n){return x(n,e,t,r)})}catch(e){return Promise.reject(e)}},A=function(e,t,r){try{return Promise.resolve(T(R,e,t,r)).then(function(n){return x(n,e,t,r)})}catch(e){return Promise.reject(e)}},L=/*#__PURE__*/function(){function e(e){void 0===e&&(e=500),this.ttl=void 0,this.cache=void 0,this.cache={},this.ttl=Math.max(e,0)}var t=e.prototype;return t.getKey=function(e,t){return e+Object.keys(t||{}).sort().map(function(e){return e+"#"+(null==t?void 0:t[e])}).join(",")},t.updateTTL=function(e){this.ttl=Math.max(e,0)},t.get=function(e){if(0===this.ttl)return null;var t=this.cache[e];return t?t.ttl<Date.now()?(delete this.cache[e],null):t.res:null},t.set=function(e,t){0!==this.ttl&&(this.cache[e]={ttl:Date.now()+this.ttl,res:t})},e}(),F=/*#__PURE__*/function(){function e(e,t){this.agent=void 0,this.config=void 0,this.cache=void 0,this.config=new E(t),this.agent=e,this.cache=new L(this.config.get("cacheTTL")),this.setConfig=this.setConfig.bind(this),this.getConfig=this.getConfig.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)}var t=e.prototype;return t.exec=function(e,t){try{return Promise.resolve(this.agent(e,this.config,t))}catch(e){return Promise.reject(e)}},t.guard=function(e,t,r){try{return Promise.resolve(function(e,t,r,n){if(t.ok&&!u(t.data)&&n){var s=c(n,"响应数据未能正确识别");return s.guard(t.data)||(console.error("ResponseCheckFaild",e,t.data),r.showMessage(!0,e+" "+s.message),t.data=null),t}return t}(e,t,this.config,r))}catch(e){return Promise.reject(e)}},t.setConfig=function(e){this.config.set(e),this.cache.updateTTL(this.config.get("cacheTTL"))},t.getConfig=function(e){return this.config.get(e)},t.head=function(e,t){try{var r=this,n=Object.assign({},t||null);n.method="HEAD";var s=r.guard;return Promise.resolve(r.exec(e,n)).then(function(t){return s.call(r,e,t,null)})}catch(e){return Promise.reject(e)}},t.get=function(e,t,r){try{var n,s=function(r){if(n)return r;var s=o.exec(e,a);o.cache.set(i,s);var u=o.guard;return Promise.resolve(s).then(function(r){return u.call(o,e,r,t||null)})},o=this,a=Object.assign({},r||null);a.method="GET";var i=o.cache.getKey(e,a.params),u=o.cache.get(i),c=function(){if(u){var r=o.guard;return Promise.resolve(u).then(function(s){var a=r.call(o,e,s,t||null);return n=1,a})}}();return Promise.resolve(c&&c.then?c.then(s):s(c))}catch(e){return Promise.reject(e)}},t.post=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="POST",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},t.del=function(e,t,r){try{var n=this,s=Object.assign({},r||null);s.method="DELETE";var o=n.guard;return Promise.resolve(n.exec(e,s)).then(function(r){return o.call(n,e,r,t||null)})}catch(e){return Promise.reject(e)}},t.put=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="PUT",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},t.patch=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="PATCH",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},e}(),C=function(e,t,r){void 0===r&&(r={});try{var n=window;return"var"in r||(r.var="jsonxData"+Math.random().toString(16).slice(2)),Promise.resolve(e?l(i(e,r,!0)).then(function(){var s=n[r.var+""];return t(s)?s:(console.warn("response type check faild",e,s),null)}).catch(function(){return null}):null)}catch(e){return Promise.reject(e)}},S=function(e,t,r){void 0===r&&(r={});try{var n=window;"callback"in r||(r.callback="jsonxData"+Math.random().toString(16).slice(2));var s=r.callback+"";if(!e)return Promise.resolve(null);var o=i(e,r,!0);return Promise.resolve(new Promise(function(r){n[s]=function(o){if(s in window&&delete n[s],t(o))return o;console.warn("response type check faild",e,o),r(null)},l(o).catch(function(){r(null),delete n[s]})}))}catch(e){return Promise.reject(e)}},M=function(e,t,r){try{return Promise.resolve(function(e,t,r,n){try{var s=new FormData,o=null==r?void 0:r.body,a=d({},t);for(var i in o instanceof Object&&Object.entries(o).forEach(function(e){var t=e[0],r=e[1];r instanceof Blob?a[t]=r:Array.isArray(r)?r.forEach(function(e,r){s.append(t+"["+r+"]",String(e))}):s.append(t,String(r))}),a)s.append(i,a[i]);var u=new E(n);return Promise.resolve(R(e,u,d({},r,{method:"POST",body:s}))).then(function(t){return x(t,e,u,r)})}catch(e){return Promise.reject(e)}}(e,t,r,{baseURL:D.getConfig("baseURL"),logHandler:D.getConfig("logHandler"),errorHandler:D.getConfig("errorHandler"),requestHandler:D.getConfig("requestHandler"),messageHandler:D.getConfig("messageHandler"),responseHandler:D.getConfig("responseHandler")}))}catch(e){return Promise.reject(e)}};function U(e){if("window"in globalThis)return"fetch"in window?new F(H,e):new F(A,e);throw new Error("Default Module Only Support In Browser")}var D=U(),q=D.setConfig,I=D.head,B=D.get,G=D.post,K=D.del,N=D.put,J=D.patch;export{U as NetRequest,K as del,B as get,y as getResponseRulesDescription,I as head,S as jsonp,C as jsonx,J as patch,G as post,N as put,q as setGlobalConfig,M as upload};
package/dist/node.cjs CHANGED
@@ -1 +1 @@
1
- var e=require("node:http"),t=require("node:https"),r=require("@seayoo-web/utils");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=/*#__PURE__*/n(e),o=/*#__PURE__*/n(t);function a(){return a=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},a.apply(this,arguments)}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var u="message";function c(e,t){for(var r,n=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return i(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(e,t):void 0}}(e))){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(Array.isArray(t)?t:[t]);!(r=n()).done;){var s=r.value;if(s in e)return(o=e[s])?"string"==typeof o?o:JSON.stringify(o):""}var o;return""}var l=/<title>([^<]+)<\/title>/i,h=/<message>([^<]+)<\/message>/i;function d(e){var t=e.match(l);if(t)return t[1];var r=e.match(h);return r?r[1]:""}function f(e){return e>=200&&e<400}var m=function e(t,n,s,o,a){try{var i,u,c,l=a||0,h=Math.max(0,Math.min(10,null!=(i=null!=(u=null==o?void 0:o.maxRetry)?u:s.get("maxRetry"))?i:0)),d=null!=(c=null==o?void 0:o.retryResolve)?c:s.get("retryResolve"),m=s.get("logHandler")||r.noop;m({type:"prepear",url:n,method:(null==o?void 0:o.method)||"GET",retry:l,maxRetry:h,message:0===l?"start":"retry "+l+"/"+h+" start",headers:null==o?void 0:o.headers,options:o});var g=Date.now();return Promise.resolve(t(n,s,o)).then(function(a){var i,u,c=a.status,v=Date.now()-g,y="[cost "+v+"]["+c+"] "+(c<0?a.body:"");m({type:"finished",url:n,method:a.method,retry:l,maxRetry:h,message:0===l?"finish "+y:"retry "+l+"/"+h+" finish "+y,response:a,headers:a.headers,cost:v});var p=f(c);if(!h||"network"===d&&c>0||"status"===d&&p||l>=h)return a;var b=null!=(i=null!=(u=null==o?void 0:o.retryInterval)?u:s.get("retryInterval"))?i:0;return Promise.resolve(r.sleep(Math.max(100,"function"==typeof b?b(l+1)||0:b))).then(function(){return Promise.resolve(e(t,n,s,o,l+1))})})}catch(e){return Promise.reject(e)}};function g(e,t,r,n,s,o){var a=s.get("message"),i=!1!==a&&!1!==(null==o?void 0:o.message)&&((null==o?void 0:o.message)||a);return!1!==i&&s.showMessage(!e.ok,"function"==typeof i?i(e,r,n,t):t),e}var v=function(e,t,n){try{return Promise.resolve(m(y,e,t,n)).then(function(s){return function(e,t,n,s){var o,i;if(e.status<0)return g({ok:!1,status:e.status,code:e.statusText,headers:{},message:"",data:null},e.method+" "+t+" "+e.statusText,e.method,t,n,s);f(e.status)||null==(i=n.get("errorHandler"))||i(e.status,e.method,t);var l,h,m,v,y,p=a({},(l=e.status,h=e.statusText,m=e.body,v=n.get("responseRule"),y=(null==s?void 0:s.responseRule)||v,f(l)?function(e,t,n,s){var o=e||{resolve:"body"},a={ok:!0,code:n,message:"",data:null};if(202===t||204===t||!s)return a;if("body"===o.resolve)return a.data=r.isJsonLike(s)?r.parseJSON(s):s,a;var i=r.parseJSON(s);if(!i||!r.isStringRecord(i))return a.ok=!1,a.code="ResponseFormatError",a.message="响应内容无法格式化为 Object",a;var l=o.statusField,h=o.statusOKValue||"",d=o.dataField||"data",f=o.messageField||u,m=o.ignoreMessage||"";if(l&&!(l in i))return a.ok=!1,a.code="ResponseFieldMissing",a.message="响应内容找不到状态字段 "+l,a;var g=l?i[l]+"":"";return a.ok=!l||g===h,a.code=g||n,a.data=d in i?i[d]:null,a.message=c(i,f),m&&a.message&&(Array.isArray(m)&&m.includes(a.message)||"string"==typeof m&&a.message===m)&&(a.message=""),a}(y.ok||v.ok,l,h,m):function(e,t,n){var s=e||{resolve:"json",messageField:u},o={ok:!1,code:t,message:n,data:null};switch(s.resolve){case"body":o.message=d(n)||n;break;case"json":o.message=d(n)||function(e,t){if(void 0===t&&(t=u),!r.isJsonLike(e))return"";var n=r.parseJSON(e);return n&&r.isStringRecord(n)&&c(n,t)||e}(n,s.messageField)}return o}(y.failed||v.failed,h,m)),{status:e.status,headers:Object.fromEntries(Object.entries(e.headers||{}).map(function(e){var t=e[1];return[e[0].toLowerCase(),t]}))});return null==(o=n.get("responseHandler"))||o(a({},p),e.method,t),g(p,p.ok?p.message:e.method+" "+t+" ["+(p.code||e.statusText)+"] "+(p.message||e.statusText),e.method,t,n,s)}(s,e,t,n)})}catch(e){return Promise.reject(e)}},y=function(e,t,n){try{return Promise.resolve(function(e,t,r){try{var n=Object.assign({method:"GET"},r),s=n.body instanceof FormData,o=s?"POST":n.method;"GET"!==o&&"HEAD"!==o&&"DELETE"!==o||void 0!==n.body&&(console.warn("request body is invalid with method get, head, delete"),delete n.body);var a=Object.assign(s?{}:{"Content-Type":"application/json;charset=utf-8"},n.headers),i=n.params||{},u={};Object.keys(i).forEach(function(e){var t;void 0!==i[e]&&(u[e]="string"==typeof(t=i[e])?t:Array.isArray(t)?t.join(","):t+"")});var c=t.getFullUrl(e),l=function(e){if(e)return e instanceof Blob||e instanceof ArrayBuffer||e instanceof FormData||e instanceof URLSearchParams||"string"==typeof e?e:JSON.stringify(e)}(n.body),h=n.timeout||t.get("timeout");return Promise.resolve(function(r){try{var n=function(n){var s;return r?n:Promise.resolve(null==(s=t.get("requestHandler"))?void 0:s(a,u,o,e))},s=t.get("requestTransformer"),i=function(){if(s)return Promise.resolve(s({headers:a,params:u,method:o,url:c,body:l})).then(function(e){return r=1,e})}();return Promise.resolve(i&&i.then?i.then(n):n(i))}catch(e){return Promise.reject(e)}}()).then(function(e){var r,s="string"==typeof e&&e?e:c;return null==(r=t.get("logHandler"))||r({type:"ready",url:s,method:o,headers:a,timeout:h,body:l}),{url:s,method:o,body:l,params:u,headers:a,timeout:h,credentials:n.credentials||t.get("credentials")}})}catch(e){return Promise.reject(e)}}(e,t,n)).then(function(e){if(!r.isFullURL(e.url))return{url:e.url,method:e.method,status:-2,statusText:"URLFormatError",headers:{},body:""};var t=/^https:\/\//i.test(e.url)?o.default:s.default,n=new URL(e.url),a=e.params;a instanceof Object&&Object.keys(a).forEach(function(e){return n.searchParams.set(e,a[e])});var i="HEAD"===e.method;return new Promise(function(r){var s=t.request(n,{headers:e.headers,method:e.method,timeout:e.timeout>0?e.timeout:void 0},function(t){var s=[];t.on("data",function(e){return s.push(e)}),t.on("end",function(){var o=Object.fromEntries(Object.entries(t.headers).map(function(e){var t=e[1];return[e[0].toLowerCase(),Array.isArray(t)?t.join(","):t]}));r({url:n.toString(),method:e.method,status:t.statusCode||-3,statusText:t.statusMessage||"Unknown",headers:o,body:i?"":Buffer.concat(s).toString("utf-8")})})});s.on("error",function(t){r({url:n.toString(),method:e.method,status:-1,statusText:t.name||"Unknown",body:t.message})}),s.on("timeout",function(){r({url:n.toString(),method:e.method,status:-1,statusText:"Timeout",body:""})}),e.body&&s.write(e.body),s.end()})})}catch(e){return Promise.reject(e)}},p=/*#__PURE__*/function(){function e(e){void 0===e&&(e=500),this.ttl=void 0,this.cache=void 0,this.cache={},this.ttl=Math.max(e,0)}var t=e.prototype;return t.getKey=function(e,t){return e+Object.keys(t||{}).sort().map(function(e){return e+"#"+(null==t?void 0:t[e])}).join(",")},t.updateTTL=function(e){this.ttl=Math.max(e,0)},t.get=function(e){if(0===this.ttl)return null;var t=this.cache[e];return t?t.ttl<Date.now()?(delete this.cache[e],null):t.res:null},t.set=function(e,t){0!==this.ttl&&(this.cache[e]={ttl:Date.now()+this.ttl,res:t})},e}(),b=/*#__PURE__*/function(){function e(e){this.config={baseURL:"",maxRetry:0,retryInterval:1e3,retryResolve:"network",timeout:5e3,cacheTTL:500,credentials:"same-origin",responseRule:{ok:{resolve:"body"},failed:{resolve:"json",messageField:"message"}}},e&&this.set(e)}var t=e.prototype;return t.set=function(e){if(e.baseURL&&!/^\/.+/.test(e.baseURL)&&!r.isFullURL(e.baseURL))throw console.warn("baseURL 需要以 / 开头,或者是完整的 url 地址"),new Error("BaseURLError");Object.assign(this.config,e)},t.get=function(e){return this.config[e]},t.getFullUrl=function(e){return e.startsWith("/")?r.getFullURL(e):r.getFullURL(e,this.config.baseURL)},t.showMessage=function(e,t){this.config.messageHandler&&t&&this.config.messageHandler(e,t)},e}(),j=/*#__PURE__*/function(){function e(e,t){this.agent=void 0,this.config=void 0,this.cache=void 0,this.config=new b(t),this.agent=e,this.cache=new p(this.config.get("cacheTTL")),this.setConfig=this.setConfig.bind(this),this.getConfig=this.getConfig.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)}var t=e.prototype;return t.exec=function(e,t){try{return Promise.resolve(this.agent(e,this.config,t))}catch(e){return Promise.reject(e)}},t.guard=function(e,t,n){try{return Promise.resolve(function(e,t,n,s){if(t.ok&&!r.isEmpty(t.data)&&s){var o=r.getTypeGuard(s,"响应数据未能正确识别");return o.guard(t.data)||(console.error("ResponseCheckFaild",e,t.data),n.showMessage(!0,e+" "+o.message),t.data=null),t}return t}(e,t,this.config,n))}catch(e){return Promise.reject(e)}},t.setConfig=function(e){this.config.set(e),this.cache.updateTTL(this.config.get("cacheTTL"))},t.getConfig=function(e){return this.config.get(e)},t.head=function(e,t){try{var r=this,n=Object.assign({},t||null);n.method="HEAD";var s=r.guard;return Promise.resolve(r.exec(e,n)).then(function(t){return s.call(r,e,t,null)})}catch(e){return Promise.reject(e)}},t.get=function(e,t,r){try{var n,s=function(r){if(n)return r;var s=o.exec(e,a);o.cache.set(i,s);var u=o.guard;return Promise.resolve(s).then(function(r){return u.call(o,e,r,t||null)})},o=this,a=Object.assign({},r||null);a.method="GET";var i=o.cache.getKey(e,a.params),u=o.cache.get(i),c=function(){if(u){var r=o.guard;return Promise.resolve(u).then(function(s){var a=r.call(o,e,s,t||null);return n=1,a})}}();return Promise.resolve(c&&c.then?c.then(s):s(c))}catch(e){return Promise.reject(e)}},t.post=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="POST",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},t.del=function(e,t,r){try{var n=this,s=Object.assign({},r||null);s.method="DELETE";var o=n.guard;return Promise.resolve(n.exec(e,s)).then(function(r){return o.call(n,e,r,t||null)})}catch(e){return Promise.reject(e)}},t.put=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="PUT",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},t.patch=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="PATCH",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},e}();function P(e){return new j(v,e)}var x=P(),T=x.setConfig,O=x.head,R=x.get,w=x.post,L=x.del,k=x.put,E=x.patch;exports.NetRequest=P,exports.del=L,exports.get=R,exports.head=O,exports.patch=E,exports.post=w,exports.put=k,exports.setGlobalConfig=T;
1
+ var e=require("node:http"),t=require("node:https"),r=require("@seayoo-web/utils");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=/*#__PURE__*/n(e),o=/*#__PURE__*/n(t);function a(){return a=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},a.apply(this,arguments)}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var u="message";function c(e,t){for(var r,n=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return i(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(e,t):void 0}}(e))){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(Array.isArray(t)?t:[t]);!(r=n()).done;){var s=r.value;if(s in e)return(o=e[s])?"string"==typeof o?o:JSON.stringify(o):""}var o;return""}var l=/<title>([^<]+)<\/title>/i,h=/<message>([^<]+)<\/message>/i;function d(e){var t=e.match(l);if(t)return t[1];var r=e.match(h);return r?r[1]:""}function f(e){return e>=200&&e<400}var m=function e(t,n,s,o,a){try{var i,u,c,l=a||0,h=Math.max(0,Math.min(10,null!=(i=null!=(u=null==o?void 0:o.maxRetry)?u:s.get("maxRetry"))?i:0)),d=null!=(c=null==o?void 0:o.retryResolve)?c:s.get("retryResolve"),m=s.get("logHandler")||r.noop;m({type:"prepear",url:n,method:(null==o?void 0:o.method)||"GET",retry:l,maxRetry:h,message:0===l?"start":"retry "+l+"/"+h+" start",headers:null==o?void 0:o.headers,options:o});var g=Date.now();return Promise.resolve(t(n,s,o)).then(function(a){var i,u,c=a.status,v=Date.now()-g,y="[cost "+v+"]["+c+"] "+(c<0?a.body:"");m({type:"finished",url:n,method:a.method,retry:l,maxRetry:h,message:0===l?"finish "+y:"retry "+l+"/"+h+" finish "+y,response:a,headers:a.headers,cost:v});var p=f(c);if(!h||"network"===d&&c>0||"status"===d&&p||Array.isArray(d)&&!d.includes(c)||"function"==typeof d&&!0!==d(a,l)||l>=h)return a;var b=null!=(i=null!=(u=null==o?void 0:o.retryInterval)?u:s.get("retryInterval"))?i:1e3;return Promise.resolve(r.sleep(Math.max(100,"2EB"===b?1e3*Math.pow(2,l):"function"==typeof b?b(l+1)||0:b))).then(function(){return Promise.resolve(e(t,n,s,o,l+1))})})}catch(e){return Promise.reject(e)}};function g(e,t,r,n,s,o){var a=s.get("message"),i=!1!==a&&!1!==(null==o?void 0:o.message)&&((null==o?void 0:o.message)||a);return!1!==i&&s.showMessage(!e.ok,"function"==typeof i?i(e,r,n,t):t),e}var v=function(e,t,n){try{return Promise.resolve(m(y,e,t,n)).then(function(s){return function(e,t,n,s){var o,i;if(e.status<0)return g({ok:!1,status:e.status,code:e.statusText,headers:{},message:"",data:null},e.method+" "+t+" "+e.statusText,e.method,t,n,s);f(e.status)||null==(i=n.get("errorHandler"))||i(e.status,e.method,t);var l,h,m,v,y,p=a({},(l=e.status,h=e.statusText,m=e.body,v=n.get("responseRule"),y=(null==s?void 0:s.responseRule)||v,f(l)?function(e,t,n,s){var o=e||{resolve:"body"},a={ok:!0,code:n,message:"",data:null};if(202===t||204===t||!s)return a;if("body"===o.resolve)return a.data=r.isJsonLike(s)?r.parseJSON(s):s,a;var i=r.parseJSON(s);if(!i||!r.isStringRecord(i))return a.ok=!1,a.code="ResponseFormatError",a.message="响应内容无法格式化为 Object",a;var l=o.statusField,h=o.statusOKValue||"",d=o.dataField||"data",f=o.messageField||u,m=o.ignoreMessage||"";if(l&&!(l in i))return a.ok=!1,a.code="ResponseFieldMissing",a.message="响应内容找不到状态字段 "+l,a;var g=l?i[l]+"":"";return a.ok=!l||g===h,a.code=g||n,a.data=!0===d?i:d in i?i[d]:null,a.message=c(i,f),m&&a.message&&(Array.isArray(m)&&m.includes(a.message)||"string"==typeof m&&a.message===m)&&(a.message=""),a}(y.ok||v.ok,l,h,m):function(e,t,n){var s=e||{resolve:"json",messageField:u},o={ok:!1,code:t,message:n,data:null};switch(s.resolve){case"body":o.message=d(n)||n;break;case"json":var a=function(e,t,n){if(void 0===n&&(n=u),!r.isJsonLike(e))return{message:""};var s=r.parseJSON(e);return s&&r.isStringRecord(s)?{code:t?c(s,t):"",message:c(s,n)||e}:{message:e}}(n,s.statusField,s.messageField),i=a.message;o.code=a.code||t,o.message=d(n)||i}return o}(y.failed||v.failed,h,m)),{status:e.status,headers:Object.fromEntries(Object.entries(e.headers||{}).map(function(e){var t=e[1];return[e[0].toLowerCase(),t]}))});return null==(o=n.get("responseHandler"))||o(a({},p),e.method,t),g(p,p.ok?p.message:e.method+" "+t+" ["+(p.code||e.statusText)+"] "+(p.message||e.statusText),e.method,t,n,s)}(s,e,t,n)})}catch(e){return Promise.reject(e)}},y=function(e,t,n){try{return Promise.resolve(function(e,t,r){try{var n=Object.assign({method:"GET"},r),s=n.body instanceof FormData,o=s?"POST":n.method;"GET"!==o&&"HEAD"!==o&&"DELETE"!==o||void 0!==n.body&&(console.warn("request body is invalid with method get, head, delete"),delete n.body);var a=Object.assign(s?{}:{"Content-Type":"application/json;charset=utf-8"},n.headers),i=n.params||{},u={};Object.keys(i).forEach(function(e){var t;void 0!==i[e]&&(u[e]="string"==typeof(t=i[e])?t:Array.isArray(t)?t.join(","):t+"")});var c=t.getFullUrl(e),l=function(e){if(e)return e instanceof Blob||e instanceof ArrayBuffer||e instanceof FormData||e instanceof URLSearchParams||"string"==typeof e?e:JSON.stringify(e)}(n.body),h=n.timeout||t.get("timeout");return Promise.resolve(function(r){try{var n=function(n){var s;return r?n:Promise.resolve(null==(s=t.get("requestHandler"))?void 0:s(a,u,o,e))},s=t.get("requestTransformer"),i=function(){if(s)return Promise.resolve(s({headers:a,params:u,method:o,url:c,body:l})).then(function(e){return r=1,e})}();return Promise.resolve(i&&i.then?i.then(n):n(i))}catch(e){return Promise.reject(e)}}()).then(function(e){var r,s="string"==typeof e&&e?e:c;return null==(r=t.get("logHandler"))||r({type:"ready",url:s,method:o,headers:a,timeout:h,body:l}),{url:s,method:o,body:l,params:u,headers:a,timeout:h,credentials:n.credentials||t.get("credentials")}})}catch(e){return Promise.reject(e)}}(e,t,n)).then(function(e){if(!r.isFullURL(e.url))return{url:e.url,method:e.method,status:-1,statusText:"URLFormatError",headers:{},body:""};var t=/^https:\/\//i.test(e.url)?o.default:s.default,n=new URL(e.url),a=e.params;a instanceof Object&&Object.keys(a).forEach(function(e){return n.searchParams.set(e,a[e])});var i="HEAD"===e.method;return new Promise(function(r){var s=t.request(n,{headers:e.headers,method:e.method,timeout:e.timeout>0?e.timeout:void 0},function(t){var s=[];t.on("data",function(e){return s.push(e)}),t.on("end",function(){var o=Object.fromEntries(Object.entries(t.headers).map(function(e){var t=e[1];return[e[0].toLowerCase(),Array.isArray(t)?t.join(","):t]}));r({url:n.toString(),method:e.method,status:t.statusCode||-1,statusText:t.statusMessage||"Unknown",headers:o,body:i?"":Buffer.concat(s).toString("utf-8")})})});s.on("error",function(t){r({url:n.toString(),method:e.method,status:-1,statusText:t.name||"Unknown",body:t.message})}),s.on("timeout",function(){r({url:n.toString(),method:e.method,status:-1,statusText:"Timeout",body:""})}),e.body&&s.write(e.body),s.end()})})}catch(e){return Promise.reject(e)}},p=/*#__PURE__*/function(){function e(e){void 0===e&&(e=500),this.ttl=void 0,this.cache=void 0,this.cache={},this.ttl=Math.max(e,0)}var t=e.prototype;return t.getKey=function(e,t){return e+Object.keys(t||{}).sort().map(function(e){return e+"#"+(null==t?void 0:t[e])}).join(",")},t.updateTTL=function(e){this.ttl=Math.max(e,0)},t.get=function(e){if(0===this.ttl)return null;var t=this.cache[e];return t?t.ttl<Date.now()?(delete this.cache[e],null):t.res:null},t.set=function(e,t){0!==this.ttl&&(this.cache[e]={ttl:Date.now()+this.ttl,res:t})},e}(),b=/*#__PURE__*/function(){function e(e){this.config={baseURL:"",maxRetry:0,retryInterval:1e3,retryResolve:"network",timeout:5e3,cacheTTL:500,credentials:"same-origin",responseRule:{ok:{resolve:"body"},failed:{resolve:"json",messageField:"message"}}},e&&this.set(e)}var t=e.prototype;return t.set=function(e){if(e.baseURL&&!/^\/.+/.test(e.baseURL)&&!r.isFullURL(e.baseURL))throw console.warn("baseURL 需要以 / 开头,或者是完整的 url 地址"),new Error("BaseURLError");Object.assign(this.config,e)},t.get=function(e){return this.config[e]},t.getFullUrl=function(e){return e.startsWith("/")?r.getFullURL(e):r.getFullURL(e,this.config.baseURL)},t.showMessage=function(e,t){this.config.messageHandler&&t&&this.config.messageHandler(e,t)},e}(),j=/*#__PURE__*/function(){function e(e,t){this.agent=void 0,this.config=void 0,this.cache=void 0,this.config=new b(t),this.agent=e,this.cache=new p(this.config.get("cacheTTL")),this.setConfig=this.setConfig.bind(this),this.getConfig=this.getConfig.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)}var t=e.prototype;return t.exec=function(e,t){try{return Promise.resolve(this.agent(e,this.config,t))}catch(e){return Promise.reject(e)}},t.guard=function(e,t,n){try{return Promise.resolve(function(e,t,n,s){if(t.ok&&!r.isEmpty(t.data)&&s){var o=r.getTypeGuard(s,"响应数据未能正确识别");return o.guard(t.data)||(console.error("ResponseCheckFaild",e,t.data),n.showMessage(!0,e+" "+o.message),t.data=null),t}return t}(e,t,this.config,n))}catch(e){return Promise.reject(e)}},t.setConfig=function(e){this.config.set(e),this.cache.updateTTL(this.config.get("cacheTTL"))},t.getConfig=function(e){return this.config.get(e)},t.head=function(e,t){try{var r=this,n=Object.assign({},t||null);n.method="HEAD";var s=r.guard;return Promise.resolve(r.exec(e,n)).then(function(t){return s.call(r,e,t,null)})}catch(e){return Promise.reject(e)}},t.get=function(e,t,r){try{var n,s=function(r){if(n)return r;var s=o.exec(e,a);o.cache.set(i,s);var u=o.guard;return Promise.resolve(s).then(function(r){return u.call(o,e,r,t||null)})},o=this,a=Object.assign({},r||null);a.method="GET";var i=o.cache.getKey(e,a.params),u=o.cache.get(i),c=function(){if(u){var r=o.guard;return Promise.resolve(u).then(function(s){var a=r.call(o,e,s,t||null);return n=1,a})}}();return Promise.resolve(c&&c.then?c.then(s):s(c))}catch(e){return Promise.reject(e)}},t.post=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="POST",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},t.del=function(e,t,r){try{var n=this,s=Object.assign({},r||null);s.method="DELETE";var o=n.guard;return Promise.resolve(n.exec(e,s)).then(function(r){return o.call(n,e,r,t||null)})}catch(e){return Promise.reject(e)}},t.put=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="PUT",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},t.patch=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="PATCH",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},e}();function P(e){return new j(v,e)}var x=P(),T=x.setConfig,O=x.head,w=x.get,R=x.post,L=x.del,E=x.put,k=x.patch;exports.NetRequest=P,exports.del=L,exports.get=w,exports.head=O,exports.patch=k,exports.post=R,exports.put=E,exports.setGlobalConfig=T;
package/dist/node.js CHANGED
@@ -1 +1 @@
1
- import e from"node:http";import t from"node:https";import{isJsonLike as r,parseJSON as n,isStringRecord as s,noop as o,sleep as a,isFullURL as i,isEmpty as u,getTypeGuard as c,getFullURL as l}from"@seayoo-web/utils";function h(){return h=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},h.apply(this,arguments)}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var f="message";function m(e,t){for(var r,n=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return d(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?d(e,t):void 0}}(e))){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(Array.isArray(t)?t:[t]);!(r=n()).done;){var s=r.value;if(s in e)return(o=e[s])?"string"==typeof o?o:JSON.stringify(o):""}var o;return""}var g=/<title>([^<]+)<\/title>/i,v=/<message>([^<]+)<\/message>/i;function y(e){var t=e.match(g);if(t)return t[1];var r=e.match(v);return r?r[1]:""}function p(e){return e>=200&&e<400}var b=function e(t,r,n,s,i){try{var u,c,l,h=i||0,d=Math.max(0,Math.min(10,null!=(u=null!=(c=null==s?void 0:s.maxRetry)?c:n.get("maxRetry"))?u:0)),f=null!=(l=null==s?void 0:s.retryResolve)?l:n.get("retryResolve"),m=n.get("logHandler")||o;m({type:"prepear",url:r,method:(null==s?void 0:s.method)||"GET",retry:h,maxRetry:d,message:0===h?"start":"retry "+h+"/"+d+" start",headers:null==s?void 0:s.headers,options:s});var g=Date.now();return Promise.resolve(t(r,n,s)).then(function(o){var i,u,c=o.status,l=Date.now()-g,v="[cost "+l+"]["+c+"] "+(c<0?o.body:"");m({type:"finished",url:r,method:o.method,retry:h,maxRetry:d,message:0===h?"finish "+v:"retry "+h+"/"+d+" finish "+v,response:o,headers:o.headers,cost:l});var y=p(c);if(!d||"network"===f&&c>0||"status"===f&&y||h>=d)return o;var b=null!=(i=null!=(u=null==s?void 0:s.retryInterval)?u:n.get("retryInterval"))?i:0;return Promise.resolve(a(Math.max(100,"function"==typeof b?b(h+1)||0:b))).then(function(){return Promise.resolve(e(t,r,n,s,h+1))})})}catch(e){return Promise.reject(e)}};function j(e,t,r,n,s,o){var a=s.get("message"),i=!1!==a&&!1!==(null==o?void 0:o.message)&&((null==o?void 0:o.message)||a);return!1!==i&&s.showMessage(!e.ok,"function"==typeof i?i(e,r,n,t):t),e}var P=function(e,t,o){try{return Promise.resolve(b(T,e,t,o)).then(function(a){return function(e,t,o,a){var i,u;if(e.status<0)return j({ok:!1,status:e.status,code:e.statusText,headers:{},message:"",data:null},e.method+" "+t+" "+e.statusText,e.method,t,o,a);p(e.status)||null==(u=o.get("errorHandler"))||u(e.status,e.method,t);var c,l,d,g,v,b=h({},(c=e.status,l=e.statusText,d=e.body,g=o.get("responseRule"),v=(null==a?void 0:a.responseRule)||g,p(c)?function(e,t,o,a){var i=e||{resolve:"body"},u={ok:!0,code:o,message:"",data:null};if(202===t||204===t||!a)return u;if("body"===i.resolve)return u.data=r(a)?n(a):a,u;var c=n(a);if(!c||!s(c))return u.ok=!1,u.code="ResponseFormatError",u.message="响应内容无法格式化为 Object",u;var l=i.statusField,h=i.statusOKValue||"",d=i.dataField||"data",g=i.messageField||f,v=i.ignoreMessage||"";if(l&&!(l in c))return u.ok=!1,u.code="ResponseFieldMissing",u.message="响应内容找不到状态字段 "+l,u;var y=l?c[l]+"":"";return u.ok=!l||y===h,u.code=y||o,u.data=d in c?c[d]:null,u.message=m(c,g),v&&u.message&&(Array.isArray(v)&&v.includes(u.message)||"string"==typeof v&&u.message===v)&&(u.message=""),u}(v.ok||g.ok,c,l,d):function(e,t,o){var a=e||{resolve:"json",messageField:f},i={ok:!1,code:t,message:o,data:null};switch(a.resolve){case"body":i.message=y(o)||o;break;case"json":i.message=y(o)||function(e,t){if(void 0===t&&(t=f),!r(e))return"";var o=n(e);return o&&s(o)&&m(o,t)||e}(o,a.messageField)}return i}(v.failed||g.failed,l,d)),{status:e.status,headers:Object.fromEntries(Object.entries(e.headers||{}).map(function(e){var t=e[1];return[e[0].toLowerCase(),t]}))});return null==(i=o.get("responseHandler"))||i(h({},b),e.method,t),j(b,b.ok?b.message:e.method+" "+t+" ["+(b.code||e.statusText)+"] "+(b.message||e.statusText),e.method,t,o,a)}(a,e,t,o)})}catch(e){return Promise.reject(e)}},T=function(r,n,s){try{return Promise.resolve(function(e,t,r){try{var n=Object.assign({method:"GET"},r),s=n.body instanceof FormData,o=s?"POST":n.method;"GET"!==o&&"HEAD"!==o&&"DELETE"!==o||void 0!==n.body&&(console.warn("request body is invalid with method get, head, delete"),delete n.body);var a=Object.assign(s?{}:{"Content-Type":"application/json;charset=utf-8"},n.headers),i=n.params||{},u={};Object.keys(i).forEach(function(e){var t;void 0!==i[e]&&(u[e]="string"==typeof(t=i[e])?t:Array.isArray(t)?t.join(","):t+"")});var c=t.getFullUrl(e),l=function(e){if(e)return e instanceof Blob||e instanceof ArrayBuffer||e instanceof FormData||e instanceof URLSearchParams||"string"==typeof e?e:JSON.stringify(e)}(n.body),h=n.timeout||t.get("timeout");return Promise.resolve(function(r){try{var n=function(n){var s;return r?n:Promise.resolve(null==(s=t.get("requestHandler"))?void 0:s(a,u,o,e))},s=t.get("requestTransformer"),i=function(){if(s)return Promise.resolve(s({headers:a,params:u,method:o,url:c,body:l})).then(function(e){return r=1,e})}();return Promise.resolve(i&&i.then?i.then(n):n(i))}catch(e){return Promise.reject(e)}}()).then(function(e){var r,s="string"==typeof e&&e?e:c;return null==(r=t.get("logHandler"))||r({type:"ready",url:s,method:o,headers:a,timeout:h,body:l}),{url:s,method:o,body:l,params:u,headers:a,timeout:h,credentials:n.credentials||t.get("credentials")}})}catch(e){return Promise.reject(e)}}(r,n,s)).then(function(r){if(!i(r.url))return{url:r.url,method:r.method,status:-2,statusText:"URLFormatError",headers:{},body:""};var n=/^https:\/\//i.test(r.url)?t:e,s=new URL(r.url),o=r.params;o instanceof Object&&Object.keys(o).forEach(function(e){return s.searchParams.set(e,o[e])});var a="HEAD"===r.method;return new Promise(function(e){var t=n.request(s,{headers:r.headers,method:r.method,timeout:r.timeout>0?r.timeout:void 0},function(t){var n=[];t.on("data",function(e){return n.push(e)}),t.on("end",function(){var o=Object.fromEntries(Object.entries(t.headers).map(function(e){var t=e[1];return[e[0].toLowerCase(),Array.isArray(t)?t.join(","):t]}));e({url:s.toString(),method:r.method,status:t.statusCode||-3,statusText:t.statusMessage||"Unknown",headers:o,body:a?"":Buffer.concat(n).toString("utf-8")})})});t.on("error",function(t){e({url:s.toString(),method:r.method,status:-1,statusText:t.name||"Unknown",body:t.message})}),t.on("timeout",function(){e({url:s.toString(),method:r.method,status:-1,statusText:"Timeout",body:""})}),r.body&&t.write(r.body),t.end()})})}catch(e){return Promise.reject(e)}},w=/*#__PURE__*/function(){function e(e){void 0===e&&(e=500),this.ttl=void 0,this.cache=void 0,this.cache={},this.ttl=Math.max(e,0)}var t=e.prototype;return t.getKey=function(e,t){return e+Object.keys(t||{}).sort().map(function(e){return e+"#"+(null==t?void 0:t[e])}).join(",")},t.updateTTL=function(e){this.ttl=Math.max(e,0)},t.get=function(e){if(0===this.ttl)return null;var t=this.cache[e];return t?t.ttl<Date.now()?(delete this.cache[e],null):t.res:null},t.set=function(e,t){0!==this.ttl&&(this.cache[e]={ttl:Date.now()+this.ttl,res:t})},e}(),O=/*#__PURE__*/function(){function e(e){this.config={baseURL:"",maxRetry:0,retryInterval:1e3,retryResolve:"network",timeout:5e3,cacheTTL:500,credentials:"same-origin",responseRule:{ok:{resolve:"body"},failed:{resolve:"json",messageField:"message"}}},e&&this.set(e)}var t=e.prototype;return t.set=function(e){if(e.baseURL&&!/^\/.+/.test(e.baseURL)&&!i(e.baseURL))throw console.warn("baseURL 需要以 / 开头,或者是完整的 url 地址"),new Error("BaseURLError");Object.assign(this.config,e)},t.get=function(e){return this.config[e]},t.getFullUrl=function(e){return e.startsWith("/")?l(e):l(e,this.config.baseURL)},t.showMessage=function(e,t){this.config.messageHandler&&t&&this.config.messageHandler(e,t)},e}(),x=/*#__PURE__*/function(){function e(e,t){this.agent=void 0,this.config=void 0,this.cache=void 0,this.config=new O(t),this.agent=e,this.cache=new w(this.config.get("cacheTTL")),this.setConfig=this.setConfig.bind(this),this.getConfig=this.getConfig.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)}var t=e.prototype;return t.exec=function(e,t){try{return Promise.resolve(this.agent(e,this.config,t))}catch(e){return Promise.reject(e)}},t.guard=function(e,t,r){try{return Promise.resolve(function(e,t,r,n){if(t.ok&&!u(t.data)&&n){var s=c(n,"响应数据未能正确识别");return s.guard(t.data)||(console.error("ResponseCheckFaild",e,t.data),r.showMessage(!0,e+" "+s.message),t.data=null),t}return t}(e,t,this.config,r))}catch(e){return Promise.reject(e)}},t.setConfig=function(e){this.config.set(e),this.cache.updateTTL(this.config.get("cacheTTL"))},t.getConfig=function(e){return this.config.get(e)},t.head=function(e,t){try{var r=this,n=Object.assign({},t||null);n.method="HEAD";var s=r.guard;return Promise.resolve(r.exec(e,n)).then(function(t){return s.call(r,e,t,null)})}catch(e){return Promise.reject(e)}},t.get=function(e,t,r){try{var n,s=function(r){if(n)return r;var s=o.exec(e,a);o.cache.set(i,s);var u=o.guard;return Promise.resolve(s).then(function(r){return u.call(o,e,r,t||null)})},o=this,a=Object.assign({},r||null);a.method="GET";var i=o.cache.getKey(e,a.params),u=o.cache.get(i),c=function(){if(u){var r=o.guard;return Promise.resolve(u).then(function(s){var a=r.call(o,e,s,t||null);return n=1,a})}}();return Promise.resolve(c&&c.then?c.then(s):s(c))}catch(e){return Promise.reject(e)}},t.post=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="POST",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},t.del=function(e,t,r){try{var n=this,s=Object.assign({},r||null);s.method="DELETE";var o=n.guard;return Promise.resolve(n.exec(e,s)).then(function(r){return o.call(n,e,r,t||null)})}catch(e){return Promise.reject(e)}},t.put=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="PUT",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},t.patch=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="PATCH",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},e}();function R(e){return new x(P,e)}var E=R(),k=E.setConfig,A=E.head,L=E.get,U=E.post,C=E.del,F=E.put,S=E.patch;export{R as NetRequest,C as del,L as get,A as head,S as patch,U as post,F as put,k as setGlobalConfig};
1
+ import e from"node:http";import t from"node:https";import{isJsonLike as r,parseJSON as n,isStringRecord as s,noop as o,sleep as a,isFullURL as i,isEmpty as u,getTypeGuard as c,getFullURL as l}from"@seayoo-web/utils";function h(){return h=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},h.apply(this,arguments)}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var f="message";function m(e,t){for(var r,n=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return d(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?d(e,t):void 0}}(e))){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(Array.isArray(t)?t:[t]);!(r=n()).done;){var s=r.value;if(s in e)return(o=e[s])?"string"==typeof o?o:JSON.stringify(o):""}var o;return""}var g=/<title>([^<]+)<\/title>/i,v=/<message>([^<]+)<\/message>/i;function y(e){var t=e.match(g);if(t)return t[1];var r=e.match(v);return r?r[1]:""}function p(e){return e>=200&&e<400}var b=function e(t,r,n,s,i){try{var u,c,l,h=i||0,d=Math.max(0,Math.min(10,null!=(u=null!=(c=null==s?void 0:s.maxRetry)?c:n.get("maxRetry"))?u:0)),f=null!=(l=null==s?void 0:s.retryResolve)?l:n.get("retryResolve"),m=n.get("logHandler")||o;m({type:"prepear",url:r,method:(null==s?void 0:s.method)||"GET",retry:h,maxRetry:d,message:0===h?"start":"retry "+h+"/"+d+" start",headers:null==s?void 0:s.headers,options:s});var g=Date.now();return Promise.resolve(t(r,n,s)).then(function(o){var i,u,c=o.status,l=Date.now()-g,v="[cost "+l+"]["+c+"] "+(c<0?o.body:"");m({type:"finished",url:r,method:o.method,retry:h,maxRetry:d,message:0===h?"finish "+v:"retry "+h+"/"+d+" finish "+v,response:o,headers:o.headers,cost:l});var y=p(c);if(!d||"network"===f&&c>0||"status"===f&&y||Array.isArray(f)&&!f.includes(c)||"function"==typeof f&&!0!==f(o,h)||h>=d)return o;var b=null!=(i=null!=(u=null==s?void 0:s.retryInterval)?u:n.get("retryInterval"))?i:1e3;return Promise.resolve(a(Math.max(100,"2EB"===b?1e3*Math.pow(2,h):"function"==typeof b?b(h+1)||0:b))).then(function(){return Promise.resolve(e(t,r,n,s,h+1))})})}catch(e){return Promise.reject(e)}};function j(e,t,r,n,s,o){var a=s.get("message"),i=!1!==a&&!1!==(null==o?void 0:o.message)&&((null==o?void 0:o.message)||a);return!1!==i&&s.showMessage(!e.ok,"function"==typeof i?i(e,r,n,t):t),e}var P=function(e,t,o){try{return Promise.resolve(b(T,e,t,o)).then(function(a){return function(e,t,o,a){var i,u;if(e.status<0)return j({ok:!1,status:e.status,code:e.statusText,headers:{},message:"",data:null},e.method+" "+t+" "+e.statusText,e.method,t,o,a);p(e.status)||null==(u=o.get("errorHandler"))||u(e.status,e.method,t);var c,l,d,g,v,b=h({},(c=e.status,l=e.statusText,d=e.body,g=o.get("responseRule"),v=(null==a?void 0:a.responseRule)||g,p(c)?function(e,t,o,a){var i=e||{resolve:"body"},u={ok:!0,code:o,message:"",data:null};if(202===t||204===t||!a)return u;if("body"===i.resolve)return u.data=r(a)?n(a):a,u;var c=n(a);if(!c||!s(c))return u.ok=!1,u.code="ResponseFormatError",u.message="响应内容无法格式化为 Object",u;var l=i.statusField,h=i.statusOKValue||"",d=i.dataField||"data",g=i.messageField||f,v=i.ignoreMessage||"";if(l&&!(l in c))return u.ok=!1,u.code="ResponseFieldMissing",u.message="响应内容找不到状态字段 "+l,u;var y=l?c[l]+"":"";return u.ok=!l||y===h,u.code=y||o,u.data=!0===d?c:d in c?c[d]:null,u.message=m(c,g),v&&u.message&&(Array.isArray(v)&&v.includes(u.message)||"string"==typeof v&&u.message===v)&&(u.message=""),u}(v.ok||g.ok,c,l,d):function(e,t,o){var a=e||{resolve:"json",messageField:f},i={ok:!1,code:t,message:o,data:null};switch(a.resolve){case"body":i.message=y(o)||o;break;case"json":var u=function(e,t,o){if(void 0===o&&(o=f),!r(e))return{message:""};var a=n(e);return a&&s(a)?{code:t?m(a,t):"",message:m(a,o)||e}:{message:e}}(o,a.statusField,a.messageField),c=u.message;i.code=u.code||t,i.message=y(o)||c}return i}(v.failed||g.failed,l,d)),{status:e.status,headers:Object.fromEntries(Object.entries(e.headers||{}).map(function(e){var t=e[1];return[e[0].toLowerCase(),t]}))});return null==(i=o.get("responseHandler"))||i(h({},b),e.method,t),j(b,b.ok?b.message:e.method+" "+t+" ["+(b.code||e.statusText)+"] "+(b.message||e.statusText),e.method,t,o,a)}(a,e,t,o)})}catch(e){return Promise.reject(e)}},T=function(r,n,s){try{return Promise.resolve(function(e,t,r){try{var n=Object.assign({method:"GET"},r),s=n.body instanceof FormData,o=s?"POST":n.method;"GET"!==o&&"HEAD"!==o&&"DELETE"!==o||void 0!==n.body&&(console.warn("request body is invalid with method get, head, delete"),delete n.body);var a=Object.assign(s?{}:{"Content-Type":"application/json;charset=utf-8"},n.headers),i=n.params||{},u={};Object.keys(i).forEach(function(e){var t;void 0!==i[e]&&(u[e]="string"==typeof(t=i[e])?t:Array.isArray(t)?t.join(","):t+"")});var c=t.getFullUrl(e),l=function(e){if(e)return e instanceof Blob||e instanceof ArrayBuffer||e instanceof FormData||e instanceof URLSearchParams||"string"==typeof e?e:JSON.stringify(e)}(n.body),h=n.timeout||t.get("timeout");return Promise.resolve(function(r){try{var n=function(n){var s;return r?n:Promise.resolve(null==(s=t.get("requestHandler"))?void 0:s(a,u,o,e))},s=t.get("requestTransformer"),i=function(){if(s)return Promise.resolve(s({headers:a,params:u,method:o,url:c,body:l})).then(function(e){return r=1,e})}();return Promise.resolve(i&&i.then?i.then(n):n(i))}catch(e){return Promise.reject(e)}}()).then(function(e){var r,s="string"==typeof e&&e?e:c;return null==(r=t.get("logHandler"))||r({type:"ready",url:s,method:o,headers:a,timeout:h,body:l}),{url:s,method:o,body:l,params:u,headers:a,timeout:h,credentials:n.credentials||t.get("credentials")}})}catch(e){return Promise.reject(e)}}(r,n,s)).then(function(r){if(!i(r.url))return{url:r.url,method:r.method,status:-1,statusText:"URLFormatError",headers:{},body:""};var n=/^https:\/\//i.test(r.url)?t:e,s=new URL(r.url),o=r.params;o instanceof Object&&Object.keys(o).forEach(function(e){return s.searchParams.set(e,o[e])});var a="HEAD"===r.method;return new Promise(function(e){var t=n.request(s,{headers:r.headers,method:r.method,timeout:r.timeout>0?r.timeout:void 0},function(t){var n=[];t.on("data",function(e){return n.push(e)}),t.on("end",function(){var o=Object.fromEntries(Object.entries(t.headers).map(function(e){var t=e[1];return[e[0].toLowerCase(),Array.isArray(t)?t.join(","):t]}));e({url:s.toString(),method:r.method,status:t.statusCode||-1,statusText:t.statusMessage||"Unknown",headers:o,body:a?"":Buffer.concat(n).toString("utf-8")})})});t.on("error",function(t){e({url:s.toString(),method:r.method,status:-1,statusText:t.name||"Unknown",body:t.message})}),t.on("timeout",function(){e({url:s.toString(),method:r.method,status:-1,statusText:"Timeout",body:""})}),r.body&&t.write(r.body),t.end()})})}catch(e){return Promise.reject(e)}},w=/*#__PURE__*/function(){function e(e){void 0===e&&(e=500),this.ttl=void 0,this.cache=void 0,this.cache={},this.ttl=Math.max(e,0)}var t=e.prototype;return t.getKey=function(e,t){return e+Object.keys(t||{}).sort().map(function(e){return e+"#"+(null==t?void 0:t[e])}).join(",")},t.updateTTL=function(e){this.ttl=Math.max(e,0)},t.get=function(e){if(0===this.ttl)return null;var t=this.cache[e];return t?t.ttl<Date.now()?(delete this.cache[e],null):t.res:null},t.set=function(e,t){0!==this.ttl&&(this.cache[e]={ttl:Date.now()+this.ttl,res:t})},e}(),O=/*#__PURE__*/function(){function e(e){this.config={baseURL:"",maxRetry:0,retryInterval:1e3,retryResolve:"network",timeout:5e3,cacheTTL:500,credentials:"same-origin",responseRule:{ok:{resolve:"body"},failed:{resolve:"json",messageField:"message"}}},e&&this.set(e)}var t=e.prototype;return t.set=function(e){if(e.baseURL&&!/^\/.+/.test(e.baseURL)&&!i(e.baseURL))throw console.warn("baseURL 需要以 / 开头,或者是完整的 url 地址"),new Error("BaseURLError");Object.assign(this.config,e)},t.get=function(e){return this.config[e]},t.getFullUrl=function(e){return e.startsWith("/")?l(e):l(e,this.config.baseURL)},t.showMessage=function(e,t){this.config.messageHandler&&t&&this.config.messageHandler(e,t)},e}(),x=/*#__PURE__*/function(){function e(e,t){this.agent=void 0,this.config=void 0,this.cache=void 0,this.config=new O(t),this.agent=e,this.cache=new w(this.config.get("cacheTTL")),this.setConfig=this.setConfig.bind(this),this.getConfig=this.getConfig.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)}var t=e.prototype;return t.exec=function(e,t){try{return Promise.resolve(this.agent(e,this.config,t))}catch(e){return Promise.reject(e)}},t.guard=function(e,t,r){try{return Promise.resolve(function(e,t,r,n){if(t.ok&&!u(t.data)&&n){var s=c(n,"响应数据未能正确识别");return s.guard(t.data)||(console.error("ResponseCheckFaild",e,t.data),r.showMessage(!0,e+" "+s.message),t.data=null),t}return t}(e,t,this.config,r))}catch(e){return Promise.reject(e)}},t.setConfig=function(e){this.config.set(e),this.cache.updateTTL(this.config.get("cacheTTL"))},t.getConfig=function(e){return this.config.get(e)},t.head=function(e,t){try{var r=this,n=Object.assign({},t||null);n.method="HEAD";var s=r.guard;return Promise.resolve(r.exec(e,n)).then(function(t){return s.call(r,e,t,null)})}catch(e){return Promise.reject(e)}},t.get=function(e,t,r){try{var n,s=function(r){if(n)return r;var s=o.exec(e,a);o.cache.set(i,s);var u=o.guard;return Promise.resolve(s).then(function(r){return u.call(o,e,r,t||null)})},o=this,a=Object.assign({},r||null);a.method="GET";var i=o.cache.getKey(e,a.params),u=o.cache.get(i),c=function(){if(u){var r=o.guard;return Promise.resolve(u).then(function(s){var a=r.call(o,e,s,t||null);return n=1,a})}}();return Promise.resolve(c&&c.then?c.then(s):s(c))}catch(e){return Promise.reject(e)}},t.post=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="POST",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},t.del=function(e,t,r){try{var n=this,s=Object.assign({},r||null);s.method="DELETE";var o=n.guard;return Promise.resolve(n.exec(e,s)).then(function(r){return o.call(n,e,r,t||null)})}catch(e){return Promise.reject(e)}},t.put=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="PUT",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},t.patch=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="PATCH",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},e}();function R(e){return new x(P,e)}var E=R(),k=E.setConfig,A=E.head,L=E.get,U=E.post,F=E.del,C=E.put,S=E.patch;export{R as NetRequest,F as del,L as get,A as head,S as patch,U as post,C as put,k as setGlobalConfig};
package/dist/wx.cjs CHANGED
@@ -1 +1 @@
1
- var e=require("@seayoo-web/utils");function t(){return t=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},t.apply(this,arguments)}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var n="message";function s(e,t){for(var n,s=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e))){n&&(e=n);var s=0;return function(){return s>=e.length?{done:!0}:{done:!1,value:e[s++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(Array.isArray(t)?t:[t]);!(n=s()).done;){var o=n.value;if(o in e)return(a=e[o])?"string"==typeof a?a:JSON.stringify(a):""}var a;return""}var o=/<title>([^<]+)<\/title>/i,a=/<message>([^<]+)<\/message>/i;function i(e){var t=e.match(o);if(t)return t[1];var r=e.match(a);return r?r[1]:""}function u(e){return e>=200&&e<400}var c=function t(r,n,s,o,a){try{var i,c,l,h=a||0,d=Math.max(0,Math.min(10,null!=(i=null!=(c=null==o?void 0:o.maxRetry)?c:s.get("maxRetry"))?i:0)),f=null!=(l=null==o?void 0:o.retryResolve)?l:s.get("retryResolve"),g=s.get("logHandler")||e.noop;g({type:"prepear",url:n,method:(null==o?void 0:o.method)||"GET",retry:h,maxRetry:d,message:0===h?"start":"retry "+h+"/"+d+" start",headers:null==o?void 0:o.headers,options:o});var m=Date.now();return Promise.resolve(r(n,s,o)).then(function(a){var i,c,l=a.status,v=Date.now()-m,y="[cost "+v+"]["+l+"] "+(l<0?a.body:"");g({type:"finished",url:n,method:a.method,retry:h,maxRetry:d,message:0===h?"finish "+y:"retry "+h+"/"+d+" finish "+y,response:a,headers:a.headers,cost:v});var p=u(l);if(!d||"network"===f&&l>0||"status"===f&&p||h>=d)return a;var b=null!=(i=null!=(c=null==o?void 0:o.retryInterval)?c:s.get("retryInterval"))?i:0;return Promise.resolve(e.sleep(Math.max(100,"function"==typeof b?b(h+1)||0:b))).then(function(){return Promise.resolve(t(r,n,s,o,h+1))})})}catch(e){return Promise.reject(e)}};function l(e,t,r,n,s,o){var a=s.get("message"),i=!1!==a&&!1!==(null==o?void 0:o.message)&&((null==o?void 0:o.message)||a);return!1!==i&&s.showMessage(!e.ok,"function"==typeof i?i(e,r,n,t):t),e}var h=function(r,o,a){try{return Promise.resolve(c(d,r,o,a)).then(function(c){return function(r,o,a,c){var h,d;if(r.status<0)return l({ok:!1,status:r.status,code:r.statusText,headers:{},message:"",data:null},r.method+" "+o+" "+r.statusText,r.method,o,a,c);u(r.status)||null==(d=a.get("errorHandler"))||d(r.status,r.method,o);var f,g,m,v,y,p=t({},(f=r.status,g=r.statusText,m=r.body,v=a.get("responseRule"),y=(null==c?void 0:c.responseRule)||v,u(f)?function(t,r,o,a){var i=t||{resolve:"body"},u={ok:!0,code:o,message:"",data:null};if(202===r||204===r||!a)return u;if("body"===i.resolve)return u.data=e.isJsonLike(a)?e.parseJSON(a):a,u;var c=e.parseJSON(a);if(!c||!e.isStringRecord(c))return u.ok=!1,u.code="ResponseFormatError",u.message="响应内容无法格式化为 Object",u;var l=i.statusField,h=i.statusOKValue||"",d=i.dataField||"data",f=i.messageField||n,g=i.ignoreMessage||"";if(l&&!(l in c))return u.ok=!1,u.code="ResponseFieldMissing",u.message="响应内容找不到状态字段 "+l,u;var m=l?c[l]+"":"";return u.ok=!l||m===h,u.code=m||o,u.data=d in c?c[d]:null,u.message=s(c,f),g&&u.message&&(Array.isArray(g)&&g.includes(u.message)||"string"==typeof g&&u.message===g)&&(u.message=""),u}(y.ok||v.ok,f,g,m):function(t,r,o){var a=t||{resolve:"json",messageField:n},u={ok:!1,code:r,message:o,data:null};switch(a.resolve){case"body":u.message=i(o)||o;break;case"json":u.message=i(o)||function(t,r){if(void 0===r&&(r=n),!e.isJsonLike(t))return"";var o=e.parseJSON(t);return o&&e.isStringRecord(o)&&s(o,r)||t}(o,a.messageField)}return u}(y.failed||v.failed,g,m)),{status:r.status,headers:Object.fromEntries(Object.entries(r.headers||{}).map(function(e){var t=e[1];return[e[0].toLowerCase(),t]}))});return null==(h=a.get("responseHandler"))||h(t({},p),r.method,o),l(p,p.ok?p.message:r.method+" "+o+" ["+(p.code||r.statusText)+"] "+(p.message||r.statusText),r.method,o,a,c)}(c,r,o,a)})}catch(e){return Promise.reject(e)}},d=function(r,n,s){try{return Promise.resolve(function(e,t,r){try{var n=Object.assign({method:"GET"},r),s=n.body instanceof FormData,o=s?"POST":n.method;"GET"!==o&&"HEAD"!==o&&"DELETE"!==o||void 0!==n.body&&(console.warn("request body is invalid with method get, head, delete"),delete n.body);var a=Object.assign(s?{}:{"Content-Type":"application/json;charset=utf-8"},n.headers),i=n.params||{},u={};Object.keys(i).forEach(function(e){var t;void 0!==i[e]&&(u[e]="string"==typeof(t=i[e])?t:Array.isArray(t)?t.join(","):t+"")});var c=t.getFullUrl(e),l=function(e){if(e)return e instanceof Blob||e instanceof ArrayBuffer||e instanceof FormData||e instanceof URLSearchParams||"string"==typeof e?e:JSON.stringify(e)}(n.body),h=n.timeout||t.get("timeout");return Promise.resolve(function(r){try{var n=function(n){var s;return r?n:Promise.resolve(null==(s=t.get("requestHandler"))?void 0:s(a,u,o,e))},s=t.get("requestTransformer"),i=function(){if(s)return Promise.resolve(s({headers:a,params:u,method:o,url:c,body:l})).then(function(e){return r=1,e})}();return Promise.resolve(i&&i.then?i.then(n):n(i))}catch(e){return Promise.reject(e)}}()).then(function(e){var r,s="string"==typeof e&&e?e:c;return null==(r=t.get("logHandler"))||r({type:"ready",url:s,method:o,headers:a,timeout:h,body:l}),{url:s,method:o,body:l,params:u,headers:a,timeout:h,credentials:n.credentials||t.get("credentials")}})}catch(e){return Promise.reject(e)}}(r,n,s)).then(function(r){var n="PATCH"===r.method?"POST":r.method,s=e.addParamsToString(r.url,r.params);return globalThis.wx?new Promise(function(e){wx.request({url:s,data:r.body,header:r.headers,method:n,dataType:"string",responseType:"text",fail:function(){e({url:s,method:n,status:-1,statusText:"NetworkError",body:""})},success:function(o){var a;e({url:s,method:n,status:o.statusCode,statusText:o.statusCode+"",headers:t({},o.header),body:"HEAD"===r.method?"":(a=o.data,"string"==typeof a?a:a instanceof ArrayBuffer&&"TextDecoder"in globalThis?(new TextDecoder).decode(a):JSON.stringify(a))})}})}):{url:s,method:n,status:-2,statusText:"NotSupport",body:"NotFound namespace of wx"}})}catch(e){return Promise.reject(e)}},f=/*#__PURE__*/function(){function e(e){void 0===e&&(e=500),this.ttl=void 0,this.cache=void 0,this.cache={},this.ttl=Math.max(e,0)}var t=e.prototype;return t.getKey=function(e,t){return e+Object.keys(t||{}).sort().map(function(e){return e+"#"+(null==t?void 0:t[e])}).join(",")},t.updateTTL=function(e){this.ttl=Math.max(e,0)},t.get=function(e){if(0===this.ttl)return null;var t=this.cache[e];return t?t.ttl<Date.now()?(delete this.cache[e],null):t.res:null},t.set=function(e,t){0!==this.ttl&&(this.cache[e]={ttl:Date.now()+this.ttl,res:t})},e}(),g=/*#__PURE__*/function(){function t(e){this.config={baseURL:"",maxRetry:0,retryInterval:1e3,retryResolve:"network",timeout:5e3,cacheTTL:500,credentials:"same-origin",responseRule:{ok:{resolve:"body"},failed:{resolve:"json",messageField:"message"}}},e&&this.set(e)}var r=t.prototype;return r.set=function(t){if(t.baseURL&&!/^\/.+/.test(t.baseURL)&&!e.isFullURL(t.baseURL))throw console.warn("baseURL 需要以 / 开头,或者是完整的 url 地址"),new Error("BaseURLError");Object.assign(this.config,t)},r.get=function(e){return this.config[e]},r.getFullUrl=function(t){return t.startsWith("/")?e.getFullURL(t):e.getFullURL(t,this.config.baseURL)},r.showMessage=function(e,t){this.config.messageHandler&&t&&this.config.messageHandler(e,t)},t}(),m=/*#__PURE__*/function(){function t(e,t){this.agent=void 0,this.config=void 0,this.cache=void 0,this.config=new g(t),this.agent=e,this.cache=new f(this.config.get("cacheTTL")),this.setConfig=this.setConfig.bind(this),this.getConfig=this.getConfig.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)}var r=t.prototype;return r.exec=function(e,t){try{return Promise.resolve(this.agent(e,this.config,t))}catch(e){return Promise.reject(e)}},r.guard=function(t,r,n){try{return Promise.resolve(function(t,r,n,s){if(r.ok&&!e.isEmpty(r.data)&&s){var o=e.getTypeGuard(s,"响应数据未能正确识别");return o.guard(r.data)||(console.error("ResponseCheckFaild",t,r.data),n.showMessage(!0,t+" "+o.message),r.data=null),r}return r}(t,r,this.config,n))}catch(e){return Promise.reject(e)}},r.setConfig=function(e){this.config.set(e),this.cache.updateTTL(this.config.get("cacheTTL"))},r.getConfig=function(e){return this.config.get(e)},r.head=function(e,t){try{var r=this,n=Object.assign({},t||null);n.method="HEAD";var s=r.guard;return Promise.resolve(r.exec(e,n)).then(function(t){return s.call(r,e,t,null)})}catch(e){return Promise.reject(e)}},r.get=function(e,t,r){try{var n,s=function(r){if(n)return r;var s=o.exec(e,a);o.cache.set(i,s);var u=o.guard;return Promise.resolve(s).then(function(r){return u.call(o,e,r,t||null)})},o=this,a=Object.assign({},r||null);a.method="GET";var i=o.cache.getKey(e,a.params),u=o.cache.get(i),c=function(){if(u){var r=o.guard;return Promise.resolve(u).then(function(s){var a=r.call(o,e,s,t||null);return n=1,a})}}();return Promise.resolve(c&&c.then?c.then(s):s(c))}catch(e){return Promise.reject(e)}},r.post=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="POST",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},r.del=function(e,t,r){try{var n=this,s=Object.assign({},r||null);s.method="DELETE";var o=n.guard;return Promise.resolve(n.exec(e,s)).then(function(r){return o.call(n,e,r,t||null)})}catch(e){return Promise.reject(e)}},r.put=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="PUT",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},r.patch=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="PATCH",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},t}();function v(e){return new m(h,e)}var y=v(),p=y.setConfig,b=y.head,P=y.get,T=y.post,j=y.del,x=y.put;exports.NetRequest=v,exports.del=j,exports.get=P,exports.head=b,exports.post=T,exports.put=x,exports.setGlobalConfig=p;
1
+ var e=require("@seayoo-web/utils");function t(){return t=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},t.apply(this,arguments)}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var n="message";function s(e,t){for(var n,s=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e))){n&&(e=n);var s=0;return function(){return s>=e.length?{done:!0}:{done:!1,value:e[s++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(Array.isArray(t)?t:[t]);!(n=s()).done;){var o=n.value;if(o in e)return(a=e[o])?"string"==typeof a?a:JSON.stringify(a):""}var a;return""}var o=/<title>([^<]+)<\/title>/i,a=/<message>([^<]+)<\/message>/i;function i(e){var t=e.match(o);if(t)return t[1];var r=e.match(a);return r?r[1]:""}function u(e){return e>=200&&e<400}var c=function t(r,n,s,o,a){try{var i,c,l,d=a||0,h=Math.max(0,Math.min(10,null!=(i=null!=(c=null==o?void 0:o.maxRetry)?c:s.get("maxRetry"))?i:0)),f=null!=(l=null==o?void 0:o.retryResolve)?l:s.get("retryResolve"),g=s.get("logHandler")||e.noop;g({type:"prepear",url:n,method:(null==o?void 0:o.method)||"GET",retry:d,maxRetry:h,message:0===d?"start":"retry "+d+"/"+h+" start",headers:null==o?void 0:o.headers,options:o});var m=Date.now();return Promise.resolve(r(n,s,o)).then(function(a){var i,c,l=a.status,v=Date.now()-m,y="[cost "+v+"]["+l+"] "+(l<0?a.body:"");g({type:"finished",url:n,method:a.method,retry:d,maxRetry:h,message:0===d?"finish "+y:"retry "+d+"/"+h+" finish "+y,response:a,headers:a.headers,cost:v});var p=u(l);if(!h||"network"===f&&l>0||"status"===f&&p||Array.isArray(f)&&!f.includes(l)||"function"==typeof f&&!0!==f(a,d)||d>=h)return a;var b=null!=(i=null!=(c=null==o?void 0:o.retryInterval)?c:s.get("retryInterval"))?i:1e3;return Promise.resolve(e.sleep(Math.max(100,"2EB"===b?1e3*Math.pow(2,d):"function"==typeof b?b(d+1)||0:b))).then(function(){return Promise.resolve(t(r,n,s,o,d+1))})})}catch(e){return Promise.reject(e)}};function l(e,t,r,n,s,o){var a=s.get("message"),i=!1!==a&&!1!==(null==o?void 0:o.message)&&((null==o?void 0:o.message)||a);return!1!==i&&s.showMessage(!e.ok,"function"==typeof i?i(e,r,n,t):t),e}var d=function(r,o,a){try{return Promise.resolve(c(h,r,o,a)).then(function(c){return function(r,o,a,c){var d,h;if(r.status<0)return l({ok:!1,status:r.status,code:r.statusText,headers:{},message:"",data:null},r.method+" "+o+" "+r.statusText,r.method,o,a,c);u(r.status)||null==(h=a.get("errorHandler"))||h(r.status,r.method,o);var f,g,m,v,y,p=t({},(f=r.status,g=r.statusText,m=r.body,v=a.get("responseRule"),y=(null==c?void 0:c.responseRule)||v,u(f)?function(t,r,o,a){var i=t||{resolve:"body"},u={ok:!0,code:o,message:"",data:null};if(202===r||204===r||!a)return u;if("body"===i.resolve)return u.data=e.isJsonLike(a)?e.parseJSON(a):a,u;var c=e.parseJSON(a);if(!c||!e.isStringRecord(c))return u.ok=!1,u.code="ResponseFormatError",u.message="响应内容无法格式化为 Object",u;var l=i.statusField,d=i.statusOKValue||"",h=i.dataField||"data",f=i.messageField||n,g=i.ignoreMessage||"";if(l&&!(l in c))return u.ok=!1,u.code="ResponseFieldMissing",u.message="响应内容找不到状态字段 "+l,u;var m=l?c[l]+"":"";return u.ok=!l||m===d,u.code=m||o,u.data=!0===h?c:h in c?c[h]:null,u.message=s(c,f),g&&u.message&&(Array.isArray(g)&&g.includes(u.message)||"string"==typeof g&&u.message===g)&&(u.message=""),u}(y.ok||v.ok,f,g,m):function(t,r,o){var a=t||{resolve:"json",messageField:n},u={ok:!1,code:r,message:o,data:null};switch(a.resolve){case"body":u.message=i(o)||o;break;case"json":var c=function(t,r,o){if(void 0===o&&(o=n),!e.isJsonLike(t))return{message:""};var a=e.parseJSON(t);return a&&e.isStringRecord(a)?{code:r?s(a,r):"",message:s(a,o)||t}:{message:t}}(o,a.statusField,a.messageField),l=c.message;u.code=c.code||r,u.message=i(o)||l}return u}(y.failed||v.failed,g,m)),{status:r.status,headers:Object.fromEntries(Object.entries(r.headers||{}).map(function(e){var t=e[1];return[e[0].toLowerCase(),t]}))});return null==(d=a.get("responseHandler"))||d(t({},p),r.method,o),l(p,p.ok?p.message:r.method+" "+o+" ["+(p.code||r.statusText)+"] "+(p.message||r.statusText),r.method,o,a,c)}(c,r,o,a)})}catch(e){return Promise.reject(e)}},h=function(r,n,s){try{return Promise.resolve(function(e,t,r){try{var n=Object.assign({method:"GET"},r),s=n.body instanceof FormData,o=s?"POST":n.method;"GET"!==o&&"HEAD"!==o&&"DELETE"!==o||void 0!==n.body&&(console.warn("request body is invalid with method get, head, delete"),delete n.body);var a=Object.assign(s?{}:{"Content-Type":"application/json;charset=utf-8"},n.headers),i=n.params||{},u={};Object.keys(i).forEach(function(e){var t;void 0!==i[e]&&(u[e]="string"==typeof(t=i[e])?t:Array.isArray(t)?t.join(","):t+"")});var c=t.getFullUrl(e),l=function(e){if(e)return e instanceof Blob||e instanceof ArrayBuffer||e instanceof FormData||e instanceof URLSearchParams||"string"==typeof e?e:JSON.stringify(e)}(n.body),d=n.timeout||t.get("timeout");return Promise.resolve(function(r){try{var n=function(n){var s;return r?n:Promise.resolve(null==(s=t.get("requestHandler"))?void 0:s(a,u,o,e))},s=t.get("requestTransformer"),i=function(){if(s)return Promise.resolve(s({headers:a,params:u,method:o,url:c,body:l})).then(function(e){return r=1,e})}();return Promise.resolve(i&&i.then?i.then(n):n(i))}catch(e){return Promise.reject(e)}}()).then(function(e){var r,s="string"==typeof e&&e?e:c;return null==(r=t.get("logHandler"))||r({type:"ready",url:s,method:o,headers:a,timeout:d,body:l}),{url:s,method:o,body:l,params:u,headers:a,timeout:d,credentials:n.credentials||t.get("credentials")}})}catch(e){return Promise.reject(e)}}(r,n,s)).then(function(r){var n="PATCH"===r.method?"POST":r.method,s=e.addParamsToString(r.url,r.params);return globalThis.wx?new Promise(function(e){wx.request({url:s,data:r.body,header:r.headers,method:n,dataType:"string",responseType:"text",fail:function(){e({url:s,method:n,status:-1,statusText:"NetworkError",body:""})},success:function(o){var a;e({url:s,method:n,status:o.statusCode,statusText:o.statusCode+"",headers:t({},o.header),body:"HEAD"===r.method?"":(a=o.data,"string"==typeof a?a:a instanceof ArrayBuffer&&"TextDecoder"in globalThis?(new TextDecoder).decode(a):JSON.stringify(a))})}})}):{url:s,method:n,status:-1,statusText:"NotSupport",body:"NotFound namespace of wx"}})}catch(e){return Promise.reject(e)}},f=/*#__PURE__*/function(){function e(e){void 0===e&&(e=500),this.ttl=void 0,this.cache=void 0,this.cache={},this.ttl=Math.max(e,0)}var t=e.prototype;return t.getKey=function(e,t){return e+Object.keys(t||{}).sort().map(function(e){return e+"#"+(null==t?void 0:t[e])}).join(",")},t.updateTTL=function(e){this.ttl=Math.max(e,0)},t.get=function(e){if(0===this.ttl)return null;var t=this.cache[e];return t?t.ttl<Date.now()?(delete this.cache[e],null):t.res:null},t.set=function(e,t){0!==this.ttl&&(this.cache[e]={ttl:Date.now()+this.ttl,res:t})},e}(),g=/*#__PURE__*/function(){function t(e){this.config={baseURL:"",maxRetry:0,retryInterval:1e3,retryResolve:"network",timeout:5e3,cacheTTL:500,credentials:"same-origin",responseRule:{ok:{resolve:"body"},failed:{resolve:"json",messageField:"message"}}},e&&this.set(e)}var r=t.prototype;return r.set=function(t){if(t.baseURL&&!/^\/.+/.test(t.baseURL)&&!e.isFullURL(t.baseURL))throw console.warn("baseURL 需要以 / 开头,或者是完整的 url 地址"),new Error("BaseURLError");Object.assign(this.config,t)},r.get=function(e){return this.config[e]},r.getFullUrl=function(t){return t.startsWith("/")?e.getFullURL(t):e.getFullURL(t,this.config.baseURL)},r.showMessage=function(e,t){this.config.messageHandler&&t&&this.config.messageHandler(e,t)},t}(),m=/*#__PURE__*/function(){function t(e,t){this.agent=void 0,this.config=void 0,this.cache=void 0,this.config=new g(t),this.agent=e,this.cache=new f(this.config.get("cacheTTL")),this.setConfig=this.setConfig.bind(this),this.getConfig=this.getConfig.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)}var r=t.prototype;return r.exec=function(e,t){try{return Promise.resolve(this.agent(e,this.config,t))}catch(e){return Promise.reject(e)}},r.guard=function(t,r,n){try{return Promise.resolve(function(t,r,n,s){if(r.ok&&!e.isEmpty(r.data)&&s){var o=e.getTypeGuard(s,"响应数据未能正确识别");return o.guard(r.data)||(console.error("ResponseCheckFaild",t,r.data),n.showMessage(!0,t+" "+o.message),r.data=null),r}return r}(t,r,this.config,n))}catch(e){return Promise.reject(e)}},r.setConfig=function(e){this.config.set(e),this.cache.updateTTL(this.config.get("cacheTTL"))},r.getConfig=function(e){return this.config.get(e)},r.head=function(e,t){try{var r=this,n=Object.assign({},t||null);n.method="HEAD";var s=r.guard;return Promise.resolve(r.exec(e,n)).then(function(t){return s.call(r,e,t,null)})}catch(e){return Promise.reject(e)}},r.get=function(e,t,r){try{var n,s=function(r){if(n)return r;var s=o.exec(e,a);o.cache.set(i,s);var u=o.guard;return Promise.resolve(s).then(function(r){return u.call(o,e,r,t||null)})},o=this,a=Object.assign({},r||null);a.method="GET";var i=o.cache.getKey(e,a.params),u=o.cache.get(i),c=function(){if(u){var r=o.guard;return Promise.resolve(u).then(function(s){var a=r.call(o,e,s,t||null);return n=1,a})}}();return Promise.resolve(c&&c.then?c.then(s):s(c))}catch(e){return Promise.reject(e)}},r.post=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="POST",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},r.del=function(e,t,r){try{var n=this,s=Object.assign({},r||null);s.method="DELETE";var o=n.guard;return Promise.resolve(n.exec(e,s)).then(function(r){return o.call(n,e,r,t||null)})}catch(e){return Promise.reject(e)}},r.put=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="PUT",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},r.patch=function(e,t,r,n){try{var s=this,o=Object.assign({},n||null);o.method="PATCH",o.body=t;var a=s.guard;return Promise.resolve(s.exec(e,o)).then(function(t){return a.call(s,e,t,r||null)})}catch(e){return Promise.reject(e)}},t}();function v(e){return new m(d,e)}var y=v(),p=y.setConfig,b=y.head,P=y.get,T=y.post,j=y.del,x=y.put;exports.NetRequest=v,exports.del=j,exports.get=P,exports.head=b,exports.post=T,exports.put=x,exports.setGlobalConfig=p;