@base-web-kits/base-tools-web 1.1.18-alpha.1 → 1.2.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/async/index.d.ts +4 -0
- package/dist/async/index.d.ts.map +1 -1
- package/dist/base-tools-web.umd.global.js +19 -7
- package/dist/base-tools-web.umd.global.js.map +1 -1
- package/dist/index.cjs +19 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +19 -7
- package/dist/index.js.map +1 -1
- package/dist/network/request.d.ts +2 -2
- package/dist/network/request.d.ts.map +1 -1
- package/dist/storage/index.d.ts +1 -3
- package/dist/storage/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/web/async/index.ts +30 -4
- package/src/web/network/request.ts +8 -4
- package/src/web/storage/index.ts +1 -3
|
@@ -45,8 +45,8 @@ export type RequestConfigBase<D extends RequestData = RequestData> = {
|
|
|
45
45
|
toastError?: boolean;
|
|
46
46
|
/** 是否输出日志 (默认true) */
|
|
47
47
|
isLog?: boolean;
|
|
48
|
-
/**
|
|
49
|
-
|
|
48
|
+
/** 成功和失败时,额外输出的日志数据 (可覆盖内部log参数,如'name') */
|
|
49
|
+
logExtra?: Record<string, unknown>;
|
|
50
50
|
/** 响应数据的缓存时间, 单位毫秒。仅在成功时缓存;仅缓存在内存,应用退出,缓存消失。(默认0,不开启缓存) */
|
|
51
51
|
cacheTime?: number;
|
|
52
52
|
/** 是否开启流式传输 (如 SSE) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/web/network/request.ts"],"names":[],"mappings":"AAUA,aAAa;AACb,MAAM,MAAM,aAAa,GACrB,KAAK,GACL,MAAM,GACN,KAAK,GACL,QAAQ,GACR,SAAS,GACT,MAAM,GACN,SAAS,GACT,OAAO,GACP,OAAO,CAAC;AAEZ;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,WAAW,GACX,eAAe,GACf,IAAI,GACJ,QAAQ,GACR,eAAe,GACf,cAAc,CAAC,UAAU,CAAC,GAC1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,OAAO,EAAE,GACT,IAAI,CAAC;AAET;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC;AAEpG;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/F;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAAI;IACnE,WAAW;IACX,GAAG,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/web/network/request.ts"],"names":[],"mappings":"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"}
|
package/dist/storage/index.d.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 写入 localStorage(自动 JSON 序列化)
|
|
3
|
-
* 当 `value` 为 `null` 或 `undefined` 时,会移除该键。
|
|
4
|
-
* 支持保存:对象、数组、字符串、数字、布尔值。
|
|
5
3
|
* @param key 键名
|
|
6
|
-
* @param value
|
|
4
|
+
* @param value 任意可序列化的值:对象、数组、字符串、数字、布尔值。(`null` 或 `undefined` 会自动移除该键)
|
|
7
5
|
* @param days 过期天数(从当前时间起算)
|
|
8
6
|
* @example
|
|
9
7
|
* setLocalStorage('user', { id: 1, name: 'Alice' }); // 对象
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/web/storage/index.ts"],"names":[],"mappings":"AAMA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/web/storage/index.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,QAiBzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAiBlE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,QAE7C"}
|
package/package.json
CHANGED
package/src/web/async/index.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { cloneDeep } from '@base-web-kits/base-tools-ts';
|
|
1
2
|
import { getBaseToolsConfig } from '../index';
|
|
3
|
+
import type { AppLogInfo } from '../index';
|
|
2
4
|
|
|
3
5
|
type WebApi<Option = any, Res = any, Config = any> = (
|
|
4
6
|
option: Option,
|
|
@@ -20,6 +22,12 @@ export type WebApiConfig<Res = any, Err = any> = {
|
|
|
20
22
|
|
|
21
23
|
/** 是否显示日志, 默认 true */
|
|
22
24
|
showLog?: boolean;
|
|
25
|
+
|
|
26
|
+
/** 处理成功res, 如解密操作 (返回值在成功日志中输出'resFilter'字段) */
|
|
27
|
+
resFilter?: (res: Res) => Res;
|
|
28
|
+
|
|
29
|
+
/** 成功和失败时,额外输出的日志数据 (可覆盖内部log参数,如'name') */
|
|
30
|
+
logExtra?: Record<string, unknown>;
|
|
23
31
|
};
|
|
24
32
|
|
|
25
33
|
/**
|
|
@@ -42,7 +50,10 @@ export function enhanceWebApi<Option = any, Res = any, Err = any, Config = any>(
|
|
|
42
50
|
toastSuccess = false,
|
|
43
51
|
toastError = true,
|
|
44
52
|
showLog = true,
|
|
53
|
+
resFilter,
|
|
54
|
+
logExtra,
|
|
45
55
|
} = finalConfig;
|
|
56
|
+
|
|
46
57
|
const {
|
|
47
58
|
log,
|
|
48
59
|
toast,
|
|
@@ -60,15 +71,30 @@ export function enhanceWebApi<Option = any, Res = any, Err = any, Config = any>(
|
|
|
60
71
|
webApi(option, finalConfig)
|
|
61
72
|
.then((res) => {
|
|
62
73
|
if (showLoading) hideLoadingFn?.();
|
|
63
|
-
if (showLog) log?.('info', { name: fname, status: 'success', option, res });
|
|
64
|
-
resolve(res);
|
|
65
74
|
|
|
66
|
-
const
|
|
75
|
+
const finalRes = resFilter ? resFilter(res) : res;
|
|
76
|
+
|
|
77
|
+
if (showLog) {
|
|
78
|
+
const logData: AppLogInfo = { name: fname, status: 'success', option, ...logExtra };
|
|
79
|
+
|
|
80
|
+
if (resFilter) {
|
|
81
|
+
logData.res = res; // 输出原始数据
|
|
82
|
+
logData.resFilter = cloneDeep(finalRes); // 深拷贝处理后数据,避免外部修改对象,造成输出不一致
|
|
83
|
+
} else {
|
|
84
|
+
logData.res = cloneDeep(res); // 深拷贝原始数据,避免外部修改对象,造成输出不一致
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
log?.('info', logData);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
resolve(finalRes);
|
|
91
|
+
|
|
92
|
+
const msg = typeof toastSuccess === 'function' ? toastSuccess(finalRes) : toastSuccess;
|
|
67
93
|
if (msg) toast?.({ msg, status: 'success' });
|
|
68
94
|
})
|
|
69
95
|
.catch((e) => {
|
|
70
96
|
if (showLoading) hideLoadingFn?.();
|
|
71
|
-
if (showLog) log?.('error', { name: fname, status: 'fail', option, e });
|
|
97
|
+
if (showLog) log?.('error', { name: fname, status: 'fail', option, e, ...logExtra });
|
|
72
98
|
|
|
73
99
|
const msg = typeof toastError === 'function' ? toastError(e) : toastError;
|
|
74
100
|
if (msg) {
|
|
@@ -52,12 +52,16 @@ export type RequestConfig<D extends RequestData = RequestData> = Partial<Request
|
|
|
52
52
|
export type RequestConfigBase<D extends RequestData = RequestData> = {
|
|
53
53
|
/** 接口地址 */
|
|
54
54
|
url: string;
|
|
55
|
+
|
|
55
56
|
/** 请求方法 */
|
|
56
57
|
method?: RequestMethod;
|
|
58
|
+
|
|
57
59
|
/** 请求头(会自动过滤undefined, null, "";不过滤0和false; 数字和布尔值会自动转换为字符串) */
|
|
58
60
|
header?: Record<string, string | number | boolean | null | undefined>;
|
|
61
|
+
|
|
59
62
|
/** 请求参数 */
|
|
60
63
|
data?: D;
|
|
64
|
+
|
|
61
65
|
/** 超时时间 (毫秒), 默认 60000 */
|
|
62
66
|
timeout?: number;
|
|
63
67
|
|
|
@@ -88,8 +92,8 @@ export type RequestConfigBase<D extends RequestData = RequestData> = {
|
|
|
88
92
|
/** 是否输出日志 (默认true) */
|
|
89
93
|
isLog?: boolean;
|
|
90
94
|
|
|
91
|
-
/**
|
|
92
|
-
|
|
95
|
+
/** 成功和失败时,额外输出的日志数据 (可覆盖内部log参数,如'name') */
|
|
96
|
+
logExtra?: Record<string, unknown>;
|
|
93
97
|
|
|
94
98
|
/** 响应数据的缓存时间, 单位毫秒。仅在成功时缓存;仅缓存在内存,应用退出,缓存消失。(默认0,不开启缓存) */
|
|
95
99
|
cacheTime?: number;
|
|
@@ -444,7 +448,7 @@ function logRequestInfo(options: {
|
|
|
444
448
|
if (!log || !isLog) return;
|
|
445
449
|
|
|
446
450
|
const { config, res, fromCache = false, startTime, status, e } = options;
|
|
447
|
-
const { url, data, header, method,
|
|
451
|
+
const { url, data, header, method, logExtra } = config;
|
|
448
452
|
const endTime = Date.now();
|
|
449
453
|
const fmt = 'YYYY-MM-DD HH:mm:ss.SSS';
|
|
450
454
|
|
|
@@ -459,7 +463,7 @@ function logRequestInfo(options: {
|
|
|
459
463
|
startTime: toDayjs(startTime).format(fmt),
|
|
460
464
|
endTime: toDayjs(endTime).format(fmt),
|
|
461
465
|
duration: endTime - startTime,
|
|
462
|
-
...
|
|
466
|
+
...logExtra,
|
|
463
467
|
};
|
|
464
468
|
|
|
465
469
|
if (status === 'success') {
|
package/src/web/storage/index.ts
CHANGED
|
@@ -6,10 +6,8 @@ const WK = {
|
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* 写入 localStorage(自动 JSON 序列化)
|
|
9
|
-
* 当 `value` 为 `null` 或 `undefined` 时,会移除该键。
|
|
10
|
-
* 支持保存:对象、数组、字符串、数字、布尔值。
|
|
11
9
|
* @param key 键名
|
|
12
|
-
* @param value
|
|
10
|
+
* @param value 任意可序列化的值:对象、数组、字符串、数字、布尔值。(`null` 或 `undefined` 会自动移除该键)
|
|
13
11
|
* @param days 过期天数(从当前时间起算)
|
|
14
12
|
* @example
|
|
15
13
|
* setLocalStorage('user', { id: 1, name: 'Alice' }); // 对象
|