@xfe-repo/web-utils 1.0.3 → 1.0.4

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.
@@ -0,0 +1,52 @@
1
+ // src/valid.ts
2
+ var regPhone = /^1[3-9]\d{9}$/;
3
+ var isValidPhone = (value) => Boolean(regPhone.test(value == null ? void 0 : value.replace(/\s/g, "")));
4
+ var regCaptchaSms = /^\d{4}$/;
5
+ var isValidCaptchaSms = (value) => Boolean(regCaptchaSms.test(value.replace(/\s/g, "")));
6
+ var regValidSms = /^\d{4}$/;
7
+ var isValidSms = (value) => Boolean(regValidSms.test(value.replace(/\s/g, "")));
8
+ var regNumber = /^\d+$/;
9
+ var isValidNumber = (value) => Boolean(regNumber.test(value.replace(/\s/g, "")));
10
+ var regEmail = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/;
11
+ var isValidEmail = (value) => Boolean(regEmail.test(value.replace(/\s/g, "")));
12
+ var regImgBase64 = /^data:image\/.*;base64,/i;
13
+ var isImgBase64 = (value) => Boolean(regImgBase64.test(value.replace(/\s/g, "")));
14
+ var regBlob = /^blob:/i;
15
+ var isBlob = (value) => Boolean(regBlob.test(value.replace(/\s/g, "")));
16
+ var regTmp = /^(wxfile|http):\/\/tmp/i;
17
+ var isTmp = (value) => Boolean(regTmp.test(value.replace(/\s/g, "")));
18
+ var regImgHeic = /\.(heic)(\?.+)?$/i;
19
+ var isImgHeic = (value) => Boolean(regImgHeic.test(value.replace(/\s/g, "")));
20
+ var regImgSvg = /\.(svg)(\?.+)?$/i;
21
+ var isImgSvg = (value) => Boolean(regImgSvg.test(value.replace(/\s/g, "")));
22
+ var regImgWeChat = /^https:\/\/(thirdwx|wx)\.qlogo\.cn/i;
23
+ var isImgWeChat = (value) => Boolean(regImgWeChat.test(value.replace(/\s/g, "")));
24
+ var regAssets = /^(\/(assets|static))/i;
25
+ var isAssets = (value) => Boolean(regAssets.test(value.replace(/\s/g, "")));
26
+
27
+ export {
28
+ regPhone,
29
+ isValidPhone,
30
+ regCaptchaSms,
31
+ isValidCaptchaSms,
32
+ regValidSms,
33
+ isValidSms,
34
+ regNumber,
35
+ isValidNumber,
36
+ regEmail,
37
+ isValidEmail,
38
+ regImgBase64,
39
+ isImgBase64,
40
+ regBlob,
41
+ isBlob,
42
+ regTmp,
43
+ isTmp,
44
+ regImgHeic,
45
+ isImgHeic,
46
+ regImgSvg,
47
+ isImgSvg,
48
+ regImgWeChat,
49
+ isImgWeChat,
50
+ regAssets,
51
+ isAssets
52
+ };
package/dist/tools.d.mts CHANGED
@@ -11,7 +11,8 @@ declare const throttle: (delay: number, callback: any) => {
11
11
  };
12
12
  declare const widthThrottle: (delay: number) => (target: any, _name: string, descriptor: PropertyDescriptor) => void;
13
13
  declare const debounce: <T extends (...args: any) => any>(delay: number, callback: T) => T;
14
- declare const resizeAliYun: (imgUrl?: string, width?: number) => string;
14
+ declare const imgRelative2Absolute: (imgUrl?: string) => string;
15
+ declare const resizeAliYun: (imgUrl?: string, width?: number | null, quality?: number) => string;
15
16
  type FieldsWithoutArray<FS extends Record<string, any>> = {
16
17
  [K in keyof FS]: FS[K] extends any[] | undefined ? string | undefined : FS[K];
17
18
  };
@@ -39,4 +40,4 @@ declare const combobox2Options: <CB extends Record<string, (ComboBox<number> | C
39
40
  optionsMap: OptionsMapType<keyof CB>;
40
41
  };
41
42
 
42
- export { type ComboBox, type OptionsMapType, type OptionsRecordType, type OptionsType, combobox2Options, debounce, delayHandle, fieldsArrayToString, fieldsReset, formatterPrice, formatterTax, getBase64, getObjectURL, mockSkeletons, resizeAliYun, throttle, widthThrottle };
43
+ export { type ComboBox, type OptionsMapType, type OptionsRecordType, type OptionsType, combobox2Options, debounce, delayHandle, fieldsArrayToString, fieldsReset, formatterPrice, formatterTax, getBase64, getObjectURL, imgRelative2Absolute, mockSkeletons, resizeAliYun, throttle, widthThrottle };
package/dist/tools.d.ts CHANGED
@@ -11,7 +11,8 @@ declare const throttle: (delay: number, callback: any) => {
11
11
  };
12
12
  declare const widthThrottle: (delay: number) => (target: any, _name: string, descriptor: PropertyDescriptor) => void;
13
13
  declare const debounce: <T extends (...args: any) => any>(delay: number, callback: T) => T;
14
- declare const resizeAliYun: (imgUrl?: string, width?: number) => string;
14
+ declare const imgRelative2Absolute: (imgUrl?: string) => string;
15
+ declare const resizeAliYun: (imgUrl?: string, width?: number | null, quality?: number) => string;
15
16
  type FieldsWithoutArray<FS extends Record<string, any>> = {
16
17
  [K in keyof FS]: FS[K] extends any[] | undefined ? string | undefined : FS[K];
17
18
  };
@@ -39,4 +40,4 @@ declare const combobox2Options: <CB extends Record<string, (ComboBox<number> | C
39
40
  optionsMap: OptionsMapType<keyof CB>;
40
41
  };
41
42
 
42
- export { type ComboBox, type OptionsMapType, type OptionsRecordType, type OptionsType, combobox2Options, debounce, delayHandle, fieldsArrayToString, fieldsReset, formatterPrice, formatterTax, getBase64, getObjectURL, mockSkeletons, resizeAliYun, throttle, widthThrottle };
43
+ export { type ComboBox, type OptionsMapType, type OptionsRecordType, type OptionsType, combobox2Options, debounce, delayHandle, fieldsArrayToString, fieldsReset, formatterPrice, formatterTax, getBase64, getObjectURL, imgRelative2Absolute, mockSkeletons, resizeAliYun, throttle, widthThrottle };
package/dist/tools.js CHANGED
@@ -43,12 +43,31 @@ __export(tools_exports, {
43
43
  formatterTax: () => formatterTax,
44
44
  getBase64: () => getBase64,
45
45
  getObjectURL: () => getObjectURL,
46
+ imgRelative2Absolute: () => imgRelative2Absolute,
46
47
  mockSkeletons: () => mockSkeletons,
47
48
  resizeAliYun: () => resizeAliYun,
48
49
  throttle: () => throttle,
49
50
  widthThrottle: () => widthThrottle
50
51
  });
51
52
  module.exports = __toCommonJS(tools_exports);
53
+
54
+ // src/valid.ts
55
+ var regImgBase64 = /^data:image\/.*;base64,/i;
56
+ var isImgBase64 = (value) => Boolean(regImgBase64.test(value.replace(/\s/g, "")));
57
+ var regBlob = /^blob:/i;
58
+ var isBlob = (value) => Boolean(regBlob.test(value.replace(/\s/g, "")));
59
+ var regTmp = /^(wxfile|http):\/\/tmp/i;
60
+ var isTmp = (value) => Boolean(regTmp.test(value.replace(/\s/g, "")));
61
+ var regImgHeic = /\.(heic)(\?.+)?$/i;
62
+ var isImgHeic = (value) => Boolean(regImgHeic.test(value.replace(/\s/g, "")));
63
+ var regImgSvg = /\.(svg)(\?.+)?$/i;
64
+ var isImgSvg = (value) => Boolean(regImgSvg.test(value.replace(/\s/g, "")));
65
+ var regImgWeChat = /^https:\/\/(thirdwx|wx)\.qlogo\.cn/i;
66
+ var isImgWeChat = (value) => Boolean(regImgWeChat.test(value.replace(/\s/g, "")));
67
+ var regAssets = /^(\/(assets|static))/i;
68
+ var isAssets = (value) => Boolean(regAssets.test(value.replace(/\s/g, "")));
69
+
70
+ // src/tools.ts
52
71
  var mockSkeletons = (length, fn) => {
53
72
  const mockList = [];
54
73
  fn = fn || ((id) => ({ id }));
@@ -145,11 +164,38 @@ var debounce = (delay, callback) => {
145
164
  }
146
165
  return wrapper;
147
166
  };
148
- var resizeAliYun = (imgUrl = "", width = 300) => {
149
- if (!imgUrl || !imgUrl.startsWith("http"))
167
+ var imgRelative2Absolute = (imgUrl = "") => {
168
+ if (!imgUrl)
169
+ return imgUrl;
170
+ const isAbsoluteUrl = imgUrl.startsWith("https");
171
+ if (!isAbsoluteUrl) {
172
+ imgUrl = `https://imgs.xianghuanji.com/${imgUrl.replace(/^\//, "")}`;
173
+ }
174
+ return imgUrl;
175
+ };
176
+ var resizeAliYun = (imgUrl = "", width, quality) => {
177
+ if (!imgUrl)
150
178
  return imgUrl;
179
+ if (isTmp(imgUrl) || isBlob(imgUrl) || isImgWeChat(imgUrl)) {
180
+ return imgUrl;
181
+ }
182
+ if (isImgBase64(imgUrl) || isAssets(imgUrl)) {
183
+ return imgUrl;
184
+ }
185
+ imgUrl = imgRelative2Absolute(imgUrl);
186
+ if (isImgSvg(imgUrl)) {
187
+ return imgUrl;
188
+ }
151
189
  imgUrl = imgUrl.replace(/[?#].*/g, "");
152
- return `${imgUrl}?x-oss-process=image/resize,w_${width}`;
190
+ const isHeic = isImgHeic(imgUrl);
191
+ let params = "x-oss-process=image";
192
+ if (width)
193
+ params = `${params}/resize,w_${width}`;
194
+ if (quality)
195
+ params = `${params}/quality,Q_${quality}`;
196
+ if (isHeic)
197
+ params = `${params}/format,jpg`;
198
+ return `${imgUrl}?${params}`;
153
199
  };
154
200
  var fieldsArrayToString = (fields) => {
155
201
  const fieldsCopy = __spreadValues({}, fields);
@@ -195,6 +241,7 @@ var combobox2Options = (comboBox) => {
195
241
  formatterTax,
196
242
  getBase64,
197
243
  getObjectURL,
244
+ imgRelative2Absolute,
198
245
  mockSkeletons,
199
246
  resizeAliYun,
200
247
  throttle,
package/dist/tools.mjs CHANGED
@@ -1,3 +1,12 @@
1
+ import {
2
+ isAssets,
3
+ isBlob,
4
+ isImgBase64,
5
+ isImgHeic,
6
+ isImgSvg,
7
+ isImgWeChat,
8
+ isTmp
9
+ } from "./chunk-BVYCWBGX.mjs";
1
10
  import {
2
11
  __spreadValues
3
12
  } from "./chunk-6BSPRPK2.mjs";
@@ -99,11 +108,38 @@ var debounce = (delay, callback) => {
99
108
  }
100
109
  return wrapper;
101
110
  };
102
- var resizeAliYun = (imgUrl = "", width = 300) => {
103
- if (!imgUrl || !imgUrl.startsWith("http"))
111
+ var imgRelative2Absolute = (imgUrl = "") => {
112
+ if (!imgUrl)
113
+ return imgUrl;
114
+ const isAbsoluteUrl = imgUrl.startsWith("https");
115
+ if (!isAbsoluteUrl) {
116
+ imgUrl = `https://imgs.xianghuanji.com/${imgUrl.replace(/^\//, "")}`;
117
+ }
118
+ return imgUrl;
119
+ };
120
+ var resizeAliYun = (imgUrl = "", width, quality) => {
121
+ if (!imgUrl)
122
+ return imgUrl;
123
+ if (isTmp(imgUrl) || isBlob(imgUrl) || isImgWeChat(imgUrl)) {
104
124
  return imgUrl;
125
+ }
126
+ if (isImgBase64(imgUrl) || isAssets(imgUrl)) {
127
+ return imgUrl;
128
+ }
129
+ imgUrl = imgRelative2Absolute(imgUrl);
130
+ if (isImgSvg(imgUrl)) {
131
+ return imgUrl;
132
+ }
105
133
  imgUrl = imgUrl.replace(/[?#].*/g, "");
106
- return `${imgUrl}?x-oss-process=image/resize,w_${width}`;
134
+ const isHeic = isImgHeic(imgUrl);
135
+ let params = "x-oss-process=image";
136
+ if (width)
137
+ params = `${params}/resize,w_${width}`;
138
+ if (quality)
139
+ params = `${params}/quality,Q_${quality}`;
140
+ if (isHeic)
141
+ params = `${params}/format,jpg`;
142
+ return `${imgUrl}?${params}`;
107
143
  };
108
144
  var fieldsArrayToString = (fields) => {
109
145
  const fieldsCopy = __spreadValues({}, fields);
@@ -148,6 +184,7 @@ export {
148
184
  formatterTax,
149
185
  getBase64,
150
186
  getObjectURL,
187
+ imgRelative2Absolute,
151
188
  mockSkeletons,
152
189
  resizeAliYun,
153
190
  throttle,
package/dist/valid.d.mts CHANGED
@@ -2,7 +2,25 @@ declare const regPhone: RegExp;
2
2
  declare const isValidPhone: (value: string) => boolean;
3
3
  declare const regCaptchaSms: RegExp;
4
4
  declare const isValidCaptchaSms: (value: string) => boolean;
5
+ declare const regValidSms: RegExp;
6
+ declare const isValidSms: (value: string) => boolean;
5
7
  declare const regNumber: RegExp;
6
8
  declare const isValidNumber: (value: string) => boolean;
9
+ declare const regEmail: RegExp;
10
+ declare const isValidEmail: (value: string) => boolean;
11
+ declare const regImgBase64: RegExp;
12
+ declare const isImgBase64: (value: string) => boolean;
13
+ declare const regBlob: RegExp;
14
+ declare const isBlob: (value: string) => boolean;
15
+ declare const regTmp: RegExp;
16
+ declare const isTmp: (value: string) => boolean;
17
+ declare const regImgHeic: RegExp;
18
+ declare const isImgHeic: (value: string) => boolean;
19
+ declare const regImgSvg: RegExp;
20
+ declare const isImgSvg: (value: string) => boolean;
21
+ declare const regImgWeChat: RegExp;
22
+ declare const isImgWeChat: (value: string) => boolean;
23
+ declare const regAssets: RegExp;
24
+ declare const isAssets: (value: string) => boolean;
7
25
 
8
- export { isValidCaptchaSms, isValidNumber, isValidPhone, regCaptchaSms, regNumber, regPhone };
26
+ export { isAssets, isBlob, isImgBase64, isImgHeic, isImgSvg, isImgWeChat, isTmp, isValidCaptchaSms, isValidEmail, isValidNumber, isValidPhone, isValidSms, regAssets, regBlob, regCaptchaSms, regEmail, regImgBase64, regImgHeic, regImgSvg, regImgWeChat, regNumber, regPhone, regTmp, regValidSms };
package/dist/valid.d.ts CHANGED
@@ -2,7 +2,25 @@ declare const regPhone: RegExp;
2
2
  declare const isValidPhone: (value: string) => boolean;
3
3
  declare const regCaptchaSms: RegExp;
4
4
  declare const isValidCaptchaSms: (value: string) => boolean;
5
+ declare const regValidSms: RegExp;
6
+ declare const isValidSms: (value: string) => boolean;
5
7
  declare const regNumber: RegExp;
6
8
  declare const isValidNumber: (value: string) => boolean;
9
+ declare const regEmail: RegExp;
10
+ declare const isValidEmail: (value: string) => boolean;
11
+ declare const regImgBase64: RegExp;
12
+ declare const isImgBase64: (value: string) => boolean;
13
+ declare const regBlob: RegExp;
14
+ declare const isBlob: (value: string) => boolean;
15
+ declare const regTmp: RegExp;
16
+ declare const isTmp: (value: string) => boolean;
17
+ declare const regImgHeic: RegExp;
18
+ declare const isImgHeic: (value: string) => boolean;
19
+ declare const regImgSvg: RegExp;
20
+ declare const isImgSvg: (value: string) => boolean;
21
+ declare const regImgWeChat: RegExp;
22
+ declare const isImgWeChat: (value: string) => boolean;
23
+ declare const regAssets: RegExp;
24
+ declare const isAssets: (value: string) => boolean;
7
25
 
8
- export { isValidCaptchaSms, isValidNumber, isValidPhone, regCaptchaSms, regNumber, regPhone };
26
+ export { isAssets, isBlob, isImgBase64, isImgHeic, isImgSvg, isImgWeChat, isTmp, isValidCaptchaSms, isValidEmail, isValidNumber, isValidPhone, isValidSms, regAssets, regBlob, regCaptchaSms, regEmail, regImgBase64, regImgHeic, regImgSvg, regImgWeChat, regNumber, regPhone, regTmp, regValidSms };
package/dist/valid.js CHANGED
@@ -20,26 +20,80 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/valid.ts
21
21
  var valid_exports = {};
22
22
  __export(valid_exports, {
23
+ isAssets: () => isAssets,
24
+ isBlob: () => isBlob,
25
+ isImgBase64: () => isImgBase64,
26
+ isImgHeic: () => isImgHeic,
27
+ isImgSvg: () => isImgSvg,
28
+ isImgWeChat: () => isImgWeChat,
29
+ isTmp: () => isTmp,
23
30
  isValidCaptchaSms: () => isValidCaptchaSms,
31
+ isValidEmail: () => isValidEmail,
24
32
  isValidNumber: () => isValidNumber,
25
33
  isValidPhone: () => isValidPhone,
34
+ isValidSms: () => isValidSms,
35
+ regAssets: () => regAssets,
36
+ regBlob: () => regBlob,
26
37
  regCaptchaSms: () => regCaptchaSms,
38
+ regEmail: () => regEmail,
39
+ regImgBase64: () => regImgBase64,
40
+ regImgHeic: () => regImgHeic,
41
+ regImgSvg: () => regImgSvg,
42
+ regImgWeChat: () => regImgWeChat,
27
43
  regNumber: () => regNumber,
28
- regPhone: () => regPhone
44
+ regPhone: () => regPhone,
45
+ regTmp: () => regTmp,
46
+ regValidSms: () => regValidSms
29
47
  });
30
48
  module.exports = __toCommonJS(valid_exports);
31
49
  var regPhone = /^1[3-9]\d{9}$/;
32
- var isValidPhone = (value) => Boolean(regPhone.test(value.replace(/\s/g, "")));
50
+ var isValidPhone = (value) => Boolean(regPhone.test(value == null ? void 0 : value.replace(/\s/g, "")));
33
51
  var regCaptchaSms = /^\d{4}$/;
34
52
  var isValidCaptchaSms = (value) => Boolean(regCaptchaSms.test(value.replace(/\s/g, "")));
53
+ var regValidSms = /^\d{4}$/;
54
+ var isValidSms = (value) => Boolean(regValidSms.test(value.replace(/\s/g, "")));
35
55
  var regNumber = /^\d+$/;
36
56
  var isValidNumber = (value) => Boolean(regNumber.test(value.replace(/\s/g, "")));
57
+ var regEmail = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/;
58
+ var isValidEmail = (value) => Boolean(regEmail.test(value.replace(/\s/g, "")));
59
+ var regImgBase64 = /^data:image\/.*;base64,/i;
60
+ var isImgBase64 = (value) => Boolean(regImgBase64.test(value.replace(/\s/g, "")));
61
+ var regBlob = /^blob:/i;
62
+ var isBlob = (value) => Boolean(regBlob.test(value.replace(/\s/g, "")));
63
+ var regTmp = /^(wxfile|http):\/\/tmp/i;
64
+ var isTmp = (value) => Boolean(regTmp.test(value.replace(/\s/g, "")));
65
+ var regImgHeic = /\.(heic)(\?.+)?$/i;
66
+ var isImgHeic = (value) => Boolean(regImgHeic.test(value.replace(/\s/g, "")));
67
+ var regImgSvg = /\.(svg)(\?.+)?$/i;
68
+ var isImgSvg = (value) => Boolean(regImgSvg.test(value.replace(/\s/g, "")));
69
+ var regImgWeChat = /^https:\/\/(thirdwx|wx)\.qlogo\.cn/i;
70
+ var isImgWeChat = (value) => Boolean(regImgWeChat.test(value.replace(/\s/g, "")));
71
+ var regAssets = /^(\/(assets|static))/i;
72
+ var isAssets = (value) => Boolean(regAssets.test(value.replace(/\s/g, "")));
37
73
  // Annotate the CommonJS export names for ESM import in node:
38
74
  0 && (module.exports = {
75
+ isAssets,
76
+ isBlob,
77
+ isImgBase64,
78
+ isImgHeic,
79
+ isImgSvg,
80
+ isImgWeChat,
81
+ isTmp,
39
82
  isValidCaptchaSms,
83
+ isValidEmail,
40
84
  isValidNumber,
41
85
  isValidPhone,
86
+ isValidSms,
87
+ regAssets,
88
+ regBlob,
42
89
  regCaptchaSms,
90
+ regEmail,
91
+ regImgBase64,
92
+ regImgHeic,
93
+ regImgSvg,
94
+ regImgWeChat,
43
95
  regNumber,
44
- regPhone
96
+ regPhone,
97
+ regTmp,
98
+ regValidSms
45
99
  });
package/dist/valid.mjs CHANGED
@@ -1,17 +1,53 @@
1
+ import {
2
+ isAssets,
3
+ isBlob,
4
+ isImgBase64,
5
+ isImgHeic,
6
+ isImgSvg,
7
+ isImgWeChat,
8
+ isTmp,
9
+ isValidCaptchaSms,
10
+ isValidEmail,
11
+ isValidNumber,
12
+ isValidPhone,
13
+ isValidSms,
14
+ regAssets,
15
+ regBlob,
16
+ regCaptchaSms,
17
+ regEmail,
18
+ regImgBase64,
19
+ regImgHeic,
20
+ regImgSvg,
21
+ regImgWeChat,
22
+ regNumber,
23
+ regPhone,
24
+ regTmp,
25
+ regValidSms
26
+ } from "./chunk-BVYCWBGX.mjs";
1
27
  import "./chunk-6BSPRPK2.mjs";
2
-
3
- // src/valid.ts
4
- var regPhone = /^1[3-9]\d{9}$/;
5
- var isValidPhone = (value) => Boolean(regPhone.test(value.replace(/\s/g, "")));
6
- var regCaptchaSms = /^\d{4}$/;
7
- var isValidCaptchaSms = (value) => Boolean(regCaptchaSms.test(value.replace(/\s/g, "")));
8
- var regNumber = /^\d+$/;
9
- var isValidNumber = (value) => Boolean(regNumber.test(value.replace(/\s/g, "")));
10
28
  export {
29
+ isAssets,
30
+ isBlob,
31
+ isImgBase64,
32
+ isImgHeic,
33
+ isImgSvg,
34
+ isImgWeChat,
35
+ isTmp,
11
36
  isValidCaptchaSms,
37
+ isValidEmail,
12
38
  isValidNumber,
13
39
  isValidPhone,
40
+ isValidSms,
41
+ regAssets,
42
+ regBlob,
14
43
  regCaptchaSms,
44
+ regEmail,
45
+ regImgBase64,
46
+ regImgHeic,
47
+ regImgSvg,
48
+ regImgWeChat,
15
49
  regNumber,
16
- regPhone
50
+ regPhone,
51
+ regTmp,
52
+ regValidSms
17
53
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xfe-repo/web-utils",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "sideEffects": false,
5
5
  "exports": {
6
6
  "./*": {