@duplojs/utils 1.4.57 → 1.4.59

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 (319) hide show
  1. package/dist/array/group.cjs +11 -11
  2. package/dist/array/group.d.ts +1 -1
  3. package/dist/array/group.mjs +11 -11
  4. package/dist/clean/constraint/base.d.ts +6 -4
  5. package/dist/clean/constraint/defaultConstraint/index.d.ts +1 -0
  6. package/dist/clean/constraint/defaultConstraint/number.d.ts +6 -6
  7. package/dist/clean/constraint/defaultConstraint/string.d.ts +4 -4
  8. package/dist/clean/constraint/defaultConstraint/time.cjs +19 -0
  9. package/dist/clean/constraint/defaultConstraint/time.d.ts +61 -0
  10. package/dist/clean/constraint/defaultConstraint/time.mjs +16 -0
  11. package/dist/clean/constraint/set.d.ts +6 -4
  12. package/dist/clean/entity.d.ts +2 -1
  13. package/dist/clean/index.cjs +3 -0
  14. package/dist/clean/index.mjs +1 -0
  15. package/dist/clean/newType.d.ts +7 -5
  16. package/dist/clean/primitive/base.d.ts +25 -34
  17. package/dist/clean/primitive/operations/date/dateAddTime.d.ts +7 -11
  18. package/dist/clean/primitive/operations/date/dateGreaterThan.d.ts +9 -7
  19. package/dist/clean/primitive/operations/date/dateLessThan.d.ts +9 -7
  20. package/dist/clean/primitive/operations/date/dateMax.d.ts +3 -10
  21. package/dist/clean/primitive/operations/date/dateMin.d.ts +3 -10
  22. package/dist/clean/primitive/operations/date/dateSubtractTime.d.ts +7 -11
  23. package/dist/clean/primitive/operations/equal.cjs +1 -1
  24. package/dist/clean/primitive/operations/equal.d.ts +3 -3
  25. package/dist/clean/primitive/operations/equal.mjs +1 -1
  26. package/dist/clean/primitive/operations/sort.d.ts +8 -10
  27. package/dist/clean/primitive/operations/time/timeGreaterThan.d.ts +11 -9
  28. package/dist/clean/primitive/operations/time/timeLessThan.d.ts +11 -9
  29. package/dist/clean/primitive/operations/time/timeMax.cjs +2 -2
  30. package/dist/clean/primitive/operations/time/timeMax.d.ts +10 -17
  31. package/dist/clean/primitive/operations/time/timeMax.mjs +2 -2
  32. package/dist/clean/primitive/operations/time/timeMin.cjs +3 -3
  33. package/dist/clean/primitive/operations/time/timeMin.d.ts +10 -17
  34. package/dist/clean/primitive/operations/time/timeMin.mjs +3 -3
  35. package/dist/clean/unwrapEntity.cjs +13 -3
  36. package/dist/clean/unwrapEntity.d.ts +57 -5
  37. package/dist/clean/unwrapEntity.mjs +13 -3
  38. package/dist/common/index.d.ts +3 -4
  39. package/dist/common/kind.d.ts +1 -0
  40. package/dist/common/path.cjs +13 -13
  41. package/dist/common/path.d.ts +17 -11
  42. package/dist/common/path.mjs +13 -13
  43. package/dist/common/toRegExp.cjs +19 -0
  44. package/dist/common/toRegExp.d.ts +31 -0
  45. package/dist/common/toRegExp.mjs +17 -0
  46. package/dist/common/transformer.cjs +45 -0
  47. package/dist/common/transformer.d.ts +61 -0
  48. package/dist/common/transformer.mjs +40 -0
  49. package/dist/common/types/DeepReadonly.d.ts +1 -1
  50. package/dist/common/types/toLargeEnsemble.d.ts +2 -2
  51. package/dist/dataParser/error.cjs +4 -2
  52. package/dist/dataParser/error.d.ts +4 -2
  53. package/dist/dataParser/error.mjs +4 -2
  54. package/dist/dataParser/extended/date.d.ts +9 -4
  55. package/dist/dataParser/extended/time.d.ts +28 -12
  56. package/dist/dataParser/identifier.d.ts +20 -8
  57. package/dist/dataParser/parsers/date.cjs +16 -12
  58. package/dist/dataParser/parsers/date.d.ts +15 -9
  59. package/dist/dataParser/parsers/date.mjs +16 -12
  60. package/dist/dataParser/parsers/time/checkers/max.cjs +3 -0
  61. package/dist/dataParser/parsers/time/checkers/max.d.ts +28 -0
  62. package/dist/dataParser/parsers/time/checkers/max.mjs +3 -0
  63. package/dist/dataParser/parsers/time/checkers/min.cjs +3 -0
  64. package/dist/dataParser/parsers/time/checkers/min.d.ts +28 -0
  65. package/dist/dataParser/parsers/time/checkers/min.mjs +3 -0
  66. package/dist/dataParser/parsers/time/index.cjs +14 -10
  67. package/dist/dataParser/parsers/time/index.d.ts +15 -9
  68. package/dist/dataParser/parsers/time/index.mjs +14 -10
  69. package/dist/date/applyTimezone.cjs +4 -4
  70. package/dist/date/applyTimezone.d.ts +18 -16
  71. package/dist/date/applyTimezone.mjs +2 -2
  72. package/dist/date/closestTo.cjs +6 -2
  73. package/dist/date/closestTo.d.ts +15 -15
  74. package/dist/date/closestTo.mjs +6 -2
  75. package/dist/date/constants.cjs +4 -4
  76. package/dist/date/constants.d.ts +2 -2
  77. package/dist/date/constants.mjs +3 -3
  78. package/dist/date/create.cjs +20 -10
  79. package/dist/date/create.d.ts +24 -38
  80. package/dist/date/create.mjs +21 -11
  81. package/dist/date/createOrThrow.d.ts +18 -20
  82. package/dist/date/createTime.cjs +16 -7
  83. package/dist/date/createTime.d.ts +19 -18
  84. package/dist/date/createTime.mjs +17 -8
  85. package/dist/date/createTimeOrThrow.d.ts +17 -20
  86. package/dist/date/each.cjs +6 -4
  87. package/dist/date/each.d.ts +21 -19
  88. package/dist/date/each.mjs +6 -4
  89. package/dist/date/format.d.ts +17 -15
  90. package/dist/date/formatTime.d.ts +17 -16
  91. package/dist/date/getTimezoneOffset.cjs +6 -3
  92. package/dist/date/getTimezoneOffset.d.ts +17 -18
  93. package/dist/date/getTimezoneOffset.mjs +6 -3
  94. package/dist/date/getters/getDayOfMonth.cjs +3 -3
  95. package/dist/date/getters/getDayOfMonth.d.ts +20 -14
  96. package/dist/date/getters/getDayOfMonth.mjs +3 -3
  97. package/dist/date/getters/getDayOfWeek.cjs +3 -3
  98. package/dist/date/getters/getDayOfWeek.d.ts +15 -12
  99. package/dist/date/getters/getDayOfWeek.mjs +3 -3
  100. package/dist/date/getters/getDayOfYear.cjs +6 -6
  101. package/dist/date/getters/getDayOfYear.d.ts +21 -13
  102. package/dist/date/getters/getDayOfYear.mjs +6 -6
  103. package/dist/date/getters/getFirstDayOfMonth.cjs +2 -3
  104. package/dist/date/getters/getFirstDayOfMonth.d.ts +16 -10
  105. package/dist/date/getters/getFirstDayOfMonth.mjs +2 -3
  106. package/dist/date/getters/getFirstDayOfWeek.cjs +2 -3
  107. package/dist/date/getters/getFirstDayOfWeek.d.ts +17 -10
  108. package/dist/date/getters/getFirstDayOfWeek.mjs +2 -3
  109. package/dist/date/getters/getHour.cjs +3 -3
  110. package/dist/date/getters/getHour.d.ts +16 -14
  111. package/dist/date/getters/getHour.mjs +3 -3
  112. package/dist/date/getters/getLastDayOfMonth.cjs +2 -3
  113. package/dist/date/getters/getLastDayOfMonth.d.ts +16 -10
  114. package/dist/date/getters/getLastDayOfMonth.mjs +2 -3
  115. package/dist/date/getters/getLastDayOfWeek.cjs +2 -3
  116. package/dist/date/getters/getLastDayOfWeek.d.ts +17 -10
  117. package/dist/date/getters/getLastDayOfWeek.mjs +2 -3
  118. package/dist/date/getters/getMilliseconds.cjs +2 -2
  119. package/dist/date/getters/getMilliseconds.d.ts +11 -9
  120. package/dist/date/getters/getMilliseconds.mjs +2 -2
  121. package/dist/date/getters/getMinute.cjs +3 -3
  122. package/dist/date/getters/getMinute.d.ts +17 -15
  123. package/dist/date/getters/getMinute.mjs +3 -3
  124. package/dist/date/getters/getMonth.cjs +3 -3
  125. package/dist/date/getters/getMonth.d.ts +20 -15
  126. package/dist/date/getters/getMonth.mjs +3 -3
  127. package/dist/date/getters/getSecond.cjs +3 -3
  128. package/dist/date/getters/getSecond.d.ts +17 -15
  129. package/dist/date/getters/getSecond.mjs +3 -3
  130. package/dist/date/getters/getWeekOfYear.cjs +12 -11
  131. package/dist/date/getters/getWeekOfYear.d.ts +17 -11
  132. package/dist/date/getters/getWeekOfYear.mjs +12 -11
  133. package/dist/date/getters/getYear.cjs +3 -3
  134. package/dist/date/getters/getYear.d.ts +16 -15
  135. package/dist/date/getters/getYear.mjs +3 -3
  136. package/dist/date/index.cjs +12 -6
  137. package/dist/date/index.d.ts +5 -2
  138. package/dist/date/index.mjs +6 -3
  139. package/dist/date/is.cjs +3 -8
  140. package/dist/date/is.d.ts +9 -14
  141. package/dist/date/is.mjs +3 -8
  142. package/dist/date/isSafeTimeValue.d.ts +9 -13
  143. package/dist/date/isSafeTimestamp.d.ts +7 -16
  144. package/dist/date/isSerializedTheDate.cjs +20 -0
  145. package/dist/date/isSerializedTheDate.d.ts +31 -0
  146. package/dist/date/isSerializedTheDate.mjs +18 -0
  147. package/dist/date/isSerializedTheTime.cjs +20 -0
  148. package/dist/date/isSerializedTheTime.d.ts +31 -0
  149. package/dist/date/isSerializedTheTime.mjs +18 -0
  150. package/dist/date/isTime.cjs +3 -8
  151. package/dist/date/isTime.d.ts +7 -14
  152. package/dist/date/isTime.mjs +3 -8
  153. package/dist/date/kind.cjs +9 -0
  154. package/dist/date/kind.d.ts +1 -0
  155. package/dist/date/kind.mjs +7 -0
  156. package/dist/date/makeSafeTimeValue.d.ts +12 -11
  157. package/dist/date/makeSafeTimestamp.d.ts +12 -11
  158. package/dist/date/max.cjs +2 -2
  159. package/dist/date/max.d.ts +13 -13
  160. package/dist/date/max.mjs +2 -2
  161. package/dist/date/maxTime.cjs +2 -2
  162. package/dist/date/maxTime.d.ts +13 -21
  163. package/dist/date/maxTime.mjs +2 -2
  164. package/dist/date/min.cjs +2 -2
  165. package/dist/date/min.d.ts +13 -13
  166. package/dist/date/min.mjs +2 -2
  167. package/dist/date/minTime.cjs +2 -2
  168. package/dist/date/minTime.d.ts +13 -21
  169. package/dist/date/minTime.mjs +2 -2
  170. package/dist/date/now.cjs +3 -1
  171. package/dist/date/now.d.ts +9 -7
  172. package/dist/date/now.mjs +3 -1
  173. package/dist/date/operators/addDays.cjs +3 -5
  174. package/dist/date/operators/addDays.d.ts +14 -11
  175. package/dist/date/operators/addDays.mjs +3 -5
  176. package/dist/date/operators/addHours.cjs +3 -5
  177. package/dist/date/operators/addHours.d.ts +14 -11
  178. package/dist/date/operators/addHours.mjs +3 -5
  179. package/dist/date/operators/addMilliseconds.cjs +3 -5
  180. package/dist/date/operators/addMilliseconds.d.ts +14 -11
  181. package/dist/date/operators/addMilliseconds.mjs +3 -5
  182. package/dist/date/operators/addMinutes.cjs +3 -5
  183. package/dist/date/operators/addMinutes.d.ts +14 -11
  184. package/dist/date/operators/addMinutes.mjs +3 -5
  185. package/dist/date/operators/addMonths.cjs +2 -2
  186. package/dist/date/operators/addMonths.d.ts +13 -13
  187. package/dist/date/operators/addMonths.mjs +2 -2
  188. package/dist/date/operators/addSeconds.cjs +3 -5
  189. package/dist/date/operators/addSeconds.d.ts +14 -11
  190. package/dist/date/operators/addSeconds.mjs +3 -5
  191. package/dist/date/operators/addTime.cjs +13 -6
  192. package/dist/date/operators/addTime.d.ts +20 -18
  193. package/dist/date/operators/addTime.mjs +13 -6
  194. package/dist/date/operators/addWeeks.cjs +6 -5
  195. package/dist/date/operators/addWeeks.d.ts +14 -11
  196. package/dist/date/operators/addWeeks.mjs +6 -5
  197. package/dist/date/operators/addYears.cjs +2 -2
  198. package/dist/date/operators/addYears.d.ts +13 -13
  199. package/dist/date/operators/addYears.mjs +2 -2
  200. package/dist/date/operators/between.d.ts +11 -11
  201. package/dist/date/operators/betweenThan.d.ts +11 -11
  202. package/dist/date/operators/betweenThanTime.d.ts +18 -22
  203. package/dist/date/operators/betweenTime.d.ts +17 -21
  204. package/dist/date/operators/greater.d.ts +12 -9
  205. package/dist/date/operators/greaterThan.d.ts +14 -11
  206. package/dist/date/operators/greaterThanTime.d.ts +17 -21
  207. package/dist/date/operators/greaterTime.d.ts +16 -20
  208. package/dist/date/operators/less.d.ts +12 -9
  209. package/dist/date/operators/lessThan.d.ts +13 -10
  210. package/dist/date/operators/lessThanTime.d.ts +17 -21
  211. package/dist/date/operators/lessTime.d.ts +16 -20
  212. package/dist/date/operators/subtractDays.cjs +3 -5
  213. package/dist/date/operators/subtractDays.d.ts +14 -11
  214. package/dist/date/operators/subtractDays.mjs +3 -5
  215. package/dist/date/operators/subtractHours.cjs +3 -5
  216. package/dist/date/operators/subtractHours.d.ts +14 -11
  217. package/dist/date/operators/subtractHours.mjs +3 -5
  218. package/dist/date/operators/subtractMilliseconds.cjs +3 -5
  219. package/dist/date/operators/subtractMilliseconds.d.ts +14 -11
  220. package/dist/date/operators/subtractMilliseconds.mjs +3 -5
  221. package/dist/date/operators/subtractMinutes.cjs +3 -5
  222. package/dist/date/operators/subtractMinutes.d.ts +14 -11
  223. package/dist/date/operators/subtractMinutes.mjs +3 -5
  224. package/dist/date/operators/subtractMonths.cjs +2 -2
  225. package/dist/date/operators/subtractMonths.d.ts +17 -11
  226. package/dist/date/operators/subtractMonths.mjs +2 -2
  227. package/dist/date/operators/subtractSeconds.cjs +3 -5
  228. package/dist/date/operators/subtractSeconds.d.ts +14 -11
  229. package/dist/date/operators/subtractSeconds.mjs +3 -5
  230. package/dist/date/operators/subtractTime.cjs +13 -6
  231. package/dist/date/operators/subtractTime.d.ts +20 -18
  232. package/dist/date/operators/subtractTime.mjs +13 -6
  233. package/dist/date/operators/subtractWeeks.cjs +3 -5
  234. package/dist/date/operators/subtractWeeks.d.ts +14 -11
  235. package/dist/date/operators/subtractWeeks.mjs +3 -5
  236. package/dist/date/operators/subtractYears.cjs +2 -2
  237. package/dist/date/operators/subtractYears.d.ts +17 -11
  238. package/dist/date/operators/subtractYears.mjs +2 -2
  239. package/dist/date/round.cjs +2 -2
  240. package/dist/date/round.d.ts +11 -14
  241. package/dist/date/round.mjs +2 -2
  242. package/dist/date/serialize.cjs +14 -0
  243. package/dist/date/serialize.d.ts +41 -0
  244. package/dist/date/serialize.mjs +12 -0
  245. package/dist/date/sort.cjs +2 -2
  246. package/dist/date/sort.d.ts +16 -15
  247. package/dist/date/sort.mjs +2 -2
  248. package/dist/date/sortTimes.cjs +2 -2
  249. package/dist/date/sortTimes.d.ts +15 -21
  250. package/dist/date/sortTimes.mjs +2 -2
  251. package/dist/date/theDate.cjs +124 -0
  252. package/dist/date/theDate.d.ts +114 -0
  253. package/dist/date/theDate.mjs +122 -0
  254. package/dist/date/theTime.cjs +36 -0
  255. package/dist/date/theTime.d.ts +53 -0
  256. package/dist/date/theTime.mjs +34 -0
  257. package/dist/date/timezone.cjs +3 -0
  258. package/dist/date/timezone.d.ts +27 -0
  259. package/dist/date/timezone.mjs +3 -0
  260. package/dist/date/toISOString.cjs +5 -2
  261. package/dist/date/toISOString.d.ts +12 -10
  262. package/dist/date/toISOString.mjs +5 -2
  263. package/dist/date/toNative.cjs +4 -0
  264. package/dist/date/toNative.d.ts +12 -10
  265. package/dist/date/toNative.mjs +4 -0
  266. package/dist/date/toTimeValue.cjs +6 -2
  267. package/dist/date/toTimeValue.d.ts +14 -12
  268. package/dist/date/toTimeValue.mjs +6 -2
  269. package/dist/date/toTimestamp.cjs +5 -3
  270. package/dist/date/toTimestamp.d.ts +11 -9
  271. package/dist/date/toTimestamp.mjs +6 -4
  272. package/dist/date/today.cjs +3 -1
  273. package/dist/date/today.d.ts +14 -7
  274. package/dist/date/today.mjs +3 -1
  275. package/dist/date/tomorrow.cjs +2 -1
  276. package/dist/date/tomorrow.d.ts +12 -7
  277. package/dist/date/tomorrow.mjs +2 -1
  278. package/dist/date/types/index.d.ts +2 -2
  279. package/dist/date/types/serializedTheDate.d.ts +1 -0
  280. package/dist/date/types/serializedTheTime.d.ts +42 -0
  281. package/dist/date/types/spoolingDate.d.ts +2 -1
  282. package/dist/date/yesterday.cjs +2 -1
  283. package/dist/date/yesterday.d.ts +12 -7
  284. package/dist/date/yesterday.mjs +2 -1
  285. package/dist/generator/asyncGroup.cjs +31 -0
  286. package/dist/generator/asyncGroup.d.ts +39 -0
  287. package/dist/generator/asyncGroup.mjs +29 -0
  288. package/dist/generator/group.cjs +39 -0
  289. package/dist/generator/group.d.ts +101 -0
  290. package/dist/generator/group.mjs +36 -0
  291. package/dist/generator/index.cjs +5 -0
  292. package/dist/generator/index.d.ts +3 -0
  293. package/dist/generator/index.mjs +2 -0
  294. package/dist/index.cjs +7 -6
  295. package/dist/index.mjs +2 -3
  296. package/dist/metadata.json +94 -40
  297. package/dist/object/entries.cjs +7 -2
  298. package/dist/object/entries.mjs +7 -2
  299. package/dist/object/keys.cjs +7 -2
  300. package/dist/object/keys.d.ts +1 -1
  301. package/dist/object/keys.mjs +7 -2
  302. package/package.json +1 -1
  303. package/dist/common/toJSON.cjs +0 -37
  304. package/dist/common/toJSON.d.ts +0 -44
  305. package/dist/common/toJSON.mjs +0 -35
  306. package/dist/common/toString.cjs +0 -10
  307. package/dist/common/toString.d.ts +0 -17
  308. package/dist/common/toString.mjs +0 -8
  309. package/dist/common/toTransform.cjs +0 -37
  310. package/dist/common/toTransform.d.ts +0 -50
  311. package/dist/common/toTransform.mjs +0 -35
  312. package/dist/date/createTheDate.cjs +0 -13
  313. package/dist/date/createTheDate.d.ts +0 -28
  314. package/dist/date/createTheDate.mjs +0 -11
  315. package/dist/date/createTheTime.cjs +0 -13
  316. package/dist/date/createTheTime.d.ts +0 -25
  317. package/dist/date/createTheTime.mjs +0 -11
  318. package/dist/date/types/theDate.d.ts +0 -11
  319. package/dist/date/types/theTime.d.ts +0 -10
@@ -1,4 +1,31 @@
1
1
  import { type GetEnumValue } from "../common/enum";
2
+ /**
3
+ * Provides the list of supported IANA timezone identifiers.
4
+ *
5
+ * Signature: `timezone` → enum-like constant, `Timezone` → associated union type
6
+ *
7
+ * Use these values with timezone-aware date functions (`getYear`, `format`, `applyTimezone`, etc.).
8
+ *
9
+ * ```ts
10
+ * const input = D.create("2024-06-20", {
11
+ * hour: "12",
12
+ * });
13
+ *
14
+ * const ParisTimezone = D.timezone["Europe/Paris"];
15
+ * // Timezone: "Europe/Paris"
16
+ *
17
+ * const offset = D.getTimezoneOffset(input, "America/New_York");
18
+ * // offset: number
19
+ * ```
20
+ *
21
+ * @remarks
22
+ * - Values follow the IANA timezone database naming.
23
+ *
24
+ * @see https://utils.duplojs.dev/en/v1/api/date/getTimezoneOffset
25
+ *
26
+ * @namespace D
27
+ *
28
+ */
2
29
  export declare const timezone: {
3
30
  "Africa/Abidjan": "Africa/Abidjan";
4
31
  "Africa/Accra": "Africa/Accra";
@@ -1,5 +1,8 @@
1
1
  import { createEnum } from '../common/enum.mjs';
2
2
 
3
+ /**
4
+ * {@include date/timezone/index.md}
5
+ */
3
6
  const timezone = createEnum([
4
7
  "Africa/Abidjan",
5
8
  "Africa/Accra",
@@ -1,13 +1,16 @@
1
1
  'use strict';
2
2
 
3
+ var theDate = require('./theDate.cjs');
3
4
  var toNative = require('./toNative.cjs');
4
5
 
5
6
  /**
6
7
  * {@include date/toISOString/index.md}
7
8
  */
8
9
  function toISOString(input) {
9
- const date = toNative.toNative(input);
10
- return date.toISOString();
10
+ if (input instanceof theDate.TheDate) {
11
+ return input.toISOString();
12
+ }
13
+ return toNative.toNative(input).toISOString();
11
14
  }
12
15
 
13
16
  exports.toISOString = toISOString;
@@ -1,21 +1,23 @@
1
- import type { TheDate } from "./types";
1
+ import { TheDate } from "./theDate";
2
+ import type { SerializedTheDate } from "./types";
2
3
  /**
3
- * Converts a date to an ISO string.
4
+ * Converts a date value to ISO-8601 string.
4
5
  *
5
- * Signature: `toISOString(input)` → returns a value
6
+ * Signature: `toISOString(input)` → `string`
6
7
  *
7
- * The input value is not mutated.
8
+ * `input` accepts `TheDate` or `SerializedTheDate`.
8
9
  *
9
10
  * ```ts
10
- * const input = D.create("2023-11-14");
11
- * const result = D.toISOString(input);
12
- * // result: "2023-11-14T00:00:00.000Z"
11
+ * const input = D.create("2024-06-20");
12
+ * const iso = D.toISOString(input);
13
+ * // iso: string
14
+ *
15
+ * const iso2 = D.toISOString("date1718841600000+");
16
+ * // iso2: string
13
17
  *
14
18
  * pipe(
15
19
  * input,
16
20
  * D.toISOString,
17
- * ); // result: "2023-11-14T00:00:00.000Z"
18
- *
19
21
  * ```
20
22
  *
21
23
  * @see https://utils.duplojs.dev/en/v1/api/date/toISOString
@@ -23,4 +25,4 @@ import type { TheDate } from "./types";
23
25
  * @namespace D
24
26
  *
25
27
  */
26
- export declare function toISOString<GenericInput extends TheDate>(input: GenericInput): string;
28
+ export declare function toISOString<GenericInput extends TheDate | SerializedTheDate>(input: GenericInput): string;
@@ -1,11 +1,14 @@
1
+ import { TheDate } from './theDate.mjs';
1
2
  import { toNative } from './toNative.mjs';
2
3
 
3
4
  /**
4
5
  * {@include date/toISOString/index.md}
5
6
  */
6
7
  function toISOString(input) {
7
- const date = toNative(input);
8
- return date.toISOString();
8
+ if (input instanceof TheDate) {
9
+ return input.toISOString();
10
+ }
11
+ return toNative(input).toISOString();
9
12
  }
10
13
 
11
14
  export { toISOString };
@@ -1,11 +1,15 @@
1
1
  'use strict';
2
2
 
3
+ var theDate = require('./theDate.cjs');
3
4
  var toTimestamp = require('./toTimestamp.cjs');
4
5
 
5
6
  /**
6
7
  * {@include date/toNative/index.md}
7
8
  */
8
9
  function toNative(input) {
10
+ if (input instanceof theDate.TheDate) {
11
+ return input.toNative();
12
+ }
9
13
  const timestamp = toTimestamp.toTimestamp(input);
10
14
  return new Date(timestamp);
11
15
  }
@@ -1,21 +1,23 @@
1
- import type { TheDate } from "./types";
1
+ import { TheDate } from "./theDate";
2
+ import type { SerializedTheDate } from "./types";
2
3
  /**
3
- * Converts a TheDate to a native Date.
4
+ * Converts a date value to native JavaScript `Date`.
4
5
  *
5
- * Signature: `toNative(input)` → returns a value
6
+ * Signature: `toNative(input)` → `Date`
6
7
  *
7
- * The input value is not mutated.
8
+ * `input` accepts `TheDate` or `SerializedTheDate`.
8
9
  *
9
10
  * ```ts
10
- * const input = D.create("2023-11-14");
11
- * const result = D.toNative(input);
12
- * // result: Date { time: 1699920000000 }
11
+ * const input = D.create("2024-06-20");
12
+ * const nativeDate = D.toNative(input);
13
+ * // nativeDate: Date
14
+ *
15
+ * const nativeDate2 = D.toNative("date1718841600000+");
16
+ * // nativeDate2: Date
13
17
  *
14
18
  * pipe(
15
19
  * input,
16
20
  * D.toNative,
17
- * ); // result: Date { time: 1699920000000 }
18
- *
19
21
  * ```
20
22
  *
21
23
  * @see https://utils.duplojs.dev/en/v1/api/date/toNative
@@ -23,4 +25,4 @@ import type { TheDate } from "./types";
23
25
  * @namespace D
24
26
  *
25
27
  */
26
- export declare function toNative<GenericInput extends TheDate>(input: GenericInput): Date;
28
+ export declare function toNative<GenericInput extends TheDate | SerializedTheDate>(input: GenericInput): Date;
@@ -1,9 +1,13 @@
1
+ import { TheDate } from './theDate.mjs';
1
2
  import { toTimestamp } from './toTimestamp.mjs';
2
3
 
3
4
  /**
4
5
  * {@include date/toNative/index.md}
5
6
  */
6
7
  function toNative(input) {
8
+ if (input instanceof TheDate) {
9
+ return input.toNative();
10
+ }
7
11
  const timestamp = toTimestamp(input);
8
12
  return new Date(timestamp);
9
13
  }
@@ -1,13 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var constants = require('./constants.cjs');
4
3
  var makeSafeTimeValue = require('./makeSafeTimeValue.cjs');
4
+ var theTime = require('./theTime.cjs');
5
+ var constants = require('./constants.cjs');
5
6
 
6
7
  /**
7
8
  * {@include date/toTimeValue/index.md}
8
9
  */
9
10
  function toTimeValue(input) {
10
- const match = input.match(constants.theTimeRegex);
11
+ if (input instanceof theTime.TheTime) {
12
+ return input.toNative();
13
+ }
14
+ const match = input.match(constants.serializeTheTimeRegex);
11
15
  const { value, sign } = match.groups;
12
16
  return makeSafeTimeValue.makeSafeTimeValue(Number(sign === "-"
13
17
  ? `-${value}`
@@ -1,21 +1,23 @@
1
- import { type TheTime } from "./types";
1
+ import { TheTime } from "./theTime";
2
+ import type { SerializedTheTime } from "./types";
2
3
  /**
3
- * Converts a TheTime to a millisecond value.
4
+ * Converts a duration value to a numeric millisecond time value.
4
5
  *
5
- * Signature: `toTimeValue(input)` → returns a value
6
+ * Signature: `toTimeValue(input)` → `number`
6
7
  *
7
- * The input value is not mutated.
8
+ * `input` accepts `TheTime` or `SerializedTheTime`.
8
9
  *
9
10
  * ```ts
10
- * const input = D.createTheTime(90_000);
11
- * const result = D.toTimeValue(input);
12
- * // result: 90000
11
+ * const input = D.createTime(90_000, "millisecond");
12
+ * const value = D.toTimeValue(input);
13
+ * // value: number
13
14
  *
14
- * const result2 = D.toTimeValue("time3600000-");
15
- * // result2: -3600000
15
+ * const value2 = D.toTimeValue("time3600000-");
16
+ * // value2: number
16
17
  *
17
- * const result3 = D.toTimeValue("time90000+");
18
- * // result3: 90000
18
+ * pipe(
19
+ * input,
20
+ * D.toTimeValue,
19
21
  * ```
20
22
  *
21
23
  * @see https://utils.duplojs.dev/en/v1/api/date/toTimeValue
@@ -23,4 +25,4 @@ import { type TheTime } from "./types";
23
25
  * @namespace D
24
26
  *
25
27
  */
26
- export declare function toTimeValue<GenericInput extends TheTime>(input: GenericInput): number;
28
+ export declare function toTimeValue<GenericInput extends TheTime | SerializedTheTime>(input: GenericInput): number;
@@ -1,11 +1,15 @@
1
- import { theTimeRegex } from './constants.mjs';
2
1
  import { makeSafeTimeValue } from './makeSafeTimeValue.mjs';
2
+ import { TheTime } from './theTime.mjs';
3
+ import { serializeTheTimeRegex } from './constants.mjs';
3
4
 
4
5
  /**
5
6
  * {@include date/toTimeValue/index.md}
6
7
  */
7
8
  function toTimeValue(input) {
8
- const match = input.match(theTimeRegex);
9
+ if (input instanceof TheTime) {
10
+ return input.toNative();
11
+ }
12
+ const match = input.match(serializeTheTimeRegex);
9
13
  const { value, sign } = match.groups;
10
14
  return makeSafeTimeValue(Number(sign === "-"
11
15
  ? `-${value}`
@@ -2,14 +2,16 @@
2
2
 
3
3
  var constants = require('./constants.cjs');
4
4
  var makeSafeTimestamp = require('./makeSafeTimestamp.cjs');
5
+ var theDate = require('./theDate.cjs');
5
6
 
6
7
  /**
7
8
  * {@include date/toTimestamp/index.md}
8
9
  */
9
10
  function toTimestamp(input) {
10
- const match = input.startsWith("date")
11
- ? input.match(constants.theDateRegex)
12
- : input.match(constants.theTimeRegex);
11
+ if (input instanceof theDate.TheDate) {
12
+ return input.getTime();
13
+ }
14
+ const match = input.match(constants.serializeTheDateRegex);
13
15
  const { value, sign } = match.groups;
14
16
  return makeSafeTimestamp.makeSafeTimestamp(Number(sign === "-"
15
17
  ? `-${value}`
@@ -1,21 +1,23 @@
1
- import type { TheDate } from "./types";
1
+ import { TheDate } from "./theDate";
2
+ import type { SerializedTheDate } from "./types";
2
3
  /**
3
- * Converts a TheDate to a UTC timestamp.
4
+ * Converts a date value to UTC timestamp (milliseconds).
4
5
  *
5
- * Signature: `toTimestamp(input)` → returns a value
6
+ * Signature: `toTimestamp(input)` → `number`
6
7
  *
7
- * The input value is not mutated.
8
+ * `input` accepts `TheDate` or `SerializedTheDate`.
8
9
  *
9
10
  * ```ts
10
11
  * const input = D.create("2024-06-20");
11
- * const result = D.toTimestamp(input);
12
- * // result: 1718841600000
12
+ * const timestamp = D.toTimestamp(input);
13
+ * // timestamp: number
14
+ *
15
+ * const timestamp2 = D.toTimestamp("date1718841600000+");
16
+ * // timestamp2: number
13
17
  *
14
18
  * pipe(
15
19
  * input,
16
20
  * D.toTimestamp,
17
- * ); // result: 1718841600000
18
- *
19
21
  * ```
20
22
  *
21
23
  * @see https://utils.duplojs.dev/en/v1/api/date/toTimestamp
@@ -23,4 +25,4 @@ import type { TheDate } from "./types";
23
25
  * @namespace D
24
26
  *
25
27
  */
26
- export declare function toTimestamp<GenericInput extends TheDate>(input: GenericInput): number;
28
+ export declare function toTimestamp<GenericInput extends TheDate | SerializedTheDate>(input: GenericInput): number;
@@ -1,13 +1,15 @@
1
- import { theDateRegex, theTimeRegex } from './constants.mjs';
1
+ import { serializeTheDateRegex } from './constants.mjs';
2
2
  import { makeSafeTimestamp } from './makeSafeTimestamp.mjs';
3
+ import { TheDate } from './theDate.mjs';
3
4
 
4
5
  /**
5
6
  * {@include date/toTimestamp/index.md}
6
7
  */
7
8
  function toTimestamp(input) {
8
- const match = input.startsWith("date")
9
- ? input.match(theDateRegex)
10
- : input.match(theTimeRegex);
9
+ if (input instanceof TheDate) {
10
+ return input.getTime();
11
+ }
12
+ const match = input.match(serializeTheDateRegex);
11
13
  const { value, sign } = match.groups;
12
14
  return makeSafeTimestamp(Number(sign === "-"
13
15
  ? `-${value}`
@@ -1,11 +1,13 @@
1
1
  'use strict';
2
2
 
3
+ var theDate = require('./theDate.cjs');
4
+
3
5
  /**
4
6
  * {@include date/today/index.md}
5
7
  */
6
8
  function today() {
7
9
  const timestamp = new Date().setUTCHours(0, 0, 0, 0);
8
- return `date${timestamp}+`;
10
+ return theDate.TheDate.new(timestamp);
9
11
  }
10
12
 
11
13
  exports.today = today;
@@ -1,19 +1,26 @@
1
+ import { TheDate } from "./theDate";
1
2
  /**
2
- * Returns today's date as TheDate.
3
+ * Returns current day at UTC midnight as `TheDate`.
3
4
  *
4
- * Signature: `today()` → returns a value
5
- *
6
- * The input value is not mutated.
5
+ * Signature: `today()` → `TheDate`
7
6
  *
8
7
  * ```ts
9
- * const result = D.today();
10
- * // result: "date" + timestamp
8
+ * const value = D.today();
9
+ * // value: TheDate
10
+ *
11
+ * const hour = D.getHour(value);
12
+ * // hour: 0
11
13
  *
14
+ * const serialized = D.serialize(value);
15
+ * // serialized: SerializedTheDate
12
16
  * ```
13
17
  *
18
+ * @remarks
19
+ * - Time part is normalized to `00:00:00.000` UTC.
20
+ *
14
21
  * @see https://utils.duplojs.dev/en/v1/api/date/today
15
22
  *
16
23
  * @namespace D
17
24
  *
18
25
  */
19
- export declare function today(): `date${number}+`;
26
+ export declare function today(): TheDate;
@@ -1,9 +1,11 @@
1
+ import { TheDate } from './theDate.mjs';
2
+
1
3
  /**
2
4
  * {@include date/today/index.md}
3
5
  */
4
6
  function today() {
5
7
  const timestamp = new Date().setUTCHours(0, 0, 0, 0);
6
- return `date${timestamp}+`;
8
+ return TheDate.new(timestamp);
7
9
  }
8
10
 
9
11
  export { today };
@@ -1,13 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  var constants = require('./constants.cjs');
4
+ var theDate = require('./theDate.cjs');
4
5
 
5
6
  /**
6
7
  * {@include date/tomorrow/index.md}
7
8
  */
8
9
  function tomorrow() {
9
10
  const timestamp = Date.now() + constants.millisecondsInOneDay;
10
- return `date${timestamp}+`;
11
+ return theDate.TheDate.new(timestamp);
11
12
  }
12
13
 
13
14
  exports.tomorrow = tomorrow;
@@ -1,19 +1,24 @@
1
+ import { TheDate } from "./theDate";
1
2
  /**
2
- * Returns tomorrow's date as TheDate.
3
+ * Returns an instant approximately one day after now as `TheDate`.
3
4
  *
4
- * Signature: `tomorrow()` → returns a value
5
- *
6
- * The input value is not mutated.
5
+ * Signature: `tomorrow()` → `TheDate`
7
6
  *
8
7
  * ```ts
9
- * const result = D.tomorrow();
10
- * // result: "date" + timestamp
8
+ * const value = D.tomorrow();
9
+ * // value: TheDate
10
+ *
11
+ * const iso = D.toISOString(value);
12
+ * // iso: string
11
13
  *
12
14
  * ```
13
15
  *
16
+ * @remarks
17
+ * - Computed from current timestamp plus one day in milliseconds.
18
+ *
14
19
  * @see https://utils.duplojs.dev/en/v1/api/date/tomorrow
15
20
  *
16
21
  * @namespace D
17
22
  *
18
23
  */
19
- export declare function tomorrow(): `date${number}+`;
24
+ export declare function tomorrow(): TheDate;
@@ -1,11 +1,12 @@
1
1
  import { millisecondsInOneDay } from './constants.mjs';
2
+ import { TheDate } from './theDate.mjs';
2
3
 
3
4
  /**
4
5
  * {@include date/tomorrow/index.md}
5
6
  */
6
7
  function tomorrow() {
7
8
  const timestamp = Date.now() + millisecondsInOneDay;
8
- return `date${timestamp}+`;
9
+ return TheDate.new(timestamp);
9
10
  }
10
11
 
11
12
  export { tomorrow };
@@ -1,9 +1,9 @@
1
- export * from "./theDate";
1
+ export * from "./serializedTheDate";
2
2
  export * from "./isLeapYear";
3
3
  export * from "./unit";
4
4
  export * from "./month";
5
5
  export * from "./time";
6
6
  export * from "./isSafeYear";
7
7
  export * from "./spoolingDate";
8
- export * from "./theTime";
8
+ export * from "./serializedTheTime";
9
9
  export * from "./spoolingTime";
@@ -0,0 +1 @@
1
+ export type SerializedTheDate = `date${number}${"-" | "+"}`;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Represents an immutable time value object (`TheTime`) stored in milliseconds.
3
+ *
4
+ * Signature: `TheTime` → immutable class-like value object
5
+ *
6
+ * `TheTime` solves unit-fragmentation issues (`hours`, `minutes`, `seconds`) by using a single safe millisecond representation while keeping strong typing and explicit serialization.
7
+ *
8
+ * ```ts
9
+ * const theTime = D.createTime(2, "hour");
10
+ * // theTime: TheTime
11
+ *
12
+ * const timeValue = theTime.toNative();
13
+ * // timeValue: number
14
+ *
15
+ * const serialized = D.serialize(theTime);
16
+ * // serialized: SerializedTheTime
17
+ *
18
+ * const date = D.create("2025-10-20");
19
+ * const dateWithDuration = D.addTime(date, theTime);
20
+ * // dateWithDuration: TheDate
21
+ *
22
+ * const threeHours = D.createTime(3, "hour");
23
+ * // threeHours: TheTime
24
+ *
25
+ * const asMilliseconds = D.toTimeValue(theTime);
26
+ * // asMilliseconds: number
27
+ * ```
28
+ *
29
+ * @remarks
30
+ * - `TheTime` is not a `number`, but it behaves as an immutable numeric time value.
31
+ * - Date unit operators (`addMinutes`, `subtractDays`, etc.) target `TheDate`; `TheTime` is used as a normalized duration value.
32
+ * - Use `D.serialize(theTime)` to convert to `SerializedTheTime`.
33
+ * - Use `D.createTime(...)` / `D.createTimeOrThrow(...)` to construct instances.
34
+ *
35
+ * @see https://utils.duplojs.dev/en/v1/api/date/theTime
36
+ * @see https://utils.duplojs.dev/en/v1/api/date/serialize
37
+ * @see https://utils.duplojs.dev/en/v1/api/date/createTime
38
+ *
39
+ * @namespace D
40
+ *
41
+ */
42
+ export type SerializedTheTime = `time${number}${"+" | "-"}`;
@@ -1,6 +1,7 @@
1
+ import type { TheDate } from "../theDate";
1
2
  import { type Timezone } from "../timezone";
2
3
  export interface SpoolingDate {
3
- value: string | Date | number;
4
+ value: TheDate | string | Date | number;
4
5
  timezone?: Timezone;
5
6
  year?: number;
6
7
  month?: number;
@@ -1,13 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  var constants = require('./constants.cjs');
4
+ var theDate = require('./theDate.cjs');
4
5
 
5
6
  /**
6
7
  * {@include date/yesterday/index.md}
7
8
  */
8
9
  function yesterday() {
9
10
  const timestamp = Date.now() - constants.millisecondsInOneDay;
10
- return `date${timestamp}+`;
11
+ return theDate.TheDate.new(timestamp);
11
12
  }
12
13
 
13
14
  exports.yesterday = yesterday;
@@ -1,19 +1,24 @@
1
+ import { TheDate } from "./theDate";
1
2
  /**
2
- * Returns yesterday's date as TheDate.
3
+ * Returns an instant approximately one day before now as `TheDate`.
3
4
  *
4
- * Signature: `yesterday()` → returns a value
5
- *
6
- * The input value is not mutated.
5
+ * Signature: `yesterday()` → `TheDate`
7
6
  *
8
7
  * ```ts
9
- * const result = D.yesterday();
10
- * // result: "date" + timestamp
8
+ * const value = D.yesterday();
9
+ * // value: TheDate
10
+ *
11
+ * const iso = D.toISOString(value);
12
+ * // iso: string
11
13
  *
12
14
  * ```
13
15
  *
16
+ * @remarks
17
+ * - Computed from current timestamp minus one day in milliseconds.
18
+ *
14
19
  * @see https://utils.duplojs.dev/en/v1/api/date/yesterday
15
20
  *
16
21
  * @namespace D
17
22
  *
18
23
  */
19
- export declare function yesterday(): `date${number}+`;
24
+ export declare function yesterday(): TheDate;
@@ -1,11 +1,12 @@
1
1
  import { millisecondsInOneDay } from './constants.mjs';
2
+ import { TheDate } from './theDate.mjs';
2
3
 
3
4
  /**
4
5
  * {@include date/yesterday/index.md}
5
6
  */
6
7
  function yesterday() {
7
8
  const timestamp = Date.now() - millisecondsInOneDay;
8
- return `date${timestamp}+`;
9
+ return TheDate.new(timestamp);
9
10
  }
10
11
 
11
12
  export { yesterday };
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ var group = require('./group.cjs');
4
+
5
+ function asyncGroup(...args) {
6
+ if (args.length === 1) {
7
+ const [theFunction] = args;
8
+ return (asyncIterator) => asyncGroup(asyncIterator, theFunction);
9
+ }
10
+ const [asyncIterator, theFunction] = args;
11
+ const result = {};
12
+ let index = 0;
13
+ return (async () => {
14
+ for await (const element of asyncIterator) {
15
+ const { group: group$1, value } = await theFunction(element, {
16
+ index,
17
+ output: group.groupOutput,
18
+ });
19
+ if (result[group$1]) {
20
+ result[group$1].push(value);
21
+ }
22
+ else {
23
+ result[group$1] = [value];
24
+ }
25
+ index++;
26
+ }
27
+ return result;
28
+ })();
29
+ }
30
+
31
+ exports.asyncGroup = asyncGroup;