@wapri/gbase 2.0.0 → 2.0.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/LICENSE +21 -21
- package/README.md +6 -0
- package/dist/constant/os.js +17 -17
- package/dist/constant/regexp.js +10 -10
- package/dist/download.js +4 -4
- package/dist/os.js +25 -25
- package/dist/regexp.js +8 -8
- package/dist/storage.js +2 -2
- package/dist/url.js +10 -10
- package/package.json +1 -1
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 wapri contributors
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 wapri contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
package/dist/constant/os.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 鸿蒙系统 UA 特征集中维护
|
|
3
|
-
*
|
|
4
|
-
* 约定与 `constant/regexp.ts` 一致:只导出「创建正则」的函数,避免正则字面量在脚本解析阶段抛错。
|
|
5
|
-
*
|
|
6
|
-
* 真实 UA 样本:
|
|
7
|
-
* - 纯血鸿蒙(HarmonyOS NEXT)系统浏览器:
|
|
8
|
-
* `Mozilla/5.0 (Phone; OpenHarmony 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 ArkWeb/4.1.6.1 Mobile HuaweiBrowser/5.0.3.351`
|
|
9
|
-
* - 纯血鸿蒙 App 内嵌 WebView(部分应用会把型号与版本追加在末尾,形态为 `Harmony/5.0.1.71`):
|
|
10
|
-
* `Mozilla/5.0 (Phone; OpenHarmony 5.0) ... ArkWeb/4.1.6.1 Mobile PPDWebUI/10.5.0 ... (Harmony/5.0.1.71)`
|
|
11
|
-
* - 旧版鸿蒙(HarmonyOS 4 及以前,兼容 AOSP):UA 中同时含 `Android` 与 `HarmonyOS`,
|
|
12
|
-
* 形如 `Mozilla/5.0 (Linux; Android 10; HarmonyOS; ...) ... HuaweiBrowser/12.x`
|
|
1
|
+
/**
|
|
2
|
+
* 鸿蒙系统 UA 特征集中维护
|
|
3
|
+
*
|
|
4
|
+
* 约定与 `constant/regexp.ts` 一致:只导出「创建正则」的函数,避免正则字面量在脚本解析阶段抛错。
|
|
5
|
+
*
|
|
6
|
+
* 真实 UA 样本:
|
|
7
|
+
* - 纯血鸿蒙(HarmonyOS NEXT)系统浏览器:
|
|
8
|
+
* `Mozilla/5.0 (Phone; OpenHarmony 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 ArkWeb/4.1.6.1 Mobile HuaweiBrowser/5.0.3.351`
|
|
9
|
+
* - 纯血鸿蒙 App 内嵌 WebView(部分应用会把型号与版本追加在末尾,形态为 `Harmony/5.0.1.71`):
|
|
10
|
+
* `Mozilla/5.0 (Phone; OpenHarmony 5.0) ... ArkWeb/4.1.6.1 Mobile PPDWebUI/10.5.0 ... (Harmony/5.0.1.71)`
|
|
11
|
+
* - 旧版鸿蒙(HarmonyOS 4 及以前,兼容 AOSP):UA 中同时含 `Android` 与 `HarmonyOS`,
|
|
12
|
+
* 形如 `Mozilla/5.0 (Linux; Android 10; HarmonyOS; ...) ... HuaweiBrowser/12.x`
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
15
|
/** 鸿蒙 ArkWeb 内核标识,纯血鸿蒙(HarmonyOS NEXT)必带,旧版鸿蒙不带 */
|
|
@@ -22,11 +22,11 @@ export var regexpHarmonyOSNext = function regexpHarmonyOSNext() {
|
|
|
22
22
|
return new RegExp('openharmony|harmony/\\d', 'i');
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
/**
|
|
26
|
-
* 广义鸿蒙标识:覆盖纯血鸿蒙(`OpenHarmony`、`Harmony/5.x`、`ArkWeb`)与旧版鸿蒙(`HarmonyOS`)
|
|
27
|
-
*
|
|
28
|
-
* 注意不要把 `HMSCore` 作为判定依据:它是华为移动服务的 SDK 标识,普通华为 Android 机型
|
|
29
|
-
* (如 ELS-AN00 / Mate 系列)的 UA 里同样带有,会把所有华为安卓机误判成鸿蒙。
|
|
25
|
+
/**
|
|
26
|
+
* 广义鸿蒙标识:覆盖纯血鸿蒙(`OpenHarmony`、`Harmony/5.x`、`ArkWeb`)与旧版鸿蒙(`HarmonyOS`)
|
|
27
|
+
*
|
|
28
|
+
* 注意不要把 `HMSCore` 作为判定依据:它是华为移动服务的 SDK 标识,普通华为 Android 机型
|
|
29
|
+
* (如 ELS-AN00 / Mate 系列)的 UA 里同样带有,会把所有华为安卓机误判成鸿蒙。
|
|
30
30
|
*/
|
|
31
31
|
export var regexpHarmonyOS = function regexpHarmonyOS() {
|
|
32
32
|
return new RegExp('openharmony|harmony/\\d|harmonyos|arkweb', 'i');
|
package/dist/constant/regexp.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 正则集中维护
|
|
3
|
-
*
|
|
4
|
-
* 约定:
|
|
5
|
-
* 1. 这里只导出「创建正则」的函数,不直接导出正则对象。
|
|
6
|
-
* 2. 正则用字符串 + new RegExp 构造,而不是正则字面量。
|
|
7
|
-
* 字面量会在脚本解析阶段就被引擎校验,一旦用到浏览器不支持的语法(如 lookbehind),
|
|
8
|
-
* 解析期就会抛 SyntaxError,导致整个模块加载失败,调用方的 try/catch 也拦不住;
|
|
9
|
-
* 字符串形式把编译推迟到调用时,异常才能被捕获并降级。
|
|
10
|
-
* 3. 校验方法(src/regexp.ts)只负责调用,不内联正则。
|
|
1
|
+
/**
|
|
2
|
+
* 正则集中维护
|
|
3
|
+
*
|
|
4
|
+
* 约定:
|
|
5
|
+
* 1. 这里只导出「创建正则」的函数,不直接导出正则对象。
|
|
6
|
+
* 2. 正则用字符串 + new RegExp 构造,而不是正则字面量。
|
|
7
|
+
* 字面量会在脚本解析阶段就被引擎校验,一旦用到浏览器不支持的语法(如 lookbehind),
|
|
8
|
+
* 解析期就会抛 SyntaxError,导致整个模块加载失败,调用方的 try/catch 也拦不住;
|
|
9
|
+
* 字符串形式把编译推迟到调用时,异常才能被捕获并降级。
|
|
10
|
+
* 3. 校验方法(src/regexp.ts)只负责调用,不内联正则。
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
/** 邮箱 */
|
package/dist/download.js
CHANGED
package/dist/os.js
CHANGED
|
@@ -34,34 +34,34 @@ var isIpad = function isIpad() {
|
|
|
34
34
|
return platform && navigator.maxTouchPoints > 1 || navigator.userAgent.match(/iPad/i) != null;
|
|
35
35
|
};
|
|
36
36
|
|
|
37
|
-
/**
|
|
38
|
-
* 是否为 Android
|
|
39
|
-
*
|
|
40
|
-
* 旧版鸿蒙(HarmonyOS 4 及以前)兼容 AOSP,其 UA 中同时包含 `Android`,因此这里会返回 `true`;
|
|
41
|
-
* 若需要区分两者,请优先用 `isHarmonyOS()` 判断。
|
|
37
|
+
/**
|
|
38
|
+
* 是否为 Android
|
|
39
|
+
*
|
|
40
|
+
* 旧版鸿蒙(HarmonyOS 4 及以前)兼容 AOSP,其 UA 中同时包含 `Android`,因此这里会返回 `true`;
|
|
41
|
+
* 若需要区分两者,请优先用 `isHarmonyOS()` 判断。
|
|
42
42
|
*/
|
|
43
43
|
var isAndroid = function isAndroid() {
|
|
44
44
|
var ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getUA();
|
|
45
45
|
return /android/i.test(ua);
|
|
46
46
|
};
|
|
47
47
|
|
|
48
|
-
/**
|
|
49
|
-
* 是否为鸿蒙系统(广义)
|
|
50
|
-
*
|
|
51
|
-
* 覆盖两类:
|
|
52
|
-
* - 纯血鸿蒙 HarmonyOS NEXT:UA 含 `OpenHarmony` / `ArkWeb`,不含 `Android`
|
|
53
|
-
* - 旧版鸿蒙 HarmonyOS 4 及以前:UA 含 `HarmonyOS` / `HMSCore`,同时含 `Android`
|
|
48
|
+
/**
|
|
49
|
+
* 是否为鸿蒙系统(广义)
|
|
50
|
+
*
|
|
51
|
+
* 覆盖两类:
|
|
52
|
+
* - 纯血鸿蒙 HarmonyOS NEXT:UA 含 `OpenHarmony` / `ArkWeb`,不含 `Android`
|
|
53
|
+
* - 旧版鸿蒙 HarmonyOS 4 及以前:UA 含 `HarmonyOS` / `HMSCore`,同时含 `Android`
|
|
54
54
|
*/
|
|
55
55
|
var isHarmonyOS = function isHarmonyOS() {
|
|
56
56
|
var ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getUA();
|
|
57
57
|
return regexpHarmonyOS().test(ua);
|
|
58
58
|
};
|
|
59
59
|
|
|
60
|
-
/**
|
|
61
|
-
* 是否为纯血鸿蒙(HarmonyOS NEXT,5.x)
|
|
62
|
-
*
|
|
63
|
-
* UA 含 `OpenHarmony` 或 `Harmony/x.y`,且不再是 AOSP 兼容架构,不含 `Android`。
|
|
64
|
-
* 需要与旧版鸿蒙区分时使用。
|
|
60
|
+
/**
|
|
61
|
+
* 是否为纯血鸿蒙(HarmonyOS NEXT,5.x)
|
|
62
|
+
*
|
|
63
|
+
* UA 含 `OpenHarmony` 或 `Harmony/x.y`,且不再是 AOSP 兼容架构,不含 `Android`。
|
|
64
|
+
* 需要与旧版鸿蒙区分时使用。
|
|
65
65
|
*/
|
|
66
66
|
var isHarmonyOSNext = function isHarmonyOSNext() {
|
|
67
67
|
var ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getUA();
|
|
@@ -69,10 +69,10 @@ var isHarmonyOSNext = function isHarmonyOSNext() {
|
|
|
69
69
|
return regexpHarmonyOSNext().test(ua) || regexpArkWeb().test(ua);
|
|
70
70
|
};
|
|
71
71
|
|
|
72
|
-
/**
|
|
73
|
-
* 是否为旧版鸿蒙(HarmonyOS 4 及以前,兼容 AOSP)
|
|
74
|
-
*
|
|
75
|
-
* UA 同时包含 `Android` 与鸿蒙标识,可正常安装 Android APK。
|
|
72
|
+
/**
|
|
73
|
+
* 是否为旧版鸿蒙(HarmonyOS 4 及以前,兼容 AOSP)
|
|
74
|
+
*
|
|
75
|
+
* UA 同时包含 `Android` 与鸿蒙标识,可正常安装 Android APK。
|
|
76
76
|
*/
|
|
77
77
|
var isHarmonyOSLegacy = function isHarmonyOSLegacy() {
|
|
78
78
|
var ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getUA();
|
|
@@ -101,11 +101,11 @@ var isInWebview = function isInWebview() {
|
|
|
101
101
|
return /Client|DeutolsWebSDK|UnrealEngine|PlayStation/i.test(ua);
|
|
102
102
|
};
|
|
103
103
|
|
|
104
|
-
/**
|
|
105
|
-
* 获取操作系统类型
|
|
106
|
-
*
|
|
107
|
-
* 鸿蒙必须最先判断:旧版鸿蒙兼容 AOSP,其 appVersion 与 UA 中同时含 `Linux` 和 `Android`,
|
|
108
|
-
* 若先匹配 `linux` 分支,鸿蒙会被吞成 `linux`,新增的 `harmonyos` 分支永远走不到。
|
|
104
|
+
/**
|
|
105
|
+
* 获取操作系统类型
|
|
106
|
+
*
|
|
107
|
+
* 鸿蒙必须最先判断:旧版鸿蒙兼容 AOSP,其 appVersion 与 UA 中同时含 `Linux` 和 `Android`,
|
|
108
|
+
* 若先匹配 `linux` 分支,鸿蒙会被吞成 `linux`,新增的 `harmonyos` 分支永远走不到。
|
|
109
109
|
*/
|
|
110
110
|
var getOS = function getOS() {
|
|
111
111
|
var userAgent = getUA();
|
package/dist/regexp.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { regexpEmail, regexpPhone } from "./constant/regexp";
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* 校验邮箱
|
|
5
|
-
* 正则构造或匹配失败(如浏览器不支持对应语法)时返回 false,不向上抛错
|
|
6
|
-
* @param value 待校验的值
|
|
3
|
+
/**
|
|
4
|
+
* 校验邮箱
|
|
5
|
+
* 正则构造或匹配失败(如浏览器不支持对应语法)时返回 false,不向上抛错
|
|
6
|
+
* @param value 待校验的值
|
|
7
7
|
*/
|
|
8
8
|
export var isEmail = function isEmail(value) {
|
|
9
9
|
try {
|
|
@@ -13,10 +13,10 @@ export var isEmail = function isEmail(value) {
|
|
|
13
13
|
}
|
|
14
14
|
};
|
|
15
15
|
|
|
16
|
-
/**
|
|
17
|
-
* 校验手机号(中国大陆 11 位)
|
|
18
|
-
* 正则构造或匹配失败(如浏览器不支持对应语法)时返回 false,不向上抛错
|
|
19
|
-
* @param value 待校验的值
|
|
16
|
+
/**
|
|
17
|
+
* 校验手机号(中国大陆 11 位)
|
|
18
|
+
* 正则构造或匹配失败(如浏览器不支持对应语法)时返回 false,不向上抛错
|
|
19
|
+
* @param value 待校验的值
|
|
20
20
|
*/
|
|
21
21
|
export var isPhone = function isPhone(value) {
|
|
22
22
|
try {
|
package/dist/storage.js
CHANGED
|
@@ -5,8 +5,8 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
|
|
|
5
5
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
6
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
7
7
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
8
|
-
/**
|
|
9
|
-
* 在 App 壳未提供浏览器存储时,回退到内存存储,避免读写时抛出异常。
|
|
8
|
+
/**
|
|
9
|
+
* 在 App 壳未提供浏览器存储时,回退到内存存储,避免读写时抛出异常。
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
var noSupportLS = function noSupportLS(type) {
|
package/dist/url.js
CHANGED
|
@@ -85,16 +85,16 @@ var splitUrl = function splitUrl(href) {
|
|
|
85
85
|
};
|
|
86
86
|
};
|
|
87
87
|
|
|
88
|
-
/**
|
|
89
|
-
* 通过 history.replaceState 修改地址栏参数,不触发页面刷新。
|
|
90
|
-
*
|
|
91
|
-
* - 同名参数以传入值为准,未传入的原有参数保持不变
|
|
92
|
-
* - 值为 `null` / `undefined` / `''` 时删除该参数
|
|
93
|
-
* - hash 路由(`/#/home?page=1`)时参数写在 hash 内
|
|
94
|
-
*
|
|
95
|
-
* @param params 需要合并进地址的参数
|
|
96
|
-
* @param url 目标地址,默认为当前页面地址
|
|
97
|
-
* @returns 替换后的完整地址
|
|
88
|
+
/**
|
|
89
|
+
* 通过 history.replaceState 修改地址栏参数,不触发页面刷新。
|
|
90
|
+
*
|
|
91
|
+
* - 同名参数以传入值为准,未传入的原有参数保持不变
|
|
92
|
+
* - 值为 `null` / `undefined` / `''` 时删除该参数
|
|
93
|
+
* - hash 路由(`/#/home?page=1`)时参数写在 hash 内
|
|
94
|
+
*
|
|
95
|
+
* @param params 需要合并进地址的参数
|
|
96
|
+
* @param url 目标地址,默认为当前页面地址
|
|
97
|
+
* @returns 替换后的完整地址
|
|
98
98
|
*/
|
|
99
99
|
export function replaceUrl(params, url) {
|
|
100
100
|
var _window$history;
|