@whitesev/utils 2.8.1 → 2.9.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.
Files changed (74) hide show
  1. package/README.md +176 -176
  2. package/dist/index.amd.js +271 -777
  3. package/dist/index.amd.js.map +1 -1
  4. package/dist/index.amd.min.js +2 -0
  5. package/dist/index.amd.min.js.map +1 -0
  6. package/dist/index.cjs.js +271 -777
  7. package/dist/index.cjs.js.map +1 -1
  8. package/dist/index.cjs.min.js +2 -0
  9. package/dist/index.cjs.min.js.map +1 -0
  10. package/dist/index.esm.js +271 -777
  11. package/dist/index.esm.js.map +1 -1
  12. package/dist/index.esm.min.js +2 -0
  13. package/dist/index.esm.min.js.map +1 -0
  14. package/dist/index.iife.js +271 -777
  15. package/dist/index.iife.js.map +1 -1
  16. package/dist/index.iife.min.js +2 -0
  17. package/dist/index.iife.min.js.map +1 -0
  18. package/dist/index.system.js +271 -777
  19. package/dist/index.system.js.map +1 -1
  20. package/dist/index.system.min.js +2 -0
  21. package/dist/index.system.min.js.map +1 -0
  22. package/dist/index.umd.js +271 -777
  23. package/dist/index.umd.js.map +1 -1
  24. package/dist/index.umd.min.js +2 -0
  25. package/dist/index.umd.min.js.map +1 -0
  26. package/dist/types/src/Utils.d.ts +103 -450
  27. package/dist/types/src/UtilsGMCookie.d.ts +4 -0
  28. package/dist/types/src/UtilsGMMenu.d.ts +3 -6
  29. package/dist/types/src/types/Httpx.d.ts +1344 -1344
  30. package/dist/types/src/types/Log.d.ts +19 -19
  31. package/dist/types/src/types/Progress.d.ts +20 -20
  32. package/dist/types/src/types/React.d.ts +119 -119
  33. package/dist/types/src/types/TryCatch.d.ts +9 -9
  34. package/dist/types/src/types/UtilsGMCookie.d.ts +93 -93
  35. package/dist/types/src/types/UtilsGMMenu.d.ts +77 -77
  36. package/dist/types/src/types/Vue2.d.ts +166 -166
  37. package/dist/types/src/types/WindowApi.d.ts +14 -14
  38. package/dist/types/src/types/ajaxHooker.d.ts +151 -151
  39. package/dist/types/src/types/env.d.ts +7 -7
  40. package/dist/types/src/types/global.d.ts +31 -31
  41. package/index.ts +3 -0
  42. package/package.json +16 -10
  43. package/src/ColorConversion.ts +105 -105
  44. package/src/CommonUtil.ts +280 -280
  45. package/src/DOMUtils.ts +251 -251
  46. package/src/Dictionary.ts +153 -153
  47. package/src/GBKEncoder.ts +108 -108
  48. package/src/Hooks.ts +73 -73
  49. package/src/Httpx.ts +1457 -1457
  50. package/src/LockFunction.ts +62 -62
  51. package/src/Log.ts +258 -258
  52. package/src/Progress.ts +108 -108
  53. package/src/TryCatch.ts +86 -86
  54. package/src/Utils.ts +3778 -4772
  55. package/src/UtilsCommon.ts +14 -14
  56. package/src/UtilsGMCookie.ts +272 -254
  57. package/src/UtilsGMMenu.ts +441 -445
  58. package/src/Vue.ts +233 -233
  59. package/src/WindowApi.ts +59 -59
  60. package/src/indexedDB.ts +497 -497
  61. package/src/types/Httpx.d.ts +1344 -1344
  62. package/src/types/Log.d.ts +19 -19
  63. package/src/types/Progress.d.ts +20 -20
  64. package/src/types/React.d.ts +119 -119
  65. package/src/types/TryCatch.d.ts +9 -9
  66. package/src/types/UtilsGMCookie.d.ts +93 -93
  67. package/src/types/UtilsGMMenu.d.ts +77 -77
  68. package/src/types/Vue2.d.ts +166 -166
  69. package/src/types/WindowApi.d.ts +14 -14
  70. package/src/types/ajaxHooker.d.ts +151 -151
  71. package/src/types/env.d.ts +7 -7
  72. package/src/types/global.d.ts +31 -31
  73. package/dist/types/src/types/Event.d.ts +0 -188
  74. package/src/types/Event.d.ts +0 -188
@@ -1,151 +1,151 @@
1
- import type { HttpxHeaders, HttpxMethod, HttpxStatus } from "./Httpx";
2
-
3
- /** 请求的response配置 */
4
- export declare interface UtilsAjaxHookResponseOptions {
5
- /**
6
- * (重定向后的)Url
7
- */
8
- finalUrl: string;
9
- /**
10
- * 响应码
11
- */
12
- status: HttpxStatus;
13
- /**
14
- * 响应头
15
- */
16
- responseHeaders: HttpxHeaders;
17
- /**
18
- * 响应内容
19
- */
20
- response?: string | Blob | ArrayBuffer | XMLDocument | FormData;
21
- /**
22
- * 响应内容文本
23
- */
24
- responseText?: string;
25
- }
26
-
27
- /** hook请求的配置 */
28
- export declare interface UtilsAjaxHookRequestOptions {
29
- /**
30
- * 只读属性。一个字符串,表明请求类型是xhr还是fetch
31
- */
32
- type: "xhr";
33
- /**
34
- * 请求的Url
35
- */
36
- url: string;
37
- /**
38
- * 请求的url和method,可以直接修改
39
- */
40
- method: HttpxMethod;
41
- /**
42
- * 是否取消请求,设置为true即可取消本次请求
43
- */
44
- abort: boolean;
45
- /**
46
- * 请求头,可以直接修改
47
- */
48
- headers: HttpxHeaders;
49
- /**
50
- * 请求携带的数据,可以直接修改
51
- */
52
- data?: any;
53
- /**
54
- * 响应内容,必须通过一个回调函数进行读取和修改。
55
- *
56
- * 响应内容为一个对象,包含finalUrl、status、responseHeaders和被读取的响应数据,除响应数据可修改,其他属性是只读的。
57
- *
58
- * 响应数据是哪个属性取决于哪个属性被读取,xhr可能的属性为response、responseText、responseXML,fetch可能的属性为arrayBuffer、blob、formData、json、text。
59
- *
60
- * 在控制台输出时,xhr响应将包含所有属性,但只有被读取过的属性具有明确的值。修改对应属性即可影响读取结果,进而实现响应数据的修改。
61
- */
62
- response?: (res: Required<UtilsAjaxHookResponseOptions>) => void;
63
- /**
64
- * 只读属性。异步请求为true,同步请求为false,异步特性无法作用于同步请求
65
- */
66
- async: boolean;
67
- }
68
-
69
- /** 过滤规则配置 */
70
- export declare interface UtilsAjaxHookFilterOptions {
71
- /**
72
- * 应是xhr或fetch
73
- */
74
- type?: "xhr" | "fetch";
75
- /**
76
- * 字符串或正则表达式,无需完全匹配
77
- */
78
- url?: string;
79
- /**
80
- * 请求方法
81
- */
82
- method?: HttpxMethod;
83
- /**
84
- * 是否异步
85
- */
86
- async?: boolean;
87
- }
88
-
89
- /** Utils.ajaxHooker */
90
- export declare interface UtilsAjaxHookResult {
91
- /**
92
- * 劫持
93
- * @example
94
- ajaxHooker.hook(request => {
95
- if (request.url === 'https://www.example.com/') {
96
- request.response = res => {
97
- console.log(res);
98
- res.responseText += 'test';
99
- };
100
- }
101
- });
102
- * @example
103
- // 异步特性无法作用于同步请求,但同步修改仍然有效
104
- // 你可以将以上所有可修改属性赋值为Promise,原请求将被阻塞直至Promise完成(若发生reject,数据将不会被修改)
105
- // 此特性可用于异步劫持。以下是一个异步修改响应数据的例子
106
- ajaxHooker.hook(request => {
107
- request.response = res => {
108
- const responseText = res.responseText; // 注意保存原数据
109
- res.responseText = new Promise(resolve => {
110
- setTimeout(() => {
111
- resolve(responseText + 'test');
112
- }, 3000);
113
- });
114
- };
115
- });
116
-
117
- // 也可以传入async回调函数以实现异步
118
- ajaxHooker.hook(async request => {
119
- request.data = await modifyData(request.data);
120
- request.response = async res => {
121
- res.responseText = await modifyResponse(res.responseText);
122
- };
123
- });
124
- */
125
- hook(callback: (request: UtilsAjaxHookRequestOptions) => void | Promise<undefined>): void;
126
- /**
127
- * 过滤
128
- * @example
129
- // 应于hook方法之前执行,此方法若尽早执行,有助于提升性能。
130
- // 为hook方法设置过滤规则,只有符合规则的请求才会触发hook。过滤规则是一个对象数组,参考下例
131
- ajaxHooker.filter([
132
- {type: 'xhr', url: 'www.example.com', method: 'GET', async: true},
133
- {url: /^http/},
134
- ]);
135
- */
136
- filter(filterOptions: UtilsAjaxHookFilterOptions[]): void;
137
- /**
138
- * 阻止xhr和fetch被改写
139
- * @example
140
- // 如果库劫持失败,可能是其他代码对xhr/fetch进行了二次劫持,protect方法会尝试阻止xhr和fetch被改写。应于document-start阶段尽早执行,部分网页下可能引发错误,谨慎使用。
141
- ajaxHooker.protect();
142
- */
143
- protect(): void;
144
- /**
145
- * 取消劫持
146
- * @example
147
- // 将xhr和fetch恢复至劫持前的状态,调用此方法后,hook方法不再生效。
148
- ajaxHooker.unhook();
149
- */
150
- unhook(): void;
151
- }
1
+ import type { HttpxHeaders, HttpxMethod, HttpxStatus } from "./Httpx";
2
+
3
+ /** 请求的response配置 */
4
+ export declare interface UtilsAjaxHookResponseOptions {
5
+ /**
6
+ * (重定向后的)Url
7
+ */
8
+ finalUrl: string;
9
+ /**
10
+ * 响应码
11
+ */
12
+ status: HttpxStatus;
13
+ /**
14
+ * 响应头
15
+ */
16
+ responseHeaders: HttpxHeaders;
17
+ /**
18
+ * 响应内容
19
+ */
20
+ response?: string | Blob | ArrayBuffer | XMLDocument | FormData;
21
+ /**
22
+ * 响应内容文本
23
+ */
24
+ responseText?: string;
25
+ }
26
+
27
+ /** hook请求的配置 */
28
+ export declare interface UtilsAjaxHookRequestOptions {
29
+ /**
30
+ * 只读属性。一个字符串,表明请求类型是xhr还是fetch
31
+ */
32
+ type: "xhr";
33
+ /**
34
+ * 请求的Url
35
+ */
36
+ url: string;
37
+ /**
38
+ * 请求的url和method,可以直接修改
39
+ */
40
+ method: HttpxMethod;
41
+ /**
42
+ * 是否取消请求,设置为true即可取消本次请求
43
+ */
44
+ abort: boolean;
45
+ /**
46
+ * 请求头,可以直接修改
47
+ */
48
+ headers: HttpxHeaders;
49
+ /**
50
+ * 请求携带的数据,可以直接修改
51
+ */
52
+ data?: any;
53
+ /**
54
+ * 响应内容,必须通过一个回调函数进行读取和修改。
55
+ *
56
+ * 响应内容为一个对象,包含finalUrl、status、responseHeaders和被读取的响应数据,除响应数据可修改,其他属性是只读的。
57
+ *
58
+ * 响应数据是哪个属性取决于哪个属性被读取,xhr可能的属性为response、responseText、responseXML,fetch可能的属性为arrayBuffer、blob、formData、json、text。
59
+ *
60
+ * 在控制台输出时,xhr响应将包含所有属性,但只有被读取过的属性具有明确的值。修改对应属性即可影响读取结果,进而实现响应数据的修改。
61
+ */
62
+ response?: (res: Required<UtilsAjaxHookResponseOptions>) => void;
63
+ /**
64
+ * 只读属性。异步请求为true,同步请求为false,异步特性无法作用于同步请求
65
+ */
66
+ async: boolean;
67
+ }
68
+
69
+ /** 过滤规则配置 */
70
+ export declare interface UtilsAjaxHookFilterOptions {
71
+ /**
72
+ * 应是xhr或fetch
73
+ */
74
+ type?: "xhr" | "fetch";
75
+ /**
76
+ * 字符串或正则表达式,无需完全匹配
77
+ */
78
+ url?: string;
79
+ /**
80
+ * 请求方法
81
+ */
82
+ method?: HttpxMethod;
83
+ /**
84
+ * 是否异步
85
+ */
86
+ async?: boolean;
87
+ }
88
+
89
+ /** Utils.ajaxHooker */
90
+ export declare interface UtilsAjaxHookResult {
91
+ /**
92
+ * 劫持
93
+ * @example
94
+ ajaxHooker.hook(request => {
95
+ if (request.url === 'https://www.example.com/') {
96
+ request.response = res => {
97
+ console.log(res);
98
+ res.responseText += 'test';
99
+ };
100
+ }
101
+ });
102
+ * @example
103
+ // 异步特性无法作用于同步请求,但同步修改仍然有效
104
+ // 你可以将以上所有可修改属性赋值为Promise,原请求将被阻塞直至Promise完成(若发生reject,数据将不会被修改)
105
+ // 此特性可用于异步劫持。以下是一个异步修改响应数据的例子
106
+ ajaxHooker.hook(request => {
107
+ request.response = res => {
108
+ const responseText = res.responseText; // 注意保存原数据
109
+ res.responseText = new Promise(resolve => {
110
+ setTimeout(() => {
111
+ resolve(responseText + 'test');
112
+ }, 3000);
113
+ });
114
+ };
115
+ });
116
+
117
+ // 也可以传入async回调函数以实现异步
118
+ ajaxHooker.hook(async request => {
119
+ request.data = await modifyData(request.data);
120
+ request.response = async res => {
121
+ res.responseText = await modifyResponse(res.responseText);
122
+ };
123
+ });
124
+ */
125
+ hook(callback: (request: UtilsAjaxHookRequestOptions) => void | Promise<undefined>): void;
126
+ /**
127
+ * 过滤
128
+ * @example
129
+ // 应于hook方法之前执行,此方法若尽早执行,有助于提升性能。
130
+ // 为hook方法设置过滤规则,只有符合规则的请求才会触发hook。过滤规则是一个对象数组,参考下例
131
+ ajaxHooker.filter([
132
+ {type: 'xhr', url: 'www.example.com', method: 'GET', async: true},
133
+ {url: /^http/},
134
+ ]);
135
+ */
136
+ filter(filterOptions: UtilsAjaxHookFilterOptions[]): void;
137
+ /**
138
+ * 阻止xhr和fetch被改写
139
+ * @example
140
+ // 如果库劫持失败,可能是其他代码对xhr/fetch进行了二次劫持,protect方法会尝试阻止xhr和fetch被改写。应于document-start阶段尽早执行,部分网页下可能引发错误,谨慎使用。
141
+ ajaxHooker.protect();
142
+ */
143
+ protect(): void;
144
+ /**
145
+ * 取消劫持
146
+ * @example
147
+ // 将xhr和fetch恢复至劫持前的状态,调用此方法后,hook方法不再生效。
148
+ ajaxHooker.unhook();
149
+ */
150
+ unhook(): void;
151
+ }
@@ -1,7 +1,7 @@
1
- /* eslint-disable no-var */
2
- declare var jQuery: any;
3
- declare var unsafeWindow: Window;
4
-
5
- declare var mozIndexedDB: IDBFactory | null;
6
- declare var webkitIndexedDB: IDBFactory | null;
7
- declare var msIndexedDB: IDBFactory | null;
1
+ /* eslint-disable no-var */
2
+ declare var jQuery: any;
3
+ declare var unsafeWindow: Window;
4
+
5
+ declare var mozIndexedDB: IDBFactory | null;
6
+ declare var webkitIndexedDB: IDBFactory | null;
7
+ declare var msIndexedDB: IDBFactory | null;
@@ -1,31 +1,31 @@
1
- export type JSTypeMap = {
2
- string: string;
3
- number: number;
4
- boolean: boolean;
5
- object: object;
6
- symbol: symbol;
7
- bigint: bigint;
8
- undefined: undefined;
9
- null: null;
10
- };
11
-
12
- export type JSTypeNames = keyof JSTypeMap;
13
-
14
- export type ArgsType<T extends JSTypeNames[]> = {
15
- [I in keyof T]: JSTypeMap[T[I]];
16
- };
17
-
18
- export declare interface UtilsOwnObject<V> {
19
- [key: string]: V | UtilsOwnObject<V>;
20
- }
21
-
22
- export declare interface AnyObject {
23
- [key: string]: any | AnyObject;
24
- toString(): string;
25
- }
26
-
27
- export type PartialKeys<T, K extends keyof T> = {
28
- [P in K]?: T[P];
29
- };
30
-
31
- export type Values<T> = T[keyof T];
1
+ export type JSTypeMap = {
2
+ string: string;
3
+ number: number;
4
+ boolean: boolean;
5
+ object: object;
6
+ symbol: symbol;
7
+ bigint: bigint;
8
+ undefined: undefined;
9
+ null: null;
10
+ };
11
+
12
+ export type JSTypeNames = keyof JSTypeMap;
13
+
14
+ export type ArgsType<T extends JSTypeNames[]> = {
15
+ [I in keyof T]: JSTypeMap[T[I]];
16
+ };
17
+
18
+ export declare interface UtilsOwnObject<V> {
19
+ [key: string]: V | UtilsOwnObject<V>;
20
+ }
21
+
22
+ export declare interface AnyObject {
23
+ [key: string]: any | AnyObject;
24
+ toString(): string;
25
+ }
26
+
27
+ export type PartialKeys<T, K extends keyof T> = {
28
+ [P in K]?: T[P];
29
+ };
30
+
31
+ export type Values<T> = T[keyof T];
@@ -1,188 +0,0 @@
1
- /**
2
- * 鼠标事件
3
- * + https://blog.csdn.net/weixin_68658847/article/details/126939879
4
- */
5
-
6
- declare interface DOMUtils_MouseEvent {
7
- click: MouseEvent | PointerEvent;
8
- contextmenu: MouseEvent | PointerEvent;
9
- dblclick: MouseEvent | PointerEvent;
10
- mousedown: MouseEvent | PointerEvent;
11
- mouseenter: MouseEvent | PointerEvent;
12
- mouseleave: MouseEvent | PointerEvent;
13
- mousemove: MouseEvent | PointerEvent;
14
- mouseover: MouseEvent | PointerEvent;
15
- mouseout: MouseEvent | PointerEvent;
16
- mouseup: MouseEvent | PointerEvent;
17
- }
18
- declare type DOMUtils_MouseEventType = keyof DOMUtils_MouseEvent;
19
- /**
20
- * 鼠标事件
21
- */
22
- declare interface DOMUtils_KeyboardEvent {
23
- keydown: KeyboardEvent;
24
- keypress: KeyboardEvent;
25
- keyup: KeyboardEvent;
26
- }
27
- declare type DOMUtils_KeyboardEventType = keyof DOMUtils_KeyboardEvent;
28
- /**
29
- * 框架/对象事件
30
- */
31
- declare interface DOMUtils_Frame_Object_Event {
32
- abort: Event;
33
- beforeunload: Event;
34
- error: Event;
35
- hashchange: Event;
36
- load: Event;
37
- pageshow: Event;
38
- pagehide: Event;
39
- resize: Event;
40
- scroll: Event;
41
- unload: Event;
42
- }
43
- declare type DOMUtils_Frame_Object_EventType = keyof DOMUtils_Frame_Object_Event;
44
- /**
45
- * 表单事件
46
- */
47
- declare interface DOMUtils_FormEvent {
48
- blur: Event;
49
- change: Event;
50
- focus: Event;
51
- focusin: Event;
52
- focusout: Event;
53
- input: Event;
54
- reset: Event;
55
- search: Event;
56
- }
57
- declare type DOMUtils_FormEventType = keyof DOMUtils_FormEvent;
58
-
59
- /**
60
- * 剪贴板事件
61
- */
62
- declare interface DOMUtils_ClipboardEvent {
63
- copy: ClipboardEvent;
64
- cut: ClipboardEvent;
65
- paste: ClipboardEvent;
66
- }
67
- declare type DOMUtils_ClipboardEventType = keyof DOMUtils_ClipboardEvent;
68
-
69
- /**
70
- * 打印事件
71
- */
72
- declare interface DOMUtils_PrintEvent {
73
- afterprint: Event;
74
- beforeprint: Event;
75
- }
76
- declare type DOMUtils_PrintEventType = keyof DOMUtils_PrintEvent;
77
-
78
- /**
79
- * 拖动事件
80
- */
81
- declare interface DOMUtils_DragEvent {
82
- drag: DragEvent;
83
- dragend: DragEvent;
84
- dragenter: DragEvent;
85
- dragleave: DragEvent;
86
- dragover: DragEvent;
87
- dragstart: DragEvent;
88
- drop: DragEvent;
89
- }
90
- declare type DOMUtils_DragEventType = keyof DOMUtils_DragEvent;
91
-
92
- /**
93
- * 多媒体(Media)事件
94
- */
95
- declare interface DOMUtils_MediaEvent {
96
- abort: Event;
97
- canplay: Event;
98
- canplaythrough: Event;
99
- durationchange: Event;
100
- emptied: Event;
101
- ended: Event;
102
- error: Event;
103
- loadeddata: Event;
104
- loadedmetadata: Event;
105
- loadstart: Event;
106
- pause: Event;
107
- play: Event;
108
- playing: Event;
109
- progress: Event;
110
- ratechange: Event;
111
- seeked: Event;
112
- seeking: Event;
113
- stalled: Event;
114
- suspend: Event;
115
- timeupdate: Event;
116
- volumechange: Event;
117
- waiting: Event;
118
- }
119
- declare type DOMUtils_MediaEventType = keyof DOMUtils_MediaEvent;
120
-
121
- /**
122
- * 动画事件
123
- */
124
- declare interface DOMUtils_AnimationEvent {
125
- animationend: AnimationEvent;
126
- animationiteration: AnimationEvent;
127
- animationstart: AnimationEvent;
128
- }
129
- declare type DOMUtils_AnimationEventType = keyof DOMUtils_AnimationEvent;
130
-
131
- /**
132
- * 过渡事件
133
- */
134
- declare interface DOMUtils_TransitionEvent {
135
- transitionend: TransitionEvent;
136
- }
137
- declare type DOMUtils_TransitionEventType = keyof DOMUtils_TransitionEvent;
138
-
139
- /**
140
- * 触摸事件
141
- */
142
- declare interface DOMUtils_TouchEvent {
143
- touchstart: TouchEvent;
144
- touchmove: TouchEvent;
145
- touchend: TouchEvent;
146
- touchcancel: TouchEvent;
147
- touchenter: TouchEvent;
148
- touchleave: TouchEvent;
149
- }
150
- declare type DOMUtils_TouchEventType = keyof DOMUtils_TouchEvent;
151
- /**
152
- * 其它事件
153
- */
154
- declare interface DOMUtils_OtherEvent {
155
- message: Event;
156
- online: Event;
157
- offline: Event;
158
- popstate: Event;
159
- show: Event;
160
- storage: Event;
161
- toggle: Event;
162
- wheel: Event;
163
- propertychange: Event;
164
- fullscreenchange: Event;
165
- DOMContentLoaded: Event;
166
- }
167
- declare type DOMUtils_OtherEventType = keyof DOMUtils_OtherEvent;
168
-
169
- /**
170
- * 全部事件
171
- */
172
- export declare type DOMUtils_Event = DOMUtils_MouseEvent &
173
- DOMUtils_KeyboardEvent &
174
- DOMUtils_Frame_Object_Event &
175
- DOMUtils_FormEvent &
176
- DOMUtils_ClipboardEvent &
177
- DOMUtils_PrintEvent &
178
- DOMUtils_DragEvent &
179
- DOMUtils_MediaEvent &
180
- DOMUtils_AnimationEvent &
181
- DOMUtils_TransitionEvent &
182
- DOMUtils_TouchEvent &
183
- DOMUtils_OtherEvent;
184
-
185
- /**
186
- * 事件类型
187
- */
188
- export declare type DOMUtils_EventType = keyof DOMUtils_Event;