toolbox-x 2.0.0 → 2.0.10

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 (107) hide show
  1. package/dist/{Color-B8MR8Vp0.d.cts → Color-D3V-jsd9.d.cts} +1 -1
  2. package/dist/{Color-D2MfZx7L.d.mts → Color-vqRN4-tH.d.mts} +1 -1
  3. package/dist/{Stylog-CSbLtqrZ.d.mts → Stylog-B2xf9b6T.d.cts} +1 -1
  4. package/dist/{Stylog-DF0CWtZb.d.cts → Stylog-COUTYv10.d.mts} +1 -1
  5. package/dist/{area-C4tDXnGC.d.mts → area-BRs7joY-.d.mts} +1 -1
  6. package/dist/{area-CMJZ0gVm.d.cts → area-V5TIejvE.d.cts} +1 -1
  7. package/dist/{array-26Vs2HCs.d.mts → array-BJ4EH8wi.d.mts} +1 -1
  8. package/dist/{array-DJAq9Qj8.d.cts → array-CQX_EGkn.d.cts} +1 -1
  9. package/dist/{basics-Cis9Ej6c.d.mts → basics-B-FQYalQ.d.cts} +1 -1
  10. package/dist/{basics-D4yU0NQ_.d.cts → basics-B_A9bRYf.d.mts} +1 -1
  11. package/dist/{basics-CJmdhXoo.cjs → basics-Bb5ovcvz.cjs} +137 -2
  12. package/dist/{basics-CebgkY-n.mjs → basics-Dald7J6c.mjs} +95 -2
  13. package/dist/{case-ChRzRBnY.d.mts → case-D3vbB82w.d.cts} +1 -1
  14. package/dist/{case-DkYSKSeV.d.cts → case-pluK6eqe.d.mts} +1 -1
  15. package/dist/change-case.d.cts +1 -1
  16. package/dist/change-case.d.mts +1 -1
  17. package/dist/colors.d.cts +2 -2
  18. package/dist/colors.d.mts +2 -2
  19. package/dist/{constants-C4RW7Lei.cjs → constants-CgFaV72Z.cjs} +54 -0
  20. package/dist/{constants-rNhoy4DH.mjs → constants-GZL_CT1W.mjs} +43 -1
  21. package/dist/constants.cjs +1 -1
  22. package/dist/constants.d.cts +1 -1
  23. package/dist/constants.d.mts +1 -1
  24. package/dist/constants.mjs +1 -1
  25. package/dist/converter.d.cts +2 -2
  26. package/dist/converter.d.mts +2 -2
  27. package/dist/date.cjs +82 -4
  28. package/dist/date.d.cts +44 -2
  29. package/dist/date.d.mts +44 -2
  30. package/dist/date.mjs +79 -5
  31. package/dist/dom.cjs +7 -8
  32. package/dist/dom.d.cts +3 -3
  33. package/dist/dom.d.mts +3 -3
  34. package/dist/dom.mjs +2 -3
  35. package/dist/{form-Cp1OyCRI.d.cts → form-B91Vb6IK.d.cts} +2 -2
  36. package/dist/{form-DPdS2AhM.d.mts → form-DaIT0NMx.d.mts} +2 -2
  37. package/dist/{guards-B2s2wlVN.mjs → guards-D1et4U32.mjs} +1 -1
  38. package/dist/{guards-DMJcjPDt.cjs → guards-D8Iz6EEy.cjs} +1 -1
  39. package/dist/guards.cjs +34 -35
  40. package/dist/guards.d.cts +4 -4
  41. package/dist/guards.d.mts +4 -4
  42. package/dist/guards.mjs +2 -3
  43. package/dist/{hash-DfhOK0Fi.d.mts → hash-93NWr2bT.d.cts} +1 -1
  44. package/dist/{hash-IdZN0mIe.d.cts → hash-Dh4GTl4B.d.mts} +1 -1
  45. package/dist/hash.cjs +2 -2
  46. package/dist/hash.d.cts +4 -4
  47. package/dist/hash.d.mts +4 -4
  48. package/dist/hash.mjs +2 -2
  49. package/dist/{http-status-B-yBZr-J.d.mts → http-status-D0DfMM_G.d.mts} +1 -1
  50. package/dist/{http-status-Dq_hoSG6.d.cts → http-status-DG5Wi-Rz.d.cts} +1 -1
  51. package/dist/http-status.d.cts +2 -2
  52. package/dist/http-status.d.mts +2 -2
  53. package/dist/{index-C5FoCCbF.d.cts → index-d-0XdKRj.d.mts} +2 -2
  54. package/dist/{index-CIJWxnDS.d.mts → index-wAbirEXW.d.cts} +2 -2
  55. package/dist/index.cjs +3 -3
  56. package/dist/index.d.cts +6 -6
  57. package/dist/index.d.mts +6 -6
  58. package/dist/index.mjs +3 -3
  59. package/dist/{object-X5fSMx-I.d.cts → object-ahxpI5tD.d.cts} +23 -6
  60. package/dist/{object-X5fSMx-I.d.mts → object-ahxpI5tD.d.mts} +23 -6
  61. package/dist/{objectify-xQvZS3UI.cjs → objectify--6hPlQ7r.cjs} +6 -7
  62. package/dist/{objectify-CQa8gQib.mjs → objectify-BoIZEKOL.mjs} +1 -2
  63. package/dist/paginator.d.cts +1 -1
  64. package/dist/paginator.d.mts +1 -1
  65. package/dist/{parse-DT7jbWx7.cjs → parse-CbVVRoFY.cjs} +3 -3
  66. package/dist/{parse-erxBG2hd.mjs → parse-DUJ0YThn.mjs} +2 -2
  67. package/dist/{pluralizer-B8vuljyy.d.cts → pluralizer-C52Pkwq9.d.cts} +1 -1
  68. package/dist/{pluralizer-DOdDskzF.d.mts → pluralizer-CkY_fJ5U.d.mts} +1 -1
  69. package/dist/pluralizer.d.cts +1 -1
  70. package/dist/pluralizer.d.mts +1 -1
  71. package/dist/{string-C51m7T6d.d.mts → string-C3g9oBeS.d.mts} +1 -1
  72. package/dist/{string-CO7HP50i.d.cts → string-DENMnjFc.d.cts} +1 -1
  73. package/dist/stylog.d.cts +2 -2
  74. package/dist/stylog.d.mts +2 -2
  75. package/dist/types/array.d.cts +1 -1
  76. package/dist/types/array.d.mts +1 -1
  77. package/dist/types/colors.d.cts +1 -1
  78. package/dist/types/colors.d.mts +1 -1
  79. package/dist/types/converter.d.cts +1 -1
  80. package/dist/types/converter.d.mts +1 -1
  81. package/dist/types/date.d.cts +2 -2
  82. package/dist/types/date.d.mts +2 -2
  83. package/dist/types/form.d.cts +1 -1
  84. package/dist/types/form.d.mts +1 -1
  85. package/dist/types/hash.d.cts +1 -1
  86. package/dist/types/hash.d.mts +1 -1
  87. package/dist/types/http-status.d.cts +1 -1
  88. package/dist/types/http-status.d.mts +1 -1
  89. package/dist/types/index.d.cts +1 -1
  90. package/dist/types/index.d.mts +1 -1
  91. package/dist/types/number.d.cts +1 -1
  92. package/dist/types/number.d.mts +1 -1
  93. package/dist/types/object.d.cts +1 -1
  94. package/dist/types/object.d.mts +1 -1
  95. package/dist/types/pluralizer.d.cts +1 -1
  96. package/dist/types/pluralizer.d.mts +1 -1
  97. package/dist/types/string.d.cts +1 -1
  98. package/dist/types/string.d.mts +1 -1
  99. package/dist/types/stylog.d.cts +1 -1
  100. package/dist/types/stylog.d.mts +1 -1
  101. package/dist/types/utils.d.cts +1 -1
  102. package/dist/types/utils.d.mts +1 -1
  103. package/dist/{uuid-BUI3Jt8n.d.cts → uuid-BPkWu84A.d.mts} +1 -1
  104. package/dist/{uuid-mEiy14sf.d.mts → uuid-r7G_An2E.d.cts} +1 -1
  105. package/package.json +1 -1
  106. package/dist/guards-BK1QuvFZ.mjs +0 -115
  107. package/dist/guards-Bsh6Bfdq.cjs +0 -156
package/dist/date.cjs CHANGED
@@ -16,12 +16,49 @@
16
16
 
17
17
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
18
18
  const require_primitives = require('./primitives-CBGICrDR.cjs');
19
+ const require_constants = require('./constants-CgFaV72Z.cjs');
19
20
  const require_timezone = require('./timezone-CSz7R0L6.cjs');
20
21
  const require_specials = require('./specials-dkYP1Nh2.cjs');
21
22
  const require_utilities = require('./utilities-CWV1GPGY.cjs');
22
- const require_guards = require('./guards-Bsh6Bfdq.cjs');
23
- const require_parse = require('./parse-DT7jbWx7.cjs');
23
+ const require_parse = require('./parse-CbVVRoFY.cjs');
24
+ const require_basics = require('./basics-Bb5ovcvz.cjs');
24
25
 
26
+ //#region src/date/calculation.ts
27
+ /**
28
+ * * A function that takes a date and adds units to it.
29
+ *
30
+ * @param date Can be a Date object, timestamp, or date string.
31
+ * @param units Units to add to the date.
32
+ * @returns Valid Date object with the added units.
33
+ *
34
+ * @throws - {@link TypeError} If the provided date is invalid or units/values are invalid.
35
+ *
36
+ * @remarks
37
+ * - This function creates a {@link Date new Date} object and does not modify the original {@link Date} object if provided one.
38
+ * - If `date` is `undefined`, it will use the current date and time.
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * import { addDate } from 'toolbox-x/date';
43
+ *
44
+ * const final = addDate('2026-06-15T01:39:59.288Z', { day: 1, hour: '7' });
45
+ *
46
+ * console.log(final); // new Date('2026-06-16T08:39:59.288Z')
47
+ * ```
48
+ */
49
+ function addDate(date, units) {
50
+ const $date = require_parse._dateArgsToDate(date);
51
+ if (Number.isNaN($date.getTime())) throw new TypeError("Provided date is invalid!");
52
+ const expected = new Date($date);
53
+ for (const [unit, value] of Object.entries(units)) {
54
+ const val = require_utilities.normalizeNumber(value);
55
+ if (!require_specials.isObjectWithKeys(require_constants.DATE_UNIT_SETTERS, [unit]) || !require_primitives.isNumber(val)) throw new TypeError(`Provided unit or value is invalid!`);
56
+ require_constants.DATE_UNIT_SETTERS[unit](expected, val);
57
+ }
58
+ return expected;
59
+ }
60
+
61
+ //#endregion
25
62
  //#region src/date/utils.ts
26
63
  /**
27
64
  * * Extracts the hour and minute from a time string in `HH:MM` or `-HH:MM` format.
@@ -143,7 +180,7 @@ const TZ_MAP = /* @__PURE__ */ new Map();
143
180
  * @returns An array of matching IANA time-zone identifiers, or an empty array if the offset is invalid.
144
181
  */
145
182
  function getTimeZoneIds(offset) {
146
- if (!require_guards.isValidUTCOffset(offset)) return [];
183
+ if (!require_basics.isValidUTCOffset(offset)) return [];
147
184
  if (TZ_MAP.has(offset)) return TZ_MAP.get(offset) ?? [];
148
185
  for (const zone of require_timezone.NATIVE_TZ_IDS) {
149
186
  const off = require_parse._gmtToUtcOffset(require_parse._resolveNativeTzName(zone, "longOffset"));
@@ -240,6 +277,43 @@ function formatDateRelative(date, format) {
240
277
  format: format || "mmm D, yyyy hh:mm a"
241
278
  });
242
279
  }
280
+ /**
281
+ * * Formats a date as a relative time string using {@link Intl.RelativeTimeFormat} native method.
282
+ *
283
+ * @param toDate - The date to format, which can be a `Date` object, a date string, or a timestamp number.
284
+ * @param options - Optional configuration for relative date formatting.
285
+ * @returns A relative time string.
286
+ *
287
+ * @remarks
288
+ * - If `toDate` is provided but `undefined`, current date and time will be used.
289
+ * - If `fromDate` is provided but `undefined`, current date and time will be used.
290
+ * - If any of the provided date value (`toDate` or `fromDate`) is invalid, the function will return `'Invalid Date!'`.
291
+ *
292
+ * @example
293
+ * formatRelativeDateNative(Date.now() - 5 * 60000); // "5m ago"
294
+ * formatRelativeDateNative(Date.now() + 2 * 3600000); // "in 2 hours"
295
+ */
296
+ function formatRelativeDateNative(toDate, options) {
297
+ const { fromDate = /* @__PURE__ */ new Date(), locale = "en", localeMatcher, numeric = "always", style } = options ?? {};
298
+ const to = require_parse._dateArgsToDate(toDate).getTime();
299
+ const from = require_parse._dateArgsToDate(fromDate).getTime();
300
+ if (Number.isNaN(to) || Number.isNaN(from)) return "Invalid Date!";
301
+ let duration = (to - from) / 1e3;
302
+ const RELATIVE_DATE_FORMATTER = new Intl.RelativeTimeFormat(locale, {
303
+ localeMatcher,
304
+ numeric,
305
+ style
306
+ });
307
+ let formatted = "Just now";
308
+ for (const division of require_constants.RELATIVE_TIME_DIVISIONS) {
309
+ if (Math.abs(duration) < division.amount) {
310
+ formatted = RELATIVE_DATE_FORMATTER.format(Math.round(duration), division.name);
311
+ break;
312
+ }
313
+ duration /= division.amount;
314
+ }
315
+ return formatted;
316
+ }
243
317
  /** Get timestamp in ISO 8601 format. */
244
318
  function getTimestamp(args, format) {
245
319
  let $value;
@@ -277,7 +351,7 @@ function getGreeting(configs) {
277
351
  const { morningEnds = "11:59", noonEnds = "12:59", afternoonEnds = "17:59", eveningEnds = "23:59", midnightEnds = "02:59", currentTime, appendToMsg = "", prependToMsg = "", morningMessage = "Good Morning!", noonMessage = "Good Noon!", afternoonMessage = "Good Afternoon!", eveningMessage = "Good Evening!", midnightMessage = "Hello, Night Owl!", defaultMessage = "Greetings!" } = configs || {};
278
352
  let hour;
279
353
  let minute;
280
- if (currentTime && require_guards.isValidTime(currentTime)) [hour, minute] = extractHourMinute(currentTime);
354
+ if (currentTime && require_basics.isValidTime(currentTime)) [hour, minute] = extractHourMinute(currentTime);
281
355
  else {
282
356
  hour = getCurrentDateTime().getHours();
283
357
  minute = getCurrentDateTime().getMinutes();
@@ -296,6 +370,7 @@ function getGreeting(configs) {
296
370
  }
297
371
 
298
372
  //#endregion
373
+ exports.addDate = addDate;
299
374
  exports.convertMinutesToHourMinutes = convertMinutesToTime;
300
375
  exports.convertMinutesToTime = convertMinutesToTime;
301
376
  exports.convertMinutesToUTCOffset = formatUTCOffset;
@@ -306,9 +381,12 @@ exports.extractTimeStringFromUTC = extractTimeFromUTC;
306
381
  exports.extractTotalMinutesFromTime = getTotalMinutes;
307
382
  exports.formatDate = formatDate;
308
383
  exports.formatDateRelative = formatDateRelative;
384
+ exports.formatDateRelativeNative = formatRelativeDateNative;
309
385
  exports.formatDateTime = formatDate;
310
386
  exports.formatRelativeDate = formatDateRelative;
387
+ exports.formatRelativeDateNative = formatRelativeDateNative;
311
388
  exports.formatRelativeTime = formatDateRelative;
389
+ exports.formatRelativeTimeNative = formatRelativeDateNative;
312
390
  exports.formatTimePart = formatTimePart;
313
391
  exports.formatUTCOffset = formatUTCOffset;
314
392
  exports.generateGreeting = getGreeting;
package/dist/date.d.cts CHANGED
@@ -14,8 +14,33 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { En as UTCOffset, Gt as GreetingConfigs, Jt as ISODateFormat, Kt as HourMinutes, Mt as DateArgs, Nt as DateFormatOptions, Yt as ISODateTimeString, bn as TimeZoneIdNative, ct as Numeric, fn as TimeOnlyFormat, gn as TimeWithUnit, jt as ClockTime, ln as SafeFormat, nt as Maybe, vn as TimeZoneDetails, wn as TimestampOptions, wt as $TimeZoneIdentifier } from "./object-X5fSMx-I.cjs";
17
+ import { Dn as UTCOffset, Gt as GreetingConfigs, Jt as ISODateFormat, Kt as HourMinutes, Mt as DateArgs, Nt as DateFormatOptions, On as UnitWithValue, Tn as TimestampOptions, Yt as ISODateTimeString, _n as TimeWithUnit, ct as Numeric, jt as ClockTime, ln as RelativeDateFormatOptions, nt as Maybe, pn as TimeOnlyFormat, un as SafeFormat, wt as $TimeZoneIdentifier, xn as TimeZoneIdNative, yn as TimeZoneDetails } from "./object-ahxpI5tD.cjs";
18
18
 
19
+ //#region src/date/calculation.d.ts
20
+ /**
21
+ * * A function that takes a date and adds units to it.
22
+ *
23
+ * @param date Can be a Date object, timestamp, or date string.
24
+ * @param units Units to add to the date.
25
+ * @returns Valid Date object with the added units.
26
+ *
27
+ * @throws - {@link TypeError} If the provided date is invalid or units/values are invalid.
28
+ *
29
+ * @remarks
30
+ * - This function creates a {@link Date new Date} object and does not modify the original {@link Date} object if provided one.
31
+ * - If `date` is `undefined`, it will use the current date and time.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * import { addDate } from 'toolbox-x/date';
36
+ *
37
+ * const final = addDate('2026-06-15T01:39:59.288Z', { day: 1, hour: '7' });
38
+ *
39
+ * console.log(final); // new Date('2026-06-16T08:39:59.288Z')
40
+ * ```
41
+ */
42
+ declare function addDate(date: Maybe<DateArgs>, units: UnitWithValue): Date;
43
+ //#endregion
19
44
  //#region src/date/greet.d.ts
20
45
  /**
21
46
  * * Returns a greeting message based on the provided time or current time.
@@ -175,6 +200,23 @@ declare function formatTimePart(time: string, format?: TimeOnlyFormat): string;
175
200
  * formatDateRelative(Date.now() - 10 * 86400000); // "Apr 6, 2026 04:11 PM" (formatted date string)
176
201
  */
177
202
  declare function formatDateRelative(date: Maybe<DateArgs>, format?: SafeFormat): string;
203
+ /**
204
+ * * Formats a date as a relative time string using {@link Intl.RelativeTimeFormat} native method.
205
+ *
206
+ * @param toDate - The date to format, which can be a `Date` object, a date string, or a timestamp number.
207
+ * @param options - Optional configuration for relative date formatting.
208
+ * @returns A relative time string.
209
+ *
210
+ * @remarks
211
+ * - If `toDate` is provided but `undefined`, current date and time will be used.
212
+ * - If `fromDate` is provided but `undefined`, current date and time will be used.
213
+ * - If any of the provided date value (`toDate` or `fromDate`) is invalid, the function will return `'Invalid Date!'`.
214
+ *
215
+ * @example
216
+ * formatRelativeDateNative(Date.now() - 5 * 60000); // "5m ago"
217
+ * formatRelativeDateNative(Date.now() + 2 * 3600000); // "in 2 hours"
218
+ */
219
+ declare function formatRelativeDateNative(toDate: DateArgs, options?: RelativeDateFormatOptions): string;
178
220
  /**
179
221
  * * Get timestamp in ISO 8601 format for the current date and time.
180
222
  *
@@ -210,4 +252,4 @@ declare function getTimestamp<F extends ISODateFormat>(value: DateArgs, format?:
210
252
  */
211
253
  declare function getTimestamp<F extends ISODateFormat>(options: TimestampOptions<F>): ISODateTimeString<F>;
212
254
  //#endregion
213
- export { convertMinutesToTime as convertMinutesToHourMinutes, convertMinutesToTime, convertMinutesToTime as getHourMinutesFromMinutes, convertMinutesToTime as getTimeFromMinutes, formatUTCOffset as convertMinutesToUTCOffset, formatUTCOffset, formatUTCOffset as minutesToUTCOffset, extractHourMinute, extractMinutesFromUTC, extractMinutesFromUTC as getMinutesFromUTC, extractMinutesFromUTC as getTotalMinutesFromUTC, extractTimeFromUTC, extractTimeFromUTC as extractTimeStringFromUTC, extractTimeFromUTC as getTimeStringFromUTC, getTotalMinutes as extractTotalMinutesFromTime, getTotalMinutes, getTotalMinutes as getTotalMinutesFromTime, formatDate, formatDate as formatDateTime, formatDateRelative, formatDateRelative as formatRelativeDate, formatDateRelative as formatRelativeTime, formatTimePart, getGreeting as generateGreeting, getGreeting, getGreeting as greet, getCurrentDateTime, getCurrentDateTime as getCurrentTime, getNativeTimeZoneId, getTimeZoneDetails, getTimeZoneIds, getTimestamp, parseMSec, parseMSec as parseMs };
255
+ export { addDate, convertMinutesToTime as convertMinutesToHourMinutes, convertMinutesToTime, convertMinutesToTime as getHourMinutesFromMinutes, convertMinutesToTime as getTimeFromMinutes, formatUTCOffset as convertMinutesToUTCOffset, formatUTCOffset, formatUTCOffset as minutesToUTCOffset, extractHourMinute, extractMinutesFromUTC, extractMinutesFromUTC as getMinutesFromUTC, extractMinutesFromUTC as getTotalMinutesFromUTC, extractTimeFromUTC, extractTimeFromUTC as extractTimeStringFromUTC, extractTimeFromUTC as getTimeStringFromUTC, getTotalMinutes as extractTotalMinutesFromTime, getTotalMinutes, getTotalMinutes as getTotalMinutesFromTime, formatDate, formatDate as formatDateTime, formatDateRelative, formatDateRelative as formatRelativeDate, formatDateRelative as formatRelativeTime, formatRelativeDateNative as formatDateRelativeNative, formatRelativeDateNative, formatRelativeDateNative as formatRelativeTimeNative, formatTimePart, getGreeting as generateGreeting, getGreeting, getGreeting as greet, getCurrentDateTime, getCurrentDateTime as getCurrentTime, getNativeTimeZoneId, getTimeZoneDetails, getTimeZoneIds, getTimestamp, parseMSec, parseMSec as parseMs };
package/dist/date.d.mts CHANGED
@@ -14,8 +14,33 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { En as UTCOffset, Gt as GreetingConfigs, Jt as ISODateFormat, Kt as HourMinutes, Mt as DateArgs, Nt as DateFormatOptions, Yt as ISODateTimeString, bn as TimeZoneIdNative, ct as Numeric, fn as TimeOnlyFormat, gn as TimeWithUnit, jt as ClockTime, ln as SafeFormat, nt as Maybe, vn as TimeZoneDetails, wn as TimestampOptions, wt as $TimeZoneIdentifier } from "./object-X5fSMx-I.mjs";
17
+ import { Dn as UTCOffset, Gt as GreetingConfigs, Jt as ISODateFormat, Kt as HourMinutes, Mt as DateArgs, Nt as DateFormatOptions, On as UnitWithValue, Tn as TimestampOptions, Yt as ISODateTimeString, _n as TimeWithUnit, ct as Numeric, jt as ClockTime, ln as RelativeDateFormatOptions, nt as Maybe, pn as TimeOnlyFormat, un as SafeFormat, wt as $TimeZoneIdentifier, xn as TimeZoneIdNative, yn as TimeZoneDetails } from "./object-ahxpI5tD.mjs";
18
18
 
19
+ //#region src/date/calculation.d.ts
20
+ /**
21
+ * * A function that takes a date and adds units to it.
22
+ *
23
+ * @param date Can be a Date object, timestamp, or date string.
24
+ * @param units Units to add to the date.
25
+ * @returns Valid Date object with the added units.
26
+ *
27
+ * @throws - {@link TypeError} If the provided date is invalid or units/values are invalid.
28
+ *
29
+ * @remarks
30
+ * - This function creates a {@link Date new Date} object and does not modify the original {@link Date} object if provided one.
31
+ * - If `date` is `undefined`, it will use the current date and time.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * import { addDate } from 'toolbox-x/date';
36
+ *
37
+ * const final = addDate('2026-06-15T01:39:59.288Z', { day: 1, hour: '7' });
38
+ *
39
+ * console.log(final); // new Date('2026-06-16T08:39:59.288Z')
40
+ * ```
41
+ */
42
+ declare function addDate(date: Maybe<DateArgs>, units: UnitWithValue): Date;
43
+ //#endregion
19
44
  //#region src/date/greet.d.ts
20
45
  /**
21
46
  * * Returns a greeting message based on the provided time or current time.
@@ -175,6 +200,23 @@ declare function formatTimePart(time: string, format?: TimeOnlyFormat): string;
175
200
  * formatDateRelative(Date.now() - 10 * 86400000); // "Apr 6, 2026 04:11 PM" (formatted date string)
176
201
  */
177
202
  declare function formatDateRelative(date: Maybe<DateArgs>, format?: SafeFormat): string;
203
+ /**
204
+ * * Formats a date as a relative time string using {@link Intl.RelativeTimeFormat} native method.
205
+ *
206
+ * @param toDate - The date to format, which can be a `Date` object, a date string, or a timestamp number.
207
+ * @param options - Optional configuration for relative date formatting.
208
+ * @returns A relative time string.
209
+ *
210
+ * @remarks
211
+ * - If `toDate` is provided but `undefined`, current date and time will be used.
212
+ * - If `fromDate` is provided but `undefined`, current date and time will be used.
213
+ * - If any of the provided date value (`toDate` or `fromDate`) is invalid, the function will return `'Invalid Date!'`.
214
+ *
215
+ * @example
216
+ * formatRelativeDateNative(Date.now() - 5 * 60000); // "5m ago"
217
+ * formatRelativeDateNative(Date.now() + 2 * 3600000); // "in 2 hours"
218
+ */
219
+ declare function formatRelativeDateNative(toDate: DateArgs, options?: RelativeDateFormatOptions): string;
178
220
  /**
179
221
  * * Get timestamp in ISO 8601 format for the current date and time.
180
222
  *
@@ -210,4 +252,4 @@ declare function getTimestamp<F extends ISODateFormat>(value: DateArgs, format?:
210
252
  */
211
253
  declare function getTimestamp<F extends ISODateFormat>(options: TimestampOptions<F>): ISODateTimeString<F>;
212
254
  //#endregion
213
- export { convertMinutesToTime as convertMinutesToHourMinutes, convertMinutesToTime, convertMinutesToTime as getHourMinutesFromMinutes, convertMinutesToTime as getTimeFromMinutes, formatUTCOffset as convertMinutesToUTCOffset, formatUTCOffset, formatUTCOffset as minutesToUTCOffset, extractHourMinute, extractMinutesFromUTC, extractMinutesFromUTC as getMinutesFromUTC, extractMinutesFromUTC as getTotalMinutesFromUTC, extractTimeFromUTC, extractTimeFromUTC as extractTimeStringFromUTC, extractTimeFromUTC as getTimeStringFromUTC, getTotalMinutes as extractTotalMinutesFromTime, getTotalMinutes, getTotalMinutes as getTotalMinutesFromTime, formatDate, formatDate as formatDateTime, formatDateRelative, formatDateRelative as formatRelativeDate, formatDateRelative as formatRelativeTime, formatTimePart, getGreeting as generateGreeting, getGreeting, getGreeting as greet, getCurrentDateTime, getCurrentDateTime as getCurrentTime, getNativeTimeZoneId, getTimeZoneDetails, getTimeZoneIds, getTimestamp, parseMSec, parseMSec as parseMs };
255
+ export { addDate, convertMinutesToTime as convertMinutesToHourMinutes, convertMinutesToTime, convertMinutesToTime as getHourMinutesFromMinutes, convertMinutesToTime as getTimeFromMinutes, formatUTCOffset as convertMinutesToUTCOffset, formatUTCOffset, formatUTCOffset as minutesToUTCOffset, extractHourMinute, extractMinutesFromUTC, extractMinutesFromUTC as getMinutesFromUTC, extractMinutesFromUTC as getTotalMinutesFromUTC, extractTimeFromUTC, extractTimeFromUTC as extractTimeStringFromUTC, extractTimeFromUTC as getTimeStringFromUTC, getTotalMinutes as extractTotalMinutesFromTime, getTotalMinutes, getTotalMinutes as getTotalMinutesFromTime, formatDate, formatDate as formatDateTime, formatDateRelative, formatDateRelative as formatRelativeDate, formatDateRelative as formatRelativeTime, formatRelativeDateNative as formatDateRelativeNative, formatRelativeDateNative, formatRelativeDateNative as formatRelativeTimeNative, formatTimePart, getGreeting as generateGreeting, getGreeting, getGreeting as greet, getCurrentDateTime, getCurrentDateTime as getCurrentTime, getNativeTimeZoneId, getTimeZoneDetails, getTimeZoneIds, getTimestamp, parseMSec, parseMSec as parseMs };
package/dist/date.mjs CHANGED
@@ -14,13 +14,50 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { m as isUndefined } from "./primitives-Djsevc69.mjs";
17
+ import { c as isNumber, m as isUndefined } from "./primitives-Djsevc69.mjs";
18
+ import { a as RELATIVE_TIME_DIVISIONS, t as DATE_UNIT_SETTERS } from "./constants-GZL_CT1W.mjs";
18
19
  import { n as NATIVE_TZ_IDS } from "./timezone-avZ4TvDx.mjs";
19
- import { T as isObject } from "./specials-Hq5Ncd6y.mjs";
20
+ import { E as isObjectWithKeys, T as isObject } from "./specials-Hq5Ncd6y.mjs";
20
21
  import { a as normalizeNumber } from "./utilities-DPscNbS1.mjs";
21
- import { a as isValidTime, s as isValidUTCOffset } from "./guards-BK1QuvFZ.mjs";
22
- import { a as _normalizeOffset, i as _gmtToUtcOffset, n as _dateArgsToDate, o as _resolveNativeTzName, r as _formatDate, t as parseMSec } from "./parse-erxBG2hd.mjs";
22
+ import { a as _normalizeOffset, i as _gmtToUtcOffset, n as _dateArgsToDate, o as _resolveNativeTzName, r as _formatDate, t as parseMSec } from "./parse-DUJ0YThn.mjs";
23
+ import { Q as isValidTime, et as isValidUTCOffset } from "./basics-Dald7J6c.mjs";
23
24
 
25
+ //#region src/date/calculation.ts
26
+ /**
27
+ * * A function that takes a date and adds units to it.
28
+ *
29
+ * @param date Can be a Date object, timestamp, or date string.
30
+ * @param units Units to add to the date.
31
+ * @returns Valid Date object with the added units.
32
+ *
33
+ * @throws - {@link TypeError} If the provided date is invalid or units/values are invalid.
34
+ *
35
+ * @remarks
36
+ * - This function creates a {@link Date new Date} object and does not modify the original {@link Date} object if provided one.
37
+ * - If `date` is `undefined`, it will use the current date and time.
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * import { addDate } from 'toolbox-x/date';
42
+ *
43
+ * const final = addDate('2026-06-15T01:39:59.288Z', { day: 1, hour: '7' });
44
+ *
45
+ * console.log(final); // new Date('2026-06-16T08:39:59.288Z')
46
+ * ```
47
+ */
48
+ function addDate(date, units) {
49
+ const $date = _dateArgsToDate(date);
50
+ if (Number.isNaN($date.getTime())) throw new TypeError("Provided date is invalid!");
51
+ const expected = new Date($date);
52
+ for (const [unit, value] of Object.entries(units)) {
53
+ const val = normalizeNumber(value);
54
+ if (!isObjectWithKeys(DATE_UNIT_SETTERS, [unit]) || !isNumber(val)) throw new TypeError(`Provided unit or value is invalid!`);
55
+ DATE_UNIT_SETTERS[unit](expected, val);
56
+ }
57
+ return expected;
58
+ }
59
+
60
+ //#endregion
24
61
  //#region src/date/utils.ts
25
62
  /**
26
63
  * * Extracts the hour and minute from a time string in `HH:MM` or `-HH:MM` format.
@@ -239,6 +276,43 @@ function formatDateRelative(date, format) {
239
276
  format: format || "mmm D, yyyy hh:mm a"
240
277
  });
241
278
  }
279
+ /**
280
+ * * Formats a date as a relative time string using {@link Intl.RelativeTimeFormat} native method.
281
+ *
282
+ * @param toDate - The date to format, which can be a `Date` object, a date string, or a timestamp number.
283
+ * @param options - Optional configuration for relative date formatting.
284
+ * @returns A relative time string.
285
+ *
286
+ * @remarks
287
+ * - If `toDate` is provided but `undefined`, current date and time will be used.
288
+ * - If `fromDate` is provided but `undefined`, current date and time will be used.
289
+ * - If any of the provided date value (`toDate` or `fromDate`) is invalid, the function will return `'Invalid Date!'`.
290
+ *
291
+ * @example
292
+ * formatRelativeDateNative(Date.now() - 5 * 60000); // "5m ago"
293
+ * formatRelativeDateNative(Date.now() + 2 * 3600000); // "in 2 hours"
294
+ */
295
+ function formatRelativeDateNative(toDate, options) {
296
+ const { fromDate = /* @__PURE__ */ new Date(), locale = "en", localeMatcher, numeric = "always", style } = options ?? {};
297
+ const to = _dateArgsToDate(toDate).getTime();
298
+ const from = _dateArgsToDate(fromDate).getTime();
299
+ if (Number.isNaN(to) || Number.isNaN(from)) return "Invalid Date!";
300
+ let duration = (to - from) / 1e3;
301
+ const RELATIVE_DATE_FORMATTER = new Intl.RelativeTimeFormat(locale, {
302
+ localeMatcher,
303
+ numeric,
304
+ style
305
+ });
306
+ let formatted = "Just now";
307
+ for (const division of RELATIVE_TIME_DIVISIONS) {
308
+ if (Math.abs(duration) < division.amount) {
309
+ formatted = RELATIVE_DATE_FORMATTER.format(Math.round(duration), division.name);
310
+ break;
311
+ }
312
+ duration /= division.amount;
313
+ }
314
+ return formatted;
315
+ }
242
316
  /** Get timestamp in ISO 8601 format. */
243
317
  function getTimestamp(args, format) {
244
318
  let $value;
@@ -295,4 +369,4 @@ function getGreeting(configs) {
295
369
  }
296
370
 
297
371
  //#endregion
298
- export { convertMinutesToTime as convertMinutesToHourMinutes, convertMinutesToTime, convertMinutesToTime as getHourMinutesFromMinutes, convertMinutesToTime as getTimeFromMinutes, formatUTCOffset as convertMinutesToUTCOffset, formatUTCOffset, formatUTCOffset as minutesToUTCOffset, extractHourMinute, extractMinutesFromUTC, extractMinutesFromUTC as getMinutesFromUTC, extractMinutesFromUTC as getTotalMinutesFromUTC, extractTimeFromUTC, extractTimeFromUTC as extractTimeStringFromUTC, extractTimeFromUTC as getTimeStringFromUTC, getTotalMinutes as extractTotalMinutesFromTime, getTotalMinutes, getTotalMinutes as getTotalMinutesFromTime, formatDate, formatDate as formatDateTime, formatDateRelative, formatDateRelative as formatRelativeDate, formatDateRelative as formatRelativeTime, formatTimePart, getGreeting as generateGreeting, getGreeting, getGreeting as greet, getCurrentDateTime, getCurrentDateTime as getCurrentTime, getNativeTimeZoneId, getTimeZoneDetails, getTimeZoneIds, getTimestamp, parseMSec, parseMSec as parseMs };
372
+ export { addDate, convertMinutesToTime as convertMinutesToHourMinutes, convertMinutesToTime, convertMinutesToTime as getHourMinutesFromMinutes, convertMinutesToTime as getTimeFromMinutes, formatUTCOffset as convertMinutesToUTCOffset, formatUTCOffset, formatUTCOffset as minutesToUTCOffset, extractHourMinute, extractMinutesFromUTC, extractMinutesFromUTC as getMinutesFromUTC, extractMinutesFromUTC as getTotalMinutesFromUTC, extractTimeFromUTC, extractTimeFromUTC as extractTimeStringFromUTC, extractTimeFromUTC as getTimeStringFromUTC, getTotalMinutes as extractTotalMinutesFromTime, getTotalMinutes, getTotalMinutes as getTotalMinutesFromTime, formatDate, formatDate as formatDateTime, formatDateRelative, formatDateRelative as formatRelativeDate, formatDateRelative as formatRelativeTime, formatRelativeDateNative as formatDateRelativeNative, formatRelativeDateNative, formatRelativeDateNative as formatRelativeTimeNative, formatTimePart, getGreeting as generateGreeting, getGreeting, getGreeting as greet, getCurrentDateTime, getCurrentDateTime as getCurrentTime, getNativeTimeZoneId, getTimeZoneDetails, getTimeZoneIds, getTimestamp, parseMSec, parseMSec as parseMs };
package/dist/dom.cjs CHANGED
@@ -17,9 +17,8 @@
17
17
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
18
18
  const require_primitives = require('./primitives-CBGICrDR.cjs');
19
19
  const require_specials = require('./specials-dkYP1Nh2.cjs');
20
- const require_guards = require('./guards-Bsh6Bfdq.cjs');
21
- const require_basics = require('./basics-CJmdhXoo.cjs');
22
- const require_objectify = require('./objectify-xQvZS3UI.cjs');
20
+ const require_basics = require('./basics-Bb5ovcvz.cjs');
21
+ const require_objectify = require('./objectify--6hPlQ7r.cjs');
23
22
 
24
23
  //#region src/dom/query.ts
25
24
  /**
@@ -315,8 +314,8 @@ const createFormData = (data, configs) => {
315
314
  const transformedKey = _transformKey(key);
316
315
  const fullKey = parentKey ? `${parentKey}.${transformedKey}` : transformedKey;
317
316
  if (_compareKeyPaths(fullKey, ignoreKeys)) return acc;
318
- if (value != null && value !== "" || _isRequiredKey(fullKey) || require_primitives.isNonEmptyString(value) || require_specials.isValidArray(value) || require_specials.isNotEmptyObject(value)) if (require_guards.isDateLike(value)) acc[transformedKey] = value;
319
- else if (require_specials.isNotEmptyObject(value)) if (require_guards.isDateLike(value)) acc[transformedKey] = value;
317
+ if (value != null && value !== "" || _isRequiredKey(fullKey) || require_primitives.isNonEmptyString(value) || require_specials.isValidArray(value) || require_specials.isNotEmptyObject(value)) if (require_basics.isDateLike(value)) acc[transformedKey] = value;
318
+ else if (require_specials.isNotEmptyObject(value)) if (require_basics.isDateLike(value)) acc[transformedKey] = value;
320
319
  else {
321
320
  const cleaned = _cleanObject(value, fullKey);
322
321
  if (_isRequiredKey(fullKey) || require_specials.isNotEmptyObject(cleaned)) acc[transformedKey] = cleaned;
@@ -358,7 +357,7 @@ const createFormData = (data, configs) => {
358
357
  });
359
358
  else formData.append(transformedKey, JSON.stringify(value));
360
359
  else if (_isRequiredKey(key)) formData.append(transformedKey, JSON.stringify(value));
361
- } else if (require_guards.isDateLike(value)) formData.append(transformedKey, _parseDateLike(value));
360
+ } else if (require_basics.isDateLike(value)) formData.append(transformedKey, _parseDateLike(value));
362
361
  else if (require_specials.isNotEmptyObject(value)) if (_shouldStringify(key) && !_shouldDotNotate(key)) {
363
362
  const cleanedValue = _cleanObject(value, key);
364
363
  if (require_specials.isNotEmptyObject(cleanedValue) || _isRequiredKey(key)) formData.append(transformedKey, JSON.stringify(cleanedValue));
@@ -380,10 +379,10 @@ const createFormData = (data, configs) => {
380
379
  if (_compareKeyPaths(fullKey, ignoreKeys)) return;
381
380
  if (configs?.trimStrings && require_primitives.isNonEmptyString(value)) value = require_basics.trimString(value);
382
381
  if (_shouldDotNotate(fullKey)) _addToFormData(fullKey, value);
383
- else if (require_specials.isNotEmptyObject(value) && !_shouldStringify(fullKey)) if (require_guards.isDateLike(value)) _addToFormData(key, _parseDateLike(value));
382
+ else if (require_specials.isNotEmptyObject(value) && !_shouldStringify(fullKey)) if (require_basics.isDateLike(value)) _addToFormData(key, _parseDateLike(value));
384
383
  else _processObject(value, key);
385
384
  else if (require_objectify.isFileOrBlob(value)) _addToFormData(key, value);
386
- else if (require_guards.isDateLike(value)) _addToFormData(key, _parseDateLike(value));
385
+ else if (require_basics.isDateLike(value)) _addToFormData(key, _parseDateLike(value));
387
386
  else if (require_specials.isEmptyObject(value)) {
388
387
  if (_isRequiredKey(fullKey)) _addToFormData(key, JSON.stringify(value));
389
388
  } else _addToFormData(key, value);
package/dist/dom.d.cts CHANGED
@@ -14,9 +14,9 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { J as Deserializer, M as ParsedQueryGeneric, N as QueryObject, ft as Serializer, j as ParsedQuery, y as GenericObject } from "./object-X5fSMx-I.cjs";
18
- import { F as QueryString } from "./string-CO7HP50i.cjs";
19
- import { a as OriginFileObj, i as FormDataConfigs, o as ParsedFormData, r as FileUpload, s as SerializedForm, t as CustomFile } from "./form-Cp1OyCRI.cjs";
17
+ import { J as Deserializer, M as ParsedQueryGeneric, N as QueryObject, ft as Serializer, j as ParsedQuery, y as GenericObject } from "./object-ahxpI5tD.cjs";
18
+ import { F as QueryString } from "./string-DENMnjFc.cjs";
19
+ import { a as OriginFileObj, i as FormDataConfigs, o as ParsedFormData, r as FileUpload, s as SerializedForm, t as CustomFile } from "./form-B91Vb6IK.cjs";
20
20
 
21
21
  //#region src/dom/query.d.ts
22
22
  /**
package/dist/dom.d.mts CHANGED
@@ -14,9 +14,9 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { J as Deserializer, M as ParsedQueryGeneric, N as QueryObject, ft as Serializer, j as ParsedQuery, y as GenericObject } from "./object-X5fSMx-I.mjs";
18
- import { F as QueryString } from "./string-C51m7T6d.mjs";
19
- import { a as OriginFileObj, i as FormDataConfigs, o as ParsedFormData, r as FileUpload, s as SerializedForm, t as CustomFile } from "./form-DPdS2AhM.mjs";
17
+ import { J as Deserializer, M as ParsedQueryGeneric, N as QueryObject, ft as Serializer, j as ParsedQuery, y as GenericObject } from "./object-ahxpI5tD.mjs";
18
+ import { F as QueryString } from "./string-C3g9oBeS.mjs";
19
+ import { a as OriginFileObj, i as FormDataConfigs, o as ParsedFormData, r as FileUpload, s as SerializedForm, t as CustomFile } from "./form-DaIT0NMx.mjs";
20
20
 
21
21
  //#region src/dom/query.d.ts
22
22
  /**
package/dist/dom.mjs CHANGED
@@ -16,9 +16,8 @@
16
16
 
17
17
  import { a as isNonEmptyString, d as isString } from "./primitives-Djsevc69.mjs";
18
18
  import { j as isValidArray, v as isEmptyObject, w as isNotEmptyObject } from "./specials-Hq5Ncd6y.mjs";
19
- import { t as isDateLike } from "./guards-BK1QuvFZ.mjs";
20
- import { I as deepParsePrimitives, n as trimString } from "./basics-CebgkY-n.mjs";
21
- import { _ as isOriginFileObj, a as flattenObjectKeyValue, d as isCustomFile, f as isCustomFileArray, g as isFileUpload, h as isFileOrBlob, l as parseObjectValues, m as isFileList, p as isFileArray, v as isValidFormData } from "./objectify-CQa8gQib.mjs";
19
+ import { I as deepParsePrimitives, J as isDateLike, n as trimString } from "./basics-Dald7J6c.mjs";
20
+ import { _ as isOriginFileObj, a as flattenObjectKeyValue, d as isCustomFile, f as isCustomFileArray, g as isFileUpload, h as isFileOrBlob, l as parseObjectValues, m as isFileList, p as isFileArray, v as isValidFormData } from "./objectify-BoIZEKOL.mjs";
22
21
 
23
22
  //#region src/dom/query.ts
24
23
  /**
@@ -14,8 +14,8 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { S as KeyForObject, T as NestedKeyString, ri as RequireExactly, u as DotNotationKey, x as KeyForArray } from "./object-X5fSMx-I.cjs";
18
- import { F as QueryString } from "./string-CO7HP50i.cjs";
17
+ import { S as KeyForObject, T as NestedKeyString, ai as RequireExactly, u as DotNotationKey, x as KeyForArray } from "./object-ahxpI5tD.cjs";
18
+ import { F as QueryString } from "./string-DENMnjFc.cjs";
19
19
 
20
20
  //#region src/types/form.d.ts
21
21
  /** - Configuration options to control FormData generation behavior. */
@@ -14,8 +14,8 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { S as KeyForObject, T as NestedKeyString, ri as RequireExactly, u as DotNotationKey, x as KeyForArray } from "./object-X5fSMx-I.mjs";
18
- import { F as QueryString } from "./string-C51m7T6d.mjs";
17
+ import { S as KeyForObject, T as NestedKeyString, ai as RequireExactly, u as DotNotationKey, x as KeyForArray } from "./object-ahxpI5tD.mjs";
18
+ import { F as QueryString } from "./string-C3g9oBeS.mjs";
19
19
 
20
20
  //#region src/types/form.d.ts
21
21
  /** - Configuration options to control FormData generation behavior. */
@@ -17,7 +17,7 @@
17
17
  import { d as isString, m as isUndefined } from "./primitives-Djsevc69.mjs";
18
18
  import { b as isFunction, w as isNotEmptyObject } from "./specials-Hq5Ncd6y.mjs";
19
19
  import { a as normalizeNumber } from "./utilities-DPscNbS1.mjs";
20
- import { G as stableStringify, n as trimString } from "./basics-CebgkY-n.mjs";
20
+ import { G as stableStringify, n as trimString } from "./basics-Dald7J6c.mjs";
21
21
 
22
22
  //#region src/object/basics.ts
23
23
  /**
@@ -17,7 +17,7 @@
17
17
  const require_primitives = require('./primitives-CBGICrDR.cjs');
18
18
  const require_specials = require('./specials-dkYP1Nh2.cjs');
19
19
  const require_utilities = require('./utilities-CWV1GPGY.cjs');
20
- const require_basics = require('./basics-CJmdhXoo.cjs');
20
+ const require_basics = require('./basics-Bb5ovcvz.cjs');
21
21
 
22
22
  //#region src/object/basics.ts
23
23
  /**
package/dist/guards.cjs CHANGED
@@ -18,12 +18,11 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
18
18
  const require_primitives = require('./primitives-CBGICrDR.cjs');
19
19
  const require_guards = require('./guards-DGN95D2h.cjs');
20
20
  const require_specials = require('./specials-dkYP1Nh2.cjs');
21
- const require_guards$1 = require('./guards-Bsh6Bfdq.cjs');
22
- const require_basics = require('./basics-CJmdhXoo.cjs');
23
- const require_guards$2 = require('./guards-DMJcjPDt.cjs');
21
+ const require_basics = require('./basics-Bb5ovcvz.cjs');
22
+ const require_guards$1 = require('./guards-D8Iz6EEy.cjs');
24
23
 
25
- exports.areInvalidNumbers = require_guards$2.areInvalidNumbers;
26
- exports.areNumbersInvalid = require_guards$2.areInvalidNumbers;
24
+ exports.areInvalidNumbers = require_guards$1.areInvalidNumbers;
25
+ exports.areNumbersInvalid = require_guards$1.areInvalidNumbers;
27
26
  exports.doesReturnPromise = require_specials.isReturningPromise;
28
27
  exports.isArray = require_specials.isArray;
29
28
  exports.isArrayOfType = require_specials.isArrayOfType;
@@ -34,22 +33,22 @@ exports.isBinaryString = require_specials.isBinaryString;
34
33
  exports.isBoolean = require_primitives.isBoolean;
35
34
  exports.isBrowser = require_specials.isBrowser;
36
35
  exports.isCSSColor = require_guards.isCSSColor;
37
- exports.isCamelCase = require_guards$2.isCamelCase;
36
+ exports.isCamelCase = require_guards$1.isCamelCase;
38
37
  exports.isDate = require_specials.isDate;
39
- exports.isDateLike = require_guards$1.isDateLike;
38
+ exports.isDateLike = require_basics.isDateLike;
40
39
  exports.isDateString = require_specials.isDateString;
41
40
  exports.isDeepEqual = require_basics.isDeepEqual;
42
41
  exports.isEmail = require_specials.isEmail;
43
42
  exports.isEmailArray = require_specials.isEmailArray;
44
- exports.isEmojiOnly = require_guards$2.isEmojiOnly;
43
+ exports.isEmojiOnly = require_guards$1.isEmojiOnly;
45
44
  exports.isEmptyObject = require_specials.isEmptyObject;
46
45
  exports.isEnvironment = require_specials.isEnvironment;
47
46
  exports.isError = require_specials.isError;
48
- exports.isEven = require_guards$2.isEven;
49
- exports.isEvenNumber = require_guards$2.isEven;
47
+ exports.isEven = require_guards$1.isEven;
48
+ exports.isEvenNumber = require_guards$1.isEven;
50
49
  exports.isExpectedNodeENV = require_specials.isEnvironment;
51
50
  exports.isFalsy = require_primitives.isFalsy;
52
- exports.isFibonacci = require_guards$2.isFibonacci;
51
+ exports.isFibonacci = require_guards$1.isFibonacci;
53
52
  exports.isFunction = require_specials.isFunction;
54
53
  exports.isHSL = require_guards.isHSL;
55
54
  exports.isHSLA = require_guards.isHSLA;
@@ -58,17 +57,17 @@ exports.isHex8 = require_guards.isHex8;
58
57
  exports.isHexString = require_specials.isHexString;
59
58
  exports.isIPAddress = require_specials.isIPAddress;
60
59
  exports.isInteger = require_primitives.isInteger;
61
- exports.isInvalidNumber = require_guards$2.areInvalidNumbers;
62
- exports.isInvalidOrEmptyArray = require_guards$2.isInvalidOrEmptyArray;
60
+ exports.isInvalidNumber = require_guards$1.areInvalidNumbers;
61
+ exports.isInvalidOrEmptyArray = require_guards$1.isInvalidOrEmptyArray;
63
62
  exports.isJSON = require_specials.isJSON;
64
- exports.isKebabCase = require_guards$2.isKebabCase;
65
- exports.isLeapYear = require_guards$1.isLeapYear;
63
+ exports.isKebabCase = require_guards$1.isKebabCase;
64
+ exports.isLeapYear = require_basics.isLeapYear;
66
65
  exports.isMap = require_specials.isMap;
67
66
  exports.isMethod = require_specials.isMethodDescriptor;
68
67
  exports.isMethodDescriptor = require_specials.isMethodDescriptor;
69
- exports.isMultiple = require_guards$2.isMultiple;
70
- exports.isMultipleOf = require_guards$2.isMultiple;
71
- exports.isNativeTimeZoneId = require_guards$1.isNativeTimeZoneId;
68
+ exports.isMultiple = require_guards$1.isMultiple;
69
+ exports.isMultipleOf = require_guards$1.isMultiple;
70
+ exports.isNativeTimeZoneId = require_basics.isNativeTimeZoneId;
72
71
  exports.isNode = require_specials.isNode;
73
72
  exports.isNodeENV = require_specials.isEnvironment;
74
73
  exports.isNodeEnvironment = require_specials.isEnvironment;
@@ -77,22 +76,22 @@ exports.isNormalPrimitive = require_primitives.isNormalPrimitive;
77
76
  exports.isNotEmptyObject = require_specials.isNotEmptyObject;
78
77
  exports.isNull = require_primitives.isNull;
79
78
  exports.isNumber = require_primitives.isNumber;
80
- exports.isNumberInvalid = require_guards$2.areInvalidNumbers;
79
+ exports.isNumberInvalid = require_guards$1.areInvalidNumbers;
81
80
  exports.isNumericString = require_specials.isNumericString;
82
81
  exports.isObject = require_specials.isObject;
83
82
  exports.isObjectEmpty = require_specials.isEmptyObject;
84
83
  exports.isObjectWithKeys = require_specials.isObjectWithKeys;
85
- exports.isOdd = require_guards$2.isOdd;
86
- exports.isOddNumber = require_guards$2.isOdd;
87
- exports.isPalindrome = require_guards$2.isPalindrome;
88
- exports.isPartOfFibonacci = require_guards$2.isFibonacci;
89
- exports.isPartOfFibonacciSeries = require_guards$2.isFibonacci;
90
- exports.isPascalCase = require_guards$2.isPascalCase;
91
- exports.isPerfectSquare = require_guards$2.isPerfectSquare;
84
+ exports.isOdd = require_guards$1.isOdd;
85
+ exports.isOddNumber = require_guards$1.isOdd;
86
+ exports.isPalindrome = require_guards$1.isPalindrome;
87
+ exports.isPartOfFibonacci = require_guards$1.isFibonacci;
88
+ exports.isPartOfFibonacciSeries = require_guards$1.isFibonacci;
89
+ exports.isPascalCase = require_guards$1.isPascalCase;
90
+ exports.isPerfectSquare = require_guards$1.isPerfectSquare;
92
91
  exports.isPhoneNumber = require_specials.isPhoneNumber;
93
92
  exports.isPositiveInteger = require_primitives.isPositiveInteger;
94
- exports.isPrime = require_guards$2.isPrime;
95
- exports.isPrimeNumber = require_guards$2.isPrime;
93
+ exports.isPrime = require_guards$1.isPrime;
94
+ exports.isPrimeNumber = require_guards$1.isPrime;
96
95
  exports.isPrimitive = require_primitives.isPrimitive;
97
96
  exports.isPromise = require_specials.isPromise;
98
97
  exports.isRGB = require_guards.isRGB;
@@ -101,10 +100,10 @@ exports.isRegExp = require_specials.isRegExp;
101
100
  exports.isRegularExpression = require_specials.isRegExp;
102
101
  exports.isReturningPromise = require_specials.isReturningPromise;
103
102
  exports.isSet = require_specials.isSet;
104
- exports.isSnakeCase = require_guards$2.isSnakeCase;
103
+ exports.isSnakeCase = require_guards$1.isSnakeCase;
105
104
  exports.isString = require_primitives.isString;
106
105
  exports.isSymbol = require_primitives.isSymbol;
107
- exports.isTimeWithUnit = require_guards$1.isTimeWithUnit;
106
+ exports.isTimeWithUnit = require_basics.isTimeWithUnit;
108
107
  exports.isTruthy = require_primitives.isTruthy;
109
108
  exports.isURL = require_specials.isURL;
110
109
  exports.isUUID = require_specials.isUUID;
@@ -121,9 +120,9 @@ exports.isValidArray = require_specials.isValidArray;
121
120
  exports.isValidEmail = require_specials.isEmail;
122
121
  exports.isValidJSON = require_specials.isJSON;
123
122
  exports.isValidObject = require_specials.isNotEmptyObject;
124
- exports.isValidTime = require_guards$1.isValidTime;
125
- exports.isValidTimeString = require_guards$1.isValidTime;
126
- exports.isValidTimeZoneId = require_guards$1.isValidTimeZoneId;
123
+ exports.isValidTime = require_basics.isValidTime;
124
+ exports.isValidTimeString = require_basics.isValidTime;
125
+ exports.isValidTimeZoneId = require_basics.isValidTimeZoneId;
127
126
  exports.isValidURL = require_specials.isURL;
128
- exports.isValidUTC = require_guards$1.isValidUTCOffset;
129
- exports.isValidUTCOffset = require_guards$1.isValidUTCOffset;
127
+ exports.isValidUTC = require_basics.isValidUTCOffset;
128
+ exports.isValidUTCOffset = require_basics.isValidUTCOffset;