@zelgadis87/utils-core 5.0.2 → 5.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.
- package/dist/Optional.d.ts +35 -14
- package/dist/time/TimeBase.d.ts +25 -14
- package/dist/time/TimeDuration.d.ts +4 -2
- package/dist/time/TimeInstant.d.ts +1 -1
- package/dist/time/TimeUnit.d.ts +1 -3
- package/dist/time/_index.d.ts +3 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/errors.d.ts +2 -2
- package/esbuild/index.cjs +120 -81
- package/esbuild/index.cjs.map +3 -3
- package/esbuild/index.mjs +108 -69
- package/esbuild/index.mjs.map +2 -2
- package/package.json +7 -7
- package/src/Optional.ts +88 -16
- package/src/time/RandomTimeDuration.ts +1 -1
- package/src/time/TimeBase.ts +32 -8
- package/src/time/TimeDuration.ts +11 -3
- package/src/time/TimeInstant.ts +1 -1
- package/src/time/TimeUnit.ts +1 -6
- package/src/time/_index.ts +3 -2
- package/src/utils/errors.ts +4 -4
package/esbuild/index.mjs
CHANGED
|
@@ -263,8 +263,7 @@ var RateThrottler = class {
|
|
|
263
263
|
return slot.promise().then(() => fn());
|
|
264
264
|
} finally {
|
|
265
265
|
this._availableSlots.push(TimeInstant.now().addDuration(this.cooldown));
|
|
266
|
-
if (this._waitingRequests.length > 0)
|
|
267
|
-
this._waitingRequests.shift().resolve();
|
|
266
|
+
if (this._waitingRequests.length > 0) this._waitingRequests.shift().resolve();
|
|
268
267
|
}
|
|
269
268
|
};
|
|
270
269
|
if (this._availableSlots.length > 0) {
|
|
@@ -430,16 +429,14 @@ function sumBy(arr, getter) {
|
|
|
430
429
|
return sum(arr.map(getter));
|
|
431
430
|
}
|
|
432
431
|
function min(arr) {
|
|
433
|
-
if (arr.length === 0)
|
|
434
|
-
throw new Error("Cannot calculate value on empty array");
|
|
432
|
+
if (arr.length === 0) throw new Error("Cannot calculate value on empty array");
|
|
435
433
|
return arr.reduce((min2, cur) => cur < min2 ? cur : min2);
|
|
436
434
|
}
|
|
437
435
|
function minBy(arr, getter) {
|
|
438
436
|
return min(arr.map(getter));
|
|
439
437
|
}
|
|
440
438
|
function max(arr) {
|
|
441
|
-
if (arr.length === 0)
|
|
442
|
-
throw new Error("Cannot calculate value on empty array");
|
|
439
|
+
if (arr.length === 0) throw new Error("Cannot calculate value on empty array");
|
|
443
440
|
return arr.reduce((max2, cur) => cur > max2 ? cur : max2);
|
|
444
441
|
}
|
|
445
442
|
function maxBy(arr, getter) {
|
|
@@ -511,17 +508,13 @@ function not(predicate) {
|
|
|
511
508
|
return (t) => !predicate(t);
|
|
512
509
|
}
|
|
513
510
|
function and(...predicates) {
|
|
514
|
-
if (predicates.length === 0)
|
|
515
|
-
|
|
516
|
-
else if (predicates.length === 1)
|
|
517
|
-
return predicates[0];
|
|
511
|
+
if (predicates.length === 0) return constantTrue;
|
|
512
|
+
else if (predicates.length === 1) return predicates[0];
|
|
518
513
|
return (t) => predicates.reduce((prev, cur) => prev ? cur(t) : false, true);
|
|
519
514
|
}
|
|
520
515
|
function or(...predicates) {
|
|
521
|
-
if (predicates.length === 0)
|
|
522
|
-
|
|
523
|
-
else if (predicates.length === 1)
|
|
524
|
-
return predicates[0];
|
|
516
|
+
if (predicates.length === 0) return constantTrue;
|
|
517
|
+
else if (predicates.length === 1) return predicates[0];
|
|
525
518
|
return (t) => predicates.reduce((prev, cur) => prev ? true : cur(t), false);
|
|
526
519
|
}
|
|
527
520
|
function xor(a, b) {
|
|
@@ -565,13 +558,11 @@ function uniqByKey(arr, key) {
|
|
|
565
558
|
|
|
566
559
|
// src/utils/arrays.ts
|
|
567
560
|
function ensureArray(t) {
|
|
568
|
-
if (isNullOrUndefined(t))
|
|
569
|
-
return [];
|
|
561
|
+
if (isNullOrUndefined(t)) return [];
|
|
570
562
|
return t instanceof Array ? t : [t];
|
|
571
563
|
}
|
|
572
564
|
function ensureReadableArray(t) {
|
|
573
|
-
if (isNullOrUndefined(t))
|
|
574
|
-
return [];
|
|
565
|
+
if (isNullOrUndefined(t)) return [];
|
|
575
566
|
return t instanceof Array ? t : [t];
|
|
576
567
|
}
|
|
577
568
|
function isArray(t) {
|
|
@@ -590,8 +581,7 @@ function upsert(arr, item, isEqual) {
|
|
|
590
581
|
}
|
|
591
582
|
}
|
|
592
583
|
function range(start, end) {
|
|
593
|
-
if (end < start)
|
|
594
|
-
throw new Error();
|
|
584
|
+
if (end < start) throw new Error();
|
|
595
585
|
let length = end - start + 1;
|
|
596
586
|
return new Array(length).fill(1).map((_, i) => start + i);
|
|
597
587
|
}
|
|
@@ -650,8 +640,7 @@ function partition(arr, predicate) {
|
|
|
650
640
|
function mapFirstTruthy(arr, mapFn) {
|
|
651
641
|
for (let i = 0; i < arr.length; i++) {
|
|
652
642
|
const result = mapFn(arr[i]);
|
|
653
|
-
if (result)
|
|
654
|
-
return result;
|
|
643
|
+
if (result) return result;
|
|
655
644
|
}
|
|
656
645
|
return null;
|
|
657
646
|
}
|
|
@@ -679,8 +668,7 @@ function cssDeclarationRulesDictionaryToCss(syleDeclarationRulesForSelectorsProd
|
|
|
679
668
|
const syleDeclarationRulesForSelectors = produceableToValue(syleDeclarationRulesForSelectorsProduceable);
|
|
680
669
|
return Object.entries(syleDeclarationRulesForSelectors).map(([selector, styleDeclarationRules]) => {
|
|
681
670
|
const cssRules = cssSelectorDeclarationRulesDictionaryToCss(styleDeclarationRules, indent + 1);
|
|
682
|
-
if (!cssRules.length)
|
|
683
|
-
return null;
|
|
671
|
+
if (!cssRules.length) return null;
|
|
684
672
|
return repeat(tabulation, indent) + selector + space + openBracket + newLine + cssRules.join(newLine) + newLine + closeBracket;
|
|
685
673
|
}).filter(Boolean).join(newLine + newLine);
|
|
686
674
|
}
|
|
@@ -748,14 +736,14 @@ function asError(e) {
|
|
|
748
736
|
function isError(e) {
|
|
749
737
|
return e instanceof Error;
|
|
750
738
|
}
|
|
751
|
-
function
|
|
752
|
-
const maybeCause = error.cause ?
|
|
739
|
+
function getMessageFromError(error) {
|
|
740
|
+
const maybeCause = error.cause ? getMessageFromError(asError(error.cause)) : null;
|
|
753
741
|
const cause = maybeCause ? `
|
|
754
742
|
caused by: ${maybeCause}` : "";
|
|
755
743
|
return `${error.name}: ${error.message}${cause}`;
|
|
756
744
|
}
|
|
757
|
-
function
|
|
758
|
-
const maybeCause = error.cause ?
|
|
745
|
+
function getStackFromError(error) {
|
|
746
|
+
const maybeCause = error.cause ? getStackFromError(asError(error.cause)) : null;
|
|
759
747
|
const cause = maybeCause ? `
|
|
760
748
|
caused by: ${maybeCause}` : "";
|
|
761
749
|
const stack = error.stack && error.stack.includes(error.message) ? error.stack : error.message + " " + (error.stack ?? "");
|
|
@@ -767,8 +755,7 @@ function tryToParseJson(jsonContent) {
|
|
|
767
755
|
return withTryCatch(() => JSON.parse(jsonContent));
|
|
768
756
|
}
|
|
769
757
|
function jsonCloneDeep(a) {
|
|
770
|
-
if (null === a || "object" !== typeof a)
|
|
771
|
-
return a;
|
|
758
|
+
if (null === a || "object" !== typeof a) return a;
|
|
772
759
|
if (a instanceof Date) {
|
|
773
760
|
return new Date(a.getTime());
|
|
774
761
|
} else if (a instanceof Array) {
|
|
@@ -875,13 +862,10 @@ function clampInt0_100(n) {
|
|
|
875
862
|
function tryToParseNumber(numberStr) {
|
|
876
863
|
return withTryCatch(() => {
|
|
877
864
|
const type = typeof ensureDefined(numberStr);
|
|
878
|
-
if (type !== "string")
|
|
879
|
-
|
|
880
|
-
if (numberStr.trim().length === 0)
|
|
881
|
-
throw new Error("Invalid number given: " + numberStr);
|
|
865
|
+
if (type !== "string") throw new Error("Invalid number given: " + numberStr);
|
|
866
|
+
if (numberStr.trim().length === 0) throw new Error("Invalid number given: " + numberStr);
|
|
882
867
|
const num = Number(numberStr);
|
|
883
|
-
if (isNaN(num))
|
|
884
|
-
throw new Error("Invalid number given: " + numberStr);
|
|
868
|
+
if (isNaN(num)) throw new Error("Invalid number given: " + numberStr);
|
|
885
869
|
return num;
|
|
886
870
|
});
|
|
887
871
|
}
|
|
@@ -961,8 +945,7 @@ var StringParts = class _StringParts {
|
|
|
961
945
|
return new _StringParts(...this.parts.map((part) => part.toLowerCase()));
|
|
962
946
|
}
|
|
963
947
|
capitalizeFirst() {
|
|
964
|
-
if (!this.length)
|
|
965
|
-
return this;
|
|
948
|
+
if (!this.length) return this;
|
|
966
949
|
return new _StringParts(capitalizeWord(this.first), ...this.tail.map((part) => part.toLowerCase()));
|
|
967
950
|
}
|
|
968
951
|
capitalizeEach() {
|
|
@@ -991,8 +974,7 @@ var StringParts = class _StringParts {
|
|
|
991
974
|
return this.toLowerCase().join("_");
|
|
992
975
|
}
|
|
993
976
|
toCamelCase() {
|
|
994
|
-
if (!this.length)
|
|
995
|
-
return "";
|
|
977
|
+
if (!this.length) return "";
|
|
996
978
|
return [this.first.toLowerCase(), ...this.tail.map(capitalizeWord)].join("");
|
|
997
979
|
}
|
|
998
980
|
toKebabCase() {
|
|
@@ -1066,8 +1048,7 @@ function stringToNumber(s) {
|
|
|
1066
1048
|
}
|
|
1067
1049
|
function pad(str, n, char, where = "left") {
|
|
1068
1050
|
const length = ensureDefined(str).length;
|
|
1069
|
-
if (length >= ensureDefined(n))
|
|
1070
|
-
return str;
|
|
1051
|
+
if (length >= ensureDefined(n)) return str;
|
|
1071
1052
|
if (ensureDefined(char).length !== 1)
|
|
1072
1053
|
throw new Error("Illegal pad character");
|
|
1073
1054
|
const padding = repeat(char, n - length);
|
|
@@ -1297,15 +1278,11 @@ var TimeUnit = class _TimeUnit {
|
|
|
1297
1278
|
toDays(value) {
|
|
1298
1279
|
return this.toUnit(value, _TimeUnit.DAYS);
|
|
1299
1280
|
}
|
|
1300
|
-
toWeeks(value) {
|
|
1301
|
-
return this.toUnit(value, _TimeUnit.WEEKS);
|
|
1302
|
-
}
|
|
1303
1281
|
static MILLISECONDS = new _TimeUnit(1);
|
|
1304
1282
|
static SECONDS = new _TimeUnit(1e3 * _TimeUnit.MILLISECONDS.multiplier);
|
|
1305
1283
|
static MINUTES = new _TimeUnit(60 * _TimeUnit.SECONDS.multiplier);
|
|
1306
1284
|
static HOURS = new _TimeUnit(60 * _TimeUnit.MINUTES.multiplier);
|
|
1307
1285
|
static DAYS = new _TimeUnit(24 * _TimeUnit.HOURS.multiplier);
|
|
1308
|
-
static WEEKS = new _TimeUnit(7 * _TimeUnit.DAYS.multiplier);
|
|
1309
1286
|
};
|
|
1310
1287
|
|
|
1311
1288
|
// src/time/TimeBase.ts
|
|
@@ -1314,18 +1291,33 @@ var TimeBase = class {
|
|
|
1314
1291
|
constructor(value, unit) {
|
|
1315
1292
|
this._ms = unit.toMs(value);
|
|
1316
1293
|
}
|
|
1294
|
+
/**
|
|
1295
|
+
* Total number of milliseconds, rounded down.
|
|
1296
|
+
*/
|
|
1317
1297
|
get ms() {
|
|
1318
1298
|
return Math.floor(this._ms / TimeUnit.MILLISECONDS.multiplier);
|
|
1319
1299
|
}
|
|
1300
|
+
/**
|
|
1301
|
+
* Total number of seconds, rounded down.
|
|
1302
|
+
*/
|
|
1320
1303
|
get seconds() {
|
|
1321
1304
|
return Math.floor(this._ms / TimeUnit.SECONDS.multiplier);
|
|
1322
1305
|
}
|
|
1306
|
+
/**
|
|
1307
|
+
* Total number of minutes, rounded down.
|
|
1308
|
+
*/
|
|
1323
1309
|
get minutes() {
|
|
1324
1310
|
return Math.floor(this._ms / TimeUnit.MINUTES.multiplier);
|
|
1325
1311
|
}
|
|
1312
|
+
/**
|
|
1313
|
+
* Total number of hours, rounded down.
|
|
1314
|
+
*/
|
|
1326
1315
|
get hours() {
|
|
1327
1316
|
return Math.floor(this._ms / TimeUnit.HOURS.multiplier);
|
|
1328
1317
|
}
|
|
1318
|
+
/**
|
|
1319
|
+
* Total number of days, rounded down.
|
|
1320
|
+
*/
|
|
1329
1321
|
get days() {
|
|
1330
1322
|
return Math.floor(this._ms / TimeUnit.DAYS.multiplier);
|
|
1331
1323
|
}
|
|
@@ -1370,17 +1362,18 @@ var TimeBase = class {
|
|
|
1370
1362
|
}
|
|
1371
1363
|
toUnits() {
|
|
1372
1364
|
return {
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
minutes: Math.floor(this.
|
|
1376
|
-
|
|
1365
|
+
milliseconds: this.ms % TimeUnit.SECONDS.multiplier,
|
|
1366
|
+
seconds: Math.floor(this.seconds % 60),
|
|
1367
|
+
minutes: Math.floor(this.minutes % 60),
|
|
1368
|
+
hours: Math.floor(this.hours % 24),
|
|
1369
|
+
days: Math.floor(this.days)
|
|
1377
1370
|
};
|
|
1378
1371
|
}
|
|
1379
|
-
static
|
|
1372
|
+
static unitsToMs(units) {
|
|
1380
1373
|
if (!units)
|
|
1381
1374
|
throw new Error("Invalid units given");
|
|
1382
1375
|
let ms = 0;
|
|
1383
|
-
ms += units.
|
|
1376
|
+
ms += (units.milliseconds ?? 0) * TimeUnit.MILLISECONDS.multiplier;
|
|
1384
1377
|
ms += (units.seconds ?? 0) * TimeUnit.SECONDS.multiplier;
|
|
1385
1378
|
ms += (units.minutes ?? 0) * TimeUnit.MINUTES.multiplier;
|
|
1386
1379
|
ms += (units.hours ?? 0) * TimeUnit.HOURS.multiplier;
|
|
@@ -1430,8 +1423,7 @@ var TimeDuration = class _TimeDuration extends TimeBase {
|
|
|
1430
1423
|
get formatted() {
|
|
1431
1424
|
const format2 = (x, u1, y, u2) => `${x}${u1} ${pad(y.toString(), 2, "0")}${u2}`;
|
|
1432
1425
|
const units = this.toUnits();
|
|
1433
|
-
if (units.days >= 1)
|
|
1434
|
-
return format2(units.days, "d", units.hours, "h");
|
|
1426
|
+
if (units.days >= 1) return format2(units.days, "d", units.hours, "h");
|
|
1435
1427
|
else if (units.hours >= 1)
|
|
1436
1428
|
return format2(units.hours, "h", units.minutes, "m");
|
|
1437
1429
|
else if (units.minutes >= 1)
|
|
@@ -1542,6 +1534,9 @@ var TimeDuration = class _TimeDuration extends TimeBase {
|
|
|
1542
1534
|
isNotEmpty() {
|
|
1543
1535
|
return this.ms > 0;
|
|
1544
1536
|
}
|
|
1537
|
+
toUnits() {
|
|
1538
|
+
return super.toUnits();
|
|
1539
|
+
}
|
|
1545
1540
|
/**
|
|
1546
1541
|
* This method is used to provide a better DX when inspecting a TimeInstant object in DevTools.
|
|
1547
1542
|
*/
|
|
@@ -1555,7 +1550,7 @@ var TimeDuration = class _TimeDuration extends TimeBase {
|
|
|
1555
1550
|
const match = humanTime.trim().match(/^(?:([0-9]+)d|)\s*(?:([0-9]+)h|)\s*(?:([0-9]+)m|)\s*(?:([0-9]+)s|)$/);
|
|
1556
1551
|
if (match) {
|
|
1557
1552
|
const [_, days, hours, minutes, seconds] = match;
|
|
1558
|
-
return new _TimeDuration(TimeBase.
|
|
1553
|
+
return new _TimeDuration(TimeBase.unitsToMs({ days: Number(days ?? 0), hours: Number(hours ?? 0), minutes: Number(minutes ?? 0), seconds: Number(seconds ?? 0) }), TimeUnit.MILLISECONDS);
|
|
1559
1554
|
}
|
|
1560
1555
|
throw new Error("Failed to parse time: " + humanTime);
|
|
1561
1556
|
}
|
|
@@ -1607,6 +1602,9 @@ var TimeDuration = class _TimeDuration extends TimeBase {
|
|
|
1607
1602
|
static fromJSON(ms) {
|
|
1608
1603
|
return _TimeDuration.ms(ms);
|
|
1609
1604
|
}
|
|
1605
|
+
static fromUnits(parameters) {
|
|
1606
|
+
return _TimeDuration.ms(TimeBase.unitsToMs(parameters));
|
|
1607
|
+
}
|
|
1610
1608
|
};
|
|
1611
1609
|
function isAllowedTimeDuration(t) {
|
|
1612
1610
|
return typeof t === "number" && t > 0 || t instanceof TimeDuration;
|
|
@@ -1684,8 +1682,7 @@ var getFromDate = {
|
|
|
1684
1682
|
};
|
|
1685
1683
|
var toReferenceDate = (x) => {
|
|
1686
1684
|
ensureDefined(x);
|
|
1687
|
-
if (isTimeInstant(x))
|
|
1688
|
-
return x.toDate();
|
|
1685
|
+
if (isTimeInstant(x)) return x.toDate();
|
|
1689
1686
|
return x;
|
|
1690
1687
|
};
|
|
1691
1688
|
function createTimeInstantFromParameters(aParameters, aReferenceDate = TimeInstant.now()) {
|
|
@@ -2080,6 +2077,12 @@ var Optional = class _Optional {
|
|
|
2080
2077
|
this._value = t;
|
|
2081
2078
|
this._present = true;
|
|
2082
2079
|
}
|
|
2080
|
+
setNullable(t) {
|
|
2081
|
+
if (isDefined(t)) {
|
|
2082
|
+
return this.set(t);
|
|
2083
|
+
}
|
|
2084
|
+
return this;
|
|
2085
|
+
}
|
|
2083
2086
|
clear() {
|
|
2084
2087
|
this._value = void 0;
|
|
2085
2088
|
this._present = false;
|
|
@@ -2105,32 +2108,69 @@ var Optional = class _Optional {
|
|
|
2105
2108
|
callbackIfPresent(this.get());
|
|
2106
2109
|
}
|
|
2107
2110
|
}
|
|
2108
|
-
|
|
2111
|
+
orElseReturn(newValue) {
|
|
2109
2112
|
if (this.isPresent()) {
|
|
2110
|
-
return this.
|
|
2113
|
+
return this.get();
|
|
2111
2114
|
} else {
|
|
2112
2115
|
return newValue;
|
|
2113
2116
|
}
|
|
2114
2117
|
}
|
|
2115
|
-
|
|
2118
|
+
orElse = this.orElseReturn.bind(this);
|
|
2119
|
+
orElseProduce(newValueProducer) {
|
|
2116
2120
|
if (this.isPresent()) {
|
|
2117
|
-
return this.
|
|
2121
|
+
return this.get();
|
|
2118
2122
|
} else {
|
|
2119
2123
|
return newValueProducer();
|
|
2120
2124
|
}
|
|
2121
2125
|
}
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2126
|
+
orElseGet = this.orElseProduce.bind(this);
|
|
2127
|
+
orElseReturnAndApply(newValue) {
|
|
2128
|
+
if (this.isPresent()) {
|
|
2129
|
+
return this.get();
|
|
2130
|
+
} else {
|
|
2131
|
+
this.set(newValue);
|
|
2132
|
+
return newValue;
|
|
2133
|
+
}
|
|
2134
|
+
}
|
|
2135
|
+
orElseProduceAndApply(newValueProducer) {
|
|
2136
|
+
if (this.isPresent()) {
|
|
2137
|
+
return this.get();
|
|
2138
|
+
} else {
|
|
2139
|
+
const newValue = newValueProducer();
|
|
2140
|
+
this.set(newValue);
|
|
2141
|
+
return newValue;
|
|
2142
|
+
}
|
|
2143
|
+
}
|
|
2144
|
+
orElseReturnNullableAndApply(newValue) {
|
|
2145
|
+
if (this.isPresent()) {
|
|
2146
|
+
return this;
|
|
2147
|
+
} else {
|
|
2148
|
+
this.setNullable(newValue);
|
|
2149
|
+
return this;
|
|
2150
|
+
}
|
|
2151
|
+
}
|
|
2152
|
+
orElseProduceNullableAndApply(newValueProducer) {
|
|
2153
|
+
if (this.isPresent()) {
|
|
2154
|
+
return this;
|
|
2155
|
+
} else {
|
|
2156
|
+
const newValue = newValueProducer();
|
|
2157
|
+
this.setNullable(newValue);
|
|
2158
|
+
return this;
|
|
2159
|
+
}
|
|
2160
|
+
}
|
|
2161
|
+
orElseReturnNullable(newValue) {
|
|
2162
|
+
if (this.isEmpty()) return _Optional.ofNullable(newValue);
|
|
2125
2163
|
return this;
|
|
2126
2164
|
}
|
|
2127
|
-
|
|
2165
|
+
orElseNullable = this.orElseReturnNullable.bind(this);
|
|
2166
|
+
orElseProduceNullable(newValueProducer) {
|
|
2128
2167
|
if (this.isEmpty()) {
|
|
2129
2168
|
const newValue = newValueProducer();
|
|
2130
2169
|
return _Optional.ofNullable(newValue);
|
|
2131
2170
|
}
|
|
2132
2171
|
return this;
|
|
2133
2172
|
}
|
|
2173
|
+
orElseGetNullable = this.orElseProduceNullable.bind(this);
|
|
2134
2174
|
orElseThrow(errorProducer) {
|
|
2135
2175
|
if (this.isEmpty())
|
|
2136
2176
|
throw errorProducer();
|
|
@@ -2251,8 +2291,7 @@ var prioritizeSet = (fns, transform, set, reversed = false) => {
|
|
|
2251
2291
|
var prioritizeArray = (fns, transform, arr, reversed = false) => {
|
|
2252
2292
|
return compareNumbers(fns, (t) => {
|
|
2253
2293
|
const r = transform(t);
|
|
2254
|
-
if (!isDefined(r))
|
|
2255
|
-
return Number.MAX_VALUE;
|
|
2294
|
+
if (!isDefined(r)) return Number.MAX_VALUE;
|
|
2256
2295
|
const indexOf = arr.indexOf(r);
|
|
2257
2296
|
return indexOf === -1 ? Number.MAX_VALUE : indexOf;
|
|
2258
2297
|
}, { direction: reversed ? "DESC" : "ASC", nullsFirst: false });
|
|
@@ -2699,6 +2738,8 @@ export {
|
|
|
2699
2738
|
filterWithTypePredicate,
|
|
2700
2739
|
first,
|
|
2701
2740
|
flatMapTruthys,
|
|
2741
|
+
getMessageFromError,
|
|
2742
|
+
getStackFromError,
|
|
2702
2743
|
groupByBoolean,
|
|
2703
2744
|
groupByBooleanWith,
|
|
2704
2745
|
groupByNumber,
|
|
@@ -2760,8 +2801,6 @@ export {
|
|
|
2760
2801
|
pipedInvoke,
|
|
2761
2802
|
pipedInvokeFromArray,
|
|
2762
2803
|
pluralize,
|
|
2763
|
-
printErrorMessage,
|
|
2764
|
-
printErrorStack,
|
|
2765
2804
|
promiseSequence,
|
|
2766
2805
|
randomId,
|
|
2767
2806
|
randomNumberInInterval,
|