@zelgadis87/utils-core 5.3.8 → 5.4.0

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/.rollup/index.cjs CHANGED
@@ -362,6 +362,13 @@ class Optional {
362
362
  static ofNullable(t) {
363
363
  return new Optional(t);
364
364
  }
365
+ static findInArray(arr, predicate) {
366
+ return Optional.ofNullable(arr.find(predicate));
367
+ }
368
+ static findIndexInArray(arr, predicate) {
369
+ const idx = arr.findIndex(predicate);
370
+ return idx === -1 ? Optional.empty() : Optional.of(idx);
371
+ }
365
372
  }
366
373
  class ErrorGetEmptyOptional extends Error {
367
374
  constructor() {
@@ -807,12 +814,13 @@ function shallowArrayEquals(a, b) {
807
814
  }
808
815
  return true;
809
816
  }
817
+ /** @deprecated[2026.03.01]: Use {@link Optional.findInArray} instead. */
810
818
  function findInArray(arr, predicate) {
811
- return Optional.ofNullable(arr.find(predicate));
819
+ return Optional.findInArray(arr, predicate);
812
820
  }
821
+ /** @deprecated[2026.03.01]: Use {@link Optional.findIndexInArray} instead. */
813
822
  function findIndexInArray(arr, predicate) {
814
- const idx = arr.findIndex(predicate);
815
- return idx === -1 ? Optional.empty() : Optional.of(idx);
823
+ return Optional.findIndexInArray(arr, predicate);
816
824
  }
817
825
  function zip(ts, rs) {
818
826
  if (ts.length !== rs.length)
@@ -1134,11 +1142,38 @@ async function awaitAtMost(promise, duration) {
1134
1142
  }
1135
1143
  const NEVER = new Promise(_resolve => { });
1136
1144
 
1145
+ /**
1146
+ * Returns a random integer in the range [min, max].
1147
+ * @deprecated Use randomIntegerInInterval or randomDecimalInInterval instead
1148
+ */
1137
1149
  function randomNumberInInterval(min, max) {
1138
1150
  return Math.floor(Math.random() * (max - min + 1) + min);
1139
1151
  }
1152
+ /**
1153
+ * Returns a random integer in the range [min, max].
1154
+ * @param min - Minimum value (inclusive)
1155
+ * @param max - Maximum value (inclusive)
1156
+ * @returns A random integer between min and max
1157
+ */
1158
+ function randomIntegerInInterval(min, max) {
1159
+ return Math.floor(Math.random() * (max - min + 1) + min);
1160
+ }
1161
+ /**
1162
+ * Returns a random decimal in the range [min, max).
1163
+ * @param min - Minimum value (inclusive)
1164
+ * @param max - Maximum value (exclusive)
1165
+ * @returns A random decimal between min and max
1166
+ */
1167
+ function randomDecimalInInterval(min, max) {
1168
+ return Math.random() * (max - min) + min;
1169
+ }
1140
1170
  const randomId = (length) => {
1141
- return Math.random().toString(36).substring(2, length + 2);
1171
+ const characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
1172
+ let result = '';
1173
+ for (let i = 0; i < length; i++) {
1174
+ result += characters.charAt(randomIntegerInInterval(0, characters.length - 1));
1175
+ }
1176
+ return result;
1142
1177
  };
1143
1178
  function randomPick(arr) {
1144
1179
  return first$1(randomPicks(arr, 1));
@@ -1147,7 +1182,7 @@ function randomPicks(arr, count) {
1147
1182
  const available = [...arr];
1148
1183
  const result = [];
1149
1184
  while (available.length > 0 && count > 0) {
1150
- const randomIndex = randomNumberInInterval(0, available.length - 1);
1185
+ const randomIndex = randomIntegerInInterval(0, available.length - 1);
1151
1186
  result.push(available[randomIndex]);
1152
1187
  available.splice(randomIndex, 1);
1153
1188
  count--;
@@ -2682,7 +2717,7 @@ function parseTimeInstantComponents(dateString, pattern, config = {}) {
2682
2717
  break;
2683
2718
  }
2684
2719
  default:
2685
- throw new Error(`Invalid month pattern: ${token}`);
2720
+ throw new Error(`Invalid month pattern: ${JSON.stringify(token)}`);
2686
2721
  }
2687
2722
  break;
2688
2723
  case 'd':
@@ -2764,6 +2799,7 @@ function parseTimeInstantBasicComponents(dateString, pattern, ignoreIntlAvailabi
2764
2799
  // Check if Intl is available, if so warn the user about the existing function
2765
2800
  const isIntlAvailable = typeof Intl !== 'undefined' && typeof Intl.DateTimeFormat !== 'undefined';
2766
2801
  if (isIntlAvailable && !ignoreIntlAvailability)
2802
+ // eslint-disable-next-line no-restricted-globals
2767
2803
  console.warn('Intl is available, use parseTimeInstantComponents instead of parseTimeInstantBasicComponents.');
2768
2804
  const result = {};
2769
2805
  let patternIndex = 0;
@@ -3452,7 +3488,7 @@ const Sorter = {
3452
3488
 
3453
3489
  function randomize(unit) {
3454
3490
  return (a, b) => {
3455
- return TimeDuration.fromMs(randomNumberInInterval(unit.toMs(a), unit.toMs(b)));
3491
+ return TimeDuration.fromMs(randomIntegerInInterval(unit.toMs(a), unit.toMs(b)));
3456
3492
  };
3457
3493
  }
3458
3494
  class RandomTimeDuration {
@@ -3786,7 +3822,9 @@ exports.pipedInvoke = pipedInvoke;
3786
3822
  exports.pipedInvokeFromArray = pipedInvokeFromArray;
3787
3823
  exports.pluralize = pluralize;
3788
3824
  exports.promiseSequence = promiseSequence;
3825
+ exports.randomDecimalInInterval = randomDecimalInInterval;
3789
3826
  exports.randomId = randomId;
3827
+ exports.randomIntegerInInterval = randomIntegerInInterval;
3790
3828
  exports.randomNumberInInterval = randomNumberInInterval;
3791
3829
  exports.randomPick = randomPick;
3792
3830
  exports.randomPicks = randomPicks;