hy-app 0.4.9 → 0.4.11

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.
@@ -4,8 +4,8 @@
4
4
  * @return {Boolean}
5
5
  * */
6
6
  export const isNumericString = (text: string | number): boolean => {
7
- return typeof text === 'string' && !isNaN(Number(text))
8
- }
7
+ return typeof text === "string" && !isNaN(Number(text));
8
+ };
9
9
 
10
10
  /**
11
11
  * @description 判断是否是数字
@@ -13,8 +13,8 @@ export const isNumericString = (text: string | number): boolean => {
13
13
  * @return {Boolean}
14
14
  * */
15
15
  export const isNumber = (text: string | number): boolean => {
16
- return typeof text === 'number' || isNumericString(text)
17
- }
16
+ return typeof text === "number" || isNumericString(text);
17
+ };
18
18
 
19
19
  /**
20
20
  * @description 判断是否数组
@@ -23,12 +23,12 @@ export const isNumber = (text: string | number): boolean => {
23
23
  */
24
24
  export const isArray = (arr: any): arr is Array<any> => {
25
25
  // 如果 Array.isArray 函数可用,直接使用该函数检查
26
- if (typeof Array.isArray === 'function') {
27
- return Array.isArray(arr)
26
+ if (typeof Array.isArray === "function") {
27
+ return Array.isArray(arr);
28
28
  }
29
29
  // 否则,使用对象原型的 toString 方法进行检查
30
- return Object.prototype.toString.call(arr) === '[object Array]'
31
- }
30
+ return Object.prototype.toString.call(arr) === "[object Array]";
31
+ };
32
32
 
33
33
  /**
34
34
  * @description 判断是否对象
@@ -36,8 +36,8 @@ export const isArray = (arr: any): arr is Array<any> => {
36
36
  * @return {Boolean}
37
37
  */
38
38
  export const isObject = (obj: any): obj is Object => {
39
- return Object.prototype.toString.call(obj) === '[object Object]'
40
- }
39
+ return Object.prototype.toString.call(obj) === "[object Object]";
40
+ };
41
41
 
42
42
  /**
43
43
  * @description 是否为base64图片
@@ -46,7 +46,7 @@ export const isObject = (obj: any): obj is Object => {
46
46
  */
47
47
  export function isBase64Image(url: string) {
48
48
  // 使用正则表达式检查URL是否以"data:image"开头,这是Base64图片的常见前缀
49
- return /^data:image\/(png|jpg|jpeg|gif|bmp);base64,/.test(url)
49
+ return /^data:image\/(png|jpg|jpeg|gif|bmp);base64,/.test(url);
50
50
  }
51
51
 
52
52
  /**
@@ -56,7 +56,7 @@ export function isBase64Image(url: string) {
56
56
  */
57
57
  export function isImage(url: string) {
58
58
  // 使用正则表达式检查URL是否以"data:image"开头,这是Base64图片的常见前缀
59
- return /(\.jpg|\.jpeg|\.png|\.gif|\.bmp|\.webp)$/i.test(url)
59
+ return /(\.jpg|\.jpeg|\.png|\.gif|\.bmp|\.webp)$/i.test(url);
60
60
  }
61
61
 
62
62
  /**
@@ -64,8 +64,9 @@ export function isImage(url: string) {
64
64
  * @param {String} value
65
65
  */
66
66
  export function isVideo(value: string): boolean {
67
- const VIDEO_REGEXP = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|m3u8)/i
68
- return VIDEO_REGEXP.test(value)
67
+ const VIDEO_REGEXP =
68
+ /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|m3u8)/i;
69
+ return VIDEO_REGEXP.test(value);
69
70
  }
70
71
 
71
72
  /**
@@ -73,55 +74,80 @@ export function isVideo(value: string): boolean {
73
74
  * @param {Number | String} value yyyy-mm-dd hh:mm:ss 或 时间戳
74
75
  */
75
76
  export const isDate = (value: string | number) => {
76
- if (!value) return false
77
+ if (!value) return false;
77
78
  // number类型,判断是否是时间戳
78
- if (typeof value === 'number') {
79
+ if (typeof value === "number") {
79
80
  // len === 10 秒级时间戳 len === 13 毫秒级时间戳
80
81
  if (value.toString().length !== 10 && value.toString().length !== 13) {
81
- return false
82
+ return false;
82
83
  }
83
- return !isNaN(new Date(value).getTime())
84
+ return !isNaN(new Date(value).getTime());
84
85
  }
85
- if (typeof value === 'string') {
86
+ if (typeof value === "string") {
86
87
  // 是否为string类型时间戳
87
- const numV = Number(value)
88
+ const numV = Number(value);
88
89
  if (!isNaN(numV)) {
89
90
  if (numV.toString().length === 10 || numV.toString().length === 13) {
90
- return !isNaN(new Date(numV).getTime())
91
+ return !isNaN(new Date(numV).getTime());
91
92
  }
92
93
  }
93
94
  // 非时间戳,且长度在yyyy-mm-dd 至 yyyy-mm-dd hh:mm:ss 之间
94
95
  if (value.length < 10 || value.length > 19) {
95
- return false
96
+ return false;
96
97
  }
97
- const dateRegex = /^\d{4}[-\/]\d{2}[-\/]\d{2}( \d{1,2}:\d{2}(:\d{2})?)?$/
98
+ const dateRegex = /^\d{4}[-\/]\d{2}[-\/]\d{2}( \d{1,2}:\d{2}(:\d{2})?)?$/;
98
99
  if (!dateRegex.test(value)) {
99
- return false
100
+ return false;
100
101
  }
101
102
  // 检查是否为有效日期
102
- const dateValue = new Date(value)
103
- return !isNaN(dateValue.getTime())
103
+ const dateValue = new Date(value);
104
+ return !isNaN(dateValue.getTime());
104
105
  }
105
106
  // 非number和string类型,不做校验
106
- return false
107
- }
107
+ return false;
108
+ };
108
109
 
109
110
  /**
110
111
  * @description 验证是否是手机号格式
111
- * @param {String} phone 手机号
112
+ * @param {unknown} phone 手机号
112
113
  */
113
- export const isPhone = (phone: string): boolean => {
114
- return /^1[23456789]\d{9}$/.test(phone)
115
- }
114
+ export const isPhone = (phone: unknown): boolean => {
115
+ if (typeof phone !== "string" && typeof phone !== "number") return false;
116
+ if (phone === "") return false;
117
+
118
+ const phoneStr = String(phone).trim();
119
+ // 处理 +86 12345678901 格式
120
+ const normalized = phoneStr.replace(/^\+86\s?/, "");
121
+ return /^1[3-9]\d{9}$/.test(normalized) && normalized.length === 11;
122
+ };
116
123
 
117
124
  /**
118
125
  * @description 验证身份证号码
119
- * @param {String} idCard 身份证号
126
+ * @param {unknown} idCard 身份证号
120
127
  * @return {Boolean}
121
128
  */
122
- export const isIdCard = (idCard: string): boolean => {
123
- return /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(idCard)
124
- }
129
+ export const isIdCard = (idCard: unknown): boolean => {
130
+ if (typeof idCard !== "string" && typeof idCard !== "number") return false;
131
+ const str = String(idCard).trim().toUpperCase();
132
+
133
+ // 格式校验:15位或18位
134
+ if (!/(^\d{15}$)|(^\d{17}[\dX]$)/.test(str)) return false;
135
+
136
+ // 18位身份证:校验校验码
137
+ if (str.length === 18) {
138
+ const weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
139
+ const checksums = ["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"];
140
+
141
+ let sum = 0;
142
+ for (let i = 0; i < 17; i++) {
143
+ sum += parseInt(str[i]) * weights[i];
144
+ }
145
+
146
+ return checksums[sum % 11] === str[17];
147
+ }
148
+
149
+ return true; // 15位不校验
150
+ };
125
151
 
126
152
  /**
127
153
  * @description 验证是否是中文
@@ -129,17 +155,17 @@ export const isIdCard = (idCard: string): boolean => {
129
155
  * @return {Boolean}
130
156
  */
131
157
  export const isChinese = (zh: string): boolean => {
132
- const reg = /^[\u4e00-\u9fa5]+$/gi
133
- return reg.test(zh)
134
- }
158
+ const reg = /^[\u4e00-\u9fa5]+$/gi;
159
+ return reg.test(zh);
160
+ };
135
161
 
136
162
  /**
137
163
  * @description 判断环境是否是H5
138
164
  */
139
165
  export const isH5 = (() => {
140
- let isH5 = false
166
+ let isH5 = false;
141
167
  // #ifdef H5
142
- isH5 = true
168
+ isH5 = true;
143
169
  // #endif
144
- return isH5
145
- })()
170
+ return isH5;
171
+ })();
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "hy-app",
3
- "version": "0.4.9",
4
- "description": "fix: 修复navbar绝对定位问题",
3
+ "version": "0.4.11",
4
+ "description": "feat: 水印图片和文字同时存在并且加上title字段",
5
5
  "main": "./index.ts",
6
6
  "private": false,
7
7
  "scripts": {},