@whitesev/utils 2.6.0 → 2.6.2

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.
@@ -56,7 +56,7 @@ declare class Utils {
56
56
  * ajax劫持库,支持xhr和fetch劫持。
57
57
  * + 来源:https://bbs.tampermonkey.net.cn/thread-3284-1-1.html
58
58
  * + 作者:cxxjackie
59
- * + 版本:1.4.3
59
+ * + 版本:1.4.4
60
60
  * + 旧版本:1.2.4
61
61
  * + 文档:https://scriptcat.org/zh-CN/script-show-page/637/
62
62
  * @param useOldVersion 是否使用旧版本,默认false
@@ -1,5 +1,5 @@
1
1
  import type { UtilsGMCookieDeleteOptions, UtilsGMCookieListOptions, UtilsGMCookieResult, UtilsGMCookieSetOptions, WindowApiOption } from "./types/UtilsGMCookie";
2
- declare class UtilsGMCookie {
2
+ export declare class UtilsGMCookie {
3
3
  private windowApi;
4
4
  constructor(windowApiOption?: WindowApiOption);
5
5
  /**
@@ -14,12 +14,12 @@ declare class UtilsGMCookie {
14
14
  * + cookies object[]
15
15
  * + error string|undefined
16
16
  **/
17
- list(option: UtilsGMCookieListOptions, callback?: (data: UtilsGMCookieResult[], error?: Error) => void): void;
17
+ list(option: UtilsGMCookieListOptions | {}, callback?: (data: UtilsGMCookieResult[], error?: Error) => void): void;
18
18
  /**
19
19
  * 获取多组Cookie
20
20
  * @param option 配置
21
21
  **/
22
- getList(option: UtilsGMCookieListOptions): UtilsGMCookieResult[];
22
+ getList(option: UtilsGMCookieListOptions | {}): UtilsGMCookieResult[];
23
23
  /**
24
24
  * 设置Cookie
25
25
  * @param option 配置
@@ -42,4 +42,3 @@ declare class UtilsGMCookie {
42
42
  value: string;
43
43
  }[];
44
44
  }
45
- export { UtilsGMCookie };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whitesev/utils",
3
- "version": "2.6.0",
3
+ "version": "2.6.2",
4
4
  "description": "一个常用的工具库",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
package/src/Utils.ts CHANGED
@@ -31,7 +31,7 @@ class Utils {
31
31
  this.windowApi = new WindowApi(option);
32
32
  }
33
33
  /** 版本号 */
34
- version = "2025.1.11";
34
+ version = "2025.3.24";
35
35
 
36
36
  /**
37
37
  * 在页面中增加style元素,如果html节点存在子节点,添加子节点第一个,反之,添加到html节点的子节点最后一个
@@ -209,7 +209,7 @@ class Utils {
209
209
  * ajax劫持库,支持xhr和fetch劫持。
210
210
  * + 来源:https://bbs.tampermonkey.net.cn/thread-3284-1-1.html
211
211
  * + 作者:cxxjackie
212
- * + 版本:1.4.3
212
+ * + 版本:1.4.4
213
213
  * + 旧版本:1.2.4
214
214
  * + 文档:https://scriptcat.org/zh-CN/script-show-page/637/
215
215
  * @param useOldVersion 是否使用旧版本,默认false
@@ -7,7 +7,7 @@ import type {
7
7
  } from "./types/UtilsGMCookie";
8
8
  import { Utils } from "./Utils";
9
9
 
10
- class UtilsGMCookie {
10
+ export class UtilsGMCookie {
11
11
  private windowApi = {
12
12
  window: window,
13
13
  document: document,
@@ -60,7 +60,7 @@ class UtilsGMCookie {
60
60
  * + error string|undefined
61
61
  **/
62
62
  list(
63
- option: UtilsGMCookieListOptions,
63
+ option: UtilsGMCookieListOptions | {},
64
64
  callback?: (data: UtilsGMCookieResult[], error?: Error) => void
65
65
  ) {
66
66
  if (option == null) {
@@ -114,7 +114,7 @@ class UtilsGMCookie {
114
114
  * 获取多组Cookie
115
115
  * @param option 配置
116
116
  **/
117
- getList(option: UtilsGMCookieListOptions): UtilsGMCookieResult[] {
117
+ getList(option: UtilsGMCookieListOptions | {}): UtilsGMCookieResult[] {
118
118
  if (option == null) {
119
119
  throw new Error("Utils.GMCookie.list 参数不能为空");
120
120
  }
@@ -226,7 +226,7 @@ class UtilsGMCookie {
226
226
  /**
227
227
  * 解析cookie字符串
228
228
  * 例如:document.cookie
229
- * @param cookieStr
229
+ * @param cookieStr
230
230
  */
231
231
  parseCookie(cookieStr: string) {
232
232
  let cookies = cookieStr.split(";");
@@ -245,5 +245,3 @@ class UtilsGMCookie {
245
245
  return result;
246
246
  }
247
247
  }
248
-
249
- export { UtilsGMCookie };
@@ -1,14 +1,13 @@
1
1
  // @name ajaxHooker
2
2
  // @author cxxjackie
3
- // @version 1.4.3
4
- // @updateLog 修复特殊情况下有部分请求头丢失的问题。
5
- // @updateLog xhr事件增加currentTarget劫持。
3
+ // @version 1.4.4
4
+ // @updateLog 修复头条、抖音部分站点下this引用错误的问题。
6
5
  // @supportURL https://bbs.tampermonkey.net.cn/thread-3284-1-1.html
7
6
 
8
7
  export const AjaxHooker = function () {
9
8
  return (function () {
10
9
  "use strict";
11
- const version = "1.4.3";
10
+ const version = "1.4.4";
12
11
  const hookInst = {
13
12
  hookFns: [],
14
13
  filters: [],
@@ -542,6 +541,57 @@ export const AjaxHooker = function () {
542
541
  win.fetch = winAh.fakeFetch;
543
542
  resProto.clone = winAh.fakeFetchClone;
544
543
  winAh.hookInsts.add(hookInst);
544
+ // 针对头条、抖音 secsdk.umd.js 的兼容性处理
545
+ class AHFunction {
546
+ call(thisArg, ...args) {
547
+ if (
548
+ thisArg &&
549
+ thisArg.__ajaxHooker &&
550
+ thisArg.__ajaxHooker.proxyXhr === thisArg
551
+ ) {
552
+ thisArg = thisArg.__ajaxHooker.originalXhr;
553
+ }
554
+ return Reflect.apply(this, thisArg, args);
555
+ }
556
+ apply(thisArg, args) {
557
+ if (
558
+ thisArg &&
559
+ thisArg.__ajaxHooker &&
560
+ thisArg.__ajaxHooker.proxyXhr === thisArg
561
+ ) {
562
+ thisArg = thisArg.__ajaxHooker.originalXhr;
563
+ }
564
+ return Reflect.apply(this, thisArg, args || []);
565
+ }
566
+ }
567
+ function hookSecsdk(csrf) {
568
+ Object.setPrototypeOf(
569
+ csrf.nativeXMLHttpRequestSetRequestHeader,
570
+ AHFunction.prototype
571
+ );
572
+ Object.setPrototypeOf(
573
+ csrf.nativeXMLHttpRequestOpen,
574
+ AHFunction.prototype
575
+ );
576
+ Object.setPrototypeOf(
577
+ csrf.nativeXMLHttpRequestSend,
578
+ AHFunction.prototype
579
+ );
580
+ }
581
+ if (win.secsdk) {
582
+ if (win.secsdk.csrf && win.secsdk.csrf.nativeXMLHttpRequestOpen)
583
+ hookSecsdk(win.secsdk.csrf);
584
+ } else {
585
+ defineProp(win, "secsdk", emptyFn, (secsdk) => {
586
+ delete win.secsdk;
587
+ win.secsdk = secsdk;
588
+ defineProp(secsdk, "csrf", emptyFn, (csrf) => {
589
+ delete secsdk.csrf;
590
+ secsdk.csrf = csrf;
591
+ if (csrf.nativeXMLHttpRequestOpen) hookSecsdk(csrf);
592
+ });
593
+ });
594
+ }
545
595
  return {
546
596
  hook: (fn) => hookInst.hookFns.push(fn),
547
597
  filter: (arr) => {