@whitesev/utils 2.9.11 → 2.9.12

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.esm.js CHANGED
@@ -237,7 +237,7 @@ const clearTimeout$1 = (timerId) => loadOrReturnBroker().clearTimeout(timerId);
237
237
  const setInterval = (...args) => loadOrReturnBroker().setInterval(...args);
238
238
  const setTimeout$1 = (...args) => loadOrReturnBroker().setTimeout(...args);
239
239
 
240
- const version = "2.9.11";
240
+ const version = "2.9.12";
241
241
 
242
242
  /* eslint-disable */
243
243
  // ==UserScript==
@@ -1471,40 +1471,55 @@ class CommonUtil {
1471
1471
  isNull(...args) {
1472
1472
  let result = true;
1473
1473
  const checkList = [...args];
1474
- for (const objItem of checkList) {
1475
- let itemResult = false;
1476
- if (objItem === null || objItem === undefined) {
1477
- itemResult = true;
1474
+ for (const obj of checkList) {
1475
+ let flag = false;
1476
+ if (obj === null || obj === undefined) {
1477
+ // null undefined
1478
+ flag = true;
1478
1479
  }
1479
1480
  else {
1480
- switch (typeof objItem) {
1481
+ switch (typeof obj) {
1481
1482
  case "object":
1482
- if (typeof objItem[Symbol.iterator] === "function") {
1483
- /* 可迭代 */
1484
- itemResult = objItem.length === 0;
1483
+ if (typeof obj[Symbol.iterator] === "function") {
1484
+ // 可迭代
1485
+ // Map Array NodeList HTMLCollection
1486
+ if (obj instanceof Map) {
1487
+ flag = obj.size === 0;
1488
+ }
1489
+ else {
1490
+ const length = obj.length;
1491
+ if (typeof length === "number") {
1492
+ flag = length === 0;
1493
+ }
1494
+ }
1485
1495
  }
1486
1496
  else {
1487
- itemResult = Object.keys(objItem).length === 0;
1497
+ if (obj?.toString() === "[object Object]") {
1498
+ // {}
1499
+ flag = Object.keys(obj).length === 0;
1500
+ }
1488
1501
  }
1489
1502
  break;
1490
1503
  case "number":
1491
- itemResult = objItem === 0;
1504
+ flag = isNaN(obj) ? true : obj === 0;
1492
1505
  break;
1493
- case "string":
1494
- itemResult = objItem.trim() === "" || objItem === "null" || objItem === "undefined";
1506
+ case "string": {
1507
+ const trimStr = obj.trim();
1508
+ flag = trimStr.trim() === "" || trimStr === "null" || trimStr === "undefined";
1495
1509
  break;
1510
+ }
1496
1511
  case "boolean":
1497
- itemResult = !objItem;
1512
+ flag = !obj;
1498
1513
  break;
1499
1514
  case "function": {
1500
- const funcStr = objItem.toString().replace(/\s/g, "");
1515
+ const funcStr = obj.toString().replace(/\s/g, "");
1501
1516
  /* 排除()=>{}、(xxx="")=>{}、function(){}、function(xxx=""){} */
1502
- itemResult = Boolean(funcStr.match(/^\(.*?\)=>\{\}$|^function.*?\(.*?\)\{\}$/));
1517
+ flag = Boolean(funcStr.match(/^\(.*?\)=>\{\}$|^function.*?\(.*?\)\{\}$/));
1503
1518
  break;
1504
1519
  }
1505
1520
  }
1506
1521
  }
1507
- result = result && itemResult;
1522
+ result = result && flag;
1508
1523
  }
1509
1524
  return result;
1510
1525
  }