@duplojs/utils 1.4.56 → 1.4.58

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 (297) hide show
  1. package/dist/clean/constraint/base.d.ts +6 -4
  2. package/dist/clean/constraint/defaultConstraint/index.d.ts +1 -0
  3. package/dist/clean/constraint/defaultConstraint/number.d.ts +6 -6
  4. package/dist/clean/constraint/defaultConstraint/string.d.ts +4 -4
  5. package/dist/clean/constraint/defaultConstraint/time.cjs +19 -0
  6. package/dist/clean/constraint/defaultConstraint/time.d.ts +61 -0
  7. package/dist/clean/constraint/defaultConstraint/time.mjs +16 -0
  8. package/dist/clean/constraint/set.d.ts +6 -4
  9. package/dist/clean/entity.cjs +9 -8
  10. package/dist/clean/entity.d.ts +16 -13
  11. package/dist/clean/entity.mjs +9 -8
  12. package/dist/clean/index.cjs +3 -0
  13. package/dist/clean/index.mjs +1 -0
  14. package/dist/clean/newType.d.ts +7 -5
  15. package/dist/clean/primitive/base.d.ts +25 -34
  16. package/dist/clean/primitive/operations/date/dateAddTime.d.ts +7 -11
  17. package/dist/clean/primitive/operations/date/dateGreaterThan.d.ts +9 -7
  18. package/dist/clean/primitive/operations/date/dateLessThan.d.ts +9 -7
  19. package/dist/clean/primitive/operations/date/dateMax.d.ts +3 -10
  20. package/dist/clean/primitive/operations/date/dateMin.d.ts +3 -10
  21. package/dist/clean/primitive/operations/date/dateSubtractTime.d.ts +7 -11
  22. package/dist/clean/primitive/operations/equal.cjs +1 -1
  23. package/dist/clean/primitive/operations/equal.d.ts +3 -3
  24. package/dist/clean/primitive/operations/equal.mjs +1 -1
  25. package/dist/clean/primitive/operations/sort.d.ts +8 -10
  26. package/dist/clean/primitive/operations/time/timeGreaterThan.d.ts +11 -9
  27. package/dist/clean/primitive/operations/time/timeLessThan.d.ts +11 -9
  28. package/dist/clean/primitive/operations/time/timeMax.cjs +2 -2
  29. package/dist/clean/primitive/operations/time/timeMax.d.ts +10 -17
  30. package/dist/clean/primitive/operations/time/timeMax.mjs +2 -2
  31. package/dist/clean/primitive/operations/time/timeMin.cjs +3 -3
  32. package/dist/clean/primitive/operations/time/timeMin.d.ts +10 -17
  33. package/dist/clean/primitive/operations/time/timeMin.mjs +3 -3
  34. package/dist/clean/unwrapEntity.cjs +13 -3
  35. package/dist/clean/unwrapEntity.d.ts +57 -5
  36. package/dist/clean/unwrapEntity.mjs +13 -3
  37. package/dist/common/index.d.ts +2 -4
  38. package/dist/common/kind.d.ts +1 -0
  39. package/dist/common/transformer.cjs +45 -0
  40. package/dist/common/transformer.d.ts +61 -0
  41. package/dist/common/transformer.mjs +40 -0
  42. package/dist/common/types/DeepReadonly.d.ts +1 -1
  43. package/dist/common/types/toLargeEnsemble.d.ts +2 -2
  44. package/dist/dataParser/base.d.ts +1 -1
  45. package/dist/dataParser/baseExtended.d.ts +1 -1
  46. package/dist/dataParser/extended/date.d.ts +9 -4
  47. package/dist/dataParser/extended/time.d.ts +28 -12
  48. package/dist/dataParser/identifier.d.ts +20 -8
  49. package/dist/dataParser/parsers/date.cjs +16 -12
  50. package/dist/dataParser/parsers/date.d.ts +15 -9
  51. package/dist/dataParser/parsers/date.mjs +16 -12
  52. package/dist/dataParser/parsers/time/checkers/max.cjs +3 -0
  53. package/dist/dataParser/parsers/time/checkers/max.d.ts +28 -0
  54. package/dist/dataParser/parsers/time/checkers/max.mjs +3 -0
  55. package/dist/dataParser/parsers/time/checkers/min.cjs +3 -0
  56. package/dist/dataParser/parsers/time/checkers/min.d.ts +28 -0
  57. package/dist/dataParser/parsers/time/checkers/min.mjs +3 -0
  58. package/dist/dataParser/parsers/time/index.cjs +14 -10
  59. package/dist/dataParser/parsers/time/index.d.ts +15 -9
  60. package/dist/dataParser/parsers/time/index.mjs +14 -10
  61. package/dist/date/applyTimezone.cjs +4 -4
  62. package/dist/date/applyTimezone.d.ts +18 -16
  63. package/dist/date/applyTimezone.mjs +2 -2
  64. package/dist/date/closestTo.cjs +6 -2
  65. package/dist/date/closestTo.d.ts +15 -15
  66. package/dist/date/closestTo.mjs +6 -2
  67. package/dist/date/constants.cjs +4 -4
  68. package/dist/date/constants.d.ts +2 -2
  69. package/dist/date/constants.mjs +3 -3
  70. package/dist/date/create.cjs +20 -10
  71. package/dist/date/create.d.ts +24 -38
  72. package/dist/date/create.mjs +21 -11
  73. package/dist/date/createOrThrow.d.ts +18 -20
  74. package/dist/date/createTime.cjs +16 -7
  75. package/dist/date/createTime.d.ts +19 -18
  76. package/dist/date/createTime.mjs +17 -8
  77. package/dist/date/createTimeOrThrow.d.ts +17 -20
  78. package/dist/date/each.cjs +6 -4
  79. package/dist/date/each.d.ts +21 -19
  80. package/dist/date/each.mjs +6 -4
  81. package/dist/date/format.d.ts +17 -15
  82. package/dist/date/formatTime.d.ts +17 -16
  83. package/dist/date/getTimezoneOffset.cjs +6 -3
  84. package/dist/date/getTimezoneOffset.d.ts +17 -18
  85. package/dist/date/getTimezoneOffset.mjs +6 -3
  86. package/dist/date/getters/getDayOfMonth.cjs +3 -3
  87. package/dist/date/getters/getDayOfMonth.d.ts +20 -14
  88. package/dist/date/getters/getDayOfMonth.mjs +3 -3
  89. package/dist/date/getters/getDayOfWeek.cjs +3 -3
  90. package/dist/date/getters/getDayOfWeek.d.ts +15 -12
  91. package/dist/date/getters/getDayOfWeek.mjs +3 -3
  92. package/dist/date/getters/getDayOfYear.cjs +6 -6
  93. package/dist/date/getters/getDayOfYear.d.ts +21 -13
  94. package/dist/date/getters/getDayOfYear.mjs +6 -6
  95. package/dist/date/getters/getFirstDayOfMonth.cjs +2 -3
  96. package/dist/date/getters/getFirstDayOfMonth.d.ts +16 -10
  97. package/dist/date/getters/getFirstDayOfMonth.mjs +2 -3
  98. package/dist/date/getters/getFirstDayOfWeek.cjs +2 -3
  99. package/dist/date/getters/getFirstDayOfWeek.d.ts +17 -10
  100. package/dist/date/getters/getFirstDayOfWeek.mjs +2 -3
  101. package/dist/date/getters/getHour.cjs +3 -3
  102. package/dist/date/getters/getHour.d.ts +16 -14
  103. package/dist/date/getters/getHour.mjs +3 -3
  104. package/dist/date/getters/getLastDayOfMonth.cjs +2 -3
  105. package/dist/date/getters/getLastDayOfMonth.d.ts +16 -10
  106. package/dist/date/getters/getLastDayOfMonth.mjs +2 -3
  107. package/dist/date/getters/getLastDayOfWeek.cjs +2 -3
  108. package/dist/date/getters/getLastDayOfWeek.d.ts +17 -10
  109. package/dist/date/getters/getLastDayOfWeek.mjs +2 -3
  110. package/dist/date/getters/getMilliseconds.cjs +2 -2
  111. package/dist/date/getters/getMilliseconds.d.ts +11 -9
  112. package/dist/date/getters/getMilliseconds.mjs +2 -2
  113. package/dist/date/getters/getMinute.cjs +3 -3
  114. package/dist/date/getters/getMinute.d.ts +17 -15
  115. package/dist/date/getters/getMinute.mjs +3 -3
  116. package/dist/date/getters/getMonth.cjs +3 -3
  117. package/dist/date/getters/getMonth.d.ts +20 -15
  118. package/dist/date/getters/getMonth.mjs +3 -3
  119. package/dist/date/getters/getSecond.cjs +3 -3
  120. package/dist/date/getters/getSecond.d.ts +17 -15
  121. package/dist/date/getters/getSecond.mjs +3 -3
  122. package/dist/date/getters/getWeekOfYear.cjs +12 -11
  123. package/dist/date/getters/getWeekOfYear.d.ts +17 -11
  124. package/dist/date/getters/getWeekOfYear.mjs +12 -11
  125. package/dist/date/getters/getYear.cjs +3 -3
  126. package/dist/date/getters/getYear.d.ts +16 -15
  127. package/dist/date/getters/getYear.mjs +3 -3
  128. package/dist/date/index.cjs +12 -6
  129. package/dist/date/index.d.ts +5 -2
  130. package/dist/date/index.mjs +6 -3
  131. package/dist/date/is.cjs +3 -8
  132. package/dist/date/is.d.ts +9 -14
  133. package/dist/date/is.mjs +3 -8
  134. package/dist/date/isSafeTimeValue.d.ts +9 -13
  135. package/dist/date/isSafeTimestamp.d.ts +7 -16
  136. package/dist/date/isSerializedTheDate.cjs +20 -0
  137. package/dist/date/isSerializedTheDate.d.ts +31 -0
  138. package/dist/date/isSerializedTheDate.mjs +18 -0
  139. package/dist/date/isSerializedTheTime.cjs +20 -0
  140. package/dist/date/isSerializedTheTime.d.ts +31 -0
  141. package/dist/date/isSerializedTheTime.mjs +18 -0
  142. package/dist/date/isTime.cjs +3 -8
  143. package/dist/date/isTime.d.ts +7 -14
  144. package/dist/date/isTime.mjs +3 -8
  145. package/dist/date/kind.cjs +9 -0
  146. package/dist/date/kind.d.ts +1 -0
  147. package/dist/date/kind.mjs +7 -0
  148. package/dist/date/makeSafeTimeValue.d.ts +12 -11
  149. package/dist/date/makeSafeTimestamp.d.ts +12 -11
  150. package/dist/date/max.cjs +2 -2
  151. package/dist/date/max.d.ts +13 -13
  152. package/dist/date/max.mjs +2 -2
  153. package/dist/date/maxTime.cjs +2 -2
  154. package/dist/date/maxTime.d.ts +13 -21
  155. package/dist/date/maxTime.mjs +2 -2
  156. package/dist/date/min.cjs +2 -2
  157. package/dist/date/min.d.ts +13 -13
  158. package/dist/date/min.mjs +2 -2
  159. package/dist/date/minTime.cjs +2 -2
  160. package/dist/date/minTime.d.ts +13 -21
  161. package/dist/date/minTime.mjs +2 -2
  162. package/dist/date/now.cjs +3 -1
  163. package/dist/date/now.d.ts +9 -7
  164. package/dist/date/now.mjs +3 -1
  165. package/dist/date/operators/addDays.cjs +3 -5
  166. package/dist/date/operators/addDays.d.ts +14 -11
  167. package/dist/date/operators/addDays.mjs +3 -5
  168. package/dist/date/operators/addHours.cjs +3 -5
  169. package/dist/date/operators/addHours.d.ts +14 -11
  170. package/dist/date/operators/addHours.mjs +3 -5
  171. package/dist/date/operators/addMilliseconds.cjs +3 -5
  172. package/dist/date/operators/addMilliseconds.d.ts +14 -11
  173. package/dist/date/operators/addMilliseconds.mjs +3 -5
  174. package/dist/date/operators/addMinutes.cjs +3 -5
  175. package/dist/date/operators/addMinutes.d.ts +14 -11
  176. package/dist/date/operators/addMinutes.mjs +3 -5
  177. package/dist/date/operators/addMonths.cjs +2 -2
  178. package/dist/date/operators/addMonths.d.ts +13 -13
  179. package/dist/date/operators/addMonths.mjs +2 -2
  180. package/dist/date/operators/addSeconds.cjs +3 -5
  181. package/dist/date/operators/addSeconds.d.ts +14 -11
  182. package/dist/date/operators/addSeconds.mjs +3 -5
  183. package/dist/date/operators/addTime.cjs +13 -6
  184. package/dist/date/operators/addTime.d.ts +20 -18
  185. package/dist/date/operators/addTime.mjs +13 -6
  186. package/dist/date/operators/addWeeks.cjs +6 -5
  187. package/dist/date/operators/addWeeks.d.ts +14 -11
  188. package/dist/date/operators/addWeeks.mjs +6 -5
  189. package/dist/date/operators/addYears.cjs +2 -2
  190. package/dist/date/operators/addYears.d.ts +13 -13
  191. package/dist/date/operators/addYears.mjs +2 -2
  192. package/dist/date/operators/between.d.ts +11 -11
  193. package/dist/date/operators/betweenThan.d.ts +11 -11
  194. package/dist/date/operators/betweenThanTime.d.ts +18 -22
  195. package/dist/date/operators/betweenTime.d.ts +17 -21
  196. package/dist/date/operators/greater.d.ts +12 -9
  197. package/dist/date/operators/greaterThan.d.ts +14 -11
  198. package/dist/date/operators/greaterThanTime.d.ts +17 -21
  199. package/dist/date/operators/greaterTime.d.ts +16 -20
  200. package/dist/date/operators/less.d.ts +12 -9
  201. package/dist/date/operators/lessThan.d.ts +13 -10
  202. package/dist/date/operators/lessThanTime.d.ts +17 -21
  203. package/dist/date/operators/lessTime.d.ts +16 -20
  204. package/dist/date/operators/subtractDays.cjs +3 -5
  205. package/dist/date/operators/subtractDays.d.ts +14 -11
  206. package/dist/date/operators/subtractDays.mjs +3 -5
  207. package/dist/date/operators/subtractHours.cjs +3 -5
  208. package/dist/date/operators/subtractHours.d.ts +14 -11
  209. package/dist/date/operators/subtractHours.mjs +3 -5
  210. package/dist/date/operators/subtractMilliseconds.cjs +3 -5
  211. package/dist/date/operators/subtractMilliseconds.d.ts +14 -11
  212. package/dist/date/operators/subtractMilliseconds.mjs +3 -5
  213. package/dist/date/operators/subtractMinutes.cjs +3 -5
  214. package/dist/date/operators/subtractMinutes.d.ts +14 -11
  215. package/dist/date/operators/subtractMinutes.mjs +3 -5
  216. package/dist/date/operators/subtractMonths.cjs +2 -2
  217. package/dist/date/operators/subtractMonths.d.ts +17 -11
  218. package/dist/date/operators/subtractMonths.mjs +2 -2
  219. package/dist/date/operators/subtractSeconds.cjs +3 -5
  220. package/dist/date/operators/subtractSeconds.d.ts +14 -11
  221. package/dist/date/operators/subtractSeconds.mjs +3 -5
  222. package/dist/date/operators/subtractTime.cjs +13 -6
  223. package/dist/date/operators/subtractTime.d.ts +20 -18
  224. package/dist/date/operators/subtractTime.mjs +13 -6
  225. package/dist/date/operators/subtractWeeks.cjs +3 -5
  226. package/dist/date/operators/subtractWeeks.d.ts +14 -11
  227. package/dist/date/operators/subtractWeeks.mjs +3 -5
  228. package/dist/date/operators/subtractYears.cjs +2 -2
  229. package/dist/date/operators/subtractYears.d.ts +17 -11
  230. package/dist/date/operators/subtractYears.mjs +2 -2
  231. package/dist/date/round.cjs +2 -2
  232. package/dist/date/round.d.ts +11 -14
  233. package/dist/date/round.mjs +2 -2
  234. package/dist/date/serialize.cjs +14 -0
  235. package/dist/date/serialize.d.ts +41 -0
  236. package/dist/date/serialize.mjs +12 -0
  237. package/dist/date/sort.cjs +2 -2
  238. package/dist/date/sort.d.ts +16 -15
  239. package/dist/date/sort.mjs +2 -2
  240. package/dist/date/sortTimes.cjs +2 -2
  241. package/dist/date/sortTimes.d.ts +15 -21
  242. package/dist/date/sortTimes.mjs +2 -2
  243. package/dist/date/theDate.cjs +124 -0
  244. package/dist/date/theDate.d.ts +114 -0
  245. package/dist/date/theDate.mjs +122 -0
  246. package/dist/date/theTime.cjs +36 -0
  247. package/dist/date/theTime.d.ts +53 -0
  248. package/dist/date/theTime.mjs +34 -0
  249. package/dist/date/timezone.cjs +3 -0
  250. package/dist/date/timezone.d.ts +27 -0
  251. package/dist/date/timezone.mjs +3 -0
  252. package/dist/date/toISOString.cjs +5 -2
  253. package/dist/date/toISOString.d.ts +12 -10
  254. package/dist/date/toISOString.mjs +5 -2
  255. package/dist/date/toNative.cjs +4 -0
  256. package/dist/date/toNative.d.ts +12 -10
  257. package/dist/date/toNative.mjs +4 -0
  258. package/dist/date/toTimeValue.cjs +6 -2
  259. package/dist/date/toTimeValue.d.ts +14 -12
  260. package/dist/date/toTimeValue.mjs +6 -2
  261. package/dist/date/toTimestamp.cjs +5 -3
  262. package/dist/date/toTimestamp.d.ts +11 -9
  263. package/dist/date/toTimestamp.mjs +6 -4
  264. package/dist/date/today.cjs +3 -1
  265. package/dist/date/today.d.ts +14 -7
  266. package/dist/date/today.mjs +3 -1
  267. package/dist/date/tomorrow.cjs +2 -1
  268. package/dist/date/tomorrow.d.ts +12 -7
  269. package/dist/date/tomorrow.mjs +2 -1
  270. package/dist/date/types/index.d.ts +2 -2
  271. package/dist/date/types/serializedTheDate.d.ts +1 -0
  272. package/dist/date/types/serializedTheTime.d.ts +42 -0
  273. package/dist/date/types/spoolingDate.d.ts +2 -1
  274. package/dist/date/yesterday.cjs +2 -1
  275. package/dist/date/yesterday.d.ts +12 -7
  276. package/dist/date/yesterday.mjs +2 -1
  277. package/dist/index.cjs +5 -6
  278. package/dist/index.mjs +1 -3
  279. package/dist/metadata.json +73 -46
  280. package/package.json +1 -1
  281. package/dist/common/toJSON.cjs +0 -37
  282. package/dist/common/toJSON.d.ts +0 -44
  283. package/dist/common/toJSON.mjs +0 -35
  284. package/dist/common/toString.cjs +0 -10
  285. package/dist/common/toString.d.ts +0 -17
  286. package/dist/common/toString.mjs +0 -8
  287. package/dist/common/toTransform.cjs +0 -37
  288. package/dist/common/toTransform.d.ts +0 -50
  289. package/dist/common/toTransform.mjs +0 -35
  290. package/dist/date/createTheDate.cjs +0 -13
  291. package/dist/date/createTheDate.d.ts +0 -28
  292. package/dist/date/createTheDate.mjs +0 -11
  293. package/dist/date/createTheTime.cjs +0 -13
  294. package/dist/date/createTheTime.d.ts +0 -25
  295. package/dist/date/createTheTime.mjs +0 -11
  296. package/dist/date/types/theDate.d.ts +0 -11
  297. package/dist/date/types/theTime.d.ts +0 -10
@@ -1,18 +1,18 @@
1
- import { millisecondsInOneDay } from '../constants.mjs';
2
1
  import { toNative } from '../toNative.mjs';
2
+ import { millisecondsInOneDay } from '../constants.mjs';
3
3
 
4
4
  /**
5
5
  * {@include date/getDayOfYear/index.md}
6
6
  */
7
7
  function getDayOfYear(input, timezone = "UTC") {
8
- const nativeDate = toNative(input);
8
+ const date = toNative(input);
9
9
  let year = 0;
10
10
  let month = 0;
11
11
  let day = 0;
12
12
  if (timezone === "UTC") {
13
- year = nativeDate.getUTCFullYear();
14
- month = nativeDate.getUTCMonth();
15
- day = nativeDate.getUTCDate();
13
+ year = date.getUTCFullYear();
14
+ month = date.getUTCMonth();
15
+ day = date.getUTCDate();
16
16
  }
17
17
  else {
18
18
  const parts = new Intl.DateTimeFormat("en-US", {
@@ -20,7 +20,7 @@ function getDayOfYear(input, timezone = "UTC") {
20
20
  day: "numeric",
21
21
  year: "numeric",
22
22
  month: "numeric",
23
- }).formatToParts(nativeDate);
23
+ }).formatToParts(date);
24
24
  const partsMap = new Map(parts.map((part) => [part.type, part.value]));
25
25
  year = Number(partsMap.get("year"));
26
26
  month = Number(partsMap.get("month")) - 1;
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var theDate = require('../theDate.cjs');
3
4
  var toNative = require('../toNative.cjs');
4
5
 
5
6
  /**
@@ -9,9 +10,7 @@ function getFirstDayOfMonth(input) {
9
10
  const nativeDate = toNative.toNative(input);
10
11
  nativeDate.setUTCDate(1);
11
12
  nativeDate.setUTCHours(0, 0, 0, 0);
12
- const timestamp = nativeDate.getTime();
13
- const isNegative = timestamp < 0;
14
- return `date${Math.abs(timestamp)}${isNegative ? "-" : "+"}`;
13
+ return theDate.TheDate.new(nativeDate.getTime());
15
14
  }
16
15
 
17
16
  exports.getFirstDayOfMonth = getFirstDayOfMonth;
@@ -1,26 +1,32 @@
1
- import type { TheDate } from "../types";
1
+ import type { SerializedTheDate } from "../types";
2
+ import { TheDate } from "../theDate";
2
3
  /**
3
- * Returns the first day of month of a date.
4
+ * Returns the first day of the month for a date.
4
5
  *
5
- * Signature: `getFirstDayOfMonth(input)` → returns a value
6
+ * Signature: `getFirstDayOfMonth(input)` → `TheDate`
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-19");
11
- * const result = D.getFirstDayOfMonth(input);
12
- * // result: "date1717200000000+" (1 June 2024)
12
+ * const firstDay = D.getFirstDayOfMonth(input);
13
+ * // firstDay: TheDate
14
+ *
15
+ * const serialized = D.serialize(firstDay);
16
+ * // serialized: SerializedTheDate
13
17
  *
14
18
  * pipe(
15
- * input,
19
+ * serialized,
16
20
  * D.getFirstDayOfMonth,
17
- * ); // result: "date1717200000000+" (1 June 2024)
18
- *
21
+ * ); // TheDate
19
22
  * ```
20
23
  *
24
+ * @remarks
25
+ * - The returned date is normalized to `00:00:00.000` in UTC.
26
+ *
21
27
  * @see https://utils.duplojs.dev/en/v1/api/date/getFirstDayOfMonth
22
28
  *
23
29
  * @namespace D
24
30
  *
25
31
  */
26
- export declare function getFirstDayOfMonth(input: TheDate): TheDate;
32
+ export declare function getFirstDayOfMonth<GenericInput extends TheDate | SerializedTheDate>(input: GenericInput): TheDate;
@@ -1,3 +1,4 @@
1
+ import { TheDate } from '../theDate.mjs';
1
2
  import { toNative } from '../toNative.mjs';
2
3
 
3
4
  /**
@@ -7,9 +8,7 @@ function getFirstDayOfMonth(input) {
7
8
  const nativeDate = toNative(input);
8
9
  nativeDate.setUTCDate(1);
9
10
  nativeDate.setUTCHours(0, 0, 0, 0);
10
- const timestamp = nativeDate.getTime();
11
- const isNegative = timestamp < 0;
12
- return `date${Math.abs(timestamp)}${isNegative ? "-" : "+"}`;
11
+ return TheDate.new(nativeDate.getTime());
13
12
  }
14
13
 
15
14
  export { getFirstDayOfMonth };
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var theDate = require('../theDate.cjs');
3
4
  var toNative = require('../toNative.cjs');
4
5
 
5
6
  /**
@@ -11,9 +12,7 @@ function getFirstDayOfWeek(input) {
11
12
  const daysToMonday = dayOfWeek === 0 ? -6 : 1 - dayOfWeek;
12
13
  nativeDate.setUTCHours(0, 0, 0, 0);
13
14
  nativeDate.setUTCDate(nativeDate.getUTCDate() + daysToMonday);
14
- const timestamp = nativeDate.getTime();
15
- const isNegative = timestamp < 0;
16
- return `date${Math.abs(timestamp)}${isNegative ? "-" : "+"}`;
15
+ return theDate.TheDate.new(nativeDate.getTime());
17
16
  }
18
17
 
19
18
  exports.getFirstDayOfWeek = getFirstDayOfWeek;
@@ -1,26 +1,33 @@
1
- import type { TheDate } from "../types";
1
+ import type { SerializedTheDate } from "../types";
2
+ import { TheDate } from "../theDate";
2
3
  /**
3
- * Returns the first day of week of a date.
4
+ * Returns the first day of the week for a date.
4
5
  *
5
- * Signature: `getFirstDayOfWeek(input)` → returns a value
6
+ * Signature: `getFirstDayOfWeek(input)` → `TheDate`
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-19");
11
- * const result = D.getFirstDayOfWeek(input);
12
- * // result: "date1718668800000+" (monday 17 june 2024)
12
+ * const firstDay = D.getFirstDayOfWeek(input);
13
+ * // firstDay: TheDate
14
+ *
15
+ * const serialized = D.serialize(firstDay);
16
+ * // serialized: SerializedTheDate
13
17
  *
14
18
  * pipe(
15
- * input,
19
+ * serialized,
16
20
  * D.getFirstDayOfWeek,
17
- * ); // result: "date1718668800000+" (monday 17 june 2024)
18
- *
21
+ * ); // TheDate
19
22
  * ```
20
23
  *
24
+ * @remarks
25
+ * - The week starts on Monday.
26
+ * - The returned date is normalized to `00:00:00.000` in UTC.
27
+ *
21
28
  * @see https://utils.duplojs.dev/en/v1/api/date/getFirstDayOfWeek
22
29
  *
23
30
  * @namespace D
24
31
  *
25
32
  */
26
- export declare function getFirstDayOfWeek(input: TheDate): TheDate;
33
+ export declare function getFirstDayOfWeek<GenericInput extends TheDate | SerializedTheDate>(input: GenericInput): TheDate;
@@ -1,3 +1,4 @@
1
+ import { TheDate } from '../theDate.mjs';
1
2
  import { toNative } from '../toNative.mjs';
2
3
 
3
4
  /**
@@ -9,9 +10,7 @@ function getFirstDayOfWeek(input) {
9
10
  const daysToMonday = dayOfWeek === 0 ? -6 : 1 - dayOfWeek;
10
11
  nativeDate.setUTCHours(0, 0, 0, 0);
11
12
  nativeDate.setUTCDate(nativeDate.getUTCDate() + daysToMonday);
12
- const timestamp = nativeDate.getTime();
13
- const isNegative = timestamp < 0;
14
- return `date${Math.abs(timestamp)}${isNegative ? "-" : "+"}`;
13
+ return TheDate.new(nativeDate.getTime());
15
14
  }
16
15
 
17
16
  export { getFirstDayOfWeek };
@@ -6,16 +6,16 @@ var toNative = require('../toNative.cjs');
6
6
  * {@include date/getHour/index.md}
7
7
  */
8
8
  function getHour(input, timezone = "UTC") {
9
- const nativeDate = toNative.toNative(input);
9
+ const date = toNative.toNative(input);
10
10
  if (timezone === "UTC") {
11
- return nativeDate.getUTCHours();
11
+ return date.getUTCHours();
12
12
  }
13
13
  const formatter = new Intl.DateTimeFormat("en-US", {
14
14
  timeZone: timezone,
15
15
  hour: "numeric",
16
16
  hour12: false,
17
17
  });
18
- return Number(formatter.format(nativeDate));
18
+ return Number(formatter.format(date));
19
19
  }
20
20
 
21
21
  exports.getHour = getHour;
@@ -1,25 +1,27 @@
1
- import { type TheDate, type Timezone } from "..";
1
+ import type { SerializedTheDate } from "../types";
2
+ import { type TheDate } from "../theDate";
3
+ import type { Timezone } from "../timezone";
2
4
  /**
3
- * Returns the hour of a date.
5
+ * Returns the hour (`0` to `23`) for a date in a target timezone.
4
6
  *
5
- * Signature: `getHour(input, timezone)` → returns a value
7
+ * Signature: `getHour(input, timezone?)` → `number`
6
8
  *
7
- * If timezone is omitted, UTC is used.
8
- *
9
- * The input value is not mutated.
9
+ * `input` accepts `TheDate` or `SerializedTheDate`. If `timezone` is omitted, UTC is used.
10
10
  *
11
11
  * ```ts
12
- * const input = D.create("2024-06-20");
13
- * const result = D.getHour(input);
14
- * // result: 0
12
+ * const input = D.create("2024-06-20", {
13
+ * hour: "00",
14
+ * });
15
+ * const utcHour = D.getHour(input);
16
+ * // utcHour: 0
15
17
  *
16
- * const result2 = D.getHour(input, "America/Los_Angeles");
17
- * // result2: 17
18
+ * const laHour = D.getHour(input, "America/Los_Angeles");
19
+ * // laHour: 17
18
20
  *
19
21
  * pipe(
20
22
  * input,
21
- * D.getHour,
22
- * ); // result: 0
23
+ * (value) => D.getHour(value, "UTC"),
24
+ * ); // 0
23
25
  *
24
26
  * ```
25
27
  *
@@ -28,4 +30,4 @@ import { type TheDate, type Timezone } from "..";
28
30
  * @namespace D
29
31
  *
30
32
  */
31
- export declare function getHour<GenericInput extends TheDate>(input: GenericInput, timezone?: Timezone): number;
33
+ export declare function getHour<GenericInput extends TheDate | SerializedTheDate>(input: GenericInput, timezone?: Timezone): number;
@@ -4,16 +4,16 @@ import { toNative } from '../toNative.mjs';
4
4
  * {@include date/getHour/index.md}
5
5
  */
6
6
  function getHour(input, timezone = "UTC") {
7
- const nativeDate = toNative(input);
7
+ const date = toNative(input);
8
8
  if (timezone === "UTC") {
9
- return nativeDate.getUTCHours();
9
+ return date.getUTCHours();
10
10
  }
11
11
  const formatter = new Intl.DateTimeFormat("en-US", {
12
12
  timeZone: timezone,
13
13
  hour: "numeric",
14
14
  hour12: false,
15
15
  });
16
- return Number(formatter.format(nativeDate));
16
+ return Number(formatter.format(date));
17
17
  }
18
18
 
19
19
  export { getHour };
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var theDate = require('../theDate.cjs');
3
4
  var toNative = require('../toNative.cjs');
4
5
 
5
6
  /**
@@ -9,9 +10,7 @@ function getLastDayOfMonth(input) {
9
10
  const nativeDate = toNative.toNative(input);
10
11
  nativeDate.setUTCMonth(nativeDate.getUTCMonth() + 1, 0);
11
12
  nativeDate.setUTCHours(23, 59, 59, 999);
12
- const timestamp = nativeDate.getTime();
13
- const isNegative = timestamp < 0;
14
- return `date${Math.abs(timestamp)}${isNegative ? "-" : "+"}`;
13
+ return theDate.TheDate.new(nativeDate.getTime());
15
14
  }
16
15
 
17
16
  exports.getLastDayOfMonth = getLastDayOfMonth;
@@ -1,26 +1,32 @@
1
- import type { TheDate } from "../types";
1
+ import type { SerializedTheDate } from "../types";
2
+ import { TheDate } from "../theDate";
2
3
  /**
3
- * Returns the last day of month of a date.
4
+ * Returns the last day of the month for a date.
4
5
  *
5
- * Signature: `getLastDayOfMonth(input)` → returns a value
6
+ * Signature: `getLastDayOfMonth(input)` → `TheDate`
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-19");
11
- * const result = D.getLastDayOfMonth(input);
12
- * // result: "date1719532800000+" (30 June 2024)
12
+ * const lastDay = D.getLastDayOfMonth(input);
13
+ * // lastDay: TheDate
14
+ *
15
+ * const serialized = D.serialize(lastDay);
16
+ * // serialized: SerializedTheDate
13
17
  *
14
18
  * pipe(
15
- * input,
19
+ * serialized,
16
20
  * D.getLastDayOfMonth,
17
- * ); // result: "date1719532800000+" (30 June 2024)
18
- *
21
+ * ); // TheDate
19
22
  * ```
20
23
  *
24
+ * @remarks
25
+ * - The returned date is normalized to `23:59:59.999` in UTC.
26
+ *
21
27
  * @see https://utils.duplojs.dev/en/v1/api/date/getLastDayOfMonth
22
28
  *
23
29
  * @namespace D
24
30
  *
25
31
  */
26
- export declare function getLastDayOfMonth(input: TheDate): TheDate;
32
+ export declare function getLastDayOfMonth<GenericInput extends TheDate | SerializedTheDate>(input: GenericInput): TheDate;
@@ -1,3 +1,4 @@
1
+ import { TheDate } from '../theDate.mjs';
1
2
  import { toNative } from '../toNative.mjs';
2
3
 
3
4
  /**
@@ -7,9 +8,7 @@ function getLastDayOfMonth(input) {
7
8
  const nativeDate = toNative(input);
8
9
  nativeDate.setUTCMonth(nativeDate.getUTCMonth() + 1, 0);
9
10
  nativeDate.setUTCHours(23, 59, 59, 999);
10
- const timestamp = nativeDate.getTime();
11
- const isNegative = timestamp < 0;
12
- return `date${Math.abs(timestamp)}${isNegative ? "-" : "+"}`;
11
+ return TheDate.new(nativeDate.getTime());
13
12
  }
14
13
 
15
14
  export { getLastDayOfMonth };
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var theDate = require('../theDate.cjs');
3
4
  var toNative = require('../toNative.cjs');
4
5
 
5
6
  /**
@@ -11,9 +12,7 @@ function getLastDayOfWeek(input) {
11
12
  const daysToSunday = dayOfWeek === 0 ? 0 : 7 - dayOfWeek;
12
13
  nativeDate.setUTCDate(nativeDate.getUTCDate() + daysToSunday);
13
14
  nativeDate.setUTCHours(23, 59, 59, 999);
14
- const timestamp = nativeDate.getTime();
15
- const isNegative = timestamp < 0;
16
- return `date${Math.abs(timestamp)}${isNegative ? "-" : "+"}`;
15
+ return theDate.TheDate.new(nativeDate.getTime());
17
16
  }
18
17
 
19
18
  exports.getLastDayOfWeek = getLastDayOfWeek;
@@ -1,26 +1,33 @@
1
- import type { TheDate } from "../types";
1
+ import type { SerializedTheDate } from "../types";
2
+ import { TheDate } from "../theDate";
2
3
  /**
3
- * Returns the last day of week of a date.
4
+ * Returns the last day of the week for a date.
4
5
  *
5
- * Signature: `getLastDayOfWeek(input)` → returns a value
6
+ * Signature: `getLastDayOfWeek(input)` → `TheDate`
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-19");
11
- * const result = D.getLastDayOfWeek(input);
12
- * // result: "date1719187200000+" (Sunday 23 june 2024)
12
+ * const lastDay = D.getLastDayOfWeek(input);
13
+ * // lastDay: TheDate
14
+ *
15
+ * const serialized = D.serialize(lastDay);
16
+ * // serialized: SerializedTheDate
13
17
  *
14
18
  * pipe(
15
- * input,
19
+ * serialized,
16
20
  * D.getLastDayOfWeek,
17
- * ); // result: "date1719187200000+" (Sunday 23 june 2024)
18
- *
21
+ * ); // TheDate
19
22
  * ```
20
23
  *
24
+ * @remarks
25
+ * - The week ends on Sunday.
26
+ * - The returned date is normalized to `23:59:59.999` in UTC.
27
+ *
21
28
  * @see https://utils.duplojs.dev/en/v1/api/date/getLastDayOfWeek
22
29
  *
23
30
  * @namespace D
24
31
  *
25
32
  */
26
- export declare function getLastDayOfWeek(input: TheDate): TheDate;
33
+ export declare function getLastDayOfWeek<GenericInput extends TheDate | SerializedTheDate>(input: GenericInput): TheDate;
@@ -1,3 +1,4 @@
1
+ import { TheDate } from '../theDate.mjs';
1
2
  import { toNative } from '../toNative.mjs';
2
3
 
3
4
  /**
@@ -9,9 +10,7 @@ function getLastDayOfWeek(input) {
9
10
  const daysToSunday = dayOfWeek === 0 ? 0 : 7 - dayOfWeek;
10
11
  nativeDate.setUTCDate(nativeDate.getUTCDate() + daysToSunday);
11
12
  nativeDate.setUTCHours(23, 59, 59, 999);
12
- const timestamp = nativeDate.getTime();
13
- const isNegative = timestamp < 0;
14
- return `date${Math.abs(timestamp)}${isNegative ? "-" : "+"}`;
13
+ return TheDate.new(nativeDate.getTime());
15
14
  }
16
15
 
17
16
  export { getLastDayOfWeek };
@@ -6,8 +6,8 @@ var toNative = require('../toNative.cjs');
6
6
  * {@include date/getMilliseconds/index.md}
7
7
  */
8
8
  function getMilliseconds(input) {
9
- const nativeDate = toNative.toNative(input);
10
- return nativeDate.getUTCMilliseconds();
9
+ const date = toNative.toNative(input);
10
+ return date.getUTCMilliseconds();
11
11
  }
12
12
 
13
13
  exports.getMilliseconds = getMilliseconds;
@@ -1,10 +1,11 @@
1
- import { type TheDate } from "..";
1
+ import type { SerializedTheDate } from "../types";
2
+ import { type TheDate } from "../theDate";
2
3
  /**
3
- * Returns the milliseconds of a date.
4
+ * Returns the milliseconds part (`0` to `999`) of a date.
4
5
  *
5
- * Signature: `getMilliseconds(input)` → returns a value
6
+ * Signature: `getMilliseconds(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", {
@@ -13,19 +14,20 @@ import { type TheDate } from "..";
13
14
  * second: "56",
14
15
  * millisecond: "789",
15
16
  * });
16
- * const result = D.getMilliseconds(input);
17
- * // result: 789
17
+ * const milliseconds = D.getMilliseconds(input);
18
+ * // milliseconds: 789
18
19
  *
19
20
  * pipe(
20
21
  * input,
21
22
  * D.getMilliseconds,
22
- * ); // result: 789
23
- *
24
23
  * ```
25
24
  *
25
+ * @remarks
26
+ * - Value is always read in UTC.
27
+ *
26
28
  * @see https://utils.duplojs.dev/en/v1/api/date/getMilliseconds
27
29
  *
28
30
  * @namespace D
29
31
  *
30
32
  */
31
- export declare function getMilliseconds<GenericInput extends TheDate>(input: GenericInput): number;
33
+ export declare function getMilliseconds<GenericInput extends TheDate | SerializedTheDate>(input: GenericInput): number;
@@ -4,8 +4,8 @@ import { toNative } from '../toNative.mjs';
4
4
  * {@include date/getMilliseconds/index.md}
5
5
  */
6
6
  function getMilliseconds(input) {
7
- const nativeDate = toNative(input);
8
- return nativeDate.getUTCMilliseconds();
7
+ const date = toNative(input);
8
+ return date.getUTCMilliseconds();
9
9
  }
10
10
 
11
11
  export { getMilliseconds };
@@ -6,15 +6,15 @@ var toNative = require('../toNative.cjs');
6
6
  * {@include date/getMinute/index.md}
7
7
  */
8
8
  function getMinute(input, timezone = "UTC") {
9
- const nativeDate = toNative.toNative(input);
9
+ const date = toNative.toNative(input);
10
10
  if (timezone === "UTC") {
11
- return nativeDate.getUTCMinutes();
11
+ return date.getUTCMinutes();
12
12
  }
13
13
  const formatter = new Intl.DateTimeFormat("en-US", {
14
14
  timeZone: timezone,
15
15
  minute: "numeric",
16
16
  });
17
- return Number(formatter.format(nativeDate));
17
+ return Number(formatter.format(date));
18
18
  }
19
19
 
20
20
  exports.getMinute = getMinute;
@@ -1,26 +1,28 @@
1
- import { type TheDate, type Timezone } from "..";
1
+ import type { SerializedTheDate } from "../types";
2
+ import { type TheDate } from "../theDate";
3
+ import { type Timezone } from "../timezone";
2
4
  /**
3
- * Returns the minute of a date.
5
+ * Returns the minute (`0` to `59`) for a date in a target timezone.
4
6
  *
5
- * Signature: `getMinute(input, timezone)` → returns a value
7
+ * Signature: `getMinute(input, timezone?)` → `number`
6
8
  *
7
- * If timezone is omitted, UTC is used.
8
- *
9
- * The input value is not mutated.
9
+ * `input` accepts `TheDate` or `SerializedTheDate`. If `timezone` is omitted, UTC is used.
10
10
  *
11
11
  * ```ts
12
- * const input = D.create("2024-06-20");
13
- * const result = D.getMinute(input);
14
- * // result: 0
12
+ * const input = D.create("2024-06-20", {
13
+ * hour: "00",
14
+ * minute: "30",
15
+ * });
16
+ * const utcMinute = D.getMinute(input);
17
+ * // utcMinute: 30
15
18
  *
16
- * const result2 = D.getMinute(input, "Europe/Madrid");
17
- * // result2: 0
19
+ * const tokyoMinute = D.getMinute(input, "Asia/Tokyo");
20
+ * // tokyoMinute: 30
18
21
  *
19
22
  * pipe(
20
23
  * input,
21
- * D.getMinute,
22
- * ); // result: 0
23
- *
24
+ * (value) => D.getMinute(value, "UTC"),
25
+ * ); // 30
24
26
  * ```
25
27
  *
26
28
  * @see https://utils.duplojs.dev/en/v1/api/date/getMinute
@@ -28,4 +30,4 @@ import { type TheDate, type Timezone } from "..";
28
30
  * @namespace D
29
31
  *
30
32
  */
31
- export declare function getMinute<GenericInput extends TheDate>(input: GenericInput, timezone?: Timezone): number;
33
+ export declare function getMinute<GenericInput extends TheDate | SerializedTheDate>(input: GenericInput, timezone?: Timezone): number;
@@ -4,15 +4,15 @@ import { toNative } from '../toNative.mjs';
4
4
  * {@include date/getMinute/index.md}
5
5
  */
6
6
  function getMinute(input, timezone = "UTC") {
7
- const nativeDate = toNative(input);
7
+ const date = toNative(input);
8
8
  if (timezone === "UTC") {
9
- return nativeDate.getUTCMinutes();
9
+ return date.getUTCMinutes();
10
10
  }
11
11
  const formatter = new Intl.DateTimeFormat("en-US", {
12
12
  timeZone: timezone,
13
13
  minute: "numeric",
14
14
  });
15
- return Number(formatter.format(nativeDate));
15
+ return Number(formatter.format(date));
16
16
  }
17
17
 
18
18
  export { getMinute };
@@ -6,15 +6,15 @@ var toNative = require('../toNative.cjs');
6
6
  * {@include date/getMonth/index.md}
7
7
  */
8
8
  function getMonth(input, timezone = "UTC") {
9
- const nativeDate = toNative.toNative(input);
9
+ const date = toNative.toNative(input);
10
10
  if (timezone === "UTC") {
11
- return nativeDate.getUTCMonth() + 1;
11
+ return date.getUTCMonth() + 1;
12
12
  }
13
13
  const formatter = new Intl.DateTimeFormat("en-US", {
14
14
  timeZone: timezone,
15
15
  month: "numeric",
16
16
  });
17
- return Number(formatter.format(nativeDate));
17
+ return Number(formatter.format(date));
18
18
  }
19
19
 
20
20
  exports.getMonth = getMonth;