@whitesev/utils 2.4.7 → 2.5.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/index.amd.js +85 -35
- package/dist/index.amd.js.map +1 -1
- package/dist/index.cjs.js +85 -35
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +85 -35
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +85 -35
- package/dist/index.iife.js.map +1 -1
- package/dist/index.system.js +85 -35
- package/dist/index.system.js.map +1 -1
- package/dist/index.umd.js +85 -35
- package/dist/index.umd.js.map +1 -1
- package/dist/types/src/Utils.d.ts +27 -21
- package/package.json +1 -1
- package/src/Httpx.ts +10 -1
- package/src/Utils.ts +85 -39
package/dist/index.esm.js
CHANGED
|
@@ -1766,7 +1766,7 @@ class Httpx {
|
|
|
1766
1766
|
let that = this;
|
|
1767
1767
|
let requestOption = {
|
|
1768
1768
|
url: userRequestOption.url || this.context.#defaultDetails.url,
|
|
1769
|
-
method: (method || "GET").toString().toUpperCase(),
|
|
1769
|
+
method: (method || "GET").toString().toUpperCase().trim(),
|
|
1770
1770
|
timeout: userRequestOption.timeout || this.context.#defaultDetails.timeout,
|
|
1771
1771
|
responseType: userRequestOption.responseType ||
|
|
1772
1772
|
this.context.#defaultDetails.responseType,
|
|
@@ -1922,15 +1922,23 @@ class Httpx {
|
|
|
1922
1922
|
// GET类型,data如果有,那么需要转为searchParams
|
|
1923
1923
|
let urlObj = new URL(requestOption.url);
|
|
1924
1924
|
let urlSearch = "";
|
|
1925
|
+
let isHandler = false;
|
|
1925
1926
|
if (typeof requestOption.data === "string") {
|
|
1927
|
+
isHandler = true;
|
|
1926
1928
|
urlSearch = requestOption.data;
|
|
1927
1929
|
}
|
|
1928
1930
|
else if (typeof requestOption.data === "object") {
|
|
1931
|
+
isHandler = true;
|
|
1929
1932
|
// URLSearchParams参数可以转普通的string:string,包括FormData
|
|
1930
1933
|
// @ts-ignore
|
|
1931
1934
|
let searchParams = new URLSearchParams(requestOption.data);
|
|
1932
1935
|
urlSearch = searchParams.toString();
|
|
1933
1936
|
}
|
|
1937
|
+
if (isHandler) {
|
|
1938
|
+
// GET/HEAD请求不支持data参数
|
|
1939
|
+
// 对data进行处理了才可以删除
|
|
1940
|
+
Reflect.deleteProperty(requestOption, "data");
|
|
1941
|
+
}
|
|
1934
1942
|
if (urlSearch != "") {
|
|
1935
1943
|
if (urlObj.search === "") {
|
|
1936
1944
|
// url没有search参数,直接覆盖
|
|
@@ -4909,6 +4917,12 @@ class Utils {
|
|
|
4909
4917
|
return Math.min(...newResult);
|
|
4910
4918
|
}
|
|
4911
4919
|
}
|
|
4920
|
+
/**
|
|
4921
|
+
* 获取随机的安卓手机User-Agent
|
|
4922
|
+
* @example
|
|
4923
|
+
* Utils.getRandomAndroidUA();
|
|
4924
|
+
* > 'Mozilla/5.0 (Linux; Android 10; MI 13 Build/OPR1.170623.027; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.3490.40 Mobile Safari/537.36'
|
|
4925
|
+
**/
|
|
4912
4926
|
getRandomAndroidUA() {
|
|
4913
4927
|
let UtilsContext = this;
|
|
4914
4928
|
let mobileNameList = [
|
|
@@ -4927,14 +4941,44 @@ class Utils {
|
|
|
4927
4941
|
"M2003J15SC Build/RP1A.200720.011; wv",
|
|
4928
4942
|
"MI 13 Build/OPR1.170623.027; wv",
|
|
4929
4943
|
];
|
|
4944
|
+
/* 安卓版本 */
|
|
4930
4945
|
let androidVersion = UtilsContext.getRandomValue(12, 14);
|
|
4946
|
+
/* 手机型号 */
|
|
4931
4947
|
let randomMobile = UtilsContext.getRandomValue(mobileNameList);
|
|
4932
|
-
|
|
4948
|
+
/* chrome大版本号 */
|
|
4949
|
+
let chromeVersion1 = UtilsContext.getRandomValue(120, 132);
|
|
4933
4950
|
let chromeVersion2 = UtilsContext.getRandomValue(0, 0);
|
|
4934
4951
|
let chromeVersion3 = UtilsContext.getRandomValue(2272, 6099);
|
|
4935
4952
|
let chromeVersion4 = UtilsContext.getRandomValue(1, 218);
|
|
4936
4953
|
return `Mozilla/5.0 (Linux; Android ${androidVersion}; ${randomMobile}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion1}.${chromeVersion2}.${chromeVersion3}.${chromeVersion4} Mobile Safari/537.36`;
|
|
4937
4954
|
}
|
|
4955
|
+
/**
|
|
4956
|
+
* 获取随机的电脑端User-Agent
|
|
4957
|
+
* + Mozilla/5.0:以前用于Netscape浏览器,目前大多数浏览器UA都会带有
|
|
4958
|
+
* + Windows NT 13:代表Window11系统
|
|
4959
|
+
* + Windows NT 10.0:代表Window10系统
|
|
4960
|
+
* + Windows NT 6.1:代表windows7系统
|
|
4961
|
+
* + WOW64:Windows-on-Windows 64-bit,32位的应用程序运行于此64位处理器上
|
|
4962
|
+
* + Win64:64位
|
|
4963
|
+
* + AppleWebKit/537.36:浏览器内核
|
|
4964
|
+
* + KHTML:HTML排版引擎
|
|
4965
|
+
* + like Gecko:这不是Geckeo 浏览器,但是运行起来像Geckeo浏览器
|
|
4966
|
+
* + Chrome/106.0.5068.19:Chrome版本号
|
|
4967
|
+
* + Safari/537.36:宣称自己是Safari?
|
|
4968
|
+
* @returns 返回随机字符串
|
|
4969
|
+
* @example
|
|
4970
|
+
* Utils.getRandomPCUA();
|
|
4971
|
+
* > 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.5068.19 Safari/537.36'
|
|
4972
|
+
**/
|
|
4973
|
+
getRandomPCUA() {
|
|
4974
|
+
let UtilsContext = this;
|
|
4975
|
+
/* chrome大版本号 */
|
|
4976
|
+
let chromeVersion1 = UtilsContext.getRandomValue(120, 132);
|
|
4977
|
+
let chromeVersion2 = UtilsContext.getRandomValue(0, 0);
|
|
4978
|
+
let chromeVersion3 = UtilsContext.getRandomValue(2272, 6099);
|
|
4979
|
+
let chromeVersion4 = UtilsContext.getRandomValue(1, 218);
|
|
4980
|
+
return `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion1}.${chromeVersion2}.${chromeVersion3}.${chromeVersion4} Safari/537.36`;
|
|
4981
|
+
}
|
|
4938
4982
|
getRandomValue(...args) {
|
|
4939
4983
|
let result = [...args];
|
|
4940
4984
|
if (result.length > 1) {
|
|
@@ -4964,32 +5008,6 @@ class Utils {
|
|
|
4964
5008
|
}
|
|
4965
5009
|
}
|
|
4966
5010
|
}
|
|
4967
|
-
/**
|
|
4968
|
-
* 获取随机的电脑端User-Agent
|
|
4969
|
-
* + Mozilla/5.0:以前用于Netscape浏览器,目前大多数浏览器UA都会带有
|
|
4970
|
-
* + Windows NT 13:代表Window11系统
|
|
4971
|
-
* + Windows NT 10.0:代表Window10系统
|
|
4972
|
-
* + Windows NT 6.1:代表windows7系统
|
|
4973
|
-
* + WOW64:Windows-on-Windows 64-bit,32位的应用程序运行于此64位处理器上
|
|
4974
|
-
* + Win64:64位
|
|
4975
|
-
* + AppleWebKit/537.36:浏览器内核
|
|
4976
|
-
* + KHTML:HTML排版引擎
|
|
4977
|
-
* + like Gecko:这不是Geckeo 浏览器,但是运行起来像Geckeo浏览器
|
|
4978
|
-
* + Chrome/106.0.5068.19:Chrome版本号
|
|
4979
|
-
* + Safari/537.36:宣称自己是Safari?
|
|
4980
|
-
* @returns 返回随机字符串
|
|
4981
|
-
* @example
|
|
4982
|
-
* Utils.getRandomPCUA();
|
|
4983
|
-
* > 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.5068.19 Safari/537.36'
|
|
4984
|
-
**/
|
|
4985
|
-
getRandomPCUA() {
|
|
4986
|
-
let UtilsContext = this;
|
|
4987
|
-
let chromeVersion1 = UtilsContext.getRandomValue(115, 127);
|
|
4988
|
-
let chromeVersion2 = UtilsContext.getRandomValue(0, 0);
|
|
4989
|
-
let chromeVersion3 = UtilsContext.getRandomValue(2272, 6099);
|
|
4990
|
-
let chromeVersion4 = UtilsContext.getRandomValue(1, 218);
|
|
4991
|
-
return `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion1}.${chromeVersion2}.${chromeVersion3}.${chromeVersion4} Safari/537.36`;
|
|
4992
|
-
}
|
|
4993
5011
|
/**
|
|
4994
5012
|
* 获取元素上的使用React框架的实例属性,目前包括reactFiber、reactProps、reactEvents、reactEventHandlers、reactInternalInstance
|
|
4995
5013
|
* @param element 需要获取的目标元素
|
|
@@ -5284,13 +5302,45 @@ class Utils {
|
|
|
5284
5302
|
isNativeFunc(target) {
|
|
5285
5303
|
return Boolean(target.toString().match(/^function .*\(\) { \[native code\] }$/));
|
|
5286
5304
|
}
|
|
5287
|
-
isNearBottom(
|
|
5288
|
-
|
|
5289
|
-
|
|
5290
|
-
|
|
5291
|
-
this.windowApi.
|
|
5292
|
-
|
|
5293
|
-
|
|
5305
|
+
isNearBottom(...args) {
|
|
5306
|
+
let nearBottomHeight = 50;
|
|
5307
|
+
let checkWindow = () => {
|
|
5308
|
+
// 已滚动的距离
|
|
5309
|
+
let scrollTop = this.windowApi.window.pageYOffset ||
|
|
5310
|
+
this.windowApi.document.documentElement.scrollTop;
|
|
5311
|
+
// 视窗高度
|
|
5312
|
+
let viewportHeight = this.windowApi.window.innerHeight ||
|
|
5313
|
+
this.windowApi.document.documentElement.clientHeight;
|
|
5314
|
+
// 最大滚动距离
|
|
5315
|
+
let maxScrollHeight = this.windowApi.document.documentElement.scrollHeight - nearBottomHeight;
|
|
5316
|
+
return scrollTop + viewportHeight >= maxScrollHeight;
|
|
5317
|
+
};
|
|
5318
|
+
let checkNode = ($ele) => {
|
|
5319
|
+
// 已滚动的距离
|
|
5320
|
+
let scrollTop = $ele.scrollTop;
|
|
5321
|
+
// 视窗高度
|
|
5322
|
+
let viewportHeight = $ele.clientHeight;
|
|
5323
|
+
// 最大滚动距离
|
|
5324
|
+
let maxScrollHeight = $ele.scrollHeight - viewportHeight - nearBottomHeight;
|
|
5325
|
+
return scrollTop >= maxScrollHeight;
|
|
5326
|
+
};
|
|
5327
|
+
let firstArg = args[0];
|
|
5328
|
+
if (args.length === 0 || typeof args[0] === "number") {
|
|
5329
|
+
// nearBottomHeight
|
|
5330
|
+
//
|
|
5331
|
+
return checkWindow();
|
|
5332
|
+
}
|
|
5333
|
+
else if (typeof args[0] === "object" && args[0] instanceof HTMLElement) {
|
|
5334
|
+
// target
|
|
5335
|
+
// target,nearBottomHeight
|
|
5336
|
+
if (typeof args[1] === "number" && !Number.isNaN(args[1])) {
|
|
5337
|
+
nearBottomHeight = args[1];
|
|
5338
|
+
}
|
|
5339
|
+
return checkNode(args[0]);
|
|
5340
|
+
}
|
|
5341
|
+
else {
|
|
5342
|
+
throw new TypeError("参数1类型错误" + typeof firstArg);
|
|
5343
|
+
}
|
|
5294
5344
|
}
|
|
5295
5345
|
isDOM(target) {
|
|
5296
5346
|
return target instanceof Node;
|