nhb-toolbox 4.26.69 → 4.26.71

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 CHANGED
@@ -6,6 +6,15 @@ All notable changes to the package will be documented here.
6
6
 
7
7
  ---
8
8
 
9
+ ## [4.26.71] - 2025-11-21
10
+
11
+ - **Fixed** type issues regarding *array inputs* for `sanitizeData` by swapping the *overload signatures*.
12
+
13
+ ## [4.26.70] - 2025-11-21
14
+
15
+ - **Added** new `formatDate` utility with alias `formatDateTime` and *core date formatter (private)* to be shared with both `Chronos` class and `formatDate` utility.
16
+ - **Fixed** issues raised from misplacement of *internal* `#date` in `Chronos` class.
17
+
9
18
  ## [4.26.69] - 2025-11-18
10
19
 
11
20
  - **Updated** *return type* of `sanitizeData` utility:
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.chronos = exports.Chronos = void 0;
5
5
  const non_primitives_1 = require("../guards/non-primitives");
6
6
  const primitives_1 = require("../guards/primitives");
7
- const utilities_1 = require("../number/utilities");
8
7
  const constants_1 = require("./constants");
9
8
  const guards_1 = require("./guards");
10
9
  const utils_1 = require("./utils");
@@ -146,66 +145,9 @@ class Chronos {
146
145
  const _getUnitValue = (suffix) => {
147
146
  return useUTC ? $utcDate[`getUTC${suffix}`]() : $date[`get${suffix}`]();
148
147
  };
149
- const year = _getUnitValue('FullYear');
150
- const month = _getUnitValue('Month');
151
- const day = _getUnitValue('Day');
152
- const date = _getUnitValue('Date');
153
- const hours = _getUnitValue('Hours');
154
- const minutes = _getUnitValue('Minutes');
155
- const seconds = _getUnitValue('Seconds');
156
- const milliseconds = _getUnitValue('Milliseconds');
157
- const dateComponents = {
158
- YYYY: String(year),
159
- YY: String(year).slice(-2),
160
- yyyy: String(year),
161
- yy: String(year).slice(-2),
162
- M: String(month + 1),
163
- MM: String(month + 1).padStart(2, '0'),
164
- mmm: constants_1.MONTHS[month].slice(0, 3),
165
- mmmm: constants_1.MONTHS[month],
166
- d: constants_1.DAYS[day].slice(0, 2),
167
- dd: constants_1.DAYS[day].slice(0, 3),
168
- ddd: constants_1.DAYS[day],
169
- D: String(date),
170
- DD: String(date).padStart(2, '0'),
171
- Do: (0, utilities_1.getOrdinal)(date),
172
- H: String(hours),
173
- HH: String(hours).padStart(2, '0'),
174
- h: String(hours % 12 || 12),
175
- hh: String(hours % 12 || 12).padStart(2, '0'),
176
- m: String(minutes),
177
- mm: String(minutes).padStart(2, '0'),
178
- s: String(seconds),
179
- ss: String(seconds).padStart(2, '0'),
180
- ms: String(milliseconds),
181
- mss: String(milliseconds).padStart(3, '0'),
182
- a: hours < 12 ? 'am' : 'pm',
183
- A: hours < 12 ? 'AM' : 'PM',
184
- ZZ: useUTC ? 'Z' : this.getTimeZoneOffset(),
185
- };
186
- const tokenRegex = new RegExp(`^(${constants_1.SORTED_TIME_FORMATS.join('|')})`);
187
- let result = '';
188
- let i = 0;
189
- while (i < format.length) {
190
- if (format[i] === '[') {
191
- const end = format.indexOf(']', i);
192
- if (end !== -1) {
193
- result += format.slice(i + 1, end);
194
- i = end + 1;
195
- continue;
196
- }
197
- }
198
- const match = tokenRegex.exec(format.slice(i));
199
- if (match) {
200
- result += dateComponents[match[0]];
201
- i += match[0].length;
202
- }
203
- else {
204
- result += format[i];
205
- i++;
206
- }
207
- }
208
- return result;
148
+ const y = _getUnitValue('FullYear'), mo = _getUnitValue('Month'), d = _getUnitValue('Day'), dt = _getUnitValue('Date'), h = _getUnitValue('Hours'), m = _getUnitValue('Minutes'), s = _getUnitValue('Seconds'), ms = _getUnitValue('Milliseconds');
149
+ const offset = useUTC ? 'Z' : this.getTimeZoneOffset();
150
+ return (0, utils_1._formatDateCore)(format, y, mo, d, dt, h, m, s, ms, offset);
209
151
  }
210
152
  #removeUTCFromISO(local = true) {
211
153
  const search = /\.\d+(Z|[+-]\d{2}:\d{2})?$/;
@@ -561,25 +503,25 @@ class Chronos {
561
503
  const now = new _a();
562
504
  const diffInSeconds = this.diff(now, 'second');
563
505
  const abs = Math.abs(diffInSeconds);
564
- const suffix = diffInSeconds >= 0 ? 'in ' : '';
565
- const postfix = diffInSeconds < 0 ? ' ago' : '';
506
+ const prefix = diffInSeconds >= 0 ? 'in ' : '';
507
+ const suffix = diffInSeconds < 0 ? ' ago' : '';
566
508
  if (abs < 60) {
567
- return `${suffix}${Math.floor(abs)}s${postfix}`;
509
+ return `${prefix}${Math.floor(abs)}s${suffix}`;
568
510
  }
569
511
  else if (abs < 3600) {
570
- return `${suffix}${Math.floor(abs / 60)}m${postfix}`;
512
+ return `${prefix}${Math.floor(abs / 60)}m${suffix}`;
571
513
  }
572
514
  else if (abs < 86400) {
573
- return `${suffix}${Math.floor(abs / 3600)}h${postfix}`;
515
+ return `${prefix}${Math.floor(abs / 3600)}h${suffix}`;
574
516
  }
575
517
  else if (abs < 2592000) {
576
- return `${suffix}${Math.floor(abs / 86400)}d${postfix}`;
518
+ return `${prefix}${Math.floor(abs / 86400)}d${suffix}`;
577
519
  }
578
520
  else if (abs < 31536000) {
579
- return `${suffix}${Math.floor(abs / 2592000)}mo${postfix}`;
521
+ return `${prefix}${Math.floor(abs / 2592000)}mo${suffix}`;
580
522
  }
581
523
  else {
582
- return `${suffix}${Math.floor(abs / 31536000)}y${postfix}`;
524
+ return `${prefix}${Math.floor(abs / 31536000)}y${suffix}`;
583
525
  }
584
526
  }
585
527
  setWeek(week) {
@@ -6,20 +6,20 @@ const primitives_1 = require("../../guards/primitives");
6
6
  const constants_1 = require("../constants");
7
7
  const businessPlugin = (ChronosClass) => {
8
8
  const { internalDate: $Date } = ChronosClass[constants_1.INTERNALS];
9
- ChronosClass.prototype.isWeekend = function (determiner = 0, weekendLength = 2) {
9
+ ChronosClass.prototype.isWeekend = function (wDef = 0, wLen = 2) {
10
10
  const day = $Date(this).getDay();
11
- if ((0, non_primitives_1.isValidArray)(determiner)) {
12
- return determiner.includes(day);
11
+ if ((0, non_primitives_1.isValidArray)(wDef)) {
12
+ return wDef.includes(day);
13
13
  }
14
- const lastDayOfWeek = (determiner + 6) % 7;
15
- const computedWeekendDays = Array.from({ length: weekendLength }, (_, i) => (lastDayOfWeek - i + 7) % 7);
14
+ const lastDayOfWeek = (wDef + 6) % 7;
15
+ const computedWeekendDays = Array.from({ length: wLen }, (_, i) => (lastDayOfWeek - i + 7) % 7);
16
16
  return computedWeekendDays.includes(day);
17
17
  };
18
- ChronosClass.prototype.isWorkday = function (determiner = 0, weekendLength = 2) {
19
- if ((0, non_primitives_1.isValidArray)(determiner)) {
20
- return !this.isWeekend(determiner);
18
+ ChronosClass.prototype.isWorkday = function (wDef = 0, wLen = 2) {
19
+ if ((0, non_primitives_1.isValidArray)(wDef)) {
20
+ return !this.isWeekend(wDef);
21
21
  }
22
- return !this.isWeekend(determiner, weekendLength);
22
+ return !this.isWeekend(wDef, wLen);
23
23
  };
24
24
  ChronosClass.prototype.isBusinessHour = function (options) {
25
25
  const _isBusinessHour = () => {
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.durationPlugin = void 0;
4
4
  const constants_1 = require("../constants");
5
5
  const durationPlugin = (ChronosClass) => {
6
- const { internalDate, toNewDate } = ChronosClass[constants_1.INTERNALS];
6
+ const { toNewDate } = ChronosClass[constants_1.INTERNALS];
7
7
  const _normalizeDuration = (result, absolute, isFuture) => {
8
8
  const entries = Object.entries(result);
9
9
  const updated = { ...result };
@@ -22,7 +22,7 @@ const durationPlugin = (ChronosClass) => {
22
22
  return updated;
23
23
  };
24
24
  ChronosClass.prototype.duration = function (toTime, absolute = true) {
25
- const now = internalDate(this);
25
+ const now = this.toDate();
26
26
  const target = toNewDate(this, toTime);
27
27
  const isFuture = target > now;
28
28
  const from = isFuture ? now : target;
@@ -30,46 +30,40 @@ const durationPlugin = (ChronosClass) => {
30
30
  const _getDiff = (suffix) => {
31
31
  return to[`get${suffix}`]() - from[`get${suffix}`]();
32
32
  };
33
- let years = _getDiff('FullYear');
34
- let months = _getDiff('Month');
35
- let days = _getDiff('Date');
36
- let hours = _getDiff('Hours');
37
- let minutes = _getDiff('Minutes');
38
- let seconds = _getDiff('Seconds');
39
- let milliseconds = _getDiff('Milliseconds');
40
- if (milliseconds < 0) {
41
- milliseconds += 1000;
42
- seconds--;
33
+ let y = _getDiff('FullYear'), mo = _getDiff('Month'), d = _getDiff('Date'), h = _getDiff('Hours'), m = _getDiff('Minutes'), s = _getDiff('Seconds'), ms = _getDiff('Milliseconds');
34
+ if (ms < 0) {
35
+ ms += 1000;
36
+ s--;
43
37
  }
44
- if (seconds < 0) {
45
- seconds += 60;
46
- minutes--;
38
+ if (s < 0) {
39
+ s += 60;
40
+ m--;
47
41
  }
48
- if (minutes < 0) {
49
- minutes += 60;
50
- hours--;
42
+ if (m < 0) {
43
+ m += 60;
44
+ h--;
51
45
  }
52
- if (hours < 0) {
53
- hours += 24;
54
- days--;
46
+ if (h < 0) {
47
+ h += 24;
48
+ d--;
55
49
  }
56
- if (days < 0) {
50
+ if (d < 0) {
57
51
  const prevMonth = new Date(to.getFullYear(), to.getMonth(), 0);
58
- days += prevMonth.getDate();
59
- months--;
52
+ d += prevMonth.getDate();
53
+ mo--;
60
54
  }
61
- if (months < 0) {
62
- months += 12;
63
- years--;
55
+ if (mo < 0) {
56
+ mo += 12;
57
+ y--;
64
58
  }
65
59
  const result = {
66
- years,
67
- months,
68
- days,
69
- hours,
70
- minutes,
71
- seconds,
72
- milliseconds,
60
+ years: y,
61
+ months: mo,
62
+ days: d,
63
+ hours: h,
64
+ minutes: m,
65
+ seconds: s,
66
+ milliseconds: ms,
73
67
  };
74
68
  return _normalizeDuration(result, absolute, isFuture);
75
69
  };
@@ -4,44 +4,41 @@ exports.fromNowPlugin = void 0;
4
4
  const convert_1 = require("../../string/convert");
5
5
  const constants_1 = require("../constants");
6
6
  const fromNowPlugin = (ChronosClass) => {
7
- const { internalDate, toNewDate } = ChronosClass[constants_1.INTERNALS];
8
- ChronosClass.prototype.fromNow = function (level = 'second', withSuffixPrefix = true, time) {
7
+ const { toNewDate } = ChronosClass[constants_1.INTERNALS];
8
+ ChronosClass.prototype.fromNow = function (level = 'second', wSP = true, time) {
9
9
  const now = toNewDate(this, time);
10
- const target = internalDate(this);
10
+ const target = this.toDate();
11
11
  const isFuture = target > now;
12
12
  const from = isFuture ? now : target;
13
13
  const to = isFuture ? target : now;
14
- let years = to.getFullYear() - from.getFullYear();
15
- let months = to.getMonth() - from.getMonth();
16
- let days = to.getDate() - from.getDate();
17
- let hours = to.getHours() - from.getHours();
18
- let minutes = to.getMinutes() - from.getMinutes();
19
- let seconds = to.getSeconds() - from.getSeconds();
20
- let milliseconds = to.getMilliseconds() - from.getMilliseconds();
21
- if (milliseconds < 0) {
22
- milliseconds += 1000;
23
- seconds--;
14
+ const _getDiff = (suffix) => {
15
+ return to[`get${suffix}`]() - from[`get${suffix}`]();
16
+ };
17
+ let y = _getDiff('FullYear'), mo = _getDiff('Month'), d = _getDiff('Date'), h = _getDiff('Hours'), m = _getDiff('Minutes'), s = _getDiff('Seconds'), ms = _getDiff('Milliseconds');
18
+ if (ms < 0) {
19
+ ms += 1000;
20
+ s--;
24
21
  }
25
- if (seconds < 0) {
26
- seconds += 60;
27
- minutes--;
22
+ if (s < 0) {
23
+ s += 60;
24
+ m--;
28
25
  }
29
- if (minutes < 0) {
30
- minutes += 60;
31
- hours--;
26
+ if (m < 0) {
27
+ m += 60;
28
+ h--;
32
29
  }
33
- if (hours < 0) {
34
- hours += 24;
35
- days--;
30
+ if (h < 0) {
31
+ h += 24;
32
+ d--;
36
33
  }
37
- if (days < 0) {
34
+ if (d < 0) {
38
35
  const prevMonth = new Date(to.getFullYear(), to.getMonth(), 0);
39
- days += prevMonth.getDate();
40
- months--;
36
+ d += prevMonth.getDate();
37
+ mo--;
41
38
  }
42
- if (months < 0) {
43
- months += 12;
44
- years--;
39
+ if (mo < 0) {
40
+ mo += 12;
41
+ y--;
45
42
  }
46
43
  const unitOrder = [
47
44
  'year',
@@ -60,30 +57,30 @@ const fromNowPlugin = (ChronosClass) => {
60
57
  const _isLevelRequired = (unit) => {
61
58
  return lvlIdx >= unitOrder.indexOf(unit);
62
59
  };
63
- if (years > 0) {
64
- _pushToParts(years, 'year');
60
+ if (y > 0) {
61
+ _pushToParts(y, 'year');
65
62
  }
66
- if (_isLevelRequired('month') && months > 0) {
67
- _pushToParts(months, 'month');
63
+ if (_isLevelRequired('month') && mo > 0) {
64
+ _pushToParts(mo, 'month');
68
65
  }
69
- if (_isLevelRequired('day') && days > 0) {
70
- _pushToParts(days, 'day');
66
+ if (_isLevelRequired('day') && d > 0) {
67
+ _pushToParts(d, 'day');
71
68
  }
72
- if (_isLevelRequired('hour') && hours > 0) {
73
- _pushToParts(hours, 'hour');
69
+ if (_isLevelRequired('hour') && h > 0) {
70
+ _pushToParts(h, 'hour');
74
71
  }
75
- if (_isLevelRequired('minute') && minutes > 0) {
76
- _pushToParts(minutes, 'minute');
72
+ if (_isLevelRequired('minute') && m > 0) {
73
+ _pushToParts(m, 'minute');
77
74
  }
78
- if (_isLevelRequired('second') && seconds > 0) {
79
- _pushToParts(seconds, 'second');
75
+ if (_isLevelRequired('second') && s > 0) {
76
+ _pushToParts(s, 'second');
80
77
  }
81
- if (_isLevelRequired('millisecond') && (milliseconds > 0 || parts?.length === 0)) {
82
- _pushToParts(milliseconds, 'millisecond');
78
+ if (_isLevelRequired('millisecond') && (ms > 0 || parts?.length === 0)) {
79
+ _pushToParts(ms, 'millisecond');
83
80
  }
84
81
  let prefix = '';
85
82
  let suffix = '';
86
- if (withSuffixPrefix) {
83
+ if (wSP) {
87
84
  if (isFuture) {
88
85
  prefix = 'in ';
89
86
  }
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.relativeTimePlugin = void 0;
4
4
  const constants_1 = require("../constants");
5
5
  const relativeTimePlugin = (ChronosClass) => {
6
- const { internalDate: $Date, toNewDate } = ChronosClass[constants_1.INTERNALS];
6
+ const { toNewDate } = ChronosClass[constants_1.INTERNALS];
7
7
  ChronosClass.prototype.getRelativeYear = function (time) {
8
- const $date = $Date(this);
8
+ const $date = this.toDate();
9
9
  const now = toNewDate(this, time);
10
10
  let years = $date.getFullYear() - now.getFullYear();
11
11
  const noYearMonthDay = now.getMonth() < $date.getMonth() ||
@@ -16,7 +16,7 @@ const relativeTimePlugin = (ChronosClass) => {
16
16
  return years;
17
17
  };
18
18
  ChronosClass.prototype.getRelativeMonth = function (time) {
19
- const $date = $Date(this);
19
+ const $date = this.toDate();
20
20
  const now = toNewDate(this, time);
21
21
  let months = ($date.getFullYear() - now.getFullYear()) * 12 +
22
22
  ($date.getMonth() - now.getMonth());
@@ -33,26 +33,26 @@ const relativeTimePlugin = (ChronosClass) => {
33
33
  ChronosClass.prototype.getRelativeDay = function (time) {
34
34
  const now = toNewDate(this, time);
35
35
  now.setHours(0, 0, 0, 0);
36
- const $date = $Date(this);
36
+ const $date = new Date(this.toDate());
37
37
  $date.setHours(0, 0, 0, 0);
38
38
  const diffTime = $date.getTime() - now.getTime();
39
39
  const diffDays = Math.floor(diffTime / (1000 * 60 * 60 * 24));
40
40
  return diffDays;
41
41
  };
42
42
  ChronosClass.prototype.getRelativeHour = function (time) {
43
- const diff = $Date(this).getTime() - toNewDate(this, time).getTime();
43
+ const diff = this.getTimeStamp() - toNewDate(this, time).getTime();
44
44
  return Math.floor(diff / (1000 * 60 * 60));
45
45
  };
46
46
  ChronosClass.prototype.getRelativeMinute = function (time) {
47
- const diff = $Date(this).getTime() - toNewDate(this, time).getTime();
47
+ const diff = this.getTimeStamp() - toNewDate(this, time).getTime();
48
48
  return Math.floor(diff / (1000 * 60));
49
49
  };
50
50
  ChronosClass.prototype.getRelativeSecond = function (time) {
51
- const diff = $Date(this).getTime() - toNewDate(this, time).getTime();
51
+ const diff = this.getTimeStamp() - toNewDate(this, time).getTime();
52
52
  return Math.floor(diff / 1000);
53
53
  };
54
54
  ChronosClass.prototype.getRelativeMilliSecond = function (time) {
55
- return $Date(this).getTime() - toNewDate(this, time).getTime();
55
+ return this.getTimeStamp() - toNewDate(this, time).getTime();
56
56
  };
57
57
  ChronosClass.prototype.compare = function (unit = 'minute', time) {
58
58
  switch (unit) {
@@ -4,9 +4,9 @@ exports.roundPlugin = void 0;
4
4
  const utilities_1 = require("../../number/utilities");
5
5
  const constants_1 = require("../constants");
6
6
  const roundPlugin = (ChronosClass) => {
7
- const { withOrigin } = ChronosClass[constants_1.INTERNALS];
7
+ const { internalDate, withOrigin } = ChronosClass[constants_1.INTERNALS];
8
8
  ChronosClass.prototype.round = function (unit, nearest = 1) {
9
- const date = new Date(this.toDate());
9
+ const date = new Date(internalDate(this));
10
10
  switch (unit) {
11
11
  case 'millisecond': {
12
12
  const rounded = (0, utilities_1.roundToNearest)(date.getMilliseconds(), nearest);
@@ -8,6 +8,10 @@ exports.extractMinutesFromUTC = extractMinutesFromUTC;
8
8
  exports.convertMinutesToTime = convertMinutesToTime;
9
9
  exports.formatUTCOffset = formatUTCOffset;
10
10
  exports.getTimeZoneDetails = getTimeZoneDetails;
11
+ exports._formatDateCore = _formatDateCore;
12
+ exports.formatDate = formatDate;
13
+ const utilities_1 = require("../number/utilities");
14
+ const constants_1 = require("./constants");
11
15
  function extractHourMinute(time) {
12
16
  const [hour, minute] = time.split(':').map(Number);
13
17
  return [hour, minute];
@@ -59,3 +63,70 @@ function getTimeZoneDetails(tzId, date) {
59
63
  }
60
64
  return obj;
61
65
  }
66
+ function _formatDateCore(format, year, month, day, date, hours, minutes, seconds, milliseconds, offset) {
67
+ const dateComponents = {
68
+ YYYY: String(year),
69
+ YY: String(year).slice(-2),
70
+ yyyy: String(year),
71
+ yy: String(year).slice(-2),
72
+ M: String(month + 1),
73
+ MM: String(month + 1).padStart(2, '0'),
74
+ mmm: constants_1.MONTHS[month].slice(0, 3),
75
+ mmmm: constants_1.MONTHS[month],
76
+ d: constants_1.DAYS[day].slice(0, 2),
77
+ dd: constants_1.DAYS[day].slice(0, 3),
78
+ ddd: constants_1.DAYS[day],
79
+ D: String(date),
80
+ DD: String(date).padStart(2, '0'),
81
+ Do: (0, utilities_1.getOrdinal)(date),
82
+ H: String(hours),
83
+ HH: String(hours).padStart(2, '0'),
84
+ h: String(hours % 12 || 12),
85
+ hh: String(hours % 12 || 12).padStart(2, '0'),
86
+ m: String(minutes),
87
+ mm: String(minutes).padStart(2, '0'),
88
+ s: String(seconds),
89
+ ss: String(seconds).padStart(2, '0'),
90
+ ms: String(milliseconds),
91
+ mss: String(milliseconds).padStart(3, '0'),
92
+ a: hours < 12 ? 'am' : 'pm',
93
+ A: hours < 12 ? 'AM' : 'PM',
94
+ ZZ: offset,
95
+ };
96
+ const tokenRegex = new RegExp(`^(${constants_1.SORTED_TIME_FORMATS.join('|')})`);
97
+ let result = '';
98
+ let i = 0;
99
+ while (i < format.length) {
100
+ if (format[i] === '[') {
101
+ const end = format.indexOf(']', i);
102
+ if (end !== -1) {
103
+ result += format.slice(i + 1, end);
104
+ i = end + 1;
105
+ continue;
106
+ }
107
+ }
108
+ const match = tokenRegex.exec(format.slice(i));
109
+ if (match) {
110
+ result += dateComponents[match[0]];
111
+ i += match[0].length;
112
+ }
113
+ else {
114
+ result += format[i];
115
+ i++;
116
+ }
117
+ }
118
+ return result;
119
+ }
120
+ function formatDate(options) {
121
+ const { date = new Date(), format = 'dd, mmm DD, YYYY HH:mm:ss', useUTC = false, } = options ?? {};
122
+ const $date = date instanceof Date ? date : new Date(date);
123
+ if (isNaN($date.getTime())) {
124
+ return 'Invalid Date!';
125
+ }
126
+ const _getUnitValue = (suffix) => {
127
+ return useUTC ? $date[`getUTC${suffix}`]() : $date[`get${suffix}`]();
128
+ };
129
+ const y = _getUnitValue('FullYear'), mo = _getUnitValue('Month'), d = _getUnitValue('Day'), dt = _getUnitValue('Date'), h = _getUnitValue('Hours'), m = _getUnitValue('Minutes'), s = _getUnitValue('Seconds'), ms = _getUnitValue('Milliseconds');
130
+ const offset = useUTC ? 'Z' : formatUTCOffset(-$date.getTimezoneOffset()).slice(3);
131
+ return _formatDateCore(format, y, mo, d, dt, h, m, s, ms, offset);
132
+ }
package/dist/cjs/index.js CHANGED
@@ -3,11 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
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.isSnakeCase = exports.isPascalCase = exports.isPalindrome = exports.isKebabCase = exports.isEmojiOnly = exports.isCamelCase = exports.generateAnagrams = exports.truncateString = exports.trimString = exports.generateRandomID = exports.capitalizeString = void 0;
4
4
  exports.convertRomanToNumeric = exports.convertRomanToInteger = exports.convertRomanToArabic = exports.convertNumberToWordsOrdinal = exports.convertNumberToWords = exports.cardinalWordsToOrdinal = 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
5
  exports.convertHslToHex = exports.convertHslaToRgba = 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.convertWordToNumber = exports.convertWordsToNumber = exports.convertToRomanNumerals = void 0;
6
- exports.getMinutesFromUTC = exports.getHourMinutesFromMinutes = exports.getCurrentTime = exports.getCurrentDateTime = exports.formatUTCOffset = exports.extractTotalMinutesFromTime = exports.extractTimeStringFromUTC = exports.extractTimeFromUTC = 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.isValidUTCOffSet = exports.isValidUTCOffset = exports.isValidUTC = exports.isValidTimeZoneId = exports.isValidTimeString = exports.isValidTime = exports.isNativeTimeZoneId = exports.isLeapYear = exports.isDateLike = 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 = void 0;
7
- exports.isFileArray = exports.isCustomFileArray = exports.isCustomFile = exports.serializeForm = exports.parseFormData = exports.createFormData = exports.createControlledFormData = exports.convertIntoFormData = exports.naturalSortForString = exports.naturalSort = exports.compareSorter = exports.compareNaturally = exports.splitArrayByProperty = exports.splitArray = exports.rotateArray = exports.removeDuplicatesFromArray = exports.removeDuplicates = exports.moveArrayElement = exports.groupArrayByProperty = exports.getMissingElements = exports.getDuplicatesFromArray = exports.getDuplicates = exports.findMissingElements = exports.extractMissingElements = exports.extractDuplicatesFromArray = exports.extractDuplicates = exports.createOptionsArray = exports.sortAnArray = 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.getTimeZoneDetails = exports.getTimeStringFromUTC = exports.getTimeFromMinutes = void 0;
8
- 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 = 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 = void 0;
9
- 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 = exports.isNumber = exports.isNull = exports.isNormalPrimitive = exports.isNonEmptyString = exports.isInteger = exports.isFalsy = exports.isBoolean = exports.isBigInt = exports.Paginator = exports.throttleAction = exports.parsePrimitivesDeep = exports.parseJsonDeep = exports.parseJSON = exports.joinArrayElements = exports.isDeepEqual = exports.getStaticMethodsCount = exports.getStaticMethodNames = exports.getInstanceMethodsCount = exports.getInstanceMethodNames = exports.getClassDetails = exports.deepParsePrimitives = exports.debounceAction = exports.countStaticMethods = exports.countInstanceMethods = exports.convertArrayToString = exports.saveToSessionStorage = exports.saveToLocalStorage = exports.removeFromSessionStorage = exports.removeFromLocalStorage = void 0;
10
- exports.isValidURL = exports.isValidEmail = exports.isUUID = exports.isURL = exports.isPhoneNumber = exports.isNumericString = exports.isNodeEnvironment = exports.isNodeENV = exports.isNode = exports.isIPAddress = exports.isExpectedNodeENV = exports.isEnvironment = exports.isEmailArray = exports.isEmail = exports.isDateString = exports.isBrowser = 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 = void 0;
6
+ exports.getCurrentTime = exports.getCurrentDateTime = exports.formatUTCOffset = exports.formatDateTime = exports.formatDate = exports.extractTotalMinutesFromTime = exports.extractTimeStringFromUTC = exports.extractTimeFromUTC = 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.isValidUTCOffSet = exports.isValidUTCOffset = exports.isValidUTC = exports.isValidTimeZoneId = exports.isValidTimeString = exports.isValidTime = exports.isNativeTimeZoneId = exports.isLeapYear = exports.isDateLike = 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 = void 0;
7
+ exports.isCustomFile = exports.serializeForm = exports.parseFormData = exports.createFormData = exports.createControlledFormData = exports.convertIntoFormData = exports.naturalSortForString = exports.naturalSort = exports.compareSorter = exports.compareNaturally = exports.splitArrayByProperty = exports.splitArray = exports.rotateArray = exports.removeDuplicatesFromArray = exports.removeDuplicates = exports.moveArrayElement = exports.groupArrayByProperty = exports.getMissingElements = exports.getDuplicatesFromArray = exports.getDuplicates = exports.findMissingElements = exports.extractMissingElements = exports.extractDuplicatesFromArray = exports.extractDuplicates = exports.createOptionsArray = exports.sortAnArray = 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.getTimeZoneDetails = exports.getTimeStringFromUTC = exports.getTimeFromMinutes = exports.getMinutesFromUTC = exports.getHourMinutesFromMinutes = void 0;
8
+ 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 = 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 = void 0;
9
+ 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 = exports.isNumber = exports.isNull = exports.isNormalPrimitive = exports.isNonEmptyString = exports.isInteger = exports.isFalsy = exports.isBoolean = exports.isBigInt = exports.Paginator = exports.throttleAction = exports.parsePrimitivesDeep = exports.parseJsonDeep = exports.parseJSON = exports.joinArrayElements = exports.isDeepEqual = exports.getStaticMethodsCount = exports.getStaticMethodNames = exports.getInstanceMethodsCount = exports.getInstanceMethodNames = exports.getClassDetails = exports.deepParsePrimitives = exports.debounceAction = exports.countStaticMethods = exports.countInstanceMethods = exports.convertArrayToString = exports.saveToSessionStorage = exports.saveToLocalStorage = exports.removeFromSessionStorage = exports.removeFromLocalStorage = exports.getFromSessionStorage = exports.getFromLocalStorage = void 0;
10
+ exports.isValidURL = exports.isValidEmail = exports.isUUID = exports.isURL = exports.isPhoneNumber = exports.isNumericString = exports.isNodeEnvironment = exports.isNodeENV = exports.isNode = exports.isIPAddress = exports.isExpectedNodeENV = exports.isEnvironment = exports.isEmailArray = exports.isEmail = exports.isDateString = exports.isBrowser = 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 = void 0;
11
11
  var basics_1 = require("./string/basics");
12
12
  Object.defineProperty(exports, "capitalizeString", { enumerable: true, get: function () { return basics_1.capitalizeString; } });
13
13
  Object.defineProperty(exports, "generateRandomID", { enumerable: true, get: function () { return basics_1.generateRandomID; } });
@@ -234,6 +234,8 @@ Object.defineProperty(exports, "extractMinutesFromUTC", { enumerable: true, get:
234
234
  Object.defineProperty(exports, "extractTimeFromUTC", { enumerable: true, get: function () { return utils_2.extractTimeFromUTC; } });
235
235
  Object.defineProperty(exports, "extractTimeStringFromUTC", { enumerable: true, get: function () { return utils_2.extractTimeFromUTC; } });
236
236
  Object.defineProperty(exports, "extractTotalMinutesFromTime", { enumerable: true, get: function () { return utils_2.getTotalMinutes; } });
237
+ Object.defineProperty(exports, "formatDate", { enumerable: true, get: function () { return utils_2.formatDate; } });
238
+ Object.defineProperty(exports, "formatDateTime", { enumerable: true, get: function () { return utils_2.formatDate; } });
237
239
  Object.defineProperty(exports, "formatUTCOffset", { enumerable: true, get: function () { return utils_2.formatUTCOffset; } });
238
240
  Object.defineProperty(exports, "getCurrentDateTime", { enumerable: true, get: function () { return utils_2.getCurrentDateTime; } });
239
241
  Object.defineProperty(exports, "getCurrentTime", { enumerable: true, get: function () { return utils_2.getCurrentDateTime; } });
@@ -13,7 +13,7 @@ export declare const SECOND_FORMATS: readonly ["ss", "s"];
13
13
  export declare const ZONE_FORMATS: readonly ["ZZ"];
14
14
  export declare const MILLISECOND_FORMATS: readonly ["ms", "mss"];
15
15
  export declare const TIME_FORMATS: readonly ["a", "A"];
16
- export declare const SORTED_TIME_FORMATS: readonly ("m" | "h" | "d" | "a" | "M" | "DD" | "D" | "Do" | "MM" | "mmm" | "mmmm" | "dd" | "ddd" | "YYYY" | "YY" | "yyyy" | "yy" | "H" | "HH" | "hh" | "mm" | "A" | "ss" | "s" | "ms" | "mss" | "ZZ")[];
16
+ export declare const SORTED_TIME_FORMATS: readonly ("m" | "h" | "d" | "a" | "M" | "YYYY" | "YY" | "yyyy" | "yy" | "MM" | "mmm" | "mmmm" | "dd" | "ddd" | "DD" | "D" | "Do" | "H" | "HH" | "hh" | "mm" | "ss" | "s" | "ms" | "mss" | "A" | "ZZ")[];
17
17
  /** Ranges for day parts. */
18
18
  export declare const DATE_PART_RANGES: Readonly<Record<DayPart, [ClockHour, ClockHour]>>;
19
19
  /** Western Zodiac Signs */
@@ -1,5 +1,4 @@
1
1
  import type { TimeUnit } from '../types';
2
- type ChronosConstructor = import('../Chronos').Chronos;
3
2
  type MainChronos = typeof import('../Chronos').Chronos;
4
3
  declare module '../Chronos' {
5
4
  interface Chronos {
@@ -20,7 +19,7 @@ declare module '../Chronos' {
20
19
  * - For `'week'` unit, rounding is performed by comparing proximity to the start and end of the ISO week (Monday to Sunday).
21
20
  * - If the date is closer to the next Monday, it rounds forward; otherwise, it rounds back to the previous Monday.
22
21
  */
23
- round(unit: TimeUnit, nearest?: number): ChronosConstructor;
22
+ round(unit: TimeUnit, nearest?: number): Chronos;
24
23
  }
25
24
  }
26
25
  /** * Plugin to inject `round` method */
@@ -1,6 +1,5 @@
1
1
  import type { LooseLiteral } from '../../utils/types';
2
2
  import type { TimeZone, TimeZoneIdentifier, TimeZoneName, UTCOffset } from '../types';
3
- type ChronosConstructor = import('../Chronos').Chronos;
4
3
  type MainChronos = typeof import('../Chronos').Chronos;
5
4
  declare module '../Chronos' {
6
5
  interface Chronos {
@@ -12,7 +11,7 @@ declare module '../Chronos' {
12
11
  * @param tzId - Time zone identifier (e.g., `'Africa/Harare'`). See: {@link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones IANA TZ Database on Wikipedia}.
13
12
  * @returns A new instance of `Chronos` with time in the given time zone identifier. Invalid input sets time-zone to `UTC`.
14
13
  */
15
- timeZone(tzId: TimeZoneIdentifier): ChronosConstructor;
14
+ timeZone(tzId: TimeZoneIdentifier): Chronos;
16
15
  /**
17
16
  * @instance Creates a new instance of `Chronos` for the specified abbreviated time zone name.
18
17
  *
@@ -21,7 +20,7 @@ declare module '../Chronos' {
21
20
  * @param zone - Standard time zone abbreviation (e.g., `'IST'`, `'UTC'`, `'EST'` etc.). See: {@link https://en.wikipedia.org/wiki/List_of_time_zone_abbreviations Time zone abbreviations on Wikipedia}.
22
21
  * @returns A new instance of `Chronos` with time in the given time zone abbreviation. Invalid input sets time-zone to `UTC`.
23
22
  */
24
- timeZone(zone: TimeZone): ChronosConstructor;
23
+ timeZone(zone: TimeZone): Chronos;
25
24
  /**
26
25
  * @instance Creates a new instance of `Chronos` for the specified UTC offset.
27
26
  *
@@ -30,7 +29,7 @@ declare module '../Chronos' {
30
29
  * @param utc - UTC Offset in `UTC±HH:mm` format for fictional or unlisted time zone (e.g., `'UTC+06:15'`).
31
30
  * @returns A new instance of `Chronos` with time in the given utc offset. Invalid input sets time-zone to `UTC`.
32
31
  */
33
- timeZone(utc: UTCOffset): ChronosConstructor;
32
+ timeZone(utc: UTCOffset): Chronos;
34
33
  /**
35
34
  * @instance Creates a new instance of `Chronos` for the specified time zone id, abbreviation or UTC offset.
36
35
  *
@@ -42,7 +41,7 @@ declare module '../Chronos' {
42
41
  * @param tz - A time zone identifier ({@link TimeZoneIdentifier}), time zone abbreviation ({@link TimeZone}), or UTC offset ({@link UTCOffset}).
43
42
  * @returns A new instance of `Chronos` with time in the given parameter. Invalid input sets time zone to `UTC`.
44
43
  */
45
- timeZone(tz: TimeZoneIdentifier | TimeZone | UTCOffset): ChronosConstructor;
44
+ timeZone(tz: TimeZoneIdentifier | TimeZone | UTCOffset): Chronos;
46
45
  /**
47
46
  * @instance Returns the current time zone name as a full descriptive string (e.g. `"Bangladesh Standard Time"`).
48
47
  *