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.
Files changed (62) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/cjs/array/Finder.js +13 -11
  3. package/dist/cjs/array/sort.js +4 -4
  4. package/dist/cjs/array/transform.js +2 -2
  5. package/dist/cjs/date/BanglaCalendar.js +32 -20
  6. package/dist/cjs/date/Chronos.js +7 -5
  7. package/dist/cjs/date/helpers.js +5 -3
  8. package/dist/cjs/date/plugins/businessPlugin.js +2 -2
  9. package/dist/cjs/date/plugins/dateRangePlugin.js +4 -2
  10. package/dist/cjs/date/plugins/durationPlugin.js +1 -3
  11. package/dist/cjs/dom/query.js +2 -2
  12. package/dist/cjs/form/convert.js +12 -12
  13. package/dist/cjs/form/transform.js +3 -4
  14. package/dist/cjs/index.js +12 -9
  15. package/dist/cjs/number/basics.js +2 -2
  16. package/dist/cjs/number/convert.js +2 -2
  17. package/dist/cjs/number/helpers.js +2 -2
  18. package/dist/cjs/number/range.js +2 -2
  19. package/dist/cjs/number/utilities.js +1 -3
  20. package/dist/cjs/object/sanitize.js +2 -2
  21. package/dist/cjs/string/case.js +21 -25
  22. package/dist/cjs/string/convert.js +2 -2
  23. package/dist/cjs/string/diff.js +158 -0
  24. package/dist/cjs/string/helpers.js +70 -0
  25. package/dist/cjs/string/utilities.js +3 -5
  26. package/dist/cjs/stylog/Stylog.js +7 -5
  27. package/dist/dts/colors/css-colors.d.ts +1 -1
  28. package/dist/dts/date/Chronos.d.ts +3 -3
  29. package/dist/dts/date/types.d.ts +3 -1
  30. package/dist/dts/hash/types.d.ts +1 -1
  31. package/dist/dts/index.d.ts +1 -0
  32. package/dist/dts/object/types.d.ts +4 -4
  33. package/dist/dts/string/diff.d.ts +48 -0
  34. package/dist/dts/string/helpers.d.ts +25 -0
  35. package/dist/dts/string/types.d.ts +65 -19
  36. package/dist/dts/utils/types.d.ts +10 -8
  37. package/dist/esm/array/Finder.js +13 -11
  38. package/dist/esm/array/sort.js +4 -4
  39. package/dist/esm/array/transform.js +2 -2
  40. package/dist/esm/date/BanglaCalendar.js +32 -20
  41. package/dist/esm/date/Chronos.js +7 -5
  42. package/dist/esm/date/helpers.js +5 -3
  43. package/dist/esm/date/plugins/businessPlugin.js +2 -2
  44. package/dist/esm/date/plugins/dateRangePlugin.js +4 -2
  45. package/dist/esm/date/plugins/durationPlugin.js +1 -3
  46. package/dist/esm/dom/query.js +2 -2
  47. package/dist/esm/form/convert.js +12 -12
  48. package/dist/esm/form/transform.js +3 -4
  49. package/dist/esm/index.js +1 -0
  50. package/dist/esm/number/basics.js +2 -2
  51. package/dist/esm/number/convert.js +2 -2
  52. package/dist/esm/number/helpers.js +2 -2
  53. package/dist/esm/number/range.js +2 -2
  54. package/dist/esm/number/utilities.js +1 -3
  55. package/dist/esm/object/sanitize.js +2 -2
  56. package/dist/esm/string/case.js +21 -25
  57. package/dist/esm/string/convert.js +2 -2
  58. package/dist/esm/string/diff.js +154 -0
  59. package/dist/esm/string/helpers.js +65 -0
  60. package/dist/esm/string/utilities.js +3 -5
  61. package/dist/esm/stylog/Stylog.js +7 -5
  62. 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`.
@@ -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' ? keySelector : ((item) => item[keySelector]);
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' ? keySelector : ((item) => item[keySelector]);
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 (keyA < keyB ? -1
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, {
@@ -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 ? dateBnYrOrCfg : (new Date(((0, specials_1.isDateString)(dateBnYrOrCfg) &&
22
- !_a.isBanglaDateString(dateBnYrOrCfg)) ?
23
- dateBnYrOrCfg
24
- : (0, primitives_1.isNumber)(dateBnYrOrCfg) && !_a.isBanglaYearEn(dateBnYrOrCfg) ?
25
- dateBnYrOrCfg
26
- : Date.now()));
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) ? (0, convert_1.banglaToDigit)(dateBnYrOrCfg)
32
- : (0, primitives_1.isNumber)(dateBnYrOrCfg) && _a.isBanglaYearEn(dateBnYrOrCfg) ?
33
- dateBnYrOrCfg
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) ? (0, convert_1.banglaToDigit)(bnMonthOrCfg)
36
- : _a.isBanglaMonthEn(bnMonthOrCfg) ? bnMonthOrCfg
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) ? (0, convert_1.banglaToDigit)(bnDateOrCfg)
39
- : _a.isBanglaDateEn(bnDateOrCfg) ? bnDateOrCfg
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 (this.$hasVariantConfig(v1) ? v1.variant
234
- : this.$hasVariantConfig(v2) ? v2.variant
235
- : this.$hasVariantConfig(v3) ? v3.variant
236
- : this.$hasVariantConfig(v4) ? v4.variant
237
- : 'revised-2019');
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);
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.INTERNALS = exports.Chronus = exports.chronusts = exports.chronusjs = exports.chronus = exports.chronosts = exports.chronosjs = exports.chronos = exports.Chronos = void 0;
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 ? date
661
- : now.isLastDayOfMonth() && now.date >= nextLDoM() ? nextLDoM()
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) {
@@ -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) ? value : (new Date((0, primitives_1.isString)(value) ? value.replace(/['"]/g, '') : (value ?? Date.now())));
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) ? onlyDays
30
- : (0, non_primitives_1.isValidArray)(skipDays) ? skipDays
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 (parts.length ? parts.join(separator)
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;
@@ -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() === ''))
@@ -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
- Array.isArray(data[key]) ?
14
- [...data[key], value.toString()]
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.convertToDecimal = exports.calculateLCM = 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.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.convertRomanToInteger = exports.convertRomanToArabic = 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 = void 0;
5
- exports.convertHslaToHex8 = exports.convertHexToRgb = 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 = void 0;
6
- exports.extractMinutesFromUTC = exports.extractHourMinute = 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 = void 0;
7
- exports.groupArrayByProperty = exports.getMissingElements = 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 = void 0;
8
- exports.createQueryParams = exports.removeObjectFields = 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 = void 0;
9
- exports.isPrimitive = exports.isPositiveInteger = 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 = void 0;
10
- exports.isURL = exports.isPhoneNumber = 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 = void 0;
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;
@@ -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 ((0, primitives_1.isNumber)(num) ? num
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) => {
@@ -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) ? sub
108
- : idx === 0 ? capitalize(sub)
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
  };