@creejs/commons-lang 2.1.14 → 2.1.16

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.
@@ -1381,7 +1381,7 @@ function substringsBetween (str, startMarker, endMarker) {
1381
1381
  * 1. Executes a task silently, suppressing any errors or rejections.
1382
1382
  * 2. if loggerLike is provided, will log the error via it
1383
1383
  * @param {Function} task - The export function to execute.
1384
- * @param {LoggerLike} loggerLike - The logger-like object to use for logging.
1384
+ * @param {LoggerLike} [loggerLike] - The logger-like object to use for logging.
1385
1385
  * @returns {Promise<*>|*} The return value of the task, or a Promise if the task is asynchronous.
1386
1386
  */
1387
1387
  function quiet (task, loggerLike) {
@@ -1389,13 +1389,13 @@ function quiet (task, loggerLike) {
1389
1389
  try {
1390
1390
  const rtnVal = task();
1391
1391
  if (isPromise(rtnVal)) {
1392
- return rtnVal.catch(() => {
1393
- // do nothing
1392
+ return rtnVal.catch((/** @type {any} */ err) => {
1393
+ loggerLike && loggerLike.isErrorEnabled() && loggerLike.error('quiet() with async error:', err);
1394
1394
  })
1395
1395
  }
1396
1396
  return rtnVal
1397
- } catch (e) {
1398
- // do nothing
1397
+ } catch (err) {
1398
+ loggerLike && loggerLike.isErrorEnabled() && loggerLike.error('quiet() with sync error:', err);
1399
1399
  }
1400
1400
  }
1401
1401
 
@@ -1441,6 +1441,14 @@ var ExecUtils = {
1441
1441
  * }} Deferred
1442
1442
  */
1443
1443
 
1444
+ /**
1445
+ * @typedef {{
1446
+ * promise: Promise<*>,
1447
+ * timerHandler: NodeJS.Timeout,
1448
+ * resolve: (...args:any[])=> void
1449
+ * }} Waiter
1450
+ */
1451
+
1444
1452
  /**
1445
1453
  * @module PromiseUtils
1446
1454
  * @description Promise utility functions for enhanced promise handling, including timeout, delay, parallel execution, and series execution.
@@ -1454,7 +1462,8 @@ var PromiseUtils = {
1454
1462
  series,
1455
1463
  seriesAllSettled,
1456
1464
  parallel,
1457
- parallelAllSettled
1465
+ parallelAllSettled,
1466
+ wait
1458
1467
  };
1459
1468
 
1460
1469
  /**
@@ -1758,6 +1767,38 @@ async function parallelAllSettled (tasks, maxParallel = 5) {
1758
1767
  return rtnVal
1759
1768
  }
1760
1769
 
1770
+ /**
1771
+ * Creates a "Waiter" Object
1772
+ * 1. wait the specified time
1773
+ * 2. can be wakeup immediately by calling resolve
1774
+ * @param {number} waitTime - Timeout duration in milliseconds
1775
+ * @returns {Waiter}
1776
+ */
1777
+ function wait (waitTime) {
1778
+ assertNotNegative(waitTime);
1779
+ /** @type {Waiter} */
1780
+ const rtnVal = {};
1781
+
1782
+ /**
1783
+ * @type {NodeJS.Timeout}
1784
+ */
1785
+ let timerHandler;
1786
+ rtnVal.timerHandler = timerHandler = setTimeout(() => {
1787
+ clearTimeout(timerHandler); // must clear it
1788
+ rtnVal.resolve();
1789
+ }, waitTime);
1790
+
1791
+ rtnVal.promise = new Promise((resolve, reject) => {
1792
+ rtnVal.resolve = (arg) => {
1793
+ if (timerHandler != null) {
1794
+ clearTimeout(timerHandler); // must clear it
1795
+ }
1796
+ resolve(arg);
1797
+ };
1798
+ });
1799
+ return rtnVal
1800
+ }
1801
+
1761
1802
  // owned
1762
1803
 
1763
1804
  // module vars