tools-min-ns 1.10.3 → 1.11.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/README.md CHANGED
@@ -5,6 +5,14 @@ cnpm i tools-min-ns --save
5
5
  ```
6
6
 
7
7
  # updates
8
+ ## v1.11.1
9
+ > BrowserUtil
10
+ 修复window暴露问题。
11
+
12
+ ## v1.10.3
13
+ > ArrayUtil
14
+ 新增universalSort
15
+
8
16
  ## v1.10.3
9
17
  > TransferUtil
10
18
  getFileSizeByBytes修复参数n
@@ -105,5 +105,35 @@ declare namespace ArrayUtil {
105
105
  * randomSortArr([{a:1},{a:2},{a:3}]) => [{a:3},{a:1},{a:2}]
106
106
  */
107
107
  function randomSortArr<T>(arr: T[]): T[];
108
+ /**
109
+ * 通用排序函数
110
+ * @param array 要排序的数组
111
+ * @param key 排序依据的键(如果数组元素是对象)或自定义排序函数
112
+ * @param order 排序顺序('asc' 表示升序,'desc' 表示降序)
113
+ * @returns 排序后的数组
114
+ * @example
115
+ *
116
+
117
+ // 排序数字数组
118
+ console.log(universalSort([5, 3, 8, 1, 2])); // [1, 2, 3, 5, 8]
119
+
120
+ // 排序字符串数组
121
+ console.log(universalSort(['banana', 'apple', 'cherry'])); // ['apple', 'banana', 'cherry']
122
+
123
+ // 排序对象数组(按对象属性)
124
+ const objArray = [
125
+ { name: 'John', age: 30 },
126
+ { name: 'Jane', age: 25 },
127
+ { name: 'Jim', age: 35 }
128
+ ];
129
+ console.log(universalSort(objArray, 'age')); // [{ name: 'Jane', age: 25 }, { name: 'John', age: 30 }, { name: 'Jim', age: 35 }]
130
+
131
+ // 按自定义函数排序
132
+ console.log(universalSort(objArray, obj => obj.name.length)); // [{ name: 'Jim', age: 35 }, { name: 'John', age: 30 }, { name: 'Jane', age: 25 }]
133
+
134
+ // 按降序排序
135
+ console.log(universalSort([5, 3, 8, 1, 2], null, 'desc')); // [8, 5, 3, 2, 1]
136
+ */
137
+ function universalSort<T>(array: T[], key?: keyof T | ((item: T) => any), order?: 'asc' | 'desc'): T[];
108
138
  }
109
139
  export default ArrayUtil;
@@ -243,5 +243,71 @@ var ArrayUtil;
243
243
  });
244
244
  }
245
245
  ArrayUtil.randomSortArr = randomSortArr;
246
+ /**
247
+ * 通用排序函数
248
+ * @param array 要排序的数组
249
+ * @param key 排序依据的键(如果数组元素是对象)或自定义排序函数
250
+ * @param order 排序顺序('asc' 表示升序,'desc' 表示降序)
251
+ * @returns 排序后的数组
252
+ * @example
253
+ *
254
+ // 排序数字数组
255
+ console.log(universalSort([5, 3, 8, 1, 2])); // [1, 2, 3, 5, 8]
256
+ // 排序字符串数组
257
+ console.log(universalSort(['banana', 'apple', 'cherry'])); // ['apple', 'banana', 'cherry']
258
+ // 排序对象数组(按对象属性)
259
+ const objArray = [
260
+ { name: 'John', age: 30 },
261
+ { name: 'Jane', age: 25 },
262
+ { name: 'Jim', age: 35 }
263
+ ];
264
+ console.log(universalSort(objArray, 'age')); // [{ name: 'Jane', age: 25 }, { name: 'John', age: 30 }, { name: 'Jim', age: 35 }]
265
+ // 按自定义函数排序
266
+ console.log(universalSort(objArray, obj => obj.name.length)); // [{ name: 'Jim', age: 35 }, { name: 'John', age: 30 }, { name: 'Jane', age: 25 }]
267
+ // 按降序排序
268
+ console.log(universalSort([5, 3, 8, 1, 2], null, 'desc')); // [8, 5, 3, 2, 1]
269
+ */
270
+ function universalSort(array, key, order) {
271
+ if (order === void 0) {
272
+ order = 'asc';
273
+ }
274
+ // 检查排序顺序是否合法
275
+ if (order !== 'asc' && order !== 'desc') {
276
+ throw new Error("排序顺序必须是 'asc' 或 'desc'");
277
+ }
278
+ // 比较函数生成器
279
+ var compareFunction = function compareFunction(a, b) {
280
+ var valA, valB;
281
+ // 如果 key 是函数,调用它来获取比较值
282
+ if (typeof key === 'function') {
283
+ valA = key(a);
284
+ valB = key(b);
285
+ } else if (key) {
286
+ // 如果 key 是字符串,获取对象属性的值
287
+ valA = a[key];
288
+ valB = b[key];
289
+ } else {
290
+ // 如果没有 key,直接比较值
291
+ valA = a;
292
+ valB = b;
293
+ }
294
+ // 转换为小写字符串比较(针对字符串情况)
295
+ if (typeof valA === 'string' && typeof valB === 'string') {
296
+ valA = valA.toLowerCase();
297
+ valB = valB.toLowerCase();
298
+ }
299
+ // 比较逻辑
300
+ if (valA < valB) {
301
+ return order === 'asc' ? -1 : 1;
302
+ }
303
+ if (valA > valB) {
304
+ return order === 'asc' ? 1 : -1;
305
+ }
306
+ return 0;
307
+ };
308
+ // 使用比较函数对数组进行排序
309
+ return array.sort(compareFunction);
310
+ }
311
+ ArrayUtil.universalSort = universalSort;
246
312
  })(ArrayUtil || (ArrayUtil = {}));
247
313
  export default ArrayUtil;
@@ -26,7 +26,7 @@ declare namespace BrowserUtil {
26
26
  * 判断是否微信内置浏览器
27
27
  * @returns boolean
28
28
  */
29
- const isWeixinBrowser: () => any;
29
+ const isWeixinBrowser: () => boolean;
30
30
  /**
31
31
  * 判断是否微信小程序WebView
32
32
  * @returns boolean
@@ -36,17 +36,17 @@ declare namespace BrowserUtil {
36
36
  * 判断是否是支付宝浏览器
37
37
  * @returns boolean
38
38
  */
39
- const isAlipayBrowser: () => any;
39
+ const isAlipayBrowser: () => boolean;
40
40
  /**
41
41
  * 判断是否是支付宝小程序webview
42
42
  * @returns boolean
43
43
  */
44
- const isAlipayMiniWebView: () => any;
44
+ const isAlipayMiniWebView: () => boolean;
45
45
  /**
46
46
  * 判断是否是浙里办
47
47
  * @returns boolean
48
48
  */
49
- const isMgopBrowser: () => any;
49
+ const isMgopBrowser: () => boolean;
50
50
  /** 全屏 */
51
51
  function fullScreen(root: string | HTMLElement, callback?: (isFull: boolean) => void): void;
52
52
  /** 是否全屏 */
@@ -116,10 +116,10 @@ var __generator = this && this.__generator || function (thisArg, body) {
116
116
  import BaseUtil from '../base/BaseUtil';
117
117
  import env from '../env/env';
118
118
  import fingerprint from './fingerprint';
119
- var userAgent = env.getGlobal().navigator.userAgent;
120
- var isInUserAgent = function isInUserAgent(v) {
121
- return userAgent === null || userAgent === void 0 ? void 0 : userAgent.toLowerCase().includes(v);
122
- };
119
+ function isInUserAgent(v) {
120
+ var _a, _b;
121
+ return !!((_b = (_a = env.getGlobal()) === null || _a === void 0 ? void 0 : _a.navigator.userAgent) === null || _b === void 0 ? void 0 : _b.toLowerCase().includes(v));
122
+ }
123
123
  var BrowserUtil;
124
124
  (function (BrowserUtil) {
125
125
  var _this = this;
@@ -168,6 +168,8 @@ var BrowserUtil;
168
168
  * @returns Opera | IE | Edge | Firefox | Safari | Chrome | OverIE10 | ""
169
169
  */
170
170
  BrowserUtil.browserGetType = function () {
171
+ var _a;
172
+ var userAgent = ((_a = env.getGlobal()) === null || _a === void 0 ? void 0 : _a.navigator.userAgent) || '';
171
173
  if (userAgent.indexOf('Opera') > -1 || userAgent.indexOf('OPR') > -1) {
172
174
  return 'Opera';
173
175
  } else if (userAgent.indexOf('compatible') > -1 && userAgent.indexOf('MSIE') > -1) {
@@ -190,6 +192,8 @@ var BrowserUtil;
190
192
  * @returns boolean
191
193
  */
192
194
  BrowserUtil.isMobileBrowser = function () {
195
+ var _a;
196
+ var userAgent = ((_a = env.getGlobal()) === null || _a === void 0 ? void 0 : _a.navigator.userAgent) || '';
193
197
  return !!userAgent.toLowerCase().match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|SymbianOS|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i);
194
198
  };
195
199
  /**
@@ -105,5 +105,35 @@ declare namespace ArrayUtil {
105
105
  * randomSortArr([{a:1},{a:2},{a:3}]) => [{a:3},{a:1},{a:2}]
106
106
  */
107
107
  function randomSortArr<T>(arr: T[]): T[];
108
+ /**
109
+ * 通用排序函数
110
+ * @param array 要排序的数组
111
+ * @param key 排序依据的键(如果数组元素是对象)或自定义排序函数
112
+ * @param order 排序顺序('asc' 表示升序,'desc' 表示降序)
113
+ * @returns 排序后的数组
114
+ * @example
115
+ *
116
+
117
+ // 排序数字数组
118
+ console.log(universalSort([5, 3, 8, 1, 2])); // [1, 2, 3, 5, 8]
119
+
120
+ // 排序字符串数组
121
+ console.log(universalSort(['banana', 'apple', 'cherry'])); // ['apple', 'banana', 'cherry']
122
+
123
+ // 排序对象数组(按对象属性)
124
+ const objArray = [
125
+ { name: 'John', age: 30 },
126
+ { name: 'Jane', age: 25 },
127
+ { name: 'Jim', age: 35 }
128
+ ];
129
+ console.log(universalSort(objArray, 'age')); // [{ name: 'Jane', age: 25 }, { name: 'John', age: 30 }, { name: 'Jim', age: 35 }]
130
+
131
+ // 按自定义函数排序
132
+ console.log(universalSort(objArray, obj => obj.name.length)); // [{ name: 'Jim', age: 35 }, { name: 'John', age: 30 }, { name: 'Jane', age: 25 }]
133
+
134
+ // 按降序排序
135
+ console.log(universalSort([5, 3, 8, 1, 2], null, 'desc')); // [8, 5, 3, 2, 1]
136
+ */
137
+ function universalSort<T>(array: T[], key?: keyof T | ((item: T) => any), order?: 'asc' | 'desc'): T[];
108
138
  }
109
139
  export default ArrayUtil;
@@ -253,5 +253,71 @@ var ArrayUtil;
253
253
  });
254
254
  }
255
255
  ArrayUtil.randomSortArr = randomSortArr;
256
+ /**
257
+ * 通用排序函数
258
+ * @param array 要排序的数组
259
+ * @param key 排序依据的键(如果数组元素是对象)或自定义排序函数
260
+ * @param order 排序顺序('asc' 表示升序,'desc' 表示降序)
261
+ * @returns 排序后的数组
262
+ * @example
263
+ *
264
+ // 排序数字数组
265
+ console.log(universalSort([5, 3, 8, 1, 2])); // [1, 2, 3, 5, 8]
266
+ // 排序字符串数组
267
+ console.log(universalSort(['banana', 'apple', 'cherry'])); // ['apple', 'banana', 'cherry']
268
+ // 排序对象数组(按对象属性)
269
+ const objArray = [
270
+ { name: 'John', age: 30 },
271
+ { name: 'Jane', age: 25 },
272
+ { name: 'Jim', age: 35 }
273
+ ];
274
+ console.log(universalSort(objArray, 'age')); // [{ name: 'Jane', age: 25 }, { name: 'John', age: 30 }, { name: 'Jim', age: 35 }]
275
+ // 按自定义函数排序
276
+ console.log(universalSort(objArray, obj => obj.name.length)); // [{ name: 'Jim', age: 35 }, { name: 'John', age: 30 }, { name: 'Jane', age: 25 }]
277
+ // 按降序排序
278
+ console.log(universalSort([5, 3, 8, 1, 2], null, 'desc')); // [8, 5, 3, 2, 1]
279
+ */
280
+ function universalSort(array, key, order) {
281
+ if (order === void 0) {
282
+ order = 'asc';
283
+ }
284
+ // 检查排序顺序是否合法
285
+ if (order !== 'asc' && order !== 'desc') {
286
+ throw new Error("排序顺序必须是 'asc' 或 'desc'");
287
+ }
288
+ // 比较函数生成器
289
+ var compareFunction = function compareFunction(a, b) {
290
+ var valA, valB;
291
+ // 如果 key 是函数,调用它来获取比较值
292
+ if (typeof key === 'function') {
293
+ valA = key(a);
294
+ valB = key(b);
295
+ } else if (key) {
296
+ // 如果 key 是字符串,获取对象属性的值
297
+ valA = a[key];
298
+ valB = b[key];
299
+ } else {
300
+ // 如果没有 key,直接比较值
301
+ valA = a;
302
+ valB = b;
303
+ }
304
+ // 转换为小写字符串比较(针对字符串情况)
305
+ if (typeof valA === 'string' && typeof valB === 'string') {
306
+ valA = valA.toLowerCase();
307
+ valB = valB.toLowerCase();
308
+ }
309
+ // 比较逻辑
310
+ if (valA < valB) {
311
+ return order === 'asc' ? -1 : 1;
312
+ }
313
+ if (valA > valB) {
314
+ return order === 'asc' ? 1 : -1;
315
+ }
316
+ return 0;
317
+ };
318
+ // 使用比较函数对数组进行排序
319
+ return array.sort(compareFunction);
320
+ }
321
+ ArrayUtil.universalSort = universalSort;
256
322
  })(ArrayUtil || (ArrayUtil = {}));
257
323
  exports.default = ArrayUtil;
@@ -26,7 +26,7 @@ declare namespace BrowserUtil {
26
26
  * 判断是否微信内置浏览器
27
27
  * @returns boolean
28
28
  */
29
- const isWeixinBrowser: () => any;
29
+ const isWeixinBrowser: () => boolean;
30
30
  /**
31
31
  * 判断是否微信小程序WebView
32
32
  * @returns boolean
@@ -36,17 +36,17 @@ declare namespace BrowserUtil {
36
36
  * 判断是否是支付宝浏览器
37
37
  * @returns boolean
38
38
  */
39
- const isAlipayBrowser: () => any;
39
+ const isAlipayBrowser: () => boolean;
40
40
  /**
41
41
  * 判断是否是支付宝小程序webview
42
42
  * @returns boolean
43
43
  */
44
- const isAlipayMiniWebView: () => any;
44
+ const isAlipayMiniWebView: () => boolean;
45
45
  /**
46
46
  * 判断是否是浙里办
47
47
  * @returns boolean
48
48
  */
49
- const isMgopBrowser: () => any;
49
+ const isMgopBrowser: () => boolean;
50
50
  /** 全屏 */
51
51
  function fullScreen(root: string | HTMLElement, callback?: (isFull: boolean) => void): void;
52
52
  /** 是否全屏 */
@@ -126,10 +126,10 @@ Object.defineProperty(exports, "__esModule", {
126
126
  var BaseUtil_1 = __importDefault(require("../base/BaseUtil"));
127
127
  var env_1 = __importDefault(require("../env/env"));
128
128
  var fingerprint_1 = __importDefault(require("./fingerprint"));
129
- var userAgent = env_1.default.getGlobal().navigator.userAgent;
130
- var isInUserAgent = function isInUserAgent(v) {
131
- return userAgent === null || userAgent === void 0 ? void 0 : userAgent.toLowerCase().includes(v);
132
- };
129
+ function isInUserAgent(v) {
130
+ var _a, _b;
131
+ return !!((_b = (_a = env_1.default.getGlobal()) === null || _a === void 0 ? void 0 : _a.navigator.userAgent) === null || _b === void 0 ? void 0 : _b.toLowerCase().includes(v));
132
+ }
133
133
  var BrowserUtil;
134
134
  (function (BrowserUtil) {
135
135
  var _this = this;
@@ -178,6 +178,8 @@ var BrowserUtil;
178
178
  * @returns Opera | IE | Edge | Firefox | Safari | Chrome | OverIE10 | ""
179
179
  */
180
180
  BrowserUtil.browserGetType = function () {
181
+ var _a;
182
+ var userAgent = ((_a = env_1.default.getGlobal()) === null || _a === void 0 ? void 0 : _a.navigator.userAgent) || '';
181
183
  if (userAgent.indexOf('Opera') > -1 || userAgent.indexOf('OPR') > -1) {
182
184
  return 'Opera';
183
185
  } else if (userAgent.indexOf('compatible') > -1 && userAgent.indexOf('MSIE') > -1) {
@@ -200,6 +202,8 @@ var BrowserUtil;
200
202
  * @returns boolean
201
203
  */
202
204
  BrowserUtil.isMobileBrowser = function () {
205
+ var _a;
206
+ var userAgent = ((_a = env_1.default.getGlobal()) === null || _a === void 0 ? void 0 : _a.navigator.userAgent) || '';
203
207
  return !!userAgent.toLowerCase().match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|SymbianOS|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i);
204
208
  };
205
209
  /**
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "tools-min-ns",
3
3
  "description": "工具包适用于前端以及node",
4
- "version": "1.10.3",
4
+ "version": "1.11.1",
5
5
  "main": "lib/index.js",
6
6
  "license": "MIT",
7
7
  "author": "nanshen",