nhb-toolbox 4.28.80 → 4.29.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/CHANGELOG.md +5 -0
- package/dist/cjs/array/Finder.js +13 -11
- package/dist/cjs/array/sort.js +4 -4
- package/dist/cjs/array/transform.js +2 -2
- package/dist/cjs/date/BanglaCalendar.js +32 -20
- package/dist/cjs/date/Chronos.js +7 -5
- package/dist/cjs/date/helpers.js +5 -3
- package/dist/cjs/date/plugins/businessPlugin.js +2 -2
- package/dist/cjs/date/plugins/dateRangePlugin.js +4 -2
- package/dist/cjs/date/plugins/durationPlugin.js +1 -3
- package/dist/cjs/dom/query.js +2 -2
- package/dist/cjs/form/convert.js +12 -12
- package/dist/cjs/form/transform.js +3 -4
- package/dist/cjs/index.js +12 -9
- package/dist/cjs/number/basics.js +2 -2
- package/dist/cjs/number/convert.js +2 -2
- package/dist/cjs/number/helpers.js +2 -2
- package/dist/cjs/number/range.js +2 -2
- package/dist/cjs/number/utilities.js +1 -3
- package/dist/cjs/object/sanitize.js +2 -2
- package/dist/cjs/string/case.js +21 -25
- package/dist/cjs/string/convert.js +2 -2
- package/dist/cjs/string/diff.js +158 -0
- package/dist/cjs/string/helpers.js +70 -0
- package/dist/cjs/string/utilities.js +3 -5
- package/dist/cjs/stylog/Stylog.js +7 -5
- package/dist/dts/colors/css-colors.d.ts +1 -1
- package/dist/dts/date/Chronos.d.ts +3 -3
- package/dist/dts/date/types.d.ts +3 -1
- package/dist/dts/hash/types.d.ts +1 -1
- package/dist/dts/index.d.ts +1 -0
- package/dist/dts/object/types.d.ts +4 -4
- package/dist/dts/string/diff.d.ts +48 -0
- package/dist/dts/string/helpers.d.ts +25 -0
- package/dist/dts/string/types.d.ts +65 -19
- package/dist/dts/utils/types.d.ts +10 -8
- package/dist/esm/array/Finder.js +13 -11
- package/dist/esm/array/sort.js +4 -4
- package/dist/esm/array/transform.js +2 -2
- package/dist/esm/date/BanglaCalendar.js +32 -20
- package/dist/esm/date/Chronos.js +7 -5
- package/dist/esm/date/helpers.js +5 -3
- package/dist/esm/date/plugins/businessPlugin.js +2 -2
- package/dist/esm/date/plugins/dateRangePlugin.js +4 -2
- package/dist/esm/date/plugins/durationPlugin.js +1 -3
- package/dist/esm/dom/query.js +2 -2
- package/dist/esm/form/convert.js +12 -12
- package/dist/esm/form/transform.js +3 -4
- package/dist/esm/index.js +1 -0
- package/dist/esm/number/basics.js +2 -2
- package/dist/esm/number/convert.js +2 -2
- package/dist/esm/number/helpers.js +2 -2
- package/dist/esm/number/range.js +2 -2
- package/dist/esm/number/utilities.js +1 -3
- package/dist/esm/object/sanitize.js +2 -2
- package/dist/esm/string/case.js +21 -25
- package/dist/esm/string/convert.js +2 -2
- package/dist/esm/string/diff.js +154 -0
- package/dist/esm/string/helpers.js +65 -0
- package/dist/esm/string/utilities.js +3 -5
- package/dist/esm/stylog/Stylog.js +7 -5
- package/package.json +15 -17
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
All notable changes to the package will be documented here.
|
|
6
6
|
|
|
7
|
+
## [4.29.0] - 2026-03-26
|
|
8
|
+
|
|
9
|
+
- **Added** new *string utilities* `computeTextDiff` and `getCharacterDifferences` for computing differences between two strings at both *line* and *character* levels.
|
|
10
|
+
- **Added** new type `ISODateTimeString` (only includes `Z`) for `Chronos.toISOString()` method which is a subset of `ISOTimeString` that includes both `Z` and timezone offset formats.
|
|
11
|
+
|
|
7
12
|
## [4.28.80] - 2026-02-07
|
|
8
13
|
|
|
9
14
|
- **Moved** `getDatesInRange` method to `Chronos` *plugin system*, usable via `dateRangePlugin`.
|
package/dist/cjs/array/Finder.js
CHANGED
|
@@ -24,7 +24,9 @@ class Finder {
|
|
|
24
24
|
const source = typeof data === 'function' ? data() : (data ?? this.#items);
|
|
25
25
|
if (!source?.length)
|
|
26
26
|
return [];
|
|
27
|
-
const rawGetKey = typeof keySelector === 'function'
|
|
27
|
+
const rawGetKey = typeof keySelector === 'function'
|
|
28
|
+
? keySelector
|
|
29
|
+
: (item) => item[keySelector];
|
|
28
30
|
const getKey = Finder.#createMemoizedKeyGetter(rawGetKey);
|
|
29
31
|
const normalizedMatcher = caseInsensitive && typeof matcher === 'string' ? matcher.toLowerCase() : matcher;
|
|
30
32
|
if (cacheKey) {
|
|
@@ -49,8 +51,8 @@ class Finder {
|
|
|
49
51
|
const firstMatch = this.binarySearch(sorted, normalizedMatcher, getKey, caseInsensitive);
|
|
50
52
|
if (firstMatch) {
|
|
51
53
|
const baseKey = getKey(firstMatch);
|
|
52
|
-
const base = caseInsensitive && typeof baseKey === 'string'
|
|
53
|
-
baseKey.toLowerCase()
|
|
54
|
+
const base = caseInsensitive && typeof baseKey === 'string'
|
|
55
|
+
? baseKey.toLowerCase()
|
|
54
56
|
: baseKey;
|
|
55
57
|
results = sorted.filter((item) => {
|
|
56
58
|
const key = getKey(item);
|
|
@@ -62,8 +64,8 @@ class Finder {
|
|
|
62
64
|
if (!results.length && fuzzy && typeof normalizedMatcher === 'string') {
|
|
63
65
|
results = source.filter((item) => {
|
|
64
66
|
const rawKey = getKey(item);
|
|
65
|
-
const key = caseInsensitive && typeof rawKey === 'string'
|
|
66
|
-
rawKey.toLowerCase()
|
|
67
|
+
const key = caseInsensitive && typeof rawKey === 'string'
|
|
68
|
+
? rawKey.toLowerCase()
|
|
67
69
|
: String(rawKey);
|
|
68
70
|
return this.#match(key, normalizedMatcher);
|
|
69
71
|
});
|
|
@@ -81,7 +83,9 @@ class Finder {
|
|
|
81
83
|
const source = typeof data === 'function' ? data() : (data ?? this.#items);
|
|
82
84
|
if (!source?.length)
|
|
83
85
|
return undefined;
|
|
84
|
-
const rawGetKey = typeof keySelector === 'function'
|
|
86
|
+
const rawGetKey = typeof keySelector === 'function'
|
|
87
|
+
? keySelector
|
|
88
|
+
: (item) => item[keySelector];
|
|
85
89
|
const getKey = Finder.#createMemoizedKeyGetter(rawGetKey);
|
|
86
90
|
const normalizedMatcher = caseInsensitive && typeof matcher === 'string' ? matcher.toLowerCase() : matcher;
|
|
87
91
|
if (cacheKey) {
|
|
@@ -141,8 +145,8 @@ class Finder {
|
|
|
141
145
|
fuzzySearch(array, matcher, keySelector, caseInsensitive) {
|
|
142
146
|
for (const item of array) {
|
|
143
147
|
const rawKey = keySelector(item);
|
|
144
|
-
const key = caseInsensitive && typeof rawKey === 'string'
|
|
145
|
-
rawKey.toLowerCase()
|
|
148
|
+
const key = caseInsensitive && typeof rawKey === 'string'
|
|
149
|
+
? rawKey.toLowerCase()
|
|
146
150
|
: String(rawKey);
|
|
147
151
|
if (this.#match(key, matcher))
|
|
148
152
|
return item;
|
|
@@ -172,9 +176,7 @@ class Finder {
|
|
|
172
176
|
const sorted = [...data].sort((a, b) => {
|
|
173
177
|
const keyA = getKey(a);
|
|
174
178
|
const keyB = getKey(b);
|
|
175
|
-
return
|
|
176
|
-
: keyA > keyB ? 1
|
|
177
|
-
: 0);
|
|
179
|
+
return keyA < keyB ? -1 : keyA > keyB ? 1 : 0;
|
|
178
180
|
});
|
|
179
181
|
if (cacheKey) {
|
|
180
182
|
this.#sortedCache.set(cacheKey, {
|
package/dist/cjs/array/sort.js
CHANGED
|
@@ -86,16 +86,16 @@ function sortAnArray(array, options) {
|
|
|
86
86
|
return keyA == null ? 1 : -1;
|
|
87
87
|
}
|
|
88
88
|
if ((0, primitives_1.isString)(keyA) && (0, primitives_1.isString)(keyB)) {
|
|
89
|
-
return options?.sortOrder === 'desc'
|
|
90
|
-
naturalSort(keyB, keyA)
|
|
89
|
+
return options?.sortOrder === 'desc'
|
|
90
|
+
? naturalSort(keyB, keyA)
|
|
91
91
|
: naturalSort(keyA, keyB);
|
|
92
92
|
}
|
|
93
93
|
if ((0, primitives_1.isNumber)(keyA) && (0, primitives_1.isNumber)(keyB)) {
|
|
94
94
|
return options?.sortOrder === 'desc' ? keyB - keyA : keyA - keyB;
|
|
95
95
|
}
|
|
96
96
|
if ((0, primitives_1.isBoolean)(keyA) && (0, primitives_1.isBoolean)(keyB)) {
|
|
97
|
-
return options?.sortOrder === 'desc'
|
|
98
|
-
Number(keyB) - Number(keyA)
|
|
97
|
+
return options?.sortOrder === 'desc'
|
|
98
|
+
? Number(keyB) - Number(keyA)
|
|
99
99
|
: Number(keyA) - Number(keyB);
|
|
100
100
|
}
|
|
101
101
|
return 0;
|
|
@@ -16,8 +16,8 @@ function createOptionsArray(data, config) {
|
|
|
16
16
|
const { firstFieldKey, secondFieldKey, firstFieldName = 'value', secondFieldName = 'label', retainNumberValue = false, } = config || {};
|
|
17
17
|
if (data && data?.length) {
|
|
18
18
|
return data?.map((datum) => {
|
|
19
|
-
const firstValue = retainNumberValue && (0, primitives_1.isNumber)(datum[firstFieldKey])
|
|
20
|
-
datum[firstFieldKey]
|
|
19
|
+
const firstValue = retainNumberValue && (0, primitives_1.isNumber)(datum[firstFieldKey])
|
|
20
|
+
? datum[firstFieldKey]
|
|
21
21
|
: String(datum[firstFieldKey] ?? '');
|
|
22
22
|
return {
|
|
23
23
|
[firstFieldName]: firstValue,
|
|
@@ -18,25 +18,33 @@ class BanglaCalendar {
|
|
|
18
18
|
isoWeekDay;
|
|
19
19
|
constructor(dateBnYrOrCfg, bnMonthOrCfg, bnDateOrCfg, config) {
|
|
20
20
|
this.variant = this.#processVariants(dateBnYrOrCfg, bnMonthOrCfg, bnDateOrCfg, config);
|
|
21
|
-
let date = dateBnYrOrCfg instanceof Date
|
|
22
|
-
|
|
23
|
-
dateBnYrOrCfg
|
|
24
|
-
|
|
25
|
-
dateBnYrOrCfg
|
|
26
|
-
:
|
|
21
|
+
let date = dateBnYrOrCfg instanceof Date
|
|
22
|
+
? dateBnYrOrCfg
|
|
23
|
+
: new Date((0, specials_1.isDateString)(dateBnYrOrCfg) &&
|
|
24
|
+
!_a.isBanglaDateString(dateBnYrOrCfg)
|
|
25
|
+
? dateBnYrOrCfg
|
|
26
|
+
: (0, primitives_1.isNumber)(dateBnYrOrCfg) &&
|
|
27
|
+
!_a.isBanglaYearEn(dateBnYrOrCfg)
|
|
28
|
+
? dateBnYrOrCfg
|
|
29
|
+
: Date.now());
|
|
27
30
|
if (isNaN(date.getTime())) {
|
|
28
31
|
date = new Date();
|
|
29
32
|
}
|
|
30
33
|
const { year, month, monthDate } = this.#processDate(date);
|
|
31
|
-
let bnYear = _a.isBanglaYear(dateBnYrOrCfg)
|
|
32
|
-
|
|
33
|
-
|
|
34
|
+
let bnYear = _a.isBanglaYear(dateBnYrOrCfg)
|
|
35
|
+
? (0, convert_1.banglaToDigit)(dateBnYrOrCfg)
|
|
36
|
+
: (0, primitives_1.isNumber)(dateBnYrOrCfg) && _a.isBanglaYearEn(dateBnYrOrCfg)
|
|
37
|
+
? dateBnYrOrCfg
|
|
34
38
|
: year;
|
|
35
|
-
let bnMonth = _a.isBanglaMonth(bnMonthOrCfg)
|
|
36
|
-
|
|
39
|
+
let bnMonth = _a.isBanglaMonth(bnMonthOrCfg)
|
|
40
|
+
? (0, convert_1.banglaToDigit)(bnMonthOrCfg)
|
|
41
|
+
: _a.isBanglaMonthEn(bnMonthOrCfg)
|
|
42
|
+
? bnMonthOrCfg
|
|
37
43
|
: month;
|
|
38
|
-
let bnDate = _a.isBanglaDate(bnDateOrCfg)
|
|
39
|
-
|
|
44
|
+
let bnDate = _a.isBanglaDate(bnDateOrCfg)
|
|
45
|
+
? (0, convert_1.banglaToDigit)(bnDateOrCfg)
|
|
46
|
+
: _a.isBanglaDateEn(bnDateOrCfg)
|
|
47
|
+
? bnDateOrCfg
|
|
40
48
|
: monthDate;
|
|
41
49
|
if (_a.isBanglaDateString(dateBnYrOrCfg)) {
|
|
42
50
|
const parts = dateBnYrOrCfg.replace(/['"]/g, '').split('-');
|
|
@@ -218,8 +226,8 @@ class BanglaCalendar {
|
|
|
218
226
|
}
|
|
219
227
|
#getBnMonthTableLeap(gregYear, bnYear) {
|
|
220
228
|
const isBnLeapYear = (0, helpers_1._isBnLeapYear)(bnYear ?? this.year.en, gregYear, this.variant);
|
|
221
|
-
const bnMonthTable = isBnLeapYear
|
|
222
|
-
constants_1.BN_MONTH_TABLES?.[this.variant].leap
|
|
229
|
+
const bnMonthTable = isBnLeapYear
|
|
230
|
+
? constants_1.BN_MONTH_TABLES?.[this.variant].leap
|
|
223
231
|
: constants_1.BN_MONTH_TABLES?.[this.variant].normal;
|
|
224
232
|
return { bnMonthTable, isBnLeapYear };
|
|
225
233
|
}
|
|
@@ -230,11 +238,15 @@ class BanglaCalendar {
|
|
|
230
238
|
return new _a(tyBn, tmBn, tdBn, { variant });
|
|
231
239
|
}
|
|
232
240
|
#processVariants(v1, v2, v3, v4) {
|
|
233
|
-
return
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
241
|
+
return this.$hasVariantConfig(v1)
|
|
242
|
+
? v1.variant
|
|
243
|
+
: this.$hasVariantConfig(v2)
|
|
244
|
+
? v2.variant
|
|
245
|
+
: this.$hasVariantConfig(v3)
|
|
246
|
+
? v3.variant
|
|
247
|
+
: this.$hasVariantConfig(v4)
|
|
248
|
+
? v4.variant
|
|
249
|
+
: 'revised-2019';
|
|
238
250
|
}
|
|
239
251
|
#processDate(date) {
|
|
240
252
|
const bnYear = (0, helpers_1._getBnYear)(date);
|
package/dist/cjs/date/Chronos.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var _a;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.
|
|
4
|
+
exports.Chronus = exports.INTERNALS = exports.chronusts = exports.chronusjs = exports.chronus = exports.chronosts = exports.chronosjs = exports.chronos = exports.Chronos = void 0;
|
|
5
5
|
const primitives_1 = require("../guards/primitives");
|
|
6
6
|
const constants_1 = require("./constants");
|
|
7
7
|
const guards_1 = require("./guards");
|
|
@@ -141,8 +141,8 @@ class Chronos {
|
|
|
141
141
|
}
|
|
142
142
|
#removeUTCFromISO(local = true) {
|
|
143
143
|
const search = /\.\d+(Z|[+-]\d{2}:\d{2})?$/;
|
|
144
|
-
return local
|
|
145
|
-
this.toLocalISOString().replace(search, '')
|
|
144
|
+
return local
|
|
145
|
+
? this.toLocalISOString().replace(search, '')
|
|
146
146
|
: this.toISOString().replace(search, '');
|
|
147
147
|
}
|
|
148
148
|
get year() {
|
|
@@ -657,8 +657,10 @@ class Chronos {
|
|
|
657
657
|
.set('year', year ?? now.year)
|
|
658
658
|
.set('month', month ?? now.isoMonth).lastDateOfMonth;
|
|
659
659
|
};
|
|
660
|
-
return new _a(year ?? now.year, month ?? now.isoMonth, date
|
|
661
|
-
|
|
660
|
+
return new _a(year ?? now.year, month ?? now.isoMonth, date
|
|
661
|
+
? date
|
|
662
|
+
: now.isLastDayOfMonth() && now.date >= nextLDoM()
|
|
663
|
+
? nextLDoM()
|
|
662
664
|
: now.date, hour ?? now.hour, minute ?? now.minute, second ?? now.second, millisecond ?? now.millisecond).#withOrigin('with');
|
|
663
665
|
}
|
|
664
666
|
static today(options) {
|
package/dist/cjs/date/helpers.js
CHANGED
|
@@ -138,8 +138,8 @@ function _getElapsedDays(date) {
|
|
|
138
138
|
}
|
|
139
139
|
function _bnDaysMonthIdx(date, variant) {
|
|
140
140
|
const v = variant ?? 'revised-2019';
|
|
141
|
-
const table = _isBnLeapYear(_getBnYear(date), date.getFullYear(), v)
|
|
142
|
-
constants_1.BN_MONTH_TABLES?.[v].leap
|
|
141
|
+
const table = _isBnLeapYear(_getBnYear(date), date.getFullYear(), v)
|
|
142
|
+
? constants_1.BN_MONTH_TABLES?.[v].leap
|
|
143
143
|
: constants_1.BN_MONTH_TABLES?.[v].normal;
|
|
144
144
|
let days = _getElapsedDays(date);
|
|
145
145
|
let monthIdx = 0;
|
|
@@ -156,7 +156,9 @@ function _padShunno(str, length = 2) {
|
|
|
156
156
|
return str.padStart(length, '০');
|
|
157
157
|
}
|
|
158
158
|
function _dateArgsToDate(value) {
|
|
159
|
-
return (0, non_primitives_1.isDate)(value)
|
|
159
|
+
return (0, non_primitives_1.isDate)(value)
|
|
160
|
+
? value
|
|
161
|
+
: new Date((0, primitives_1.isString)(value) ? value.replace(/['"]/g, '') : (value ?? Date.now()));
|
|
160
162
|
}
|
|
161
163
|
function _hasChronosProperties(value) {
|
|
162
164
|
return ((0, non_primitives_1.isObjectWithKeys)(value, [
|
|
@@ -7,8 +7,8 @@ const constants_1 = require("../constants");
|
|
|
7
7
|
const businessPlugin = ($Chronos) => {
|
|
8
8
|
const { internalDate: $Date, withOrigin, cast, offset } = $Chronos[constants_1.INTERNALS];
|
|
9
9
|
const _buildWeekendMask = (weekDef, length) => {
|
|
10
|
-
const weekendDays = (0, non_primitives_1.isValidArray)(weekDef)
|
|
11
|
-
[...weekDef].sort()
|
|
10
|
+
const weekendDays = (0, non_primitives_1.isValidArray)(weekDef)
|
|
11
|
+
? [...weekDef].sort()
|
|
12
12
|
: Array.from({ length }, (_, i) => (weekDef + 7 - 1 - i) % 7).sort();
|
|
13
13
|
const mask = new Array(7).fill(true);
|
|
14
14
|
for (const d of weekendDays)
|
|
@@ -26,8 +26,10 @@ const dateRangePlugin = ($Chronos) => {
|
|
|
26
26
|
startDate = startDate.startOf('day');
|
|
27
27
|
endDate = endDate.startOf('day');
|
|
28
28
|
}
|
|
29
|
-
const skippedDays = (0, non_primitives_1.isValidArray)(onlyDays)
|
|
30
|
-
|
|
29
|
+
const skippedDays = (0, non_primitives_1.isValidArray)(onlyDays)
|
|
30
|
+
? onlyDays
|
|
31
|
+
: (0, non_primitives_1.isValidArray)(skipDays)
|
|
32
|
+
? skipDays
|
|
31
33
|
: [];
|
|
32
34
|
const skipSet = new Set(skippedDays.map((day) => ((0, primitives_1.isNumber)(day) ? day : constants_1.DAYS.indexOf(day))));
|
|
33
35
|
const dates = [];
|
|
@@ -90,9 +90,7 @@ const durationPlugin = ($Chronos) => {
|
|
|
90
90
|
.filter(([_, value]) => showZero || Math.abs(value) > 0)
|
|
91
91
|
.slice(0, maxUnits)
|
|
92
92
|
.map(([unit, value]) => _formatUnit(unit, value));
|
|
93
|
-
return
|
|
94
|
-
: style === 'short' ? '0s'
|
|
95
|
-
: '0 seconds');
|
|
93
|
+
return parts.length ? parts.join(separator) : style === 'short' ? '0s' : '0 seconds';
|
|
96
94
|
};
|
|
97
95
|
};
|
|
98
96
|
exports.durationPlugin = durationPlugin;
|
package/dist/cjs/dom/query.js
CHANGED
|
@@ -14,8 +14,8 @@ function generateQueryParams(params = {}) {
|
|
|
14
14
|
?.filter(([_, value]) => value !== undefined &&
|
|
15
15
|
value !== null &&
|
|
16
16
|
!(typeof value === 'string' && value?.trim() === ''))
|
|
17
|
-
?.flatMap(([key, value]) => Array.isArray(value)
|
|
18
|
-
value
|
|
17
|
+
?.flatMap(([key, value]) => Array.isArray(value)
|
|
18
|
+
? value
|
|
19
19
|
?.filter((v) => v !== undefined &&
|
|
20
20
|
v !== null &&
|
|
21
21
|
!(typeof v === 'string' && v.trim() === ''))
|
package/dist/cjs/form/convert.js
CHANGED
|
@@ -9,13 +9,13 @@ const createControlledFormData = (data, configs) => {
|
|
|
9
9
|
const formData = new FormData();
|
|
10
10
|
const { stringifyNested = '*' } = configs || {};
|
|
11
11
|
const _shouldLowercaseKeys = (key) => {
|
|
12
|
-
return Array.isArray(configs?.lowerCaseKeys)
|
|
13
|
-
configs?.lowerCaseKeys?.some((path) => key === path || key.startsWith(`${path}.`))
|
|
12
|
+
return Array.isArray(configs?.lowerCaseKeys)
|
|
13
|
+
? configs?.lowerCaseKeys?.some((path) => key === path || key.startsWith(`${path}.`))
|
|
14
14
|
: configs?.lowerCaseKeys === '*';
|
|
15
15
|
};
|
|
16
16
|
const _shouldLowercaseValue = (key) => {
|
|
17
|
-
return Array.isArray(configs?.lowerCaseValues)
|
|
18
|
-
configs.lowerCaseValues?.some((path) => key === path || key?.startsWith(`${path}.`))
|
|
17
|
+
return Array.isArray(configs?.lowerCaseValues)
|
|
18
|
+
? configs.lowerCaseValues?.some((path) => key === path || key?.startsWith(`${path}.`))
|
|
19
19
|
: configs?.lowerCaseValues === '*';
|
|
20
20
|
};
|
|
21
21
|
const _transformKey = (key) => {
|
|
@@ -23,26 +23,26 @@ const createControlledFormData = (data, configs) => {
|
|
|
23
23
|
};
|
|
24
24
|
const _isRequiredKey = (key) => {
|
|
25
25
|
const transformedKey = _transformKey(key);
|
|
26
|
-
return Array.isArray(configs?.requiredKeys)
|
|
27
|
-
configs?.requiredKeys?.some((path) => transformedKey === path || transformedKey?.startsWith(`${path}.`))
|
|
26
|
+
return Array.isArray(configs?.requiredKeys)
|
|
27
|
+
? configs?.requiredKeys?.some((path) => transformedKey === path || transformedKey?.startsWith(`${path}.`))
|
|
28
28
|
: configs?.requiredKeys === '*';
|
|
29
29
|
};
|
|
30
30
|
const _shouldDotNotate = (key) => {
|
|
31
31
|
const transformedKey = _transformKey(key);
|
|
32
|
-
return Array.isArray(configs?.dotNotateNested)
|
|
33
|
-
configs.dotNotateNested.includes(transformedKey)
|
|
32
|
+
return Array.isArray(configs?.dotNotateNested)
|
|
33
|
+
? configs.dotNotateNested.includes(transformedKey)
|
|
34
34
|
: configs?.dotNotateNested === '*';
|
|
35
35
|
};
|
|
36
36
|
const _shouldStringify = (key) => {
|
|
37
37
|
const transformedKey = _transformKey(key);
|
|
38
|
-
return Array.isArray(stringifyNested)
|
|
39
|
-
stringifyNested.includes(transformedKey)
|
|
38
|
+
return Array.isArray(stringifyNested)
|
|
39
|
+
? stringifyNested.includes(transformedKey)
|
|
40
40
|
: stringifyNested === '*';
|
|
41
41
|
};
|
|
42
42
|
const _shouldBreakArray = (key) => {
|
|
43
43
|
const transformedKey = _transformKey(key);
|
|
44
|
-
return Array.isArray(configs?.breakArray)
|
|
45
|
-
configs.breakArray.includes(transformedKey)
|
|
44
|
+
return Array.isArray(configs?.breakArray)
|
|
45
|
+
? configs.breakArray.includes(transformedKey)
|
|
46
46
|
: configs?.breakArray === '*';
|
|
47
47
|
};
|
|
48
48
|
const _cleanObject = (obj, parentKey = '') => {
|
|
@@ -9,10 +9,9 @@ function serializeForm(form, toQueryString = false) {
|
|
|
9
9
|
const data = {};
|
|
10
10
|
formData?.forEach((value, key) => {
|
|
11
11
|
if (data[key]) {
|
|
12
|
-
data[key] =
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
: [data[key], value.toString()];
|
|
12
|
+
data[key] = Array.isArray(data[key])
|
|
13
|
+
? [...data[key], value.toString()]
|
|
14
|
+
: [data[key], value.toString()];
|
|
16
15
|
}
|
|
17
16
|
else {
|
|
18
17
|
data[key] = value.toString();
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.
|
|
6
|
-
exports.
|
|
7
|
-
exports.
|
|
8
|
-
exports.
|
|
9
|
-
exports.
|
|
10
|
-
exports.
|
|
11
|
-
exports.isValidURL = exports.isValidEmail = exports.isUUID = void 0;
|
|
3
|
+
exports.calculateLCD = exports.calculateHCF = exports.calculateGCD = exports.calculateFactorial = exports.calculateAverage = exports.verbalizer = exports.Verbalizer = exports.pluralizer = exports.Pluralizer = exports.VolumeConverter = exports.TimeConverter = exports.TemperatureConverter = exports.MassConverter = exports.LengthConverter = exports.DataConverter = exports.converter = exports.Converter = exports.AreaConverter = exports.wordCount = exports.parseNumbersFromText = exports.levenshteinDistance = exports.getLevenshteinDistance = exports.extractNumbersFromString = exports.extractNumbers = exports.countWordsInString = exports.countWords = exports.getCharacterDifferences = exports.computeTextDiff = exports.slugifyString = exports.reverseString = exports.replaceAllInString = exports.normalizeString = exports.maskString = exports.formatWithPlural = exports.formatUnitWithPlural = exports.formatNumberWithPluralUnit = exports.extractURLs = exports.extractEmails = exports.convertStringCase = exports.capitalizeString = exports.isSnakeCase = exports.isPascalCase = exports.isPalindrome = exports.isKebabCase = exports.isEmojiOnly = exports.isCamelCase = exports.generateAnagrams = exports.truncateString = exports.trimString = exports.generateRandomID = void 0;
|
|
4
|
+
exports.convertNumberToWordsOrdinal = exports.convertNumberToWords = exports.cardinalWordsToOrdinal = exports.banglaToDigit = exports.arabicToRoman = exports.isPerfectSquare = exports.isPartOfFibonacciSeries = exports.isPartOfFibonacci = exports.isOddNumber = exports.isOdd = exports.isNumberInvalid = exports.isMultiple = exports.isInvalidNumber = exports.isFibonacci = exports.isEvenNumber = exports.isEven = exports.areNumbersInvalid = exports.areInvalidNumbers = exports.getNthFibonacci = exports.getMemoizedFibonacciSeries = exports.getMemoizedFibonacci = exports.getFibonacciSeriesMemo = exports.getFibonacciSeries = exports.getFibonacciNumbers = exports.getFibonacci = exports.generateFibonacci = exports.fibonacciGenerator = exports.calculatePercentage = exports.UnitConverter = exports.Unit = exports.Currency = exports.sumOfNumbers = exports.sumNumbers = exports.sumDigits = exports.roundToDecimal = exports.roundNumber = exports.reverseNumber = exports.getSumOfNumbers = exports.getRandomNumber = exports.getRandomInt = exports.getFactors = exports.getFactorial = exports.getDivisors = exports.getAverageOfNumbers = exports.getAverage = exports.factorsOf = exports.factorial = exports.convertToFixed = exports.convertToDecimal = exports.calculateLCM = void 0;
|
|
5
|
+
exports.convertHexToHsl = exports.convertHex8ToRgba = exports.convertHex8ToHsla = exports.convertColorCode = exports.getRandomHSL = exports.getRandomColor = exports.generateRandomHSLColor = exports.generateRandomHSL = exports.generateRandomColorInHexRGB = exports.generateRandomColor = exports.getColorForInitial = exports.getNumbersInRange = exports.roundToNearestInterval = exports.roundToNearest = exports.roundNumberToNearestInterval = exports.numberToOrdinal = exports.normalizeNumber = exports.getRandomFloat = exports.getRandomDecimal = exports.getOrdinalNumber = exports.getOrdinal = exports.formatCurrency = exports.convertToOrdinal = exports.convertNumberToOrdinal = exports.convertNumberToCurrency = exports.clampNumber = exports.cardinalToOrdinal = exports.isPrimeNumber = exports.isPrime = exports.getPrimeNumbers = exports.findPrimeNumbers = exports.wordToNumber = exports.wordsToNumber = exports.toRomanNumeral = exports.toRoman = exports.romanToNumeric = exports.romanToInteger = exports.romanToArabic = exports.numericToRoman = exports.numberToWordsOrdinal = exports.numberToWords = exports.numberToRoman = exports.integerToRoman = exports.digitToBangla = exports.convertWordToNumber = exports.convertWordsToNumber = exports.convertToRomanNumerals = exports.convertRomanToNumeric = exports.convertRomanToInteger = exports.convertRomanToArabic = void 0;
|
|
6
|
+
exports.convertMinutesToUTCOffset = exports.convertMinutesToTime = exports.convertMinutesToHourMinutes = exports.chronusts = exports.chronusjs = exports.chronus = exports.chronosts = exports.chronosjs = exports.chronos = exports.INTERNALS = exports.Chronus = exports.Chronos = exports.Bongabdo = exports.BnCalendar = exports.BanglaCalendar = exports.isValidUTCOffset = exports.isValidUTCOffSet = exports.isValidUTC = exports.isValidTimeZoneId = exports.isValidTimeString = exports.isValidTime = exports.isTimeWithUnit = exports.isNativeTimeZoneId = exports.isLeapYear = exports.isDateLike = exports.parseMSec = exports.parseMs = exports.greet = exports.getGreeting = exports.generateGreeting = exports.extractSolidColorValues = exports.extractAlphaColorValues = exports.Colour = exports.Color = exports.isRGBA = exports.isRGB = exports.isHSLA = exports.isHSL = exports.isHex8 = exports.isHex6 = exports.convertRgbToRgba = exports.convertRgbToHsl = exports.convertRgbToHex = exports.convertRgbaToHsla = exports.convertRgbaToHex8 = exports.convertHslToRgb = exports.convertHslToHex = exports.convertHslaToRgba = exports.convertHslaToHex8 = exports.convertHexToRgb = void 0;
|
|
7
|
+
exports.getDuplicatesFromArray = exports.getDuplicates = exports.findMissingElements = exports.extractMissingElements = exports.extractDuplicatesFromArray = exports.extractDuplicates = exports.createOptionsArray = exports.sortAnArray = exports.naturalSortForString = exports.naturalSort = exports.compareSorter = exports.compareNaturally = exports.Finder = exports.totalDeltaByField = exports.sumFieldDifference = exports.sumByField = exports.groupAndSumByField = exports.groupAndAvgByField = exports.groupAndAverageByField = exports.avgByField = exports.averageByField = exports.shuffleArray = exports.isValidEmptyArray = exports.isInvalidOrEmptyArray = exports.getLastArrayElement = exports.flattenArray = exports.filterArrayOfObjects = exports.minutesToUTCOffset = exports.getTotalMinutesFromUTC = exports.getTotalMinutesFromTime = exports.getTotalMinutes = exports.getTimeZoneIds = exports.getTimeZoneDetails = exports.getTimeStringFromUTC = exports.getTimeFromMinutes = exports.getNativeTimeZoneId = exports.getMinutesFromUTC = exports.getHourMinutesFromMinutes = exports.getTimestamp = exports.getCurrentTime = exports.getCurrentDateTime = exports.formatUTCOffset = exports.formatTimePart = exports.formatDateTime = exports.formatDate = exports.extractTotalMinutesFromTime = exports.extractTimeStringFromUTC = exports.extractTimeFromUTC = exports.extractMinutesFromUTC = exports.extractHourMinute = void 0;
|
|
8
|
+
exports.removeFields = exports.remapObjectFields = exports.remapFields = exports.pickObjectFieldsByCondition = exports.pickObjectFields = exports.pickFieldsByCondition = exports.pickFields = exports.omitObjectFields = exports.omitFields = exports.deleteObjectFields = exports.deleteFields = exports.convertObjectValues = exports.sanitizeData = exports.parseStringifiedObjectValues = exports.parseObjectValues = exports.parseJsonToObject = exports.mergeObjects = exports.mergeAndFlattenObjects = exports.flattenObjectKeyValue = exports.flattenObjectDotNotation = exports.extractUpdatedFields = exports.extractUpdatedAndNewFields = exports.extractNewFields = exports.extractObjectKeysDeep = exports.extractObjectKeys = exports.extractKeysDeep = exports.extractKeys = exports.countObjectFields = exports.cloneObject = exports.isValidFormData = exports.isOriginFileObj = exports.isFileUpload = exports.isFileOrBlob = exports.isFileList = exports.isFileArray = exports.isCustomFileArray = exports.isCustomFile = exports.serializeForm = exports.parseFormData = exports.createFormData = exports.createControlledFormData = exports.convertIntoFormData = exports.splitArrayByProperty = exports.splitArray = exports.rotateArray = exports.removeDuplicatesFromArray = exports.removeDuplicates = exports.moveArrayElement = exports.groupArrayByProperty = exports.getMissingElements = void 0;
|
|
9
|
+
exports.isNumber = exports.isNull = exports.isNormalPrimitive = exports.isNonEmptyString = exports.isInteger = exports.isFalsy = exports.isBoolean = exports.isBigInt = exports.Paginator = exports.throttleAction = exports.stripJsonEdgeGarbage = exports.stableStringify = exports.parsePrimitivesDeep = exports.parseJsonDeep = exports.parseJSON = exports.joinArrayElements = exports.isDeepEqual = exports.getStaticMethodsCount = exports.getStaticMethodNames = exports.getStaticGetterNames = exports.getInstanceMethodsCount = exports.getInstanceMethodNames = exports.getInstanceGetterNames = exports.getClassDetails = exports.definePrototypeMethod = exports.deepParsePrimitives = exports.debounceAction = exports.countStaticMethods = exports.countInstanceMethods = exports.convertArrayToString = exports.saveToSessionStorage = exports.saveToLocalStorage = exports.removeFromSessionStorage = exports.removeFromLocalStorage = exports.getFromSessionStorage = exports.getFromLocalStorage = exports.toggleFullScreen = exports.smoothScrollTo = exports.copyToClipboard = exports.updateQueryParam = exports.queryStringToObject = exports.parseQueryStringLiteral = exports.parseQueryString = exports.literalQueryStringToObject = exports.getQueryStringAsObject = exports.getQueryParams = exports.generateQueryParams = exports.formatQueryParams = exports.createQueryParams = exports.removeObjectFields = void 0;
|
|
10
|
+
exports.isNumericString = exports.isNodeEnvironment = exports.isNodeENV = exports.isNode = exports.isIPAddress = exports.isHexString = exports.isExpectedNodeENV = exports.isEnvironment = exports.isEmailArray = exports.isEmail = exports.isDateString = exports.isBrowser = exports.isBinaryString = exports.isBase64 = exports.httpStatus = exports.HttpStatus = exports.isValidSet = exports.isValidObject = exports.isValidMap = exports.isValidJSON = exports.isValidArray = exports.isSet = exports.isReturningPromise = exports.isRegularExpression = exports.isRegExp = exports.isPromise = exports.isObjectWithKeys = exports.isObjectEmpty = exports.isObject = exports.isNotEmptyObject = exports.isMethodDescriptor = exports.isMethod = exports.isMap = exports.isJSONObject = exports.isJSON = exports.isFunction = exports.isError = exports.isEmptyObjectGuard = exports.isEmptyObject = exports.isDate = exports.isArrayWithLength = exports.isArrayOfType = exports.isArray = exports.doesReturnPromise = exports.isUndefined = exports.isTruthy = exports.isSymbol = exports.isString = exports.isPrimitive = exports.isPositiveInteger = void 0;
|
|
11
|
+
exports.isValidURL = exports.isValidEmail = exports.isUUID = exports.isURL = exports.isPhoneNumber = void 0;
|
|
12
12
|
var basics_1 = require("./string/basics");
|
|
13
13
|
Object.defineProperty(exports, "generateRandomID", { enumerable: true, get: function () { return basics_1.generateRandomID; } });
|
|
14
14
|
Object.defineProperty(exports, "trimString", { enumerable: true, get: function () { return basics_1.trimString; } });
|
|
@@ -36,6 +36,9 @@ Object.defineProperty(exports, "normalizeString", { enumerable: true, get: funct
|
|
|
36
36
|
Object.defineProperty(exports, "replaceAllInString", { enumerable: true, get: function () { return convert_1.replaceAllInString; } });
|
|
37
37
|
Object.defineProperty(exports, "reverseString", { enumerable: true, get: function () { return convert_1.reverseString; } });
|
|
38
38
|
Object.defineProperty(exports, "slugifyString", { enumerable: true, get: function () { return convert_1.slugifyString; } });
|
|
39
|
+
var diff_1 = require("./string/diff");
|
|
40
|
+
Object.defineProperty(exports, "computeTextDiff", { enumerable: true, get: function () { return diff_1.computeTextDiff; } });
|
|
41
|
+
Object.defineProperty(exports, "getCharacterDifferences", { enumerable: true, get: function () { return diff_1.getCharacterDifferences; } });
|
|
39
42
|
var utilities_1 = require("./string/utilities");
|
|
40
43
|
Object.defineProperty(exports, "countWords", { enumerable: true, get: function () { return utilities_1.countWords; } });
|
|
41
44
|
Object.defineProperty(exports, "countWordsInString", { enumerable: true, get: function () { return utilities_1.countWords; } });
|
|
@@ -44,8 +44,8 @@ exports.getRandomNumber = getRandomNumber;
|
|
|
44
44
|
const convertToDecimal = (input, options) => {
|
|
45
45
|
const { decimalPlaces = 2, isString = false } = options || {};
|
|
46
46
|
const number = typeof input === 'number' ? input : Number(input);
|
|
47
|
-
return isString
|
|
48
|
-
number.toFixed(decimalPlaces)
|
|
47
|
+
return isString
|
|
48
|
+
? number.toFixed(decimalPlaces)
|
|
49
49
|
: Number(number.toFixed(decimalPlaces));
|
|
50
50
|
};
|
|
51
51
|
exports.convertToDecimal = convertToDecimal;
|
|
@@ -112,8 +112,8 @@ function numberToWordsOrdinal(number) {
|
|
|
112
112
|
const _fixUnderTeen = (cardinal) => {
|
|
113
113
|
return constants_1.ORDINAL_UNDER_TEEN[cardinal];
|
|
114
114
|
};
|
|
115
|
-
const wordNumber = (0, specials_1.isNumericString)(number) || (0, primitives_1.isNumber)(number)
|
|
116
|
-
numberToWords(number)
|
|
115
|
+
const wordNumber = (0, specials_1.isNumericString)(number) || (0, primitives_1.isNumber)(number)
|
|
116
|
+
? numberToWords(number)
|
|
117
117
|
: number?.trim()?.toLowerCase();
|
|
118
118
|
if (TEEN_OR_HUNDRED.test(wordNumber)) {
|
|
119
119
|
return wordNumber + 'th';
|
|
@@ -20,8 +20,8 @@ function _convertLessThanThousand(num, isLast) {
|
|
|
20
20
|
result += `-${constants_1.ONES[remainder]}`;
|
|
21
21
|
if (num >= 100) {
|
|
22
22
|
const hundredsPart = `${constants_1.ONES[Math.floor(num / 100)]} hundred`;
|
|
23
|
-
return num % 100 === 0
|
|
24
|
-
hundredsPart
|
|
23
|
+
return num % 100 === 0
|
|
24
|
+
? hundredsPart
|
|
25
25
|
: `${hundredsPart} ${isLast ? 'and' : ''} ${_convertLessThanThousand(num % 100, false)}`;
|
|
26
26
|
}
|
|
27
27
|
return result;
|
package/dist/cjs/number/range.js
CHANGED
|
@@ -58,7 +58,7 @@ function getNumbersInRange(type = 'any', options) {
|
|
|
58
58
|
if (type !== 'prime') {
|
|
59
59
|
output = (0, helpers_1._applyMultiples)(output, multiplesOf);
|
|
60
60
|
}
|
|
61
|
-
return getAsString
|
|
62
|
-
(0, index_1.convertArrayToString)(output, { separator })
|
|
61
|
+
return getAsString
|
|
62
|
+
? (0, index_1.convertArrayToString)(output, { separator })
|
|
63
63
|
: output;
|
|
64
64
|
}
|
|
@@ -45,7 +45,5 @@ const getOrdinal = (num, withNumber = true) => {
|
|
|
45
45
|
};
|
|
46
46
|
exports.getOrdinal = getOrdinal;
|
|
47
47
|
function normalizeNumber(num) {
|
|
48
|
-
return (
|
|
49
|
-
: (0, specials_1.isNumericString)(num) ? Number(num)
|
|
50
|
-
: undefined);
|
|
48
|
+
return (0, primitives_1.isNumber)(num) ? num : (0, specials_1.isNumericString)(num) ? Number(num) : undefined;
|
|
51
49
|
}
|
|
@@ -11,8 +11,8 @@ function sanitizeData(input, options, _return) {
|
|
|
11
11
|
const { keysToIgnore = [], requiredKeys = [], trimStrings = true, ignoreNullish = false, ignoreFalsy = false, ignoreEmpty = false, } = options || {};
|
|
12
12
|
const ignoreKeySet = new Set(keysToIgnore);
|
|
13
13
|
const _isRequiredKey = (key) => {
|
|
14
|
-
return Array.isArray(requiredKeys)
|
|
15
|
-
requiredKeys?.some((path) => key === path || key.startsWith(`${path}.`))
|
|
14
|
+
return Array.isArray(requiredKeys)
|
|
15
|
+
? requiredKeys?.some((path) => key === path || key.startsWith(`${path}.`))
|
|
16
16
|
: requiredKeys === '*';
|
|
17
17
|
};
|
|
18
18
|
const _skipObject = (obj) => {
|
package/dist/cjs/string/case.js
CHANGED
|
@@ -104,8 +104,10 @@ function convertStringCase(value, format, options) {
|
|
|
104
104
|
if (preserveAcronyms && token.includes('-')) {
|
|
105
105
|
return token
|
|
106
106
|
.split('-')
|
|
107
|
-
.map((sub) => isAcronym(sub)
|
|
108
|
-
|
|
107
|
+
.map((sub) => isAcronym(sub)
|
|
108
|
+
? sub
|
|
109
|
+
: idx === 0
|
|
110
|
+
? capitalize(sub)
|
|
109
111
|
: sub.toLowerCase())
|
|
110
112
|
.join('-');
|
|
111
113
|
}
|
|
@@ -184,63 +186,57 @@ function toCamelCase(str, ...del) {
|
|
|
184
186
|
return (parts[0].toLowerCase() + parts.slice(1).map(_capitalize).join(''));
|
|
185
187
|
}
|
|
186
188
|
function toPascalCase(str, ...del) {
|
|
187
|
-
return ((0, primitives_1.isNonEmptyString)(str) ?
|
|
188
|
-
_normalizeDelimiters(str, del).map(_capitalize).join('')
|
|
189
|
-
: '');
|
|
189
|
+
return ((0, primitives_1.isNonEmptyString)(str) ? _normalizeDelimiters(str, del).map(_capitalize).join('') : '');
|
|
190
190
|
}
|
|
191
191
|
function toSnakeCase(str, ...del) {
|
|
192
|
-
return ((0, primitives_1.isNonEmptyString)(str)
|
|
193
|
-
_normalizeDelimiters(str, del)
|
|
192
|
+
return ((0, primitives_1.isNonEmptyString)(str)
|
|
193
|
+
? _normalizeDelimiters(str, del)
|
|
194
194
|
.map((w) => w.toLowerCase())
|
|
195
195
|
.join('_')
|
|
196
196
|
: '');
|
|
197
197
|
}
|
|
198
198
|
function toKebabCase(str, ...del) {
|
|
199
|
-
return ((0, primitives_1.isNonEmptyString)(str)
|
|
200
|
-
_normalizeDelimiters(str, del)
|
|
199
|
+
return ((0, primitives_1.isNonEmptyString)(str)
|
|
200
|
+
? _normalizeDelimiters(str, del)
|
|
201
201
|
.map((w) => w.toLowerCase())
|
|
202
202
|
.join('-')
|
|
203
203
|
: '');
|
|
204
204
|
}
|
|
205
205
|
function toTrainCase(str, ...del) {
|
|
206
|
-
return ((0, primitives_1.isNonEmptyString)(str) ?
|
|
207
|
-
_normalizeDelimiters(str, del).map(_capitalize).join('-')
|
|
208
|
-
: '');
|
|
206
|
+
return ((0, primitives_1.isNonEmptyString)(str) ? _normalizeDelimiters(str, del).map(_capitalize).join('-') : '');
|
|
209
207
|
}
|
|
210
208
|
function toDotCase(str, ...del) {
|
|
211
209
|
return ((0, primitives_1.isNonEmptyString)(str) ? _normalizeDelimiters(str, del).join('.') : '');
|
|
212
210
|
}
|
|
213
211
|
function toPathCase(str, ...del) {
|
|
214
|
-
return ((0, primitives_1.isNonEmptyString)(str)
|
|
215
|
-
_normalizeDelimiters(str, del)
|
|
212
|
+
return ((0, primitives_1.isNonEmptyString)(str)
|
|
213
|
+
? _normalizeDelimiters(str, del)
|
|
216
214
|
.map((w) => w.toLowerCase())
|
|
217
215
|
.join('/')
|
|
218
216
|
: '');
|
|
219
217
|
}
|
|
220
218
|
function toConstantCase(str, ...del) {
|
|
221
|
-
return ((0, primitives_1.isNonEmptyString)(str)
|
|
222
|
-
_normalizeDelimiters(str, del)
|
|
219
|
+
return ((0, primitives_1.isNonEmptyString)(str)
|
|
220
|
+
? _normalizeDelimiters(str, del)
|
|
223
221
|
.map((w) => w.toUpperCase())
|
|
224
222
|
.join('_')
|
|
225
223
|
: '');
|
|
226
224
|
}
|
|
227
225
|
function toPascalSnakeCase(str, ...del) {
|
|
228
|
-
return ((0, primitives_1.isNonEmptyString)(str) ?
|
|
229
|
-
_normalizeDelimiters(str, del).map(_capitalize).join('_')
|
|
230
|
-
: '');
|
|
226
|
+
return ((0, primitives_1.isNonEmptyString)(str) ? _normalizeDelimiters(str, del).map(_capitalize).join('_') : '');
|
|
231
227
|
}
|
|
232
228
|
function toTitleCase(str, ...del) {
|
|
233
|
-
return ((0, primitives_1.isNonEmptyString)(str)
|
|
234
|
-
_normalizeDelimiters(str, del)
|
|
235
|
-
.map((w, i) => i !== 0 && smallSet.has(w)
|
|
236
|
-
w.toLowerCase()
|
|
229
|
+
return ((0, primitives_1.isNonEmptyString)(str)
|
|
230
|
+
? _normalizeDelimiters(str, del)
|
|
231
|
+
.map((w, i) => i !== 0 && smallSet.has(w)
|
|
232
|
+
? w.toLowerCase()
|
|
237
233
|
: _capitalize(w))
|
|
238
234
|
.join(' ')
|
|
239
235
|
: '');
|
|
240
236
|
}
|
|
241
237
|
function toSentenceCase(str, ...del) {
|
|
242
|
-
return ((0, primitives_1.isNonEmptyString)(str)
|
|
243
|
-
_normalizeDelimiters(str, del)
|
|
238
|
+
return ((0, primitives_1.isNonEmptyString)(str)
|
|
239
|
+
? _normalizeDelimiters(str, del)
|
|
244
240
|
.map((w, i) => (i === 0 ? _capitalize(w) : w.toLowerCase()))
|
|
245
241
|
.join(' ')
|
|
246
242
|
: '');
|
|
@@ -8,8 +8,8 @@ exports.formatUnitWithPlural = formatUnitWithPlural;
|
|
|
8
8
|
const basics_1 = require("./basics");
|
|
9
9
|
const replaceAllInString = (input, find, replace) => {
|
|
10
10
|
const trimmedString = (0, basics_1.trimString)(input);
|
|
11
|
-
const regex = typeof find === 'string'
|
|
12
|
-
new RegExp(find, 'g')
|
|
11
|
+
const regex = typeof find === 'string'
|
|
12
|
+
? new RegExp(find, 'g')
|
|
13
13
|
: new RegExp(find, find?.flags.includes('g') ? find?.flags : find?.flags + 'g');
|
|
14
14
|
return trimmedString?.replace(regex, replace);
|
|
15
15
|
};
|