@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,8 @@
1
1
  'use strict';
2
2
 
3
- var createTheDate = require('../createTheDate.cjs');
4
- var createTheTime = require('../createTheTime.cjs');
3
+ var isSerializedTheTime = require('../isSerializedTheTime.cjs');
4
+ var theDate = require('../theDate.cjs');
5
+ var theTime = require('../theTime.cjs');
5
6
  var toTimestamp = require('../toTimestamp.cjs');
6
7
  var toTimeValue = require('../toTimeValue.cjs');
7
8
 
@@ -11,11 +12,17 @@ function addTime(...args) {
11
12
  return (input) => addTime(input, time);
12
13
  }
13
14
  const [input, time] = args;
14
- const timeTimestamp = toTimeValue.toTimeValue(time);
15
- if (input.startsWith("date")) {
16
- return createTheDate.createTheDate(toTimestamp.toTimestamp(input) + timeTimestamp);
15
+ const timeValue = toTimeValue.toTimeValue(time);
16
+ if (input instanceof theDate.TheDate) {
17
+ const timestamp = toTimestamp.toTimestamp(input);
18
+ return theDate.TheDate.new(timestamp + timeValue);
17
19
  }
18
- return createTheTime.createTheTime(toTimeValue.toTimeValue(input) + timeTimestamp);
20
+ if (input instanceof theTime.TheTime || isSerializedTheTime.isSerializedTheTime(input)) {
21
+ const inputTimeValue = toTimeValue.toTimeValue(input);
22
+ return theTime.TheTime.new(inputTimeValue + timeValue);
23
+ }
24
+ const timestamp = toTimestamp.toTimestamp(input);
25
+ return theDate.TheDate.new(timestamp + timeValue);
19
26
  }
20
27
 
21
28
  exports.addTime = addTime;
@@ -1,28 +1,30 @@
1
- import type { TheDate, TheTime } from "../types";
1
+ import { TheDate } from "../theDate";
2
+ import { TheTime } from "../theTime";
3
+ import type { SerializedTheDate, SerializedTheTime } from "../types";
2
4
  /**
3
- * Adds a TheTime to a TheDate or TheTime.
5
+ * Adds a normalized duration (`TheTime` or `SerializedTheTime`) to a date.
4
6
  *
5
7
  * **Supported call styles:**
6
- * - Classic: `addTime(input, time)` → returns a value
7
- * - Curried: `addTime(time)` → returns a function waiting for the input
8
+ * - Classic: `addTime(input, time)` → `TheDate | TheTime`
9
+ * - Curried: `addTime(time)` → `(input) => TheDate | TheTime`
8
10
  *
9
- * The input value is not mutated.
11
+ * If `input` is `TheDate | SerializedTheDate`, the result is `TheDate`.
12
+ * The operator also supports `TheTime | SerializedTheTime` as input and returns `TheTime`.
10
13
  *
11
14
  * ```ts
12
- * const date = D.createTheDate(0);
13
- * const time = D.createTheTime(3_600_000);
15
+ * const date = D.create("2024-06-20");
16
+ * const time = D.createTime(1, "hour");
14
17
  *
15
18
  * const result = D.addTime(date, time);
16
- * // result: "date3600000+"
19
+ * // result: TheDate
17
20
  *
18
- * const result2 = D.addTime("time3000+", "time2000+");
19
- * // result2: "time5000+"
21
+ * const result2 = D.addTime(time, D.createTime(30, "minute"));
22
+ * // result2: TheTime
20
23
  *
21
- * const result3 = pipe(
24
+ * pipe(
22
25
  * date,
23
- * D.addTime("time1000+"),
24
- * );
25
- * // result3: "date3601000+"
26
+ * D.addTime(D.createTime(15, "minute")),
27
+ * ); // TheDate
26
28
  * ```
27
29
  *
28
30
  * @see https://utils.duplojs.dev/en/v1/api/date/addTime
@@ -30,7 +32,7 @@ import type { TheDate, TheTime } from "../types";
30
32
  * @namespace D
31
33
  *
32
34
  */
33
- export declare function addTime<GenericInput extends TheDate>(time: TheTime): (input: GenericInput) => TheDate;
34
- export declare function addTime<GenericInput extends TheTime>(time: TheTime): (input: GenericInput) => TheTime;
35
- export declare function addTime<GenericInput extends TheDate>(input: GenericInput, time: TheTime): TheDate;
36
- export declare function addTime<GenericInput extends TheTime>(input: GenericInput, time: TheTime): TheTime;
35
+ export declare function addTime<GenericInput extends TheDate | SerializedTheDate>(time: TheTime | SerializedTheTime): (input: GenericInput) => TheDate;
36
+ export declare function addTime<GenericInput extends TheTime | SerializedTheTime>(time: TheTime | SerializedTheTime): (input: GenericInput) => TheTime;
37
+ export declare function addTime<GenericInput extends TheDate | SerializedTheDate>(input: GenericInput, time: TheTime | SerializedTheTime): TheDate;
38
+ export declare function addTime<GenericInput extends TheTime | SerializedTheTime>(input: GenericInput, time: TheTime | SerializedTheTime): TheTime;
@@ -1,5 +1,6 @@
1
- import { createTheDate } from '../createTheDate.mjs';
2
- import { createTheTime } from '../createTheTime.mjs';
1
+ import { isSerializedTheTime } from '../isSerializedTheTime.mjs';
2
+ import { TheDate } from '../theDate.mjs';
3
+ import { TheTime } from '../theTime.mjs';
3
4
  import { toTimestamp } from '../toTimestamp.mjs';
4
5
  import { toTimeValue } from '../toTimeValue.mjs';
5
6
 
@@ -9,11 +10,17 @@ function addTime(...args) {
9
10
  return (input) => addTime(input, time);
10
11
  }
11
12
  const [input, time] = args;
12
- const timeTimestamp = toTimeValue(time);
13
- if (input.startsWith("date")) {
14
- return createTheDate(toTimestamp(input) + timeTimestamp);
13
+ const timeValue = toTimeValue(time);
14
+ if (input instanceof TheDate) {
15
+ const timestamp = toTimestamp(input);
16
+ return TheDate.new(timestamp + timeValue);
15
17
  }
16
- return createTheTime(toTimeValue(input) + timeTimestamp);
18
+ if (input instanceof TheTime || isSerializedTheTime(input)) {
19
+ const inputTimeValue = toTimeValue(input);
20
+ return TheTime.new(inputTimeValue + timeValue);
21
+ }
22
+ const timestamp = toTimestamp(input);
23
+ return TheDate.new(timestamp + timeValue);
17
24
  }
18
25
 
19
26
  export { addTime };
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  var constants = require('../constants.cjs');
4
- var createTheDate = require('../createTheDate.cjs');
5
- var toNative = require('../toNative.cjs');
4
+ var theDate = require('../theDate.cjs');
5
+ var toTimestamp = require('../toTimestamp.cjs');
6
6
 
7
7
  function addWeeks(...args) {
8
8
  if (args.length === 1) {
@@ -10,9 +10,10 @@ function addWeeks(...args) {
10
10
  return (input) => addWeeks(input, week);
11
11
  }
12
12
  const [input, week] = args;
13
- const date = toNative.toNative(input);
14
- date.setTime(date.getTime() + (week * constants.millisecondInOneWeek));
15
- return createTheDate.createTheDate(date.getTime());
13
+ const timestamp = input instanceof theDate.TheDate
14
+ ? input.getTime()
15
+ : toTimestamp.toTimestamp(input);
16
+ return theDate.TheDate.new(timestamp + (week * constants.millisecondInOneWeek));
16
17
  }
17
18
 
18
19
  exports.addWeeks = addWeeks;
@@ -1,23 +1,26 @@
1
- import type { TheDate } from "../types";
1
+ import { TheDate } from "../theDate";
2
+ import type { SerializedTheDate } from "../types";
2
3
  /**
3
- * Adds weeks to a date.
4
+ * Adds a number of weeks to a date.
4
5
  *
5
6
  * **Supported call styles:**
6
- * - Classic: `addWeeks(input, week)` → returns a value
7
- * - Curried: `addWeeks(week)` → returns a function waiting for the input
7
+ * - Classic: `addWeeks(input, week)` → `TheDate`
8
+ * - Curried: `addWeeks(week)` → `(input) => TheDate`
8
9
  *
9
- * The input value is not mutated.
10
+ * `input` accepts `TheDate` or `SerializedTheDate`.
10
11
  *
11
12
  * ```ts
12
13
  * const input = D.create("2024-06-03");
13
14
  * const result = D.addWeeks(input, 2);
14
- * // result: "date1718841600000+"
15
+ * // result: TheDate
16
+ *
17
+ * const serialized = D.serialize(result);
18
+ * // serialized: SerializedTheDate
15
19
  *
16
20
  * pipe(
17
- * input,
21
+ * serialized,
18
22
  * D.addWeeks(2),
19
- * ); // result: "date1718841600000+"
20
- *
23
+ * ); // TheDate
21
24
  * ```
22
25
  *
23
26
  * @see https://utils.duplojs.dev/en/v1/api/date/addWeeks
@@ -25,5 +28,5 @@ import type { TheDate } from "../types";
25
28
  * @namespace D
26
29
  *
27
30
  */
28
- export declare function addWeeks<GenericInput extends TheDate, GenericWeek extends number>(week: GenericWeek): (input: GenericInput) => TheDate;
29
- export declare function addWeeks<GenericInput extends TheDate, GenericWeek extends number>(input: GenericInput, week: GenericWeek): TheDate;
31
+ export declare function addWeeks<GenericInput extends TheDate | SerializedTheDate, GenericWeek extends number>(week: GenericWeek): (input: GenericInput) => TheDate;
32
+ export declare function addWeeks<GenericInput extends TheDate | SerializedTheDate, GenericWeek extends number>(input: GenericInput, week: GenericWeek): TheDate;
@@ -1,6 +1,6 @@
1
1
  import { millisecondInOneWeek } from '../constants.mjs';
2
- import { createTheDate } from '../createTheDate.mjs';
3
- import { toNative } from '../toNative.mjs';
2
+ import { TheDate } from '../theDate.mjs';
3
+ import { toTimestamp } from '../toTimestamp.mjs';
4
4
 
5
5
  function addWeeks(...args) {
6
6
  if (args.length === 1) {
@@ -8,9 +8,10 @@ function addWeeks(...args) {
8
8
  return (input) => addWeeks(input, week);
9
9
  }
10
10
  const [input, week] = args;
11
- const date = toNative(input);
12
- date.setTime(date.getTime() + (week * millisecondInOneWeek));
13
- return createTheDate(date.getTime());
11
+ const timestamp = input instanceof TheDate
12
+ ? input.getTime()
13
+ : toTimestamp(input);
14
+ return TheDate.new(timestamp + (week * millisecondInOneWeek));
14
15
  }
15
16
 
16
17
  export { addWeeks };
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var createTheDate = require('../createTheDate.cjs');
3
+ var theDate = require('../theDate.cjs');
4
4
  var toNative = require('../toNative.cjs');
5
5
 
6
6
  function addYears(...args) {
@@ -11,7 +11,7 @@ function addYears(...args) {
11
11
  const [input, year] = args;
12
12
  const date = toNative.toNative(input);
13
13
  date.setUTCFullYear(date.getUTCFullYear() + year);
14
- return createTheDate.createTheDate(date.getTime());
14
+ return theDate.TheDate.new(date.getTime());
15
15
  }
16
16
 
17
17
  exports.addYears = addYears;
@@ -1,33 +1,33 @@
1
- import type { TheDate } from "../types";
1
+ import { TheDate } from "../theDate";
2
+ import type { SerializedTheDate } from "../types";
2
3
  /**
3
- * Adds years to a date.
4
+ * Adds a number of calendar years to a date.
4
5
  *
5
6
  * **Supported call styles:**
6
- * - Classic: `addYears(input, year)` → returns a value
7
- * - Curried: `addYears(year)` → returns a function waiting for the input
7
+ * - Classic: `addYears(input, year)` → `TheDate`
8
+ * - Curried: `addYears(year)` → `(input) => TheDate`
8
9
  *
9
- * The input value is not mutated.
10
+ * `input` accepts `TheDate` or `SerializedTheDate`.
10
11
  *
11
12
  * ```ts
12
13
  * const input = D.create("2020-02-29");
13
14
  * const result = D.addYears(input, 4);
14
- * // result: "date1766707200000+" (29 february 2024)
15
- *
16
- * const addOneYear = D.addYears(1);
17
- * const result2 = addOneYear(input);
18
- * // result2: "date1646006400000+" (28 february 2023)
15
+ * // result: TheDate
19
16
  *
20
17
  * pipe(
21
18
  * input,
22
19
  * D.addYears(4),
23
- * ); // result: "date1766707200000+" (29 february 2024)
20
+ * ); // TheDate
24
21
  *
25
22
  * ```
26
23
  *
24
+ * @remarks
25
+ * - Uses UTC year arithmetic (`Date#setUTCFullYear` behavior).
26
+ *
27
27
  * @see https://utils.duplojs.dev/en/v1/api/date/addYears
28
28
  *
29
29
  * @namespace D
30
30
  *
31
31
  */
32
- export declare function addYears<GenericInput extends TheDate, GenericYear extends number>(year: GenericYear): (input: GenericInput) => TheDate;
33
- export declare function addYears<GenericInput extends TheDate, GenericYear extends number>(input: GenericInput, year: GenericYear): TheDate;
32
+ export declare function addYears<GenericInput extends TheDate | SerializedTheDate, GenericYear extends number>(year: GenericYear): (input: GenericInput) => TheDate;
33
+ export declare function addYears<GenericInput extends TheDate | SerializedTheDate, GenericYear extends number>(input: GenericInput, year: GenericYear): TheDate;
@@ -1,4 +1,4 @@
1
- import { createTheDate } from '../createTheDate.mjs';
1
+ import { TheDate } from '../theDate.mjs';
2
2
  import { toNative } from '../toNative.mjs';
3
3
 
4
4
  function addYears(...args) {
@@ -9,7 +9,7 @@ function addYears(...args) {
9
9
  const [input, year] = args;
10
10
  const date = toNative(input);
11
11
  date.setUTCFullYear(date.getUTCFullYear() + year);
12
- return createTheDate(date.getTime());
12
+ return TheDate.new(date.getTime());
13
13
  }
14
14
 
15
15
  export { addYears };
@@ -1,17 +1,18 @@
1
- import type { TheDate } from "../types";
1
+ import { type TheDate } from "../theDate";
2
+ import { type SerializedTheDate } from "../types";
2
3
  /**
3
- * Checks whether a date is between two dates (inclusive).
4
+ * Checks whether a date is inside an inclusive range.
4
5
  *
5
6
  * **Supported call styles:**
6
- * - Classic: `between(input, greater, less)` → returns a value
7
- * - Curried: `between(greater, less)` → returns a function waiting for the input
7
+ * - Classic: `between(input, greater, less)` → `boolean`
8
+ * - Curried: `between(greater, less)` → `(input) => boolean`
8
9
  *
9
- * The input value is not mutated.
10
+ * All parameters accept `TheDate` or `SerializedTheDate`.
10
11
  *
11
12
  * ```ts
12
13
  * const start = D.create("2024-06-01");
13
14
  * const end = D.create("2024-06-30");
14
- * const input = D.create("2024-06-15");
15
+ * const input = D.create("2024-06-30");
15
16
  *
16
17
  * const result = D.between(input, start, end);
17
18
  * // result: true
@@ -19,17 +20,16 @@ import type { TheDate } from "../types";
19
20
  * pipe(
20
21
  * input,
21
22
  * D.between(start, end),
22
- * ); // result: true
23
- *
23
+ * ); // true
24
24
  * ```
25
25
  *
26
26
  * @remarks
27
- * - Bounds are inclusive.
27
+ * - Inclusive bounds: `input >= greater && input <= less`.
28
28
  *
29
29
  * @see https://utils.duplojs.dev/en/v1/api/date/between
30
30
  *
31
31
  * @namespace D
32
32
  *
33
33
  */
34
- export declare function between<GenericValue extends TheDate>(greater: TheDate, less: TheDate): (input: GenericValue) => boolean;
35
- export declare function between<GenericValue extends TheDate>(input: GenericValue, greater: TheDate, less: TheDate): boolean;
34
+ export declare function between<GenericValue extends TheDate | SerializedTheDate>(greater: TheDate | SerializedTheDate, less: TheDate | SerializedTheDate): (input: GenericValue) => boolean;
35
+ export declare function between<GenericValue extends TheDate | SerializedTheDate>(input: GenericValue, greater: TheDate | SerializedTheDate, less: TheDate | SerializedTheDate): boolean;
@@ -1,12 +1,13 @@
1
- import type { TheDate } from "../types";
1
+ import type { TheDate } from "../theDate";
2
+ import type { SerializedTheDate } from "../types";
2
3
  /**
3
- * Checks whether a date is between two dates (exclusive).
4
+ * Checks whether a date is inside an exclusive range.
4
5
  *
5
6
  * **Supported call styles:**
6
- * - Classic: `betweenThan(input, greater, less)` → returns a value
7
- * - Curried: `betweenThan(greater, less)` → returns a function waiting for the input
7
+ * - Classic: `betweenThan(input, greater, less)` → `boolean`
8
+ * - Curried: `betweenThan(greater, less)` → `(input) => boolean`
8
9
  *
9
- * The input value is not mutated.
10
+ * All parameters accept `TheDate` or `SerializedTheDate`.
10
11
  *
11
12
  * ```ts
12
13
  * const start = D.create("2024-06-01");
@@ -14,22 +15,21 @@ import type { TheDate } from "../types";
14
15
  * const input = D.create("2024-06-30");
15
16
  *
16
17
  * const result = D.betweenThan(input, start, end);
17
- * // result: true
18
+ * // result: false
18
19
  *
19
20
  * pipe(
20
21
  * input,
21
22
  * D.betweenThan(start, end),
22
- * ); // result: true
23
- *
23
+ * ); // false
24
24
  * ```
25
25
  *
26
26
  * @remarks
27
- * - Bounds are exclusive.
27
+ * - Exclusive bounds: `input > greater && input < less`.
28
28
  *
29
29
  * @see https://utils.duplojs.dev/en/v1/api/date/betweenThan
30
30
  *
31
31
  * @namespace D
32
32
  *
33
33
  */
34
- export declare function betweenThan<GenericValue extends TheDate>(greater: TheDate, less: TheDate): (input: GenericValue) => boolean;
35
- export declare function betweenThan<GenericValue extends TheDate>(input: GenericValue, greater: TheDate, less: TheDate): boolean;
34
+ export declare function betweenThan<GenericValue extends TheDate | SerializedTheDate>(greater: TheDate | SerializedTheDate, less: TheDate | SerializedTheDate): (input: GenericValue) => boolean;
35
+ export declare function betweenThan<GenericValue extends TheDate | SerializedTheDate>(input: GenericValue, greater: TheDate | SerializedTheDate, less: TheDate | SerializedTheDate): boolean;
@@ -1,39 +1,35 @@
1
- import type { TheTime } from "../types";
1
+ import type { TheTime } from "../theTime";
2
+ import type { SerializedTheTime } from "../types";
2
3
  /**
3
- * Checks whether a time is between two bounds (exclusive).
4
+ * Checks whether a duration is inside an exclusive range.
4
5
  *
5
6
  * **Supported call styles:**
6
- * - Classic: `betweenThanTime(input, greater, less)` → returns a value
7
- * - Curried: `betweenThanTime(greater, less)` → returns a function waiting for the input
7
+ * - Classic: `betweenThanTime(input, greater, less)` → `boolean`
8
+ * - Curried: `betweenThanTime(greater, less)` → `(input) => boolean`
8
9
  *
9
- * The input value is not mutated.
10
+ * All parameters accept `TheTime` or `SerializedTheTime`.
10
11
  *
11
12
  * ```ts
12
- * const input = "time1500+";
13
- * const greater = "time1000+";
14
- * const less = "time2000+";
13
+ * const input = D.createTime(2, "hour");
14
+ * const greater = D.createTime(1, "hour");
15
+ * const less = D.createTime(2, "hour");
15
16
  *
16
17
  * const result = D.betweenThanTime(input, greater, less);
17
- * // result: true
18
+ * // result: false
18
19
  *
19
- * if (D.betweenThanTime(input, greater, less)) {
20
- * // input is strictly within bounds
21
- * }
22
- *
23
- * const result2 = pipe(
20
+ * pipe(
24
21
  * input,
25
- * when(
26
- * D.betweenThanTime(greater, less),
27
- * () => "ok",
28
- * ),
29
- * );
30
- * // result2: "ok"
22
+ * D.betweenThanTime(greater, less),
23
+ * ); // false
31
24
  * ```
32
25
  *
26
+ * @remarks
27
+ * - Exclusive bounds: `input > greater && input < less`.
28
+ *
33
29
  * @see https://utils.duplojs.dev/en/v1/api/date/betweenThanTime
34
30
  *
35
31
  * @namespace D
36
32
  *
37
33
  */
38
- export declare function betweenThanTime<GenericValue extends TheTime>(greater: TheTime, less: TheTime): (input: GenericValue) => boolean;
39
- export declare function betweenThanTime<GenericValue extends TheTime>(input: GenericValue, greater: TheTime, less: TheTime): boolean;
34
+ export declare function betweenThanTime<GenericValue extends TheTime | SerializedTheTime>(greater: TheTime | SerializedTheTime, less: TheTime | SerializedTheTime): (input: GenericValue) => boolean;
35
+ export declare function betweenThanTime<GenericValue extends TheTime | SerializedTheTime>(input: GenericValue, greater: TheTime | SerializedTheTime, less: TheTime | SerializedTheTime): boolean;
@@ -1,39 +1,35 @@
1
- import type { TheTime } from "../types";
1
+ import type { TheTime } from "../theTime";
2
+ import type { SerializedTheTime } from "../types";
2
3
  /**
3
- * Checks whether a time is between two bounds (inclusive).
4
+ * Checks whether a duration is inside an inclusive range.
4
5
  *
5
6
  * **Supported call styles:**
6
- * - Classic: `betweenTime(input, greater, less)` → returns a value
7
- * - Curried: `betweenTime(greater, less)` → returns a function waiting for the input
7
+ * - Classic: `betweenTime(input, greater, less)` → `boolean`
8
+ * - Curried: `betweenTime(greater, less)` → `(input) => boolean`
8
9
  *
9
- * The input value is not mutated.
10
+ * All parameters accept `TheTime` or `SerializedTheTime`.
10
11
  *
11
12
  * ```ts
12
- * const input = "time1500+";
13
- * const greater = "time1000+";
14
- * const less = "time2000+";
13
+ * const input = D.createTime(90, "minute");
14
+ * const greater = D.createTime(1, "hour");
15
+ * const less = D.createTime(2, "hour");
15
16
  *
16
17
  * const result = D.betweenTime(input, greater, less);
17
18
  * // result: true
18
19
  *
19
- * if (D.betweenTime(input, greater, less)) {
20
- * // input is within bounds
21
- * }
22
- *
23
- * const result2 = pipe(
20
+ * pipe(
24
21
  * input,
25
- * when(
26
- * D.betweenTime(greater, less),
27
- * () => "ok",
28
- * ),
29
- * );
30
- * // result2: "ok"
22
+ * D.betweenTime(greater, less),
23
+ * ); // true
31
24
  * ```
32
25
  *
26
+ * @remarks
27
+ * - Inclusive bounds: `input >= greater && input <= less`.
28
+ *
33
29
  * @see https://utils.duplojs.dev/en/v1/api/date/betweenTime
34
30
  *
35
31
  * @namespace D
36
32
  *
37
33
  */
38
- export declare function betweenTime<GenericValue extends TheTime>(greater: TheTime, less: TheTime): (input: GenericValue) => boolean;
39
- export declare function betweenTime<GenericValue extends TheTime>(input: GenericValue, greater: TheTime, less: TheTime): boolean;
34
+ export declare function betweenTime<GenericValue extends TheTime | SerializedTheTime>(greater: TheTime | SerializedTheTime, less: TheTime | SerializedTheTime): (input: GenericValue) => boolean;
35
+ export declare function betweenTime<GenericValue extends TheTime | SerializedTheTime>(input: GenericValue, greater: TheTime | SerializedTheTime, less: TheTime | SerializedTheTime): boolean;
@@ -1,12 +1,13 @@
1
- import type { TheDate } from "../types";
1
+ import type { TheDate } from "../theDate";
2
+ import type { SerializedTheDate } from "../types";
2
3
  /**
3
- * Checks whether a date is greater than or equal to another.
4
+ * Checks whether a date is greater than or equal to a threshold.
4
5
  *
5
6
  * **Supported call styles:**
6
- * - Classic: `greater(input, threshold)` → returns a value
7
- * - Curried: `greater(threshold)` → returns a function waiting for the input
7
+ * - Classic: `greater(input, threshold)` → `boolean`
8
+ * - Curried: `greater(threshold)` → `(input) => boolean`
8
9
  *
9
- * The input value is not mutated.
10
+ * All parameters accept `TheDate` or `SerializedTheDate`.
10
11
  *
11
12
  * ```ts
12
13
  * const threshold = D.create("2024-06-01");
@@ -18,14 +19,16 @@ import type { TheDate } from "../types";
18
19
  * pipe(
19
20
  * input,
20
21
  * D.greater(threshold),
21
- * ); // result: true
22
- *
22
+ * ); // true
23
23
  * ```
24
24
  *
25
+ * @remarks
26
+ * - Inclusive comparison: `input >= threshold`.
27
+ *
25
28
  * @see https://utils.duplojs.dev/en/v1/api/date/greater
26
29
  *
27
30
  * @namespace D
28
31
  *
29
32
  */
30
- export declare function greater<GenericValue extends TheDate>(threshold: TheDate): (input: GenericValue) => boolean;
31
- export declare function greater<GenericValue extends TheDate>(input: GenericValue, threshold: TheDate): boolean;
33
+ export declare function greater<GenericValue extends TheDate | SerializedTheDate>(threshold: TheDate | SerializedTheDate): (input: GenericValue) => boolean;
34
+ export declare function greater<GenericValue extends TheDate | SerializedTheDate>(input: GenericValue, threshold: TheDate | SerializedTheDate): boolean;
@@ -1,31 +1,34 @@
1
- import type { TheDate } from "../types";
1
+ import type { TheDate } from "../theDate";
2
+ import type { SerializedTheDate } from "../types";
2
3
  /**
3
- * Checks whether a date is strictly greater than another.
4
+ * Checks whether a date is strictly greater than a threshold.
4
5
  *
5
6
  * **Supported call styles:**
6
- * - Classic: `greaterThan(input, threshold)` → returns a value
7
- * - Curried: `greaterThan(threshold)` → returns a function waiting for the input
7
+ * - Classic: `greaterThan(input, threshold)` → `boolean`
8
+ * - Curried: `greaterThan(threshold)` → `(input) => boolean`
8
9
  *
9
- * The input value is not mutated.
10
+ * All parameters accept `TheDate` or `SerializedTheDate`.
10
11
  *
11
12
  * ```ts
12
13
  * const threshold = D.create("2024-06-20");
13
14
  * const input = D.create("2024-06-20");
14
15
  *
15
- * const predicate = D.greaterThan(input, threshold);
16
- * // result: true
16
+ * const result = D.greaterThan(input, threshold);
17
+ * // result: false
17
18
  *
18
19
  * pipe(
19
20
  * input,
20
21
  * D.greaterThan(threshold),
21
- * ); // result: true
22
- *
22
+ * ); // false
23
23
  * ```
24
24
  *
25
+ * @remarks
26
+ * - Strict comparison: `input > threshold`.
27
+ *
25
28
  * @see https://utils.duplojs.dev/en/v1/api/date/greaterThan
26
29
  *
27
30
  * @namespace D
28
31
  *
29
32
  */
30
- export declare function greaterThan<GenericValue extends TheDate>(threshold: TheDate): (input: GenericValue) => boolean;
31
- export declare function greaterThan<GenericValue extends TheDate>(input: GenericValue, threshold: TheDate): boolean;
33
+ export declare function greaterThan<GenericValue extends TheDate | SerializedTheDate>(threshold: TheDate | SerializedTheDate): (input: GenericValue) => boolean;
34
+ export declare function greaterThan<GenericValue extends TheDate | SerializedTheDate>(input: GenericValue, threshold: TheDate | SerializedTheDate): boolean;