tools_dj 1.0.82 → 1.0.83
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +272 -6
- package/lib/index.d.ts +8 -5
- package/lib/index.js +1 -1
- package/lib/request.d.ts +27 -25
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,12 +1,278 @@
|
|
|
1
|
-
#
|
|
1
|
+
# DJ 工具库
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
tools工具库
|
|
5
|
-
后期可以直接安装和修改
|
|
3
|
+
一个全面的 JavaScript/TypeScript 工具函数集合,包含数据处理、时间格式化、树结构操作、DOM 操作等常用功能。
|
|
6
4
|
|
|
7
5
|
## 安装
|
|
8
|
-
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install tools_dj
|
|
9
|
+
```
|
|
9
10
|
|
|
10
11
|
## 使用
|
|
11
|
-
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import { formatDate, is_empty, formatSize } from "tools_dj";
|
|
15
|
+
|
|
16
|
+
// 格式化日期
|
|
17
|
+
const date = formatDate(new Date(), 'day', '-'); // "2024-03-24"
|
|
18
|
+
|
|
19
|
+
// 检查空值
|
|
20
|
+
const isEmpty = is_empty(""); // true
|
|
21
|
+
|
|
22
|
+
// 格式化文件大小
|
|
23
|
+
const size = formatSize(1024); // "1 KB"
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## API 文档
|
|
27
|
+
|
|
28
|
+
### 数据类型判断
|
|
29
|
+
|
|
30
|
+
#### `is(obj: any): string`
|
|
31
|
+
判断数据类型,返回具体类型名称
|
|
32
|
+
```typescript
|
|
33
|
+
is([1, 2, 3]); // "Array"
|
|
34
|
+
is({}); // "Object"
|
|
35
|
+
is("hello"); // "String"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
#### `is_empty(obj: any): boolean`
|
|
39
|
+
判断值是否为空,支持所有数据类型
|
|
40
|
+
```typescript
|
|
41
|
+
is_empty(null); // true
|
|
42
|
+
is_empty(""); // true
|
|
43
|
+
is_empty([]); // true
|
|
44
|
+
is_empty({}); // true
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
#### `isNum(data: any): boolean`
|
|
48
|
+
判断是否是数字(包括字符型数字)
|
|
49
|
+
```typescript
|
|
50
|
+
isNum("123"); // true
|
|
51
|
+
isNum(456); // true
|
|
52
|
+
isNum("abc"); // false
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 数组操作
|
|
56
|
+
|
|
57
|
+
#### `del_repeat(obj: any[]): any[]`
|
|
58
|
+
删除数组重复元素
|
|
59
|
+
```typescript
|
|
60
|
+
del_repeat([1, 2, 2, 3]); // [1, 2, 3]
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
#### `unique(obj: any[]): any[] | false`
|
|
64
|
+
去除数组重复元素(带空值检查)
|
|
65
|
+
```typescript
|
|
66
|
+
unique([1, 2, 2, 3]); // [1, 2, 3]
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
#### `first(obj: any): any`
|
|
70
|
+
获取数组或对象的第一个元素
|
|
71
|
+
```typescript
|
|
72
|
+
first([1, 2, 3]); // 1
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
#### `last(obj: any): any`
|
|
76
|
+
获取数组或对象的最后一个元素
|
|
77
|
+
```typescript
|
|
78
|
+
last([1, 2, 3]); // 3
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
#### `arrayGroup(arr: any[], groupKey: string): object`
|
|
82
|
+
数组分组
|
|
83
|
+
```typescript
|
|
84
|
+
arrayGroup([{type: 'A', value: 1}, {type: 'B', value: 2}], 'type');
|
|
85
|
+
// { A: [{type: 'A', value: 1}], B: [{type: 'B', value: 2}] }
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 时间处理
|
|
89
|
+
|
|
90
|
+
#### `formatDate(time: Date, format: string, type: string): string`
|
|
91
|
+
格式化时间
|
|
92
|
+
```typescript
|
|
93
|
+
formatDate(new Date(), 'day', '-'); // "2024-03-24"
|
|
94
|
+
formatDate(new Date(), 'minute', '/'); // "2024/03/24/14/30"
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
#### `formatTime(time: any, format: string, option?: object): string`
|
|
98
|
+
高级时间格式化
|
|
99
|
+
```typescript
|
|
100
|
+
formatTime('2024-03-24', 'YYYY年MM月DD日'); // "2024年03月24日"
|
|
101
|
+
formatTime(new Date(), 'YYYY-MM-DD week'); // "2024-03-24 周日"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
#### `getDaysBetween(date1: string, date2: string, negative?: boolean): number`
|
|
105
|
+
计算两个日期之间的天数
|
|
106
|
+
```typescript
|
|
107
|
+
getDaysBetween('2024-01-01', '2024-01-05'); // 4
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
#### `isDateInRange(date: string, startDate: string, endDate: string): boolean`
|
|
111
|
+
判断日期是否在指定范围内
|
|
112
|
+
```typescript
|
|
113
|
+
isDateInRange('2024-02-15', '2024-01-01', '2024-12-31'); // true
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### 对象操作
|
|
117
|
+
|
|
118
|
+
#### `merge(obj1: any, obj2: any): any`
|
|
119
|
+
合并数组或对象
|
|
120
|
+
```typescript
|
|
121
|
+
merge([1, 2], [3, 4]); // [1, 2, 3, 4] (去重后)
|
|
122
|
+
merge({a: 1}, {b: 2}); // {a: 1, b: 2}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
#### `delObj(obj: object, keys?: string | string[]): void`
|
|
126
|
+
删除对象属性
|
|
127
|
+
```typescript
|
|
128
|
+
const obj = {a: 1, b: 2, c: 3};
|
|
129
|
+
delObj(obj, 'a'); // {b: 2, c: 3}
|
|
130
|
+
delObj(obj, ['b', 'c']); // {}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
#### `delObjEmptyKey(obj: object): void`
|
|
134
|
+
删除对象中的空属性
|
|
135
|
+
```typescript
|
|
136
|
+
const obj = {a: 1, b: '', c: null, d: 2};
|
|
137
|
+
delObjEmptyKey(obj); // {a: 1, d: 2}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### 树结构操作
|
|
141
|
+
|
|
142
|
+
#### `arrToTree(data: any[], option?: object): any[]`
|
|
143
|
+
平级数组转树形结构
|
|
144
|
+
```typescript
|
|
145
|
+
const data = [
|
|
146
|
+
{id: 1, parentId: 0, name: 'root'},
|
|
147
|
+
{id: 2, parentId: 1, name: 'child1'}
|
|
148
|
+
];
|
|
149
|
+
arrToTree(data); // 树形结构
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
#### `treeToArr(data: any[], option?: object): any[]`
|
|
153
|
+
树形结构转平级数组
|
|
154
|
+
```typescript
|
|
155
|
+
treeToArr(treeData); // 扁平化数组
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
#### `handleTree(data: any[], id: string, parentId: string, children: string): any[]`
|
|
159
|
+
构造树形结构数据
|
|
160
|
+
```typescript
|
|
161
|
+
handleTree(data, 'id', 'parentId', 'children');
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### 字符串处理
|
|
165
|
+
|
|
166
|
+
#### `toGetQuery(data: object, option?: object): string`
|
|
167
|
+
对象转URL查询参数
|
|
168
|
+
```typescript
|
|
169
|
+
toGetQuery({name: 'test', age: 20}); // "?name=test&age=20"
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
#### `isLink(str: string): boolean`
|
|
173
|
+
判断字符串是否为有效链接
|
|
174
|
+
```typescript
|
|
175
|
+
isLink('https://example.com'); // true
|
|
176
|
+
isLink('not-a-link'); // false
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
#### `repalce(str: string, index: number, char: string): string`
|
|
180
|
+
字符串指定位置替换
|
|
181
|
+
```typescript
|
|
182
|
+
repalce('hello', 1, 'a'); // "hallo"
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### 数字处理
|
|
186
|
+
|
|
187
|
+
#### `formatSize(num: number, option?: object): string`
|
|
188
|
+
转换大小默认是文件可以是别的
|
|
189
|
+
```typescript
|
|
190
|
+
formatSize(1024); // "1 KB"
|
|
191
|
+
formatSize(1048576, {decimals: 1}); // "1.0 MB"
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
#### `numberFixed(number: number, decimalPlaces?: number): number`
|
|
195
|
+
数字保留小数位(截取不四舍五入)
|
|
196
|
+
```typescript
|
|
197
|
+
numberFixed(3.14159, 2); // 3.14
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
#### `numberRepair(str: string, n: number, k: string, d: boolean): string`
|
|
201
|
+
数字前置补位
|
|
202
|
+
```typescript
|
|
203
|
+
numberRepair('5', 3, '0'); // "005"
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
#### `randomNumber(min: number, max: number): number`
|
|
207
|
+
生成随机数
|
|
208
|
+
```typescript
|
|
209
|
+
randomNumber(1, 100); // 1-100之间的随机数
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### 工具函数
|
|
213
|
+
|
|
214
|
+
#### `throttle(fn: Function, delay?: number, immediate?: boolean): Function`
|
|
215
|
+
节流函数
|
|
216
|
+
```typescript
|
|
217
|
+
const throttled = throttle(() => console.log('throttled'), 1000);
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
#### `debounce(fn: Function, delay: number): Function`
|
|
221
|
+
防抖函数
|
|
222
|
+
```typescript
|
|
223
|
+
const debounced = debounce(() => console.log('debounced'), 300);
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
#### `memoize(func: Function, options?: object): Function`
|
|
227
|
+
函数缓存
|
|
228
|
+
```typescript
|
|
229
|
+
const cachedFn = memoize(expensiveFunction, {ttl: 5000});
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### DOM 相关
|
|
233
|
+
|
|
234
|
+
#### `isMobile(): boolean`
|
|
235
|
+
检测是否为移动设备
|
|
236
|
+
```typescript
|
|
237
|
+
isMobile(); // true/false
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
#### `setMeta(meta: object): void`
|
|
241
|
+
设置页面meta信息
|
|
242
|
+
```typescript
|
|
243
|
+
setMeta({title: "页面标题", cZoom: {mobile: 0.8}});
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### 转换工具
|
|
247
|
+
|
|
248
|
+
#### `pxToRem(pxValue: string | number, baseRem?: number): string`
|
|
249
|
+
px转rem
|
|
250
|
+
```typescript
|
|
251
|
+
pxToRem('16px'); // "0.43rem"
|
|
252
|
+
pxToRem(32, 16); // "2.00rem"
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
#### `base64Img(base64: string, imgName: string): File`
|
|
256
|
+
base64转文件对象
|
|
257
|
+
```typescript
|
|
258
|
+
const file = base64Img(base64String, 'image.png');
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
#### `objToFormData(obj: object, simplify?: boolean): FormData`
|
|
262
|
+
对象转FormData
|
|
263
|
+
```typescript
|
|
264
|
+
const formData = objToFormData({name: 'test', files: [file1, file2]});
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
## 特性
|
|
268
|
+
|
|
269
|
+
- 🚀 **轻量高效** - 优化的算法实现
|
|
270
|
+
- 📦 **TypeScript 支持** - 完整的类型定义
|
|
271
|
+
- 🔧 **模块化设计** - 按需引入,减少包体积
|
|
272
|
+
- 🌍 **跨平台兼容** - 支持浏览器和 Node.js 环境
|
|
273
|
+
- 📚 **完整文档** - 详细的使用示例和API说明
|
|
274
|
+
|
|
275
|
+
## 许可证
|
|
276
|
+
|
|
277
|
+
MIT License
|
|
12
278
|
|
package/lib/index.d.ts
CHANGED
|
@@ -279,11 +279,14 @@ export declare function fnRuntime(fn: any, iterations?: number): void;
|
|
|
279
279
|
* @return formData 对象
|
|
280
280
|
*/
|
|
281
281
|
export declare function objToFormData(obj: any, simplify?: boolean): FormData;
|
|
282
|
-
/**
|
|
283
|
-
*
|
|
284
|
-
* @param num
|
|
285
|
-
* @param option
|
|
286
|
-
*
|
|
282
|
+
/**
|
|
283
|
+
* 转换大小默认是文件可以是别的
|
|
284
|
+
* @param num - 需要转化的字节数
|
|
285
|
+
* @param option - 配置选项
|
|
286
|
+
* @param option.decimals - 保留小数位数,默认为2位
|
|
287
|
+
* @param option.sizes - 单位数组,默认为 ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
|
|
288
|
+
* @param option.perUnit - 转换进制,默认为1024
|
|
289
|
+
* @returns 格式化后的文件大小字符串
|
|
287
290
|
*/
|
|
288
291
|
export declare function formatSize(num: any, option?: any): string;
|
|
289
292
|
/** 2025/4/23 15:59 User: DJ
|
package/lib/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function e(e){let t={};return e.forEach((function(e){t[JSON.stringify(e)]=e})),e=Object.keys(t).map((function(e){if("undefined"!=e)return JSON.parse(e)}))}function t(e){let t=!1;switch(Object.prototype.toString.call(e).slice(8,-1)){case"Undefined":case"Null":t=!0;break;case"String":t=0===e.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g,"").length;break;case"Boolean":t=!e;break;case"Array":t=0===e.length;break;case"Number":t=0===e||isNaN(e);break;case"Object":t=0===Object.keys(e).length}return t}function r(e){return Object.prototype.toString.call(e).slice(8,-1)}function n(){return!t(navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))}function o(e,t){return Math.round(Math.random()*(t-e))+e}function s(e){let t=e+"";const r=Number(t);return!isNaN(r)&&t.length>0}function c(e=[],t,r=!1){if(r)return e.indexOf(t);{let r=-1,n=e.length;for(let o=0;o<n;o++)e[o]==t&&(r=o);return r}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.memoize=void 0,exports.del_repeat=e,exports.formatDate=function(e,t="day",r="-"){let n=e.getFullYear(),o=(e.getMonth()+1).toString().padStart(2,"0"),s=e.getDate().toString().padStart(2,"0"),c=e.getHours().toString().padStart(2,"0"),i=e.getMinutes().toString().padStart(2,"0"),a={year:1,month:2,day:3,hour:4,minute:5},l="";for(let e=0;e<a[t];e++)0==e&&(l+=n),1==e&&(l+=o),2==e&&(l+=s),3==e&&(l+=c),4==e&&(l+=i),e!=a[t]-1&&(l+=r);return l},exports.time_change=function(e){return Date.parse(e)},exports.formatTime=function(e,t="YYYY-MM-DD hh:mm:ss",r={}){try{e=e.replaceAll("-","/")}catch(e){}e=new Date(e);let n={0:"周日",1:"周一",2:"周二",3:"周三",4:"周四",5:"周五",6:"周六"},{weeks:o=n}=r,s=e.getFullYear(),c=(e.getMonth()+1).toString().padStart(2,"0"),i=e.getDate().toString().padStart(2,"0"),a=e.getHours().toString().padStart(2,"0"),l=e.getMinutes().toString().padStart(2,"0"),u=e.getSeconds().toString().padStart(2,"0"),p=o[e.getDay()],f=t;return[{format:"YYYY",data:s},{format:"yyyy",data:s},{format:"MM",data:c},{format:"DD",data:i},{format:"dd",data:i},{format:"hh",data:a},{format:"HH",data:a},{format:"mm",data:l},{format:"ss",data:u},{format:"week",data:p},{format:"time_slot",data:a>12?"下午":"上午"}].forEach((function(e,r){-1!=t.indexOf(e.format)&&(f=f.replace(e.format,""+e.data))})),f},exports.getDaysBetween=function(e,t,r=!1){var n=Date.parse(e),o=Date.parse(t),s=0;n>o&&(s=(n-o)/864e5);n<o&&(s=(o-n)/864e5,r&&(s=-s));return s},exports.is_empty=t,exports.repalce=function(e,t,r){return e.substring(0,t)+r+e.substring(t+1)},exports.toGetQuery=function(e,n={}){if(t(e))return"";{let{prefix:o="?"}=n,s=[],c=["",void 0,null];const i=(e,n="")=>{const o=Object.keys(e);for(const a of o){const o=e[a];if(c.includes(o))continue;let l=r(o),u=encodeURIComponent(a);if(t(n)||(u=`${n}[${u}]`),"Array"===l)for(const e of o)s.push(`${u}[]=${encodeURIComponent(e)}`);else if("Object"===l)i(o,u);else{let e=encodeURIComponent(o);s.push(`${u}=${e}`)}}};return i(e),s.length?o+s.join("&"):""}},exports.isLink=function(e){const t=e.indexOf("://");if(-1===t)return!1;const r=e.slice(0,t+1);return-1!==c(["http:","https:","ftp:","file:"],r.toLowerCase())},exports.merge=function(t,r){const n=Object.prototype.toString.call(t);if("Array"==n.slice(8,-1))return t.push.apply(t,r),e(t);if("Object"==n.slice(8,-1))return Object.assign(t,r)},exports.is=r,exports.unique=function(r){if(0==t(r)){let t=e(r);return console.log(t),t}return console.log(!1),!1},exports.first=function(e){if(0!=t(e))return console.log(!1),!1;if("[object Object]"===Object.prototype.toString.call(e))for(const t of e)return console.log(t),t;else console.log(e[0])},exports.last=function(e){if(0!=t(e))return console.log(!1),!1;if("[object Object]"===Object.prototype.toString.call(e))for(const t of e)console.log(t);else console.log(e[e.length-1])},exports.findByIndex=function(e,t,r){return(e||[]).findIndex((e=>e[t]===r))},exports.setObjData=function(e,t,r,n,o){try{return e.find((function(e){return e[t]==r}))[n]=o,!0}catch(e){return!1}},exports.selectObjData=function(e,t,r){try{return e.find((function(e){return e[t]==r}))}catch(e){return""}},exports.handleTree=function(e,t,r,n){const o={id:t||"id",parentId:r||"parentId",childrenList:n||"children"},s=new Map,c=new Map,i=[];let a=e.length;for(let t=0;t<a;t++){let r=e[t];const n=r[o.parentId];s.has(n)||s.set(n,[]),c.set(r[o.id],r),s.get(n).push(r)}for(let t=0;t<a;t++){let r=e[t];const n=r[o.parentId];c.has(n)||i.push(r)}const l=[...i];for(;l.length>0;){const e=l.pop(),t=s.get(e[o.id]);t&&(e[o.childrenList]=t,l.push(...t))}return i},exports.arrToTree=function(e,t={}){let{id:r="id",pKey:n="parentId",cKey:o="children",strict:s=!0,copy:c=!0}=t,i=[];i=c?JSON.parse(JSON.stringify(e)):e;return i.filter((e=>{const t=i.filter((t=>s?t[n]===e[r]:t[n]==e[r]));return t.length&&(e[o]=t),0===e[n]}))},exports.treeToArr=function(e,t={}){let r=[],{cKey:n="children",copy:o=!0}=t,s=[...e];for(;s.length;){let e=s.pop();if(e[n])if(s.push(...e[n]),o){let t={},o=Object.keys(e),s=o.length;for(let r=0;r<s;r++)o[r]!=n&&(t[o[r]]=e[o[r]]);r.push(t)}else r.push(e)}return r},exports.treeFor=function(e,r,n={}){let{cKey:o="children"}=n,s=[...e];for(;s.length;){let e=s.shift();t(e[o])?r&&r(e):s.push(...e[o])}},exports.treeStack=function(e,r,n={}){let{cKey:o="children"}=n,s=[...e];for(;s.length;){let e=s.shift();t(e[o])?r&&r(e):s.push(...e[o])}},exports.treeRecursion=function(e,t,r={}){},exports.treeFind=function(e,t={}){let r=[],{cKey:n="children",key:o="id",value:s,copy:c=!0}=t,i=[...e];for(;i.length;){let e=i.pop();if(e[n]&&i.push(...e[n]),e[o]==s)if(c){let t={},o=Object.keys(e),s=o.length;for(let r=0;r<s;r++)o[r]!=n&&(t[o[r]]=e[o[r]]);r.push(t)}else r.push(e)}return r},exports.base64Img=function(e,t){return r=function(e){for(var t=e.split(","),r=t[0].match(/:(.*?);/)[1],n=atob(t[1]),o=n.length,s=new Uint8Array(o);o--;)s[o]=n.charCodeAt(o);return new Blob([s],{type:r})}(e),n=t,new File([r],n);var r,n},exports.compareDate=function(e,t="up"){return function(r,n){return"up"==t?Date.parse(r[e])-Date.parse(n[e]):Date.parse(n[e])-Date.parse(r[e])}},exports.compare=function(e,t="up"){return function(r,n){return"up"==t?r[e]-n[e]:n[e]-r[e]}},exports.numberRepair=function(e="",t=2,r="0",n=!1){let o="",s=(""+e).length;if(s>t&&1==n)return s;{let n=t-s;if(n>0)for(let e=0;e<n;e++)o+=r;return(o+e).slice(-1*t)}},exports.isMobile=n,exports.setMeta=function(e){if(!t(e)){let t=[];document.head.childNodes.forEach((r=>{switch(r.tagName){case"META":t.push(r);break;case"TITLE":document.title=e.title||"模板测试"}}));const r=document.createElement("META");let o=1,s="yes";e.cZoom&&(n()?e.cZoom.mobile&&(o=e.cZoom.mobile):e.cZoom.pc&&(o=e.cZoom.pc),e.cZoom.isScale&&(s=e.cZoom.isScale));let c=`width=device-width,minimum-scale=${o},initial-scale=${o},user-scalable=${s}`;"no"==s&&(c+=`,maximum-scale=${o}`);const i=[{charset:"utf-8"},{name:"viewport",content:c}],a=document.createDocumentFragment();i.forEach((e=>{a.append(r.cloneNode()),Object.entries(e).forEach((e=>{a.lastChild.setAttribute(e[0],e[1])}))})),t.forEach((e=>{document.head.removeChild(e)})),document.head.prepend(a)}},exports.colorMix=function(e,t,r){r=Math.max(Math.min(Number(r),1),0);let n=parseInt(e.substring(1,3),16),o=parseInt(e.substring(3,5),16),s=parseInt(e.substring(5,7),16),c=parseInt(t.substring(1,3),16),i=parseInt(t.substring(3,5),16),a=parseInt(t.substring(5,7),16),l=Math.round(n*(1-r)+c*r),u=Math.round(o*(1-r)+i*r),p=Math.round(s*(1-r)+a*r);return l=("0"+(l||0).toString(16)).slice(-2),u=("0"+(u||0).toString(16)).slice(-2),p=("0"+(p||0).toString(16)).slice(-2),"#"+l+u+p},exports.sArrMove=function(e,t,r){e.splice(r,0,e.splice(t,1)[0])},exports.rArrMove=function(e,t,r){let n=[].concat(e);return n.splice(r,0,n.splice(t,1)[0]),n},exports.arrSet=function(e,t,r){e.splice(t,0,r)},exports.randomColor=function(){let e=o(100,255),t=o(100,255),r=o(100,255);return"rgba("+e+","+t+","+r+",1)"},exports.randomNumber=o,exports.isDateInRange=function(e,t,r){const n=new Date(e),o=new Date(t),s=new Date(r);return n>=o&&n<=s},exports.throttle1=function(e,t){let r,n=0;return function(...o){const s=Date.now(),c=s-n;clearTimeout(r),c>=t?(e(...o),n=s):r=setTimeout((()=>{e(...o),n=Date.now()}),t-c)}},exports.throttle=function(e,t=1e3,r=!0){let n;const o=(...o)=>{n&&clearInterval(n),r?(n||e(...o),n=setTimeout((function(){n=null}),t)):n=setTimeout((()=>{e(...o)}),t)};return o.cancel=()=>{n&&(clearTimeout(n),n=null)},o},exports.debounce=function(e,t){let r;const n=function(...n){clearTimeout(r),r=setTimeout((()=>{e(...n)}),t)};return n.cancel=()=>{r&&(clearTimeout(r),r=null)},n},exports.arrayGroup=function(e,t="type"){return e.reduce(((e,r)=>{var n;return Object.assign(Object.assign({},e),{[r[t]]:[...null!==(n=e[r[t]])&&void 0!==n?n:[],r]})}),{})},exports.numberFixed=function(e,t=1){const r=e.toString(),n=r.indexOf(".");if(-1===n)return e;const o=r.slice(0,n+1+t);return parseFloat(o)},exports.delObj=function(e,n=""){try{if(t(n)){let t=Object.keys(e);for(let r of t)delete e[r]}else if("Array"==r(n))for(const t of n)delete e[t];else delete e[n]}catch(e){}},exports.delObjEmptyKey=function(e){try{let n=Object.keys(e);for(let o of n)"Number"!=r(e[o])&&t(e[o])&&delete e[o]}catch(e){}},exports.isNum=s,exports.pxToRem=function(e,t=37.5){let r=e;if(s(e)||-1!=e.indexOf("px")){r=(parseFloat(e)/t).toFixed(2)+"rem"}return r},exports.inArr=c,exports.fnRuntime=function(e,t=1){let r=0;for(let n=0;n<t;n++){const t=performance.now();e();r+=performance.now()-t}const n=r/t;console.log(`平均执行时间 ${t} 次数: ${n.toFixed(6)} ms`)},exports.objToFormData=function(e,t=!0){let n=new FormData;return function e(o,s="",c={}){let{level:i=0,pk:a="",type:l=""}=c,u=r(o);if(-1==["Array","Object"].indexOf(u)){if(null!=o){let e=s;t&&2==i&&"Array"==l&&(e=a),n.append(e,o)}}else if("Array"==u){let t=o.length;for(let r=0;r<t;r++){let t=`${s}[${r}]`,n={level:i+1,type:"Array",pk:s};e(o[r],t,n)}}else if("Object"==u){let t=Object.keys(o),r={level:i+1,type:"Object",pk:s};for(const n of t)e(o[n],`${s}${""==s?"":"."}${n}`,r)}}(e),n},exports.formatSize=function(e,t={}){if(0===e)return"0 Bytes";let{decimals:r=2,sizes:n=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"]}=t;const o=r<0?0:r,s=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,s)).toFixed(o))+" "+n[s]},exports.arrToAryTree=function(e,t={}){let{idKey:r="id",pidKey:n="pid",rKey:o="rgt",lKey:s="lft",levelKey:c="level"}=t;const i={},a={};let l=e.length;for(let t=0;t<l;t++){let o=e[t],s=o[n],c=o[r];i[c]=Object.assign({},o),a[s]||(a[s]=[]),a[s].push(c)}const u=Object.keys(a),p=Object.keys(i),f=new Set(p);let d=[];u.filter((e=>{f.has(e)||d.push(...a[e])}));let h=1;const m=[],g=[];for(let e=d.length-1;e>=0;e--)m.push({[r]:d[e],[c]:1,processed:!1});for(;m.length>0;){const e=m.pop(),t=i[e[r]];if(e.processed)t[o]=h++,g.push(t);else if(t[s]=h++,t[c]=e[c],m.push({[r]:e[r],[c]:e[c],processed:!0}),a[e[r]])for(let t=a[e[r]].length-1;t>=0;t--)m.push({[r]:a[e[r]][t],[c]:e[c]+1,processed:!1})}return g},exports.mergeObj=function(e,t={}){let{callback:n=null,callType:o="",afterBack:s=null}=t,c={};function i(e,t){let c=Object.keys(e);for(const a of c){let c=r(e[a]);n&&c==o?t[a]=n(e,a):"Object"===c?(t[a]||(t[a]={}),i(e[a],t[a])):t[a]=e[a],s&&s(t,a)}}for(const t of e)i(t,c);return c},Number.prototype.repair=function(e=2){let t="";for(let r=1;r<e;r++)t+="0";return(t+this).slice(-1*e)};exports.memoize=(e,t={})=>{const{context:r=null,ttl:n=0}=t,o=new Map,s=e=>{if("object"==typeof e&&null!==e){if(Array.isArray(e))return`[${e.map(s).join(",")}]`;return`{${Object.keys(e).sort().map((t=>`${t}:${s(e[t])}`)).join(",")}}`}return String(e)};return(...t)=>{const c=s(t),i=o.get(c);if(i&&(0===n||Date.now()-i.timestamp<=n))return i.value;const a=r?e.apply(r,t):e(...t);return o.set(c,{value:a,timestamp:Date.now()}),a}};
|
|
1
|
+
function e(e){let t={};return e.forEach((function(e){t[JSON.stringify(e)]=e})),e=Object.keys(t).map((function(e){if("undefined"!=e)return JSON.parse(e)}))}function t(e){let t=!1;switch(Object.prototype.toString.call(e).slice(8,-1)){case"Undefined":case"Null":t=!0;break;case"String":t=0===e.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g,"").length;break;case"Boolean":t=!e;break;case"Array":t=0===e.length;break;case"Number":t=0===e||isNaN(e);break;case"Object":t=0===Object.keys(e).length}return t}function r(e){return Object.prototype.toString.call(e).slice(8,-1)}function n(){return!t(navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))}function o(e,t){return Math.round(Math.random()*(t-e))+e}function s(e){let t=e+"";const r=Number(t);return!isNaN(r)&&t.length>0}function c(e=[],t,r=!1){if(r)return e.indexOf(t);{let r=-1,n=e.length;for(let o=0;o<n;o++)e[o]==t&&(r=o);return r}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.memoize=void 0,exports.del_repeat=e,exports.formatDate=function(e,t="day",r="-"){let n=e.getFullYear(),o=(e.getMonth()+1).toString().padStart(2,"0"),s=e.getDate().toString().padStart(2,"0"),c=e.getHours().toString().padStart(2,"0"),i=e.getMinutes().toString().padStart(2,"0"),a={year:1,month:2,day:3,hour:4,minute:5},l="";for(let e=0;e<a[t];e++)0==e&&(l+=n),1==e&&(l+=o),2==e&&(l+=s),3==e&&(l+=c),4==e&&(l+=i),e!=a[t]-1&&(l+=r);return l},exports.time_change=function(e){return Date.parse(e)},exports.formatTime=function(e,t="YYYY-MM-DD hh:mm:ss",r={}){try{e=e.replaceAll("-","/")}catch(e){}e=new Date(e);let n={0:"周日",1:"周一",2:"周二",3:"周三",4:"周四",5:"周五",6:"周六"},{weeks:o=n}=r,s=e.getFullYear(),c=(e.getMonth()+1).toString().padStart(2,"0"),i=e.getDate().toString().padStart(2,"0"),a=e.getHours().toString().padStart(2,"0"),l=e.getMinutes().toString().padStart(2,"0"),u=e.getSeconds().toString().padStart(2,"0"),p=o[e.getDay()],f=t;return[{format:"YYYY",data:s},{format:"yyyy",data:s},{format:"MM",data:c},{format:"DD",data:i},{format:"dd",data:i},{format:"hh",data:a},{format:"HH",data:a},{format:"mm",data:l},{format:"ss",data:u},{format:"week",data:p},{format:"time_slot",data:a>12?"下午":"上午"}].forEach((function(e,r){-1!=t.indexOf(e.format)&&(f=f.replace(e.format,""+e.data))})),f},exports.getDaysBetween=function(e,t,r=!1){var n=Date.parse(e),o=Date.parse(t),s=0;n>o&&(s=(n-o)/864e5);n<o&&(s=(o-n)/864e5,r&&(s=-s));return s},exports.is_empty=t,exports.repalce=function(e,t,r){return e.substring(0,t)+r+e.substring(t+1)},exports.toGetQuery=function(e,n={}){if(t(e))return"";{let{prefix:o="?"}=n,s=[],c=["",void 0,null];const i=(e,n="")=>{const o=Object.keys(e);for(const a of o){const o=e[a];if(c.includes(o))continue;let l=r(o),u=encodeURIComponent(a);if(t(n)||(u=`${n}[${u}]`),"Array"===l)for(const e of o)s.push(`${u}[]=${encodeURIComponent(e)}`);else if("Object"===l)i(o,u);else{let e=encodeURIComponent(o);s.push(`${u}=${e}`)}}};return i(e),s.length?o+s.join("&"):""}},exports.isLink=function(e){const t=e.indexOf("://");if(-1===t)return!1;const r=e.slice(0,t+1);return-1!==c(["http:","https:","ftp:","file:"],r.toLowerCase())},exports.merge=function(t,r){const n=Object.prototype.toString.call(t);if("Array"==n.slice(8,-1))return t.push.apply(t,r),e(t);if("Object"==n.slice(8,-1))return Object.assign(t,r)},exports.is=r,exports.unique=function(r){if(0==t(r)){let t=e(r);return console.log(t),t}return console.log(!1),!1},exports.first=function(e){if(0!=t(e))return console.log(!1),!1;if("[object Object]"===Object.prototype.toString.call(e))for(const t of e)return console.log(t),t;else console.log(e[0])},exports.last=function(e){if(0!=t(e))return console.log(!1),!1;if("[object Object]"===Object.prototype.toString.call(e))for(const t of e)console.log(t);else console.log(e[e.length-1])},exports.findByIndex=function(e,t,r){return(e||[]).findIndex((e=>e[t]===r))},exports.setObjData=function(e,t,r,n,o){try{return e.find((function(e){return e[t]==r}))[n]=o,!0}catch(e){return!1}},exports.selectObjData=function(e,t,r){try{return e.find((function(e){return e[t]==r}))}catch(e){return""}},exports.handleTree=function(e,t,r,n){const o={id:t||"id",parentId:r||"parentId",childrenList:n||"children"},s=new Map,c=new Map,i=[];let a=e.length;for(let t=0;t<a;t++){let r=e[t];const n=r[o.parentId];s.has(n)||s.set(n,[]),c.set(r[o.id],r),s.get(n).push(r)}for(let t=0;t<a;t++){let r=e[t];const n=r[o.parentId];c.has(n)||i.push(r)}const l=[...i];for(;l.length>0;){const e=l.pop(),t=s.get(e[o.id]);t&&(e[o.childrenList]=t,l.push(...t))}return i},exports.arrToTree=function(e,t={}){let{id:r="id",pKey:n="parentId",cKey:o="children",strict:s=!0,copy:c=!0}=t,i=[];i=c?JSON.parse(JSON.stringify(e)):e;return i.filter((e=>{const t=i.filter((t=>s?t[n]===e[r]:t[n]==e[r]));return t.length&&(e[o]=t),0===e[n]}))},exports.treeToArr=function(e,t={}){let r=[],{cKey:n="children",copy:o=!0}=t,s=[...e];for(;s.length;){let e=s.pop();if(e[n])if(s.push(...e[n]),o){let t={},o=Object.keys(e),s=o.length;for(let r=0;r<s;r++)o[r]!=n&&(t[o[r]]=e[o[r]]);r.push(t)}else r.push(e)}return r},exports.treeFor=function(e,r,n={}){let{cKey:o="children"}=n,s=[...e];for(;s.length;){let e=s.shift();t(e[o])?r&&r(e):s.push(...e[o])}},exports.treeStack=function(e,r,n={}){let{cKey:o="children"}=n,s=[...e];for(;s.length;){let e=s.shift();t(e[o])?r&&r(e):s.push(...e[o])}},exports.treeRecursion=function(e,t,r={}){},exports.treeFind=function(e,t={}){let r=[],{cKey:n="children",key:o="id",value:s,copy:c=!0}=t,i=[...e];for(;i.length;){let e=i.pop();if(e[n]&&i.push(...e[n]),e[o]==s)if(c){let t={},o=Object.keys(e),s=o.length;for(let r=0;r<s;r++)o[r]!=n&&(t[o[r]]=e[o[r]]);r.push(t)}else r.push(e)}return r},exports.base64Img=function(e,t){return r=function(e){for(var t=e.split(","),r=t[0].match(/:(.*?);/)[1],n=atob(t[1]),o=n.length,s=new Uint8Array(o);o--;)s[o]=n.charCodeAt(o);return new Blob([s],{type:r})}(e),n=t,new File([r],n);var r,n},exports.compareDate=function(e,t="up"){return function(r,n){return"up"==t?Date.parse(r[e])-Date.parse(n[e]):Date.parse(n[e])-Date.parse(r[e])}},exports.compare=function(e,t="up"){return function(r,n){return"up"==t?r[e]-n[e]:n[e]-r[e]}},exports.numberRepair=function(e="",t=2,r="0",n=!1){let o="",s=(""+e).length;if(s>t&&1==n)return s;{let n=t-s;if(n>0)for(let e=0;e<n;e++)o+=r;return(o+e).slice(-1*t)}},exports.isMobile=n,exports.setMeta=function(e){if(!t(e)){let t=[];document.head.childNodes.forEach((r=>{switch(r.tagName){case"META":t.push(r);break;case"TITLE":document.title=e.title||"模板测试"}}));const r=document.createElement("META");let o=1,s="yes";e.cZoom&&(n()?e.cZoom.mobile&&(o=e.cZoom.mobile):e.cZoom.pc&&(o=e.cZoom.pc),e.cZoom.isScale&&(s=e.cZoom.isScale));let c=`width=device-width,minimum-scale=${o},initial-scale=${o},user-scalable=${s}`;"no"==s&&(c+=`,maximum-scale=${o}`);const i=[{charset:"utf-8"},{name:"viewport",content:c}],a=document.createDocumentFragment();i.forEach((e=>{a.append(r.cloneNode()),Object.entries(e).forEach((e=>{a.lastChild.setAttribute(e[0],e[1])}))})),t.forEach((e=>{document.head.removeChild(e)})),document.head.prepend(a)}},exports.colorMix=function(e,t,r){r=Math.max(Math.min(Number(r),1),0);let n=parseInt(e.substring(1,3),16),o=parseInt(e.substring(3,5),16),s=parseInt(e.substring(5,7),16),c=parseInt(t.substring(1,3),16),i=parseInt(t.substring(3,5),16),a=parseInt(t.substring(5,7),16),l=Math.round(n*(1-r)+c*r),u=Math.round(o*(1-r)+i*r),p=Math.round(s*(1-r)+a*r);return l=("0"+(l||0).toString(16)).slice(-2),u=("0"+(u||0).toString(16)).slice(-2),p=("0"+(p||0).toString(16)).slice(-2),"#"+l+u+p},exports.sArrMove=function(e,t,r){e.splice(r,0,e.splice(t,1)[0])},exports.rArrMove=function(e,t,r){let n=[].concat(e);return n.splice(r,0,n.splice(t,1)[0]),n},exports.arrSet=function(e,t,r){e.splice(t,0,r)},exports.randomColor=function(){let e=o(100,255),t=o(100,255),r=o(100,255);return"rgba("+e+","+t+","+r+",1)"},exports.randomNumber=o,exports.isDateInRange=function(e,t,r){const n=new Date(e),o=new Date(t),s=new Date(r);return n>=o&&n<=s},exports.throttle1=function(e,t){let r,n=0;return function(...o){const s=Date.now(),c=s-n;clearTimeout(r),c>=t?(e(...o),n=s):r=setTimeout((()=>{e(...o),n=Date.now()}),t-c)}},exports.throttle=function(e,t=1e3,r=!0){let n;const o=(...o)=>{n&&clearInterval(n),r?(n||e(...o),n=setTimeout((function(){n=null}),t)):n=setTimeout((()=>{e(...o)}),t)};return o.cancel=()=>{n&&(clearTimeout(n),n=null)},o},exports.debounce=function(e,t){let r;const n=function(...n){clearTimeout(r),r=setTimeout((()=>{e(...n)}),t)};return n.cancel=()=>{r&&(clearTimeout(r),r=null)},n},exports.arrayGroup=function(e,t="type"){return e.reduce(((e,r)=>{var n;return Object.assign(Object.assign({},e),{[r[t]]:[...null!==(n=e[r[t]])&&void 0!==n?n:[],r]})}),{})},exports.numberFixed=function(e,t=1){const r=e.toString(),n=r.indexOf(".");if(-1===n)return e;const o=r.slice(0,n+1+t);return parseFloat(o)},exports.delObj=function(e,n=""){try{if(t(n)){let t=Object.keys(e);for(let r of t)delete e[r]}else if("Array"==r(n))for(const t of n)delete e[t];else delete e[n]}catch(e){}},exports.delObjEmptyKey=function(e){try{let n=Object.keys(e);for(let o of n)"Number"!=r(e[o])&&t(e[o])&&delete e[o]}catch(e){}},exports.isNum=s,exports.pxToRem=function(e,t=37.5){let r=e;if(s(e)||-1!=e.indexOf("px")){r=(parseFloat(e)/t).toFixed(2)+"rem"}return r},exports.inArr=c,exports.fnRuntime=function(e,t=1){let r=0;for(let n=0;n<t;n++){const t=performance.now();e();r+=performance.now()-t}const n=r/t;console.log(`平均执行时间 ${t} 次数: ${n.toFixed(6)} ms`)},exports.objToFormData=function(e,t=!0){let n=new FormData;return function e(o,s="",c={}){let{level:i=0,pk:a="",type:l=""}=c,u=r(o);if(-1==["Array","Object"].indexOf(u)){if(null!=o){let e=s;t&&2==i&&"Array"==l&&(e=a),n.append(e,o)}}else if("Array"==u){let t=o.length;for(let r=0;r<t;r++){let t=`${s}[${r}]`,n={level:i+1,type:"Array",pk:s};e(o[r],t,n)}}else if("Object"==u){let t=Object.keys(o),r={level:i+1,type:"Object",pk:s};for(const n of t)e(o[n],`${s}${""==s?"":"."}${n}`,r)}}(e),n},exports.formatSize=function(e,t={}){if(0===e)return"0 Bytes";let{decimals:r=2,sizes:n=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],perUnit:o=1024}=t;const s=r<0?0:r,c=Math.floor(Math.log(e)/Math.log(o));return parseFloat((e/Math.pow(o,c)).toFixed(s))+" "+n[c]},exports.arrToAryTree=function(e,t={}){let{idKey:r="id",pidKey:n="pid",rKey:o="rgt",lKey:s="lft",levelKey:c="level"}=t;const i={},a={};let l=e.length;for(let t=0;t<l;t++){let o=e[t],s=o[n],c=o[r];i[c]=Object.assign({},o),a[s]||(a[s]=[]),a[s].push(c)}const u=Object.keys(a),p=Object.keys(i),f=new Set(p);let d=[];u.filter((e=>{f.has(e)||d.push(...a[e])}));let h=1;const m=[],g=[];for(let e=d.length-1;e>=0;e--)m.push({[r]:d[e],[c]:1,processed:!1});for(;m.length>0;){const e=m.pop(),t=i[e[r]];if(e.processed)t[o]=h++,g.push(t);else if(t[s]=h++,t[c]=e[c],m.push({[r]:e[r],[c]:e[c],processed:!0}),a[e[r]])for(let t=a[e[r]].length-1;t>=0;t--)m.push({[r]:a[e[r]][t],[c]:e[c]+1,processed:!1})}return g},exports.mergeObj=function(e,t={}){let{callback:n=null,callType:o="",afterBack:s=null}=t,c={};function i(e,t){let c=Object.keys(e);for(const a of c){let c=r(e[a]);n&&c==o?t[a]=n(e,a):"Object"===c?(t[a]||(t[a]={}),i(e[a],t[a])):t[a]=e[a],s&&s(t,a)}}for(const t of e)i(t,c);return c},Number.prototype.repair=function(e=2){let t="";for(let r=1;r<e;r++)t+="0";return(t+this).slice(-1*e)};exports.memoize=(e,t={})=>{const{context:r=null,ttl:n=0}=t,o=new Map,s=e=>{if("object"==typeof e&&null!==e){if(Array.isArray(e))return`[${e.map(s).join(",")}]`;return`{${Object.keys(e).sort().map((t=>`${t}:${s(e[t])}`)).join(",")}}`}return String(e)};return(...t)=>{const c=s(t),i=o.get(c);if(i&&(0===n||Date.now()-i.timestamp<=n))return i.value;const a=r?e.apply(r,t):e(...t);return o.set(c,{value:a,timestamp:Date.now()}),a}};
|
package/lib/request.d.ts
CHANGED
|
@@ -1,32 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 请求配置接口
|
|
3
|
+
*/
|
|
1
4
|
interface conf {
|
|
5
|
+
/** 请求的基础URL前缀 */
|
|
2
6
|
baseUrl?: string;
|
|
7
|
+
/** 请求超时时间,单位毫秒,默认6000ms */
|
|
3
8
|
timeout?: number;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
9
|
+
/** 请求成功后的回调函数,可以处理响应数据 */
|
|
10
|
+
callback?: (response: Response) => Promise<any> | any;
|
|
11
|
+
/** 请求失败时的错误处理回调函数 */
|
|
12
|
+
errBack?: (error: Error) => void;
|
|
13
|
+
/** 获取AbortController实例的回调,用于手动中断请求 */
|
|
14
|
+
abController?: (controller: AbortController) => void;
|
|
15
|
+
/** 请求发送前的预处理回调,可以修改请求选项 */
|
|
16
|
+
beforeBack?: (options: any) => void;
|
|
8
17
|
}
|
|
9
|
-
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* cache: "no-cache"
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* referrerPolicy: "no-referrer"
|
|
24
|
-
* 这个设置控制请求的引用来源信息(Referrer)的处理方式。no-referrer 表示不发送任何引用来源信息。其他常见的选项有:
|
|
25
|
-
* no-referrer-when-downgrade(只有在从 HTTPS 到 HTTP 的情况下才不发送引用信息)
|
|
26
|
-
* origin(仅发送源信息)
|
|
27
|
-
* strict-origin(仅在 HTTPS 请求中发送完整的引用信息)
|
|
28
|
-
* body: JSON.stringify(data)
|
|
29
|
-
* 请求的主体内容。我们将 data 对象转化为 JSON 字符串发送到服务器。body 是 POST 请求的主要部分,用来发送需要提交的数据。在这里,我们通过 JSON.stringify(data) 将 JavaScript 对象转换为 JSON 字符串。
|
|
18
|
+
/**
|
|
19
|
+
* Fetch请求客户端类
|
|
20
|
+
* @description 基于fetch API的HTTP请求封装,支持超时、拦截器、错误处理等功能
|
|
21
|
+
* 支持的fetch配置项:
|
|
22
|
+
* - method: HTTP请求方法 (GET, POST, PUT, DELETE等)
|
|
23
|
+
* - mode: 跨域策略 ("cors", "same-origin", "no-cors")
|
|
24
|
+
* - cache: 缓存策略 ("no-cache", "default", "reload", "force-cache")
|
|
25
|
+
* - credentials: 凭证策略 ("same-origin", "include", "omit")
|
|
26
|
+
* - headers: 请求头,如 {"Content-Type": "application/json"}
|
|
27
|
+
* - redirect: 重定向处理 ("follow", "manual", "error")
|
|
28
|
+
* - referrerPolicy: 引用策略 ("no-referrer", "origin", "strict-origin")
|
|
29
|
+
* - body: 请求体,通常使用 JSON.stringify(data) 转换对象
|
|
30
|
+
* @author DJ
|
|
31
|
+
* @since 2025/3/31
|
|
30
32
|
*/
|
|
31
33
|
export default class {
|
|
32
34
|
options: any;
|