@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,6 +1,6 @@
1
1
  import { millisecondInOneMinute } 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 subtractMinutes(...args) {
6
6
  if (args.length === 1) {
@@ -8,9 +8,7 @@ function subtractMinutes(...args) {
8
8
  return (input) => subtractMinutes(input, minute);
9
9
  }
10
10
  const [input, minute] = args;
11
- const date = toNative(input);
12
- date.setTime(date.getTime() - (minute * millisecondInOneMinute));
13
- return createTheDate(date.getTime());
11
+ return TheDate.new(toTimestamp(input) - (minute * millisecondInOneMinute));
14
12
  }
15
13
 
16
14
  export { subtractMinutes };
@@ -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 subtractMonths(...args) {
@@ -11,7 +11,7 @@ function subtractMonths(...args) {
11
11
  const [input, month] = args;
12
12
  const date = toNative.toNative(input);
13
13
  date.setUTCMonth(date.getUTCMonth() - month);
14
- return createTheDate.createTheDate(date.getTime());
14
+ return theDate.TheDate.new(date.getTime());
15
15
  }
16
16
 
17
17
  exports.subtractMonths = subtractMonths;
@@ -1,29 +1,35 @@
1
- import type { TheDate } from "../types";
1
+ import { TheDate } from "../theDate";
2
+ import type { SerializedTheDate } from "../types";
2
3
  /**
3
- * Subtracts months from a date.
4
+ * Subtracts a number of calendar months from a date.
4
5
  *
5
6
  * **Supported call styles:**
6
- * - Classic: `subtractMonths(input, month)` → returns a value
7
- * - Curried: `subtractMonths(month)` → returns a function waiting for the input
7
+ * - Classic: `subtractMonths(input, month)` → `TheDate`
8
+ * - Curried: `subtractMonths(month)` → `(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-30");
13
14
  * const result = D.subtractMonths(input, 2);
14
- * // result: "date1711843200000+"
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.subtractMonths(2),
19
- * ); // result: "date1711843200000+"
20
- *
23
+ * ); // TheDate
21
24
  * ```
22
25
  *
26
+ * @remarks
27
+ * - Uses UTC month arithmetic (`Date#setUTCMonth` behavior).
28
+ *
23
29
  * @see https://utils.duplojs.dev/en/v1/api/date/subtractMonths
24
30
  *
25
31
  * @namespace D
26
32
  *
27
33
  */
28
- export declare function subtractMonths<GenericInput extends TheDate, GenericMonth extends number>(month: GenericMonth): (input: GenericInput) => TheDate;
29
- export declare function subtractMonths<GenericInput extends TheDate, GenericMonth extends number>(input: GenericInput, month: GenericMonth): TheDate;
34
+ export declare function subtractMonths<GenericInput extends TheDate | SerializedTheDate, GenericMonth extends number>(month: GenericMonth): (input: GenericInput) => TheDate;
35
+ export declare function subtractMonths<GenericInput extends TheDate | SerializedTheDate, GenericMonth extends number>(input: GenericInput, month: GenericMonth): 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 subtractMonths(...args) {
@@ -9,7 +9,7 @@ function subtractMonths(...args) {
9
9
  const [input, month] = args;
10
10
  const date = toNative(input);
11
11
  date.setUTCMonth(date.getUTCMonth() - month);
12
- return createTheDate(date.getTime());
12
+ return TheDate.new(date.getTime());
13
13
  }
14
14
 
15
15
  export { subtractMonths };
@@ -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 subtractSeconds(...args) {
8
8
  if (args.length === 1) {
@@ -10,9 +10,7 @@ function subtractSeconds(...args) {
10
10
  return (input) => subtractSeconds(input, second);
11
11
  }
12
12
  const [input, second] = args;
13
- const date = toNative.toNative(input);
14
- date.setTime(date.getTime() - (second * constants.millisecondsInOneSecond));
15
- return createTheDate.createTheDate(date.getTime());
13
+ return theDate.TheDate.new(toTimestamp.toTimestamp(input) - (second * constants.millisecondsInOneSecond));
16
14
  }
17
15
 
18
16
  exports.subtractSeconds = subtractSeconds;
@@ -1,23 +1,26 @@
1
- import type { TheDate } from "../types";
1
+ import { TheDate } from "../theDate";
2
+ import type { SerializedTheDate } from "../types";
2
3
  /**
3
- * Subtracts seconds from a date.
4
+ * Subtracts a number of seconds from a date.
4
5
  *
5
6
  * **Supported call styles:**
6
- * - Classic: `subtractSeconds(input, second)` → returns a value
7
- * - Curried: `subtractSeconds(second)` → returns a function waiting for the input
7
+ * - Classic: `subtractSeconds(input, second)` → `TheDate`
8
+ * - Curried: `subtractSeconds(second)` → `(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-20");
13
14
  * const result = D.subtractSeconds(input, 30);
14
- * // result: "date1718841570000+"
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.subtractSeconds(30),
19
- * ); // result: "date1718841570000+"
20
- *
23
+ * ); // TheDate
21
24
  * ```
22
25
  *
23
26
  * @see https://utils.duplojs.dev/en/v1/api/date/subtractSeconds
@@ -25,5 +28,5 @@ import type { TheDate } from "../types";
25
28
  * @namespace D
26
29
  *
27
30
  */
28
- export declare function subtractSeconds<GenericInput extends TheDate, GenericSecond extends number>(second: GenericSecond): (input: GenericInput) => TheDate;
29
- export declare function subtractSeconds<GenericInput extends TheDate, GenericSecond extends number>(input: GenericInput, second: GenericSecond): TheDate;
31
+ export declare function subtractSeconds<GenericInput extends TheDate | SerializedTheDate, GenericSecond extends number>(second: GenericSecond): (input: GenericInput) => TheDate;
32
+ export declare function subtractSeconds<GenericInput extends TheDate | SerializedTheDate, GenericSecond extends number>(input: GenericInput, second: GenericSecond): TheDate;
@@ -1,6 +1,6 @@
1
1
  import { millisecondsInOneSecond } 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 subtractSeconds(...args) {
6
6
  if (args.length === 1) {
@@ -8,9 +8,7 @@ function subtractSeconds(...args) {
8
8
  return (input) => subtractSeconds(input, second);
9
9
  }
10
10
  const [input, second] = args;
11
- const date = toNative(input);
12
- date.setTime(date.getTime() - (second * millisecondsInOneSecond));
13
- return createTheDate(date.getTime());
11
+ return TheDate.new(toTimestamp(input) - (second * millisecondsInOneSecond));
14
12
  }
15
13
 
16
14
  export { subtractSeconds };
@@ -1,9 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var createTheDate = require('../createTheDate.cjs');
4
- var createTheTime = require('../createTheTime.cjs');
5
3
  var toTimestamp = require('../toTimestamp.cjs');
6
4
  var toTimeValue = require('../toTimeValue.cjs');
5
+ var theDate = require('../theDate.cjs');
6
+ var theTime = require('../theTime.cjs');
7
+ var isSerializedTheTime = require('../isSerializedTheTime.cjs');
7
8
 
8
9
  function subtractTime(...args) {
9
10
  if (args.length === 1) {
@@ -11,11 +12,17 @@ function subtractTime(...args) {
11
12
  return (input) => subtractTime(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.subtractTime = subtractTime;
@@ -1,28 +1,30 @@
1
- import type { TheDate, TheTime } from "../types";
1
+ import type { SerializedTheDate, SerializedTheTime } from "../types";
2
+ import { TheDate } from "../theDate";
3
+ import { TheTime } from "../theTime";
2
4
  /**
3
- * Subtracts a TheTime from a TheDate or TheTime.
5
+ * Subtracts a normalized duration (`TheTime` or `SerializedTheTime`) from a date.
4
6
  *
5
7
  * **Supported call styles:**
6
- * - Classic: `subtractTime(input, time)` → returns a value
7
- * - Curried: `subtractTime(time)` → returns a function waiting for the input
8
+ * - Classic: `subtractTime(input, time)` → `TheDate | TheTime`
9
+ * - Curried: `subtractTime(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.subtractTime(date, time);
16
- * // result: "date3600000-"
19
+ * // result: TheDate
17
20
  *
18
- * const result2 = D.subtractTime("time5000+", "time2000+");
19
- * // result2: "time3000+"
21
+ * const result2 = D.subtractTime(time, D.createTime(30, "minute"));
22
+ * // result2: TheTime
20
23
  *
21
- * const result3 = pipe(
24
+ * pipe(
22
25
  * date,
23
- * D.subtractTime("time1000+"),
24
- * );
25
- * // result3: "date3599000-"
26
+ * D.subtractTime(D.createTime(15, "minute")),
27
+ * ); // TheDate
26
28
  * ```
27
29
  *
28
30
  * @see https://utils.duplojs.dev/en/v1/api/date/subtractTime
@@ -30,7 +32,7 @@ import type { TheDate, TheTime } from "../types";
30
32
  * @namespace D
31
33
  *
32
34
  */
33
- export declare function subtractTime<GenericInput extends TheDate>(time: TheTime): (input: GenericInput) => TheDate;
34
- export declare function subtractTime<GenericInput extends TheTime>(time: TheTime): (input: GenericInput) => TheTime;
35
- export declare function subtractTime<GenericInput extends TheDate>(input: GenericInput, time: TheTime): TheDate;
36
- export declare function subtractTime<GenericInput extends TheTime>(input: GenericInput, time: TheTime): TheTime;
35
+ export declare function subtractTime<GenericInput extends TheDate | SerializedTheDate>(time: TheTime | SerializedTheTime): (input: GenericInput) => TheDate;
36
+ export declare function subtractTime<GenericInput extends TheTime | SerializedTheTime>(time: TheTime | SerializedTheTime): (input: GenericInput) => TheTime;
37
+ export declare function subtractTime<GenericInput extends TheDate | SerializedTheDate>(input: GenericInput, time: TheTime | SerializedTheTime): TheDate;
38
+ export declare function subtractTime<GenericInput extends TheTime | SerializedTheTime>(input: GenericInput, time: TheTime | SerializedTheTime): TheTime;
@@ -1,7 +1,8 @@
1
- import { createTheDate } from '../createTheDate.mjs';
2
- import { createTheTime } from '../createTheTime.mjs';
3
1
  import { toTimestamp } from '../toTimestamp.mjs';
4
2
  import { toTimeValue } from '../toTimeValue.mjs';
3
+ import { TheDate } from '../theDate.mjs';
4
+ import { TheTime } from '../theTime.mjs';
5
+ import { isSerializedTheTime } from '../isSerializedTheTime.mjs';
5
6
 
6
7
  function subtractTime(...args) {
7
8
  if (args.length === 1) {
@@ -9,11 +10,17 @@ function subtractTime(...args) {
9
10
  return (input) => subtractTime(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 { subtractTime };
@@ -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 subtractWeeks(...args) {
8
8
  if (args.length === 1) {
@@ -10,9 +10,7 @@ function subtractWeeks(...args) {
10
10
  return (input) => subtractWeeks(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
+ return theDate.TheDate.new(toTimestamp.toTimestamp(input) - (week * constants.millisecondInOneWeek));
16
14
  }
17
15
 
18
16
  exports.subtractWeeks = subtractWeeks;
@@ -1,23 +1,26 @@
1
- import type { TheDate } from "../types";
1
+ import { TheDate } from "../theDate";
2
+ import type { SerializedTheDate } from "../types";
2
3
  /**
3
- * Subtracts weeks from a date.
4
+ * Subtracts a number of weeks from a date.
4
5
  *
5
6
  * **Supported call styles:**
6
- * - Classic: `subtractWeeks(input, week)` → returns a value
7
- * - Curried: `subtractWeeks(week)` → returns a function waiting for the input
7
+ * - Classic: `subtractWeeks(input, week)` → `TheDate`
8
+ * - Curried: `subtractWeeks(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-30");
13
14
  * const result = D.subtractWeeks(input, 4);
14
- * // result: "date1716076800000+"
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.subtractWeeks(4),
19
- * ); // result: "date1716076800000+"
20
- *
23
+ * ); // TheDate
21
24
  * ```
22
25
  *
23
26
  * @see https://utils.duplojs.dev/en/v1/api/date/subtractWeeks
@@ -25,5 +28,5 @@ import type { TheDate } from "../types";
25
28
  * @namespace D
26
29
  *
27
30
  */
28
- export declare function subtractWeeks<GenericInput extends TheDate, GenericWeek extends number>(week: GenericWeek): (input: GenericInput) => TheDate;
29
- export declare function subtractWeeks<GenericInput extends TheDate, GenericWeek extends number>(input: GenericInput, week: GenericWeek): TheDate;
31
+ export declare function subtractWeeks<GenericInput extends TheDate | SerializedTheDate, GenericWeek extends number>(week: GenericWeek): (input: GenericInput) => TheDate;
32
+ export declare function subtractWeeks<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 subtractWeeks(...args) {
6
6
  if (args.length === 1) {
@@ -8,9 +8,7 @@ function subtractWeeks(...args) {
8
8
  return (input) => subtractWeeks(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
+ return TheDate.new(toTimestamp(input) - (week * millisecondInOneWeek));
14
12
  }
15
13
 
16
14
  export { subtractWeeks };
@@ -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 subtractYears(...args) {
@@ -11,7 +11,7 @@ function subtractYears(...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.subtractYears = subtractYears;
@@ -1,29 +1,35 @@
1
- import type { TheDate } from "../types";
1
+ import { TheDate } from "../theDate";
2
+ import type { SerializedTheDate } from "../types";
2
3
  /**
3
- * Subtracts years from a date.
4
+ * Subtracts a number of calendar years from a date.
4
5
  *
5
6
  * **Supported call styles:**
6
- * - Classic: `subtractYears(input, year)` → returns a value
7
- * - Curried: `subtractYears(year)` → returns a function waiting for the input
7
+ * - Classic: `subtractYears(input, year)` → `TheDate`
8
+ * - Curried: `subtractYears(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("2024-06-20");
13
14
  * const result = D.subtractYears(input, 1);
14
- * // result: "date1687219200000+"
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.subtractYears(1),
19
- * ); // result: "date1687219200000+"
20
- *
23
+ * ); // TheDate
21
24
  * ```
22
25
  *
26
+ * @remarks
27
+ * - Uses UTC year arithmetic (`Date#setUTCFullYear` behavior).
28
+ *
23
29
  * @see https://utils.duplojs.dev/en/v1/api/date/subtractYears
24
30
  *
25
31
  * @namespace D
26
32
  *
27
33
  */
28
- export declare function subtractYears<GenericInput extends TheDate, GenericYear extends number>(year: GenericYear): (input: GenericInput) => TheDate;
29
- export declare function subtractYears<GenericInput extends TheDate, GenericYear extends number>(input: GenericInput, year: GenericYear): TheDate;
34
+ export declare function subtractYears<GenericInput extends TheDate | SerializedTheDate, GenericYear extends number>(year: GenericYear): (input: GenericInput) => TheDate;
35
+ export declare function subtractYears<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 subtractYears(...args) {
@@ -9,7 +9,7 @@ function subtractYears(...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 { subtractYears };
@@ -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
  const stepMapper = {
@@ -19,8 +20,7 @@ const stepMapper = {
19
20
  function round(input, unit = "day") {
20
21
  const date = toNative.toNative(input);
21
22
  const timestamp = stepMapper[unit](date);
22
- const isNegative = timestamp < 0;
23
- return `date${Math.abs(timestamp)}${isNegative ? "-" : "+"}`;
23
+ return theDate.TheDate.new(timestamp);
24
24
  }
25
25
 
26
26
  exports.round = round;
@@ -1,11 +1,12 @@
1
- import type { TheDate, Unit } from "./types";
1
+ import { TheDate } from "./theDate";
2
+ import type { SerializedTheDate, Unit } from "./types";
2
3
  export type RoundUnit = Exclude<Unit, "millisecond">;
3
4
  /**
4
- * Rounds a date to a unit.
5
+ * Rounds down a date to a UTC unit boundary.
5
6
  *
6
- * Signature: `round(input, unit)` → returns a value
7
+ * Signature: `round(input, unit?)` → `TheDate`
7
8
  *
8
- * The input value is not mutated.
9
+ * `input` accepts `TheDate` or `SerializedTheDate`. Default `unit` is `"day"`.
9
10
  *
10
11
  * ```ts
11
12
  * const input = D.create("2024-06-20", {
@@ -14,25 +15,21 @@ export type RoundUnit = Exclude<Unit, "millisecond">;
14
15
  * second: "56",
15
16
  * millisecond: "789",
16
17
  * });
17
- * const result = D.round(input);
18
- * // result: "date1718841600000+"
19
18
  *
20
- * const result2 = D.round(input, "month");
21
- * // result2: "date1717200000000+"
19
+ * const byDay = D.round(input);
20
+ * // byDay: TheDate
22
21
  *
23
- * pipe(
24
- * input,
25
- * D.round,
26
- * ); // result: "date1718841600000+"
22
+ * const byMonth = D.round(input, "month");
23
+ * // byMonth: TheDate
27
24
  *
28
25
  * ```
29
26
  *
30
27
  * @remarks
31
- * - Rounds using the provided unit.
28
+ * - Supported units: `second`, `minute`, `hour`, `day`, `month`, `year`.
32
29
  *
33
30
  * @see https://utils.duplojs.dev/en/v1/api/date/round
34
31
  *
35
32
  * @namespace D
36
33
  *
37
34
  */
38
- export declare function round(input: TheDate, unit?: RoundUnit): `date${number}-` | `date${number}+`;
35
+ export declare function round(input: (TheDate | SerializedTheDate), unit?: RoundUnit): TheDate;
@@ -1,3 +1,4 @@
1
+ import { TheDate } from './theDate.mjs';
1
2
  import { toNative } from './toNative.mjs';
2
3
 
3
4
  const stepMapper = {
@@ -17,8 +18,7 @@ const stepMapper = {
17
18
  function round(input, unit = "day") {
18
19
  const date = toNative(input);
19
20
  const timestamp = stepMapper[unit](date);
20
- const isNegative = timestamp < 0;
21
- return `date${Math.abs(timestamp)}${isNegative ? "-" : "+"}`;
21
+ return TheDate.new(timestamp);
22
22
  }
23
23
 
24
24
  export { round };
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ var theDate = require('./theDate.cjs');
4
+
5
+ function serialize(input) {
6
+ if (input instanceof theDate.TheDate) {
7
+ const timestamp = input.getTime();
8
+ return `date${Math.abs(timestamp)}${timestamp > 0 ? "+" : "-"}`;
9
+ }
10
+ const number = input.toNative();
11
+ return `time${Math.abs(number)}${number > 0 ? "+" : "-"}`;
12
+ }
13
+
14
+ exports.serialize = serialize;
@@ -0,0 +1,41 @@
1
+ import { TheDate } from "./theDate";
2
+ import type { TheTime } from "./theTime";
3
+ import type { SerializedTheTime } from "./types";
4
+ import { type SerializedTheDate } from "./types/serializedTheDate";
5
+ /**
6
+ * Serializes immutable date values into their string literal formats.
7
+ *
8
+ * Supported call styles:
9
+ * - Classic: `serialize(input)` where `input` is `TheDate` or `TheTime`
10
+ * - Curried: not supported
11
+ *
12
+ * `TheDate` values are serialized to `SerializedTheDate` (`date${number}${"+" | "-"}`), and `TheTime` values are serialized to `SerializedTheTime` (`time${number}${"+" | "-"}`).
13
+ *
14
+ * ```ts
15
+ * const inputDate = D.create("2024-06-20");
16
+ * const resultDate = D.serialize(inputDate);
17
+ * // resultDate: SerializedTheDate
18
+ *
19
+ * const inputTime = D.createTime(4, "day");
20
+ * const resultTime = D.serialize(inputTime);
21
+ * // resultTime: SerializedTheTime
22
+ *
23
+ * const resultDate2 = D.serialize(
24
+ * D.create("2025-10-20"),
25
+ * );
26
+ * // resultDate2: SerializedTheDate
27
+ *
28
+ * ```
29
+ *
30
+ * @remarks
31
+ * - This function is the string bridge between immutable classes (`TheDate`, `TheTime`) and serialized literal types (`SerializedTheDate`, `SerializedTheTime`).
32
+ *
33
+ * @see https://utils.duplojs.dev/en/v1/api/date/serialize
34
+ * @see https://utils.duplojs.dev/en/v1/api/date/theDate
35
+ * @see https://utils.duplojs.dev/en/v1/api/date/theTime
36
+ *
37
+ * @namespace D
38
+ *
39
+ */
40
+ export declare function serialize(input: TheDate): SerializedTheDate;
41
+ export declare function serialize(input: TheTime): SerializedTheTime;
@@ -0,0 +1,12 @@
1
+ import { TheDate } from './theDate.mjs';
2
+
3
+ function serialize(input) {
4
+ if (input instanceof TheDate) {
5
+ const timestamp = input.getTime();
6
+ return `date${Math.abs(timestamp)}${timestamp > 0 ? "+" : "-"}`;
7
+ }
8
+ const number = input.toNative();
9
+ return `time${Math.abs(number)}${number > 0 ? "+" : "-"}`;
10
+ }
11
+
12
+ export { serialize };