@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,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var createOrThrow = require('./createOrThrow.cjs');
4
3
  var toTimestamp = require('./toTimestamp.cjs');
4
+ var theDate = require('./theDate.cjs');
5
5
 
6
6
  function sort(...args) {
7
7
  if (args.length === 1) {
@@ -14,7 +14,7 @@ function sort(...args) {
14
14
  .sort(type === "DSC"
15
15
  ? (first, second) => second - first
16
16
  : (first, second) => first - second)
17
- .map(createOrThrow.createOrThrow);
17
+ .map(theDate.TheDate.new);
18
18
  }
19
19
 
20
20
  exports.sort = sort;
@@ -1,33 +1,34 @@
1
- import { type SortType } from "../common";
2
- import { type TheDate } from "./types";
1
+ import type { SortType } from "../common/types/sortType";
2
+ import { TheDate } from "./theDate";
3
+ import type { SerializedTheDate } from "./types";
3
4
  /**
4
- * Sorts dates in ascending or descending order.
5
+ * Sorts date values and returns normalized `TheDate[]`.
5
6
  *
6
7
  * **Supported call styles:**
7
- * - Classic: `sort(array, type)` → returns a value
8
- * - Curried: `sort(type)` → returns a function waiting for the input
9
- *
10
- * The input value is not mutated.
8
+ * - Classic: `sort(array, type)` → `TheDate[]`
9
+ * - Curried: `sort(type)` → `(array) => TheDate[]`
11
10
  *
12
11
  * ```ts
13
- * const input = [D.tomorrow(), D.yesterday(), D.today()] as const;
12
+ * const input = [
13
+ * D.create("2024-06-03"),
14
+ * "date1717286400000+",
15
+ * D.create("2024-06-01"),
16
+ * ] as const;
14
17
  *
15
- * const result = D.sort(input, "ASC");
18
+ * const asc = D.sort(input, "ASC");
19
+ * // asc: TheDate[]
16
20
  *
17
21
  * pipe(
18
22
  * input,
19
- * D.sort("ASC"),
20
- * );
21
- *
22
23
  * ```
23
24
  *
24
25
  * @remarks
25
- * - Sort order uses "ASC" or "DSC".
26
+ * - `type` is `"ASC"` or `"DSC"`.
26
27
  *
27
28
  * @see https://utils.duplojs.dev/en/v1/api/date/sort
28
29
  *
29
30
  * @namespace D
30
31
  *
31
32
  */
32
- export declare function sort<GenericArray extends readonly TheDate[]>(type: SortType): (array: GenericArray) => TheDate[];
33
- export declare function sort<GenericArray extends readonly TheDate[]>(array: GenericArray, type: SortType): TheDate[];
33
+ export declare function sort<GenericArray extends readonly (TheDate | SerializedTheDate)[]>(type: SortType): (array: GenericArray) => TheDate[];
34
+ export declare function sort<GenericArray extends readonly (TheDate | SerializedTheDate)[]>(array: GenericArray, type: SortType): TheDate[];
@@ -1,5 +1,5 @@
1
- import { createOrThrow } from './createOrThrow.mjs';
2
1
  import { toTimestamp } from './toTimestamp.mjs';
2
+ import { TheDate } from './theDate.mjs';
3
3
 
4
4
  function sort(...args) {
5
5
  if (args.length === 1) {
@@ -12,7 +12,7 @@ function sort(...args) {
12
12
  .sort(type === "DSC"
13
13
  ? (first, second) => second - first
14
14
  : (first, second) => first - second)
15
- .map(createOrThrow);
15
+ .map(TheDate.new);
16
16
  }
17
17
 
18
18
  export { sort };
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var createTheTime = require('./createTheTime.cjs');
4
3
  var toTimeValue = require('./toTimeValue.cjs');
4
+ var theTime = require('./theTime.cjs');
5
5
 
6
6
  function sortTimes(...args) {
7
7
  if (args.length === 1) {
@@ -14,7 +14,7 @@ function sortTimes(...args) {
14
14
  .sort(type === "DSC"
15
15
  ? (first, second) => second - first
16
16
  : (first, second) => first - second)
17
- .map(createTheTime.createTheTime);
17
+ .map(theTime.TheTime.new);
18
18
  }
19
19
 
20
20
  exports.sortTimes = sortTimes;
@@ -1,40 +1,34 @@
1
- import { type SortType } from "../common";
2
- import { type TheTime } from "./types";
1
+ import type { SortType } from "../common/types/sortType";
2
+ import { TheTime } from "./theTime";
3
+ import type { SerializedTheTime } from "./types/serializedTheTime";
3
4
  /**
4
- * Sorts time values in ascending or descending order.
5
+ * Sorts duration values and returns normalized `TheTime[]`.
5
6
  *
6
7
  * **Supported call styles:**
7
- * - Classic: `sortTimes(array, type)` → returns a value
8
- * - Curried: `sortTimes(type)` → returns a function waiting for the input
9
- *
10
- * The input value is not mutated.
8
+ * - Classic: `sortTimes(array, type)` → `TheTime[]`
9
+ * - Curried: `sortTimes(type)` → `(array) => TheTime[]`
11
10
  *
12
11
  * ```ts
13
12
  * const input = [
14
- * D.createTheTime(3_000),
15
- * D.createTheTime(1_000),
16
- * D.createTheTime(2_000),
17
- * ];
18
- *
19
- * const result = D.sortTimes(input, "ASC");
20
- * // result: ["time1000+", "time2000+", "time3000+"]
13
+ * D.createTime(3_000, "millisecond"),
14
+ * "time1000+",
15
+ * D.createTime(2_000, "millisecond"),
16
+ * ] as const;
21
17
  *
22
- * const result2 = D.sortTimes(input, "DSC");
23
- * // result2: ["time3000+", "time2000+", "time1000+"]
18
+ * const asc = D.sortTimes(input, "ASC");
19
+ * // asc: TheTime[]
24
20
  *
25
21
  * pipe(
26
22
  * input,
27
- * D.sortTimes("ASC"),
28
- * ); // result: ["time1000+", "time2000+", "time3000+"]
29
23
  * ```
30
24
  *
31
25
  * @remarks
32
- * - Sort order uses "ASC" or "DSC".
26
+ * - `type` is `"ASC"` or `"DSC"`.
33
27
  *
34
28
  * @see https://utils.duplojs.dev/en/v1/api/date/sortTimes
35
29
  *
36
30
  * @namespace D
37
31
  *
38
32
  */
39
- export declare function sortTimes<GenericArray extends readonly TheTime[]>(type: SortType): (array: GenericArray) => TheTime[];
40
- export declare function sortTimes<GenericArray extends readonly TheTime[]>(array: GenericArray, type: SortType): TheTime[];
33
+ export declare function sortTimes<GenericArray extends readonly (TheTime | SerializedTheTime)[]>(type: SortType): (array: GenericArray) => TheTime[];
34
+ export declare function sortTimes<GenericArray extends readonly (TheTime | SerializedTheTime)[]>(array: GenericArray, type: SortType): TheTime[];
@@ -1,5 +1,5 @@
1
- import { createTheTime } from './createTheTime.mjs';
2
1
  import { toTimeValue } from './toTimeValue.mjs';
2
+ import { TheTime } from './theTime.mjs';
3
3
 
4
4
  function sortTimes(...args) {
5
5
  if (args.length === 1) {
@@ -12,7 +12,7 @@ function sortTimes(...args) {
12
12
  .sort(type === "DSC"
13
13
  ? (first, second) => second - first
14
14
  : (first, second) => first - second)
15
- .map(createTheTime);
15
+ .map(TheTime.new);
16
16
  }
17
17
 
18
18
  export { sortTimes };
@@ -0,0 +1,124 @@
1
+ 'use strict';
2
+
3
+ var kind = require('../common/kind.cjs');
4
+ var kind$1 = require('./kind.cjs');
5
+ var makeSafeTimestamp = require('./makeSafeTimestamp.cjs');
6
+ var serialize = require('./serialize.cjs');
7
+
8
+ const defaultKindValue = {};
9
+ /**
10
+ * {@include date/theDate/index.md}
11
+ */
12
+ class TheDate extends kind.kindHeritage("the-date", kind$1.createDateKind("the-date"), Date) {
13
+ constructor(timestamp) {
14
+ super(defaultKindValue, [timestamp]);
15
+ }
16
+ toNative() {
17
+ return new Date(this.getTime());
18
+ }
19
+ toString() {
20
+ return serialize.serialize(this);
21
+ }
22
+ toJSON() {
23
+ return serialize.serialize(this);
24
+ }
25
+ /**
26
+ * @deprecated this method does not work on ImmutableDate
27
+ */
28
+ setDate(_date) {
29
+ return this.getTime();
30
+ }
31
+ /**
32
+ * @deprecated this method does not work on ImmutableDate
33
+ */
34
+ setFullYear(_year, _month, _date) {
35
+ return this.getTime();
36
+ }
37
+ /**
38
+ * @deprecated this method does not work on ImmutableDate
39
+ */
40
+ setHours(_hours, _min, _sec, _ms) {
41
+ return this.getTime();
42
+ }
43
+ /**
44
+ * @deprecated this method does not work on ImmutableDate
45
+ */
46
+ setMilliseconds(_ms) {
47
+ return this.getTime();
48
+ }
49
+ /**
50
+ * @deprecated this method does not work on ImmutableDate
51
+ */
52
+ setMinutes(_min, _sec, _ms) {
53
+ return this.getTime();
54
+ }
55
+ /**
56
+ * @deprecated this method does not work on ImmutableDate
57
+ */
58
+ setMonth(_month, _date) {
59
+ return this.getTime();
60
+ }
61
+ /**
62
+ * @deprecated this method does not work on ImmutableDate
63
+ */
64
+ setSeconds(_sec, _ms) {
65
+ return this.getTime();
66
+ }
67
+ /**
68
+ * @deprecated this method does not work on ImmutableDate
69
+ */
70
+ setTime(_time) {
71
+ return this.getTime();
72
+ }
73
+ /**
74
+ * @deprecated this method does not work on ImmutableDate
75
+ */
76
+ setUTCDate(_date) {
77
+ return this.getTime();
78
+ }
79
+ /**
80
+ * @deprecated this method does not work on ImmutableDate
81
+ */
82
+ setUTCFullYear(_year, _month, _date) {
83
+ return this.getTime();
84
+ }
85
+ /**
86
+ * @deprecated this method does not work on ImmutableDate
87
+ */
88
+ setUTCHours(_hours, _min, _sec, _ms) {
89
+ return this.getTime();
90
+ }
91
+ /**
92
+ * @deprecated this method does not work on ImmutableDate
93
+ */
94
+ setUTCMilliseconds(_ms) {
95
+ return this.getTime();
96
+ }
97
+ /**
98
+ * @deprecated this method does not work on ImmutableDate
99
+ */
100
+ setUTCMinutes(_min, _sec, _ms) {
101
+ return this.getTime();
102
+ }
103
+ /**
104
+ * @deprecated this method does not work on ImmutableDate
105
+ */
106
+ setUTCMonth(_month, _date) {
107
+ return this.getTime();
108
+ }
109
+ /**
110
+ * @deprecated this method does not work on ImmutableDate
111
+ */
112
+ setUTCSeconds(_sec, _ms) {
113
+ return this.getTime();
114
+ }
115
+ /**
116
+ * @internal
117
+ * @deprecated use DDate.create | DDate.createOrThrow function
118
+ */
119
+ static "new"(timestamp) {
120
+ return new TheDate(makeSafeTimestamp.makeSafeTimestamp(timestamp));
121
+ }
122
+ }
123
+
124
+ exports.TheDate = TheDate;
@@ -0,0 +1,114 @@
1
+ import type { SerializedTheDate } from "./types/serializedTheDate";
2
+ declare const TheDate_base: new (params: {
3
+ "@DuplojsUtilsDate/the-date"?: unknown;
4
+ }, parentParams: readonly [value: string | number | Date]) => Date & import("../common/kind").Kind<import("../common/kind").KindDefinition<"the-date", unknown>, unknown> & import("../common/kind").Kind<import("../common/kind").KindDefinition<"@DuplojsUtilsDate/the-date", unknown>, unknown>;
5
+ /**
6
+ * Represents an immutable date-time object (`TheDate`) based on UTC.
7
+ *
8
+ * Signature: `TheDate` → immutable class extending `Date`
9
+ *
10
+ * `TheDate` solves two recurring problems: accidental mutation of native `Date`, and ambiguity between object dates and transport formats. You manipulate a stable object in code, and serialize it explicitly when you need to cross process boundaries.
11
+ *
12
+ * ```ts
13
+ * const theDate = D.create("2025-10-20");
14
+ * // theDate: TheDate
15
+ *
16
+ * const timestamp = theDate.getTime();
17
+ * // timestamp: number
18
+ *
19
+ * const nativeDate = theDate.toNative();
20
+ * // nativeDate: Date
21
+ *
22
+ * const serialized = D.serialize(theDate);
23
+ * // serialized: SerializedTheDate
24
+ *
25
+ * const yearInParis = D.getYear(theDate, "Europe/Paris");
26
+ * // yearInParis: number
27
+ *
28
+ * const datePlusOneDay = D.addDays(theDate, 1);
29
+ * // datePlusOneDay: TheDate
30
+ *
31
+ * const iso = D.toISOString(theDate);
32
+ * // iso: string
33
+ *
34
+ * ```
35
+ *
36
+ * @remarks
37
+ * - `TheDate` is immutable: mutation methods from `Date` are intentionally disabled.
38
+ * - Use `D.serialize(theDate)` to convert to `SerializedTheDate`.
39
+ * - Use `D.create(...)` / `D.createOrThrow(...)` to construct instances.
40
+ *
41
+ * @see https://utils.duplojs.dev/en/v1/api/date/theDate
42
+ * @see https://utils.duplojs.dev/en/v1/api/date/serialize
43
+ * @see https://utils.duplojs.dev/en/v1/api/date/create
44
+ *
45
+ * @namespace D
46
+ *
47
+ */
48
+ export declare class TheDate extends TheDate_base {
49
+ private constructor();
50
+ toNative(): Date;
51
+ toString(): SerializedTheDate;
52
+ toJSON(): SerializedTheDate;
53
+ /**
54
+ * @deprecated this method does not work on ImmutableDate
55
+ */
56
+ setDate(_date: number): number;
57
+ /**
58
+ * @deprecated this method does not work on ImmutableDate
59
+ */
60
+ setFullYear(_year: number, _month?: number, _date?: number): number;
61
+ /**
62
+ * @deprecated this method does not work on ImmutableDate
63
+ */
64
+ setHours(_hours: number, _min?: number, _sec?: number, _ms?: number): number;
65
+ /**
66
+ * @deprecated this method does not work on ImmutableDate
67
+ */
68
+ setMilliseconds(_ms: number): number;
69
+ /**
70
+ * @deprecated this method does not work on ImmutableDate
71
+ */
72
+ setMinutes(_min: number, _sec?: number, _ms?: number): number;
73
+ /**
74
+ * @deprecated this method does not work on ImmutableDate
75
+ */
76
+ setMonth(_month: number, _date?: number): number;
77
+ /**
78
+ * @deprecated this method does not work on ImmutableDate
79
+ */
80
+ setSeconds(_sec: number, _ms?: number): number;
81
+ /**
82
+ * @deprecated this method does not work on ImmutableDate
83
+ */
84
+ setTime(_time: number): number;
85
+ /**
86
+ * @deprecated this method does not work on ImmutableDate
87
+ */
88
+ setUTCDate(_date: number): number;
89
+ /**
90
+ * @deprecated this method does not work on ImmutableDate
91
+ */
92
+ setUTCFullYear(_year: number, _month?: number, _date?: number): number;
93
+ /**
94
+ * @deprecated this method does not work on ImmutableDate
95
+ */
96
+ setUTCHours(_hours: number, _min?: number, _sec?: number, _ms?: number): number;
97
+ /**
98
+ * @deprecated this method does not work on ImmutableDate
99
+ */
100
+ setUTCMilliseconds(_ms: number): number;
101
+ /**
102
+ * @deprecated this method does not work on ImmutableDate
103
+ */
104
+ setUTCMinutes(_min: number, _sec?: number, _ms?: number): number;
105
+ /**
106
+ * @deprecated this method does not work on ImmutableDate
107
+ */
108
+ setUTCMonth(_month: number, _date?: number): number;
109
+ /**
110
+ * @deprecated this method does not work on ImmutableDate
111
+ */
112
+ setUTCSeconds(_sec: number, _ms?: number): number;
113
+ }
114
+ export {};
@@ -0,0 +1,122 @@
1
+ import { kindHeritage } from '../common/kind.mjs';
2
+ import { createDateKind } from './kind.mjs';
3
+ import { makeSafeTimestamp } from './makeSafeTimestamp.mjs';
4
+ import { serialize } from './serialize.mjs';
5
+
6
+ const defaultKindValue = {};
7
+ /**
8
+ * {@include date/theDate/index.md}
9
+ */
10
+ class TheDate extends kindHeritage("the-date", createDateKind("the-date"), Date) {
11
+ constructor(timestamp) {
12
+ super(defaultKindValue, [timestamp]);
13
+ }
14
+ toNative() {
15
+ return new Date(this.getTime());
16
+ }
17
+ toString() {
18
+ return serialize(this);
19
+ }
20
+ toJSON() {
21
+ return serialize(this);
22
+ }
23
+ /**
24
+ * @deprecated this method does not work on ImmutableDate
25
+ */
26
+ setDate(_date) {
27
+ return this.getTime();
28
+ }
29
+ /**
30
+ * @deprecated this method does not work on ImmutableDate
31
+ */
32
+ setFullYear(_year, _month, _date) {
33
+ return this.getTime();
34
+ }
35
+ /**
36
+ * @deprecated this method does not work on ImmutableDate
37
+ */
38
+ setHours(_hours, _min, _sec, _ms) {
39
+ return this.getTime();
40
+ }
41
+ /**
42
+ * @deprecated this method does not work on ImmutableDate
43
+ */
44
+ setMilliseconds(_ms) {
45
+ return this.getTime();
46
+ }
47
+ /**
48
+ * @deprecated this method does not work on ImmutableDate
49
+ */
50
+ setMinutes(_min, _sec, _ms) {
51
+ return this.getTime();
52
+ }
53
+ /**
54
+ * @deprecated this method does not work on ImmutableDate
55
+ */
56
+ setMonth(_month, _date) {
57
+ return this.getTime();
58
+ }
59
+ /**
60
+ * @deprecated this method does not work on ImmutableDate
61
+ */
62
+ setSeconds(_sec, _ms) {
63
+ return this.getTime();
64
+ }
65
+ /**
66
+ * @deprecated this method does not work on ImmutableDate
67
+ */
68
+ setTime(_time) {
69
+ return this.getTime();
70
+ }
71
+ /**
72
+ * @deprecated this method does not work on ImmutableDate
73
+ */
74
+ setUTCDate(_date) {
75
+ return this.getTime();
76
+ }
77
+ /**
78
+ * @deprecated this method does not work on ImmutableDate
79
+ */
80
+ setUTCFullYear(_year, _month, _date) {
81
+ return this.getTime();
82
+ }
83
+ /**
84
+ * @deprecated this method does not work on ImmutableDate
85
+ */
86
+ setUTCHours(_hours, _min, _sec, _ms) {
87
+ return this.getTime();
88
+ }
89
+ /**
90
+ * @deprecated this method does not work on ImmutableDate
91
+ */
92
+ setUTCMilliseconds(_ms) {
93
+ return this.getTime();
94
+ }
95
+ /**
96
+ * @deprecated this method does not work on ImmutableDate
97
+ */
98
+ setUTCMinutes(_min, _sec, _ms) {
99
+ return this.getTime();
100
+ }
101
+ /**
102
+ * @deprecated this method does not work on ImmutableDate
103
+ */
104
+ setUTCMonth(_month, _date) {
105
+ return this.getTime();
106
+ }
107
+ /**
108
+ * @deprecated this method does not work on ImmutableDate
109
+ */
110
+ setUTCSeconds(_sec, _ms) {
111
+ return this.getTime();
112
+ }
113
+ /**
114
+ * @internal
115
+ * @deprecated use DDate.create | DDate.createOrThrow function
116
+ */
117
+ static "new"(timestamp) {
118
+ return new TheDate(makeSafeTimestamp(timestamp));
119
+ }
120
+ }
121
+
122
+ export { TheDate };
@@ -0,0 +1,36 @@
1
+ 'use strict';
2
+
3
+ var kind = require('../common/kind.cjs');
4
+ var kind$1 = require('./kind.cjs');
5
+ var makeSafeTimeValue = require('./makeSafeTimeValue.cjs');
6
+ var serialize = require('./serialize.cjs');
7
+
8
+ const defaultKindValue = {};
9
+ /**
10
+ * {@include date/theTime/index.md}
11
+ */
12
+ class TheTime extends kind.kindHeritage("the-time", kind$1.createDateKind("the-time")) {
13
+ timeValue;
14
+ constructor(timeValue) {
15
+ super(defaultKindValue);
16
+ this.timeValue = timeValue;
17
+ }
18
+ toNative() {
19
+ return this.timeValue;
20
+ }
21
+ toString() {
22
+ return serialize.serialize(this);
23
+ }
24
+ toJSON() {
25
+ return serialize.serialize(this);
26
+ }
27
+ /**
28
+ * @internal
29
+ * @deprecated use DDate.createTime | DDate.createTimeOrThrow function
30
+ */
31
+ static "new"(time) {
32
+ return new TheTime(makeSafeTimeValue.makeSafeTimeValue(time));
33
+ }
34
+ }
35
+
36
+ exports.TheTime = TheTime;
@@ -0,0 +1,53 @@
1
+ import { type SerializedTheTime } from "./types";
2
+ declare const TheTime_base: new (params?: {
3
+ "@DuplojsUtilsDate/the-time"?: unknown;
4
+ } | undefined) => import("../common/kind").Kind<import("../common/kind").KindDefinition<"the-time", unknown>, unknown> & import("../common/kind").Kind<import("../common/kind").KindDefinition<"@DuplojsUtilsDate/the-time", unknown>, unknown>;
5
+ /**
6
+ * Represents an immutable time value object (`TheTime`) stored in milliseconds.
7
+ *
8
+ * Signature: `TheTime` → immutable class-like value object
9
+ *
10
+ * `TheTime` solves unit-fragmentation issues (`hours`, `minutes`, `seconds`) by using a single safe millisecond representation while keeping strong typing and explicit serialization.
11
+ *
12
+ * ```ts
13
+ * const theTime = D.createTime(2, "hour");
14
+ * // theTime: TheTime
15
+ *
16
+ * const timeValue = theTime.toNative();
17
+ * // timeValue: number
18
+ *
19
+ * const serialized = D.serialize(theTime);
20
+ * // serialized: SerializedTheTime
21
+ *
22
+ * const date = D.create("2025-10-20");
23
+ * const dateWithDuration = D.addTime(date, theTime);
24
+ * // dateWithDuration: TheDate
25
+ *
26
+ * const threeHours = D.createTime(3, "hour");
27
+ * // threeHours: TheTime
28
+ *
29
+ * const asMilliseconds = D.toTimeValue(theTime);
30
+ * // asMilliseconds: number
31
+ * ```
32
+ *
33
+ * @remarks
34
+ * - `TheTime` is not a `number`, but it behaves as an immutable numeric time value.
35
+ * - Date unit operators (`addMinutes`, `subtractDays`, etc.) target `TheDate`; `TheTime` is used as a normalized duration value.
36
+ * - Use `D.serialize(theTime)` to convert to `SerializedTheTime`.
37
+ * - Use `D.createTime(...)` / `D.createTimeOrThrow(...)` to construct instances.
38
+ *
39
+ * @see https://utils.duplojs.dev/en/v1/api/date/theTime
40
+ * @see https://utils.duplojs.dev/en/v1/api/date/serialize
41
+ * @see https://utils.duplojs.dev/en/v1/api/date/createTime
42
+ *
43
+ * @namespace D
44
+ *
45
+ */
46
+ export declare class TheTime extends TheTime_base {
47
+ private timeValue;
48
+ private constructor();
49
+ toNative(): number;
50
+ toString(): SerializedTheTime;
51
+ toJSON(): SerializedTheTime;
52
+ }
53
+ export {};
@@ -0,0 +1,34 @@
1
+ import { kindHeritage } from '../common/kind.mjs';
2
+ import { createDateKind } from './kind.mjs';
3
+ import { makeSafeTimeValue } from './makeSafeTimeValue.mjs';
4
+ import { serialize } from './serialize.mjs';
5
+
6
+ const defaultKindValue = {};
7
+ /**
8
+ * {@include date/theTime/index.md}
9
+ */
10
+ class TheTime extends kindHeritage("the-time", createDateKind("the-time")) {
11
+ timeValue;
12
+ constructor(timeValue) {
13
+ super(defaultKindValue);
14
+ this.timeValue = timeValue;
15
+ }
16
+ toNative() {
17
+ return this.timeValue;
18
+ }
19
+ toString() {
20
+ return serialize(this);
21
+ }
22
+ toJSON() {
23
+ return serialize(this);
24
+ }
25
+ /**
26
+ * @internal
27
+ * @deprecated use DDate.createTime | DDate.createTimeOrThrow function
28
+ */
29
+ static "new"(time) {
30
+ return new TheTime(makeSafeTimeValue(time));
31
+ }
32
+ }
33
+
34
+ export { TheTime };
@@ -2,6 +2,9 @@
2
2
 
3
3
  var _enum = require('../common/enum.cjs');
4
4
 
5
+ /**
6
+ * {@include date/timezone/index.md}
7
+ */
5
8
  const timezone = _enum.createEnum([
6
9
  "Africa/Abidjan",
7
10
  "Africa/Accra",