@ibiz-template/core 0.6.0 → 0.6.1-dev.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.
- package/package.json +3 -4
- package/src/command/command-register.ts +0 -135
- package/src/command/command.ts +0 -79
- package/src/command/index.ts +0 -11
- package/src/command/interface/command/command-option.ts +0 -22
- package/src/command/interface/command/command.ts +0 -86
- package/src/command/interface/disposable/disposable.ts +0 -3
- package/src/command/interface/index.ts +0 -9
- package/src/command/utils/index.ts +0 -2
- package/src/command/utils/linked-list.ts +0 -136
- package/src/command/utils/util.ts +0 -95
- package/src/constant/core/core.ts +0 -63
- package/src/constant/http-status-message/http-status-message.ts +0 -20
- package/src/constant/index.ts +0 -5
- package/src/constant/login-mode/login-mode.ts +0 -23
- package/src/constant/menu-permission-mode/menu-permission-mode.ts +0 -23
- package/src/constant/util/util.ts +0 -5
- package/src/context/index.ts +0 -231
- package/src/environment/environment.ts +0 -39
- package/src/error/http-error/http-error.ts +0 -45
- package/src/error/index.ts +0 -5
- package/src/error/model-error/model-error.ts +0 -26
- package/src/error/notice-error/notice-error.ts +0 -19
- package/src/error/runtime-error/runtime-error.ts +0 -16
- package/src/error/runtime-model-error/runtime-model-error.ts +0 -27
- package/src/ibizsys.ts +0 -78
- package/src/index.ts +0 -14
- package/src/install.ts +0 -15
- package/src/interface/click-outside/click-outside.ts +0 -71
- package/src/interface/i-18n/i-18n.ts +0 -68
- package/src/interface/i-chat-message/i-chat-message.ts +0 -83
- package/src/interface/i-devtool-config/i-devtool-config.ts +0 -16
- package/src/interface/i-environment/i-environment.ts +0 -289
- package/src/interface/i-internal-message/i-internal-message.ts +0 -151
- package/src/interface/i-mark-open-data/i-mark-open-data.ts +0 -39
- package/src/interface/i-portal-async-action/i-portal-async-action.ts +0 -177
- package/src/interface/i-portal-message/i-portal-message.ts +0 -84
- package/src/interface/index.ts +0 -14
- package/src/interface/org-data/org-data.ts +0 -42
- package/src/params/params.ts +0 -134
- package/src/types.ts +0 -110
- package/src/utils/bit-mask/bit-mask.ts +0 -85
- package/src/utils/click-outside/click-outside.ts +0 -110
- package/src/utils/clone/clone.ts +0 -43
- package/src/utils/color/color.ts +0 -84
- package/src/utils/data-type/data-types.ts +0 -99
- package/src/utils/download-file/download-file.ts +0 -109
- package/src/utils/event/event.ts +0 -77
- package/src/utils/history-list/history-item.ts +0 -45
- package/src/utils/history-list/history-list.ts +0 -151
- package/src/utils/index.ts +0 -24
- package/src/utils/interceptor/core-interceptor.ts +0 -40
- package/src/utils/interceptor/index.ts +0 -2
- package/src/utils/interceptor/interceptor.ts +0 -126
- package/src/utils/logger/logger.ts +0 -10
- package/src/utils/message-center/base/message-all.ts +0 -12
- package/src/utils/message-center/base/message-base.ts +0 -86
- package/src/utils/message-center/command/async-action/command-async-action.ts +0 -24
- package/src/utils/message-center/command/change/command-change.ts +0 -12
- package/src/utils/message-center/command/command-base/command-base.ts +0 -30
- package/src/utils/message-center/command/create/command-create.ts +0 -24
- package/src/utils/message-center/command/internal-message/command-internal-message.ts +0 -24
- package/src/utils/message-center/command/mark-open-data/command-mark-open-data.ts +0 -24
- package/src/utils/message-center/command/message-command.ts +0 -158
- package/src/utils/message-center/command/remove/command-remove.ts +0 -24
- package/src/utils/message-center/command/update/command-update.ts +0 -24
- package/src/utils/message-center/console/message-console.ts +0 -31
- package/src/utils/message-center/index.ts +0 -1
- package/src/utils/message-center/interface/i-app-data-entity.ts +0 -19
- package/src/utils/message-center/interface/index.ts +0 -1
- package/src/utils/message-center/message-center.ts +0 -82
- package/src/utils/namespace/namespace.ts +0 -247
- package/src/utils/net/http-response.ts +0 -106
- package/src/utils/net/net.ts +0 -469
- package/src/utils/recursive/find-recursive-child.ts +0 -133
- package/src/utils/string-util/string-util.ts +0 -60
- package/src/utils/style/remote-style.ts +0 -20
- package/src/utils/sync/await-timeout.ts +0 -27
- package/src/utils/sync/count-latch.ts +0 -95
- package/src/utils/sync/index.ts +0 -2
- package/src/utils/types/types.ts +0 -22
- package/src/utils/upload/select-file.ts +0 -86
- package/src/utils/upload/upload-file.ts +0 -208
- package/src/utils/url-helper/url-helper.ts +0 -63
- package/src/utils/util/util.ts +0 -376
package/src/utils/util/util.ts
DELETED
|
@@ -1,376 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { debounce } from 'lodash-es';
|
|
3
|
-
import { getCookie } from 'qx-util';
|
|
4
|
-
import { isNotNil, isNil } from 'ramda';
|
|
5
|
-
import { CoreConst } from '../../constant';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* 获取认证令牌
|
|
9
|
-
*
|
|
10
|
-
* @author chitanda
|
|
11
|
-
* @date 2022-07-20 18:07:39
|
|
12
|
-
* @export
|
|
13
|
-
* @return {*} {(string | null)}
|
|
14
|
-
*/
|
|
15
|
-
export function getToken(): string | null {
|
|
16
|
-
return getCookie(CoreConst.TOKEN);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* 判断两个数组是否有相同的元素
|
|
21
|
-
*
|
|
22
|
-
* @author lxm
|
|
23
|
-
* @date 2022-09-20 19:09:29
|
|
24
|
-
* @export
|
|
25
|
-
* @param {any[]} arr1
|
|
26
|
-
* @param {any[]} arr2
|
|
27
|
-
* @returns {*} {boolean}
|
|
28
|
-
*/
|
|
29
|
-
export function isOverlap(arr1: any[], arr2: any[]): boolean {
|
|
30
|
-
const newArr = Array.from(new Set([...arr1, ...arr2]));
|
|
31
|
-
return newArr.length !== arr1.length + arr2.length;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* 是否元素相同
|
|
36
|
-
* @author lxm
|
|
37
|
-
* @date 2023-05-22 12:50:53
|
|
38
|
-
* @export
|
|
39
|
-
* @param {any[]} arr1
|
|
40
|
-
* @param {any[]} arr2
|
|
41
|
-
* @param {string} [field] 比较元素里的某个固定属性
|
|
42
|
-
* @return {*} {boolean}
|
|
43
|
-
*/
|
|
44
|
-
export function isElementSame(
|
|
45
|
-
arr1: any[],
|
|
46
|
-
arr2: any[],
|
|
47
|
-
field?: string,
|
|
48
|
-
): boolean {
|
|
49
|
-
if (arr1.length !== arr2.length) {
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
const allElements = field
|
|
53
|
-
? [...arr1.map(item => item[field]), ...arr2.map(item => item[field])]
|
|
54
|
-
: [...arr1, ...arr2];
|
|
55
|
-
|
|
56
|
-
const newArr = Array.from(new Set(allElements));
|
|
57
|
-
return newArr.length === arr1.length;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* 防抖并合并每次的参数,
|
|
62
|
-
* 最后一次才会执行
|
|
63
|
-
*
|
|
64
|
-
* @author lxm
|
|
65
|
-
* @date 2022-09-20 21:09:53
|
|
66
|
-
* @export
|
|
67
|
-
* @template T
|
|
68
|
-
* @param {T} func 要防抖的函数
|
|
69
|
-
* @param {(
|
|
70
|
-
* oldParams: Parameters<T>,
|
|
71
|
-
* newParams: Parameters<T>,
|
|
72
|
-
* ) => Parameters<T>} mergeFunc 合并的回调函数
|
|
73
|
-
* @param {number} [wait] 防抖的延迟毫秒数
|
|
74
|
-
* @returns {*}
|
|
75
|
-
*/
|
|
76
|
-
export function debounceAndMerge<T extends (...args: any[]) => any>(
|
|
77
|
-
func: T,
|
|
78
|
-
mergeFunc: (
|
|
79
|
-
oldParams: Parameters<T>,
|
|
80
|
-
newParams: Parameters<T>,
|
|
81
|
-
) => Parameters<T>,
|
|
82
|
-
wait?: number,
|
|
83
|
-
): (...args: Parameters<T>) => any {
|
|
84
|
-
// 缓存上一次的函数参数
|
|
85
|
-
let oldParams: Parameters<T> | undefined;
|
|
86
|
-
const debounceFunc = debounce((...params: Parameters<T>) => {
|
|
87
|
-
// 防抖函数执行的时候清空缓存参数
|
|
88
|
-
oldParams = undefined;
|
|
89
|
-
return func(...params);
|
|
90
|
-
}, wait);
|
|
91
|
-
return (...args: Parameters<T>) => {
|
|
92
|
-
// 合并参数,并把参数缓存到oldParams里,用新参数调用防抖函数
|
|
93
|
-
let newParams = args;
|
|
94
|
-
if (oldParams) {
|
|
95
|
-
newParams = mergeFunc(oldParams, newParams);
|
|
96
|
-
}
|
|
97
|
-
oldParams = newParams;
|
|
98
|
-
return debounceFunc(...newParams);
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* 防抖并合并每次的参数,最后一次才会执行
|
|
104
|
-
* 绑定方法为异步方法,给每次调用返回最终执行那次的结果
|
|
105
|
-
*
|
|
106
|
-
* @author lxm
|
|
107
|
-
* @date 2022-09-20 21:09:53
|
|
108
|
-
* @export
|
|
109
|
-
* @template T
|
|
110
|
-
* @param {T} func 要防抖的函数
|
|
111
|
-
* @param {(
|
|
112
|
-
* oldParams: Parameters<T>,
|
|
113
|
-
* newParams: Parameters<T>,
|
|
114
|
-
* ) => Parameters<T>} mergeFunc 合并的回调函数
|
|
115
|
-
* @param {number} [wait] 防抖的延迟毫秒数
|
|
116
|
-
* @returns {*}
|
|
117
|
-
*/
|
|
118
|
-
export function debounceAndAsyncMerge<
|
|
119
|
-
T extends (...args: any[]) => Promise<any>,
|
|
120
|
-
>(
|
|
121
|
-
func: T,
|
|
122
|
-
mergeFunc: (
|
|
123
|
-
oldParams: Parameters<T>,
|
|
124
|
-
newParams: Parameters<T>,
|
|
125
|
-
) => Parameters<T>,
|
|
126
|
-
wait?: number,
|
|
127
|
-
): T {
|
|
128
|
-
// 缓存上一次的函数参数
|
|
129
|
-
let oldParams: Parameters<T> | undefined;
|
|
130
|
-
let promises: Array<{ resolve: any; reject: any }> = [];
|
|
131
|
-
const debounceFunc = debounce(async (...params: Parameters<T>) => {
|
|
132
|
-
// 防抖函数执行的时候清空缓存参数
|
|
133
|
-
oldParams = undefined;
|
|
134
|
-
try {
|
|
135
|
-
const result = await func(...params);
|
|
136
|
-
promises.forEach(promise => {
|
|
137
|
-
promise.resolve(result);
|
|
138
|
-
});
|
|
139
|
-
promises = [];
|
|
140
|
-
return result;
|
|
141
|
-
} catch (error) {
|
|
142
|
-
promises.forEach(promise => {
|
|
143
|
-
promise.reject(error);
|
|
144
|
-
});
|
|
145
|
-
promises = [];
|
|
146
|
-
}
|
|
147
|
-
}, wait);
|
|
148
|
-
const fun = async (...args: Parameters<T>): Promise<unknown> => {
|
|
149
|
-
// 合并参数,并把参数缓存到oldParams里,用新参数调用防抖函数
|
|
150
|
-
let newParams = args;
|
|
151
|
-
if (oldParams) {
|
|
152
|
-
newParams = mergeFunc(oldParams, newParams);
|
|
153
|
-
}
|
|
154
|
-
oldParams = newParams;
|
|
155
|
-
// 执行防抖函数
|
|
156
|
-
debounceFunc(...newParams);
|
|
157
|
-
return new Promise((resolve, reject) => {
|
|
158
|
-
// 阻塞当前调用,当防抖函数被执行后返回
|
|
159
|
-
promises.push({ resolve, reject });
|
|
160
|
-
});
|
|
161
|
-
};
|
|
162
|
-
return fun as T;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* 把右侧的对象里非空的属性合并到左侧对象里
|
|
167
|
-
* @author lxm
|
|
168
|
-
* @date 2023-05-16 02:23:39
|
|
169
|
-
* @param {IData} l
|
|
170
|
-
* @param {IData} r
|
|
171
|
-
*/
|
|
172
|
-
export function mergeInLeft(l: IData, r: IData): void {
|
|
173
|
-
Object.keys(r).forEach(key => {
|
|
174
|
-
if (isNotNil(r[key])) {
|
|
175
|
-
l[key] = r[key];
|
|
176
|
-
}
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* 把右侧的对象里非空的属性合并到左侧对象属性为空里
|
|
182
|
-
*
|
|
183
|
-
* @author zk
|
|
184
|
-
* @date 2023-06-01 02:06:36
|
|
185
|
-
* @export
|
|
186
|
-
* @param {IData} l
|
|
187
|
-
* @param {IData} r
|
|
188
|
-
*/
|
|
189
|
-
export function mergeDefaultInLeft(l: IData, r: IData): void {
|
|
190
|
-
Object.keys(r).forEach(key => {
|
|
191
|
-
if (isNotNil(r[key]) && isNil(l[key])) {
|
|
192
|
-
l[key] = r[key];
|
|
193
|
-
}
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* 比较两个数组集合,找出相同和不同的元素
|
|
199
|
-
* @author lxm
|
|
200
|
-
* @date 2023-05-29 12:33:55
|
|
201
|
-
* @export
|
|
202
|
-
* @param {IData[]} arr1 数组一
|
|
203
|
-
* @param {IData[]} arr2 数组二
|
|
204
|
-
* @param {string} [keyField] 主键属性,有主键比较主键
|
|
205
|
-
* @return {*} {{
|
|
206
|
-
* more: IData[]; arr1多的元素
|
|
207
|
-
* less: IData[]; arr1少的元素
|
|
208
|
-
* same: IData[]; 相同的元素
|
|
209
|
-
* }}
|
|
210
|
-
*/
|
|
211
|
-
export function compareArr(
|
|
212
|
-
arr1: IData[],
|
|
213
|
-
arr2: IData[],
|
|
214
|
-
keyField?: string,
|
|
215
|
-
): {
|
|
216
|
-
more: IData[];
|
|
217
|
-
less: IData[];
|
|
218
|
-
same: IData[];
|
|
219
|
-
} {
|
|
220
|
-
const all = new Set([...arr1, ...arr2]);
|
|
221
|
-
const more: IData[] = [];
|
|
222
|
-
const less: IData[] = [];
|
|
223
|
-
const same: IData[] = [];
|
|
224
|
-
|
|
225
|
-
if (keyField) {
|
|
226
|
-
const arr1Keys = arr1.map(item => item[keyField]);
|
|
227
|
-
const arr2Keys = arr2.map(item => item[keyField]);
|
|
228
|
-
all.forEach(item => {
|
|
229
|
-
if (!arr1Keys.includes(item[keyField])) {
|
|
230
|
-
less.push(item);
|
|
231
|
-
return;
|
|
232
|
-
}
|
|
233
|
-
if (!arr2Keys.includes(item[keyField])) {
|
|
234
|
-
more.push(item);
|
|
235
|
-
return;
|
|
236
|
-
}
|
|
237
|
-
same.push(item);
|
|
238
|
-
});
|
|
239
|
-
} else {
|
|
240
|
-
all.forEach(item => {
|
|
241
|
-
if (!arr1.includes(item)) {
|
|
242
|
-
less.push(item);
|
|
243
|
-
return;
|
|
244
|
-
}
|
|
245
|
-
if (!arr2.includes(item)) {
|
|
246
|
-
more.push(item);
|
|
247
|
-
return;
|
|
248
|
-
}
|
|
249
|
-
same.push(item);
|
|
250
|
-
});
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
return {
|
|
254
|
-
more,
|
|
255
|
-
less,
|
|
256
|
-
same,
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
/**
|
|
261
|
-
* 转换为数字或undefined
|
|
262
|
-
* - 如果是undefined或null 返回undefined
|
|
263
|
-
* - 其他情况转成数字,能转成数字的返回数字,NaN的返回undefined
|
|
264
|
-
* @author lxm
|
|
265
|
-
* @date 2023-06-08 06:30:57
|
|
266
|
-
* @param {unknown} value 值
|
|
267
|
-
* @return {*} {(number | undefined)}
|
|
268
|
-
*/
|
|
269
|
-
export function toNumberOrNil(value: unknown): number | undefined {
|
|
270
|
-
if (isNil(value)) {
|
|
271
|
-
return undefined;
|
|
272
|
-
}
|
|
273
|
-
const num = Number(value);
|
|
274
|
-
if (Number.isNaN(num)) {
|
|
275
|
-
return undefined;
|
|
276
|
-
}
|
|
277
|
-
return num;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
const SvgPattern = /<svg\b[^>]*>[\s\S]*?<\/svg>/;
|
|
281
|
-
|
|
282
|
-
/**
|
|
283
|
-
* 判断字符串是否是svg的格式
|
|
284
|
-
* @author lxm
|
|
285
|
-
* @date 2023-10-17 02:04:28
|
|
286
|
-
* @export
|
|
287
|
-
* @param {string} str
|
|
288
|
-
* @return {*} {boolean}
|
|
289
|
-
*/
|
|
290
|
-
export function isSvg(str: string): boolean {
|
|
291
|
-
return SvgPattern.test(str);
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
/**
|
|
295
|
-
* 处理浮点数相加
|
|
296
|
-
* @param {number} a
|
|
297
|
-
* @param {number} b
|
|
298
|
-
* @return {*}
|
|
299
|
-
* @author: zhujiamin
|
|
300
|
-
* @Date: 2023-11-08 17:04:09
|
|
301
|
-
*/
|
|
302
|
-
export function plus(a: number, b: number): number {
|
|
303
|
-
let c;
|
|
304
|
-
let d;
|
|
305
|
-
try {
|
|
306
|
-
c = a.toString().split('.')[1].length;
|
|
307
|
-
} catch (f) {
|
|
308
|
-
c = 0;
|
|
309
|
-
}
|
|
310
|
-
try {
|
|
311
|
-
d = b.toString().split('.')[1].length;
|
|
312
|
-
} catch (f) {
|
|
313
|
-
d = 0;
|
|
314
|
-
}
|
|
315
|
-
const e = 10 ** Math.max(c, d);
|
|
316
|
-
return (a * e + b * e) / e;
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
/**
|
|
320
|
-
* 根据给定的属性名称集合,
|
|
321
|
-
* 查看目标对象是否具有该属性,如果没有设置undefined的定义
|
|
322
|
-
* @author lxm
|
|
323
|
-
* @date 2023-12-20 05:21:47
|
|
324
|
-
* @export
|
|
325
|
-
* @param {IParams} target 目标对象
|
|
326
|
-
* @param {s(string | symbol)[]} keys 需要支持的属性名称集合
|
|
327
|
-
*/
|
|
328
|
-
export function updateKeyDefine(
|
|
329
|
-
target: IParams,
|
|
330
|
-
keys: (string | symbol)[],
|
|
331
|
-
): void {
|
|
332
|
-
keys.forEach(key => {
|
|
333
|
-
if (!Object.prototype.hasOwnProperty.call(target, key)) {
|
|
334
|
-
Object.defineProperty(target, key, {
|
|
335
|
-
enumerable: true,
|
|
336
|
-
configurable: true,
|
|
337
|
-
writable: true,
|
|
338
|
-
value: undefined,
|
|
339
|
-
});
|
|
340
|
-
}
|
|
341
|
-
});
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
/**
|
|
345
|
-
* 判断字符串是否为Base64图片格式
|
|
346
|
-
* @param {string} str
|
|
347
|
-
* @return {*}
|
|
348
|
-
* @author: zhujiamin
|
|
349
|
-
* @Date: 2023-12-28 10:49:23
|
|
350
|
-
*/
|
|
351
|
-
export function isBase64Image(str: string): boolean {
|
|
352
|
-
// 使用正则表达式检查字符串是否以"data:image/"开头,后面紧跟着base64编码
|
|
353
|
-
return /^data:image\/[a-zA-Z+]+;base64,([/+=\w\s]+|[^,]+)$/.test(str);
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
/**
|
|
357
|
-
* 计算各种视图打开方式的样式
|
|
358
|
-
* @param {number} value
|
|
359
|
-
* @return {*}
|
|
360
|
-
* @author: zhujiamin
|
|
361
|
-
* @Date: 2024-01-30 09:39:03
|
|
362
|
-
*/
|
|
363
|
-
export function calcOpenModeStyle(
|
|
364
|
-
value: number,
|
|
365
|
-
type: 'drawer' | 'modal' | 'popover',
|
|
366
|
-
): string | number {
|
|
367
|
-
if (value >= 0 && value <= 100) {
|
|
368
|
-
return `${value}%`;
|
|
369
|
-
}
|
|
370
|
-
if (value > 100) {
|
|
371
|
-
return type === 'drawer' ? value : `${value}px`;
|
|
372
|
-
}
|
|
373
|
-
// 处理其他情况,例如负值等
|
|
374
|
-
ibiz.log.error('无效输入值,必须>=0');
|
|
375
|
-
return '';
|
|
376
|
-
}
|