@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,33 +1,29 @@
1
1
  import { type Date, type Time } from "../../base";
2
2
  import { type TheTime } from "../../../../date";
3
3
  /**
4
- * Adds a time duration to a Date and returns a new wrapped Date.
4
+ * Adds a duration to a wrapped `Date` and returns a wrapped `Date`.
5
5
  *
6
6
  * **Supported call styles:**
7
- * - Classic: `dateAddTime(date, time)` -> returns a Date
8
- * - Curried: `dateAddTime(time)` -> returns a function waiting for the date
7
+ * - Classic: `dateAddTime(date, time)` `Date`
8
+ * - Curried: `dateAddTime(time)` function waiting for the date
9
9
  *
10
- * Use it to move dates forward while keeping values wrapped.
10
+ * `time` accepts wrapped `Time` or raw `TheTime`.
11
11
  *
12
12
  * ```ts
13
13
  * const date = C.Date.createOrThrow(D.create("2024-01-01"));
14
- * const oneHour = C.Time.createOrThrow(D.createTheTime(3_600_000));
14
+ * const oneHour = C.Time.createOrThrow(D.createTime(1, "hour"));
15
15
  *
16
16
  * const later = C.dateAddTime(date, oneHour);
17
17
  * // later: C.Date
18
18
  *
19
19
  * const curried = pipe(
20
20
  * date,
21
- * C.dateAddTime(D.createTheTime(60_000)),
21
+ * C.dateAddTime(D.createTime(1, "minute")),
22
22
  * );
23
23
  * // curried: C.Date
24
24
  *
25
- * const mixed = C.dateAddTime(
26
- * C.Date.createOrThrow(D.create("2024-01-02")),
27
- * D.createTheTime(500),
28
- * );
25
+ * const mixed = C.dateAddTime(date, D.createTime(500, "millisecond"));
29
26
  * // mixed: C.Date
30
- *
31
27
  * ```
32
28
  *
33
29
  * @see https://utils.duplojs.dev/en/v1/api/clean/primitives/operators/dateAddTime
@@ -1,22 +1,24 @@
1
1
  import { type Date } from "../../base";
2
2
  import { type TheDate } from "../../../../date";
3
3
  /**
4
- * Checks whether a Date is after a threshold.
4
+ * Checks whether a wrapped `Date` is strictly after a threshold.
5
5
  *
6
6
  * **Supported call styles:**
7
- * - Classic: `dateGreaterThan(date, threshold)` -> returns a boolean
8
- * - Curried: `dateGreaterThan(threshold)` -> returns a function waiting for the date
7
+ * - Classic: `dateGreaterThan(date, threshold)` `boolean`
8
+ * - Curried: `dateGreaterThan(threshold)` function waiting for the date
9
9
  *
10
- * Use it to compare wrapped dates or raw TheDate values.
10
+ * `threshold` accepts wrapped `Date` or raw `TheDate`.
11
11
  *
12
12
  * ```ts
13
13
  * const date = C.Date.createOrThrow(D.create("2024-03-01"));
14
14
  * const threshold = D.create("2024-02-29");
15
15
  *
16
- * if (C.dateGreaterThan(date, threshold)) {
17
- * // date is after threshold
18
- * }
16
+ * const result = C.dateGreaterThan(date, threshold);
17
+ * // result: true
19
18
  *
19
+ * pipe(
20
+ * date,
21
+ * C.dateGreaterThan(threshold),
20
22
  * ```
21
23
  *
22
24
  * @see https://utils.duplojs.dev/en/v1/api/clean/primitives/operators/dateGreaterThan
@@ -1,22 +1,24 @@
1
1
  import { type Date } from "../../base";
2
2
  import { type TheDate } from "../../../../date";
3
3
  /**
4
- * Checks whether a Date is before a threshold.
4
+ * Checks whether a wrapped `Date` is strictly before a threshold.
5
5
  *
6
6
  * **Supported call styles:**
7
- * - Classic: `dateLessThan(date, threshold)` -> returns a boolean
8
- * - Curried: `dateLessThan(threshold)` -> returns a function waiting for the date
7
+ * - Classic: `dateLessThan(date, threshold)` `boolean`
8
+ * - Curried: `dateLessThan(threshold)` function waiting for the date
9
9
  *
10
- * Use it to compare wrapped dates or raw TheDate values.
10
+ * `threshold` accepts wrapped `Date` or raw `TheDate`.
11
11
  *
12
12
  * ```ts
13
13
  * const date = C.Date.createOrThrow(D.create("2024-02-29"));
14
14
  * const threshold = D.create("2024-03-01");
15
15
  *
16
- * if (C.dateLessThan(date, threshold)) {
17
- * // date is before threshold
18
- * }
16
+ * const result = C.dateLessThan(date, threshold);
17
+ * // result: true
19
18
  *
19
+ * pipe(
20
+ * date,
21
+ * C.dateLessThan(threshold),
20
22
  * ```
21
23
  *
22
24
  * @see https://utils.duplojs.dev/en/v1/api/clean/primitives/operators/dateLessThan
@@ -2,12 +2,12 @@ import { type TheDate } from "../../../../date";
2
2
  import { type Date } from "../../base";
3
3
  import { type AnyTuple } from "../../../../common";
4
4
  /**
5
- * Returns the latest date from a tuple of Date values.
5
+ * Returns the latest wrapped `Date` from a tuple.
6
6
  *
7
7
  * **Supported call styles:**
8
- * - Classic: `dateMax(input)` -> returns a Date
8
+ * - Classic: `dateMax(input)` `Date`
9
9
  *
10
- * The input can mix wrapped Dates and raw TheDate values.
10
+ * `input` can mix wrapped `Date` and raw `TheDate` values.
11
11
  *
12
12
  * ```ts
13
13
  * const latest = C.dateMax([
@@ -17,13 +17,6 @@ import { type AnyTuple } from "../../../../common";
17
17
  * ]);
18
18
  * // latest: C.Date
19
19
  *
20
- * const fromRaw = C.dateMax([
21
- * D.create("2024-01-05"),
22
- * D.create("2024-01-03"),
23
- * D.create("2024-01-10"),
24
- * ]);
25
- * // fromRaw: C.Date
26
- *
27
20
  * const mixed = C.dateMax([
28
21
  * C.Date.createOrThrow(D.create("2024-01-08")),
29
22
  * D.create("2024-01-07"),
@@ -2,12 +2,12 @@ import { type TheDate } from "../../../../date";
2
2
  import { type Date } from "../../base";
3
3
  import { type AnyTuple } from "../../../../common";
4
4
  /**
5
- * Returns the earliest date from a tuple of Date values.
5
+ * Returns the earliest wrapped `Date` from a tuple.
6
6
  *
7
7
  * **Supported call styles:**
8
- * - Classic: `dateMin(input)` -> returns a Date
8
+ * - Classic: `dateMin(input)` `Date`
9
9
  *
10
- * The input can mix wrapped Dates and raw TheDate values.
10
+ * `input` can mix wrapped `Date` and raw `TheDate` values.
11
11
  *
12
12
  * ```ts
13
13
  * const earliest = C.dateMin([
@@ -17,13 +17,6 @@ import { type AnyTuple } from "../../../../common";
17
17
  * ]);
18
18
  * // earliest: C.Date
19
19
  *
20
- * const fromRaw = C.dateMin([
21
- * D.create("2024-01-05"),
22
- * D.create("2024-01-03"),
23
- * D.create("2024-01-10"),
24
- * ]);
25
- * // fromRaw: C.Date
26
- *
27
20
  * const mixed = C.dateMin([
28
21
  * C.Date.createOrThrow(D.create("2024-01-08")),
29
22
  * D.create("2024-01-07"),
@@ -1,33 +1,29 @@
1
1
  import { type Date, type Time } from "../../base";
2
2
  import { type TheTime } from "../../../../date";
3
3
  /**
4
- * Subtracts a time duration from a Date and returns a new wrapped Date.
4
+ * Subtracts a duration from a wrapped `Date` and returns a wrapped `Date`.
5
5
  *
6
6
  * **Supported call styles:**
7
- * - Classic: `dateSubtractTime(date, time)` -> returns a Date
8
- * - Curried: `dateSubtractTime(time)` -> returns a function waiting for the date
7
+ * - Classic: `dateSubtractTime(date, time)` `Date`
8
+ * - Curried: `dateSubtractTime(time)` function waiting for the date
9
9
  *
10
- * Use it to move dates backward while keeping values wrapped.
10
+ * `time` accepts wrapped `Time` or raw `TheTime`.
11
11
  *
12
12
  * ```ts
13
13
  * const date = C.Date.createOrThrow(D.create("2024-01-02"));
14
- * const halfMinute = C.Time.createOrThrow(D.createTheTime(30_000));
14
+ * const halfMinute = C.Time.createOrThrow(D.createTime(30, "second"));
15
15
  *
16
16
  * const earlier = C.dateSubtractTime(date, halfMinute);
17
17
  * // earlier: C.Date
18
18
  *
19
19
  * const curried = pipe(
20
20
  * date,
21
- * C.dateSubtractTime(D.createTheTime(1_000)),
21
+ * C.dateSubtractTime(D.createTime(1, "second")),
22
22
  * );
23
23
  * // curried: C.Date
24
24
  *
25
- * const mixed = C.dateSubtractTime(
26
- * C.Date.createOrThrow(D.create("2024-01-01")),
27
- * D.createTheTime(500),
28
- * );
25
+ * const mixed = C.dateSubtractTime(date, D.createTime(500, "millisecond"));
29
26
  * // mixed: C.Date
30
- *
31
27
  * ```
32
28
  *
33
29
  * @see https://utils.duplojs.dev/en/v1/api/clean/primitives/operators/dateSubtractTime
@@ -8,7 +8,7 @@ function equal(...args) {
8
8
  return (input) => equal(input, value);
9
9
  }
10
10
  const [input, value] = args;
11
- return unwrap.unwrap(input) === unwrap.unwrap(value);
11
+ return unwrap.unwrap(input).toString() === unwrap.unwrap(value).toString();
12
12
  }
13
13
 
14
14
  exports.equal = equal;
@@ -1,5 +1,5 @@
1
1
  import { type ToLargeEnsemble, type Unwrap } from "../../../common";
2
- import { type Primitive, type Primitives, type Date, type Time } from "../base";
2
+ import { type Primitive, type Primitives } from "../base";
3
3
  /**
4
4
  * Compares two wrapped primitives (or a primitive and a raw value) with a type guard.
5
5
  *
@@ -34,5 +34,5 @@ import { type Primitive, type Primitives, type Date, type Time } from "../base";
34
34
  * @namespace C
35
35
  *
36
36
  */
37
- export declare function equal<GenericInput extends Primitives, GenericValue extends (GenericInput extends Date ? (Date | Unwrap<Date>) : GenericInput extends Time ? (Time | Unwrap<Time>) : (Primitive<ToLargeEnsemble<Unwrap<GenericInput>>> | ToLargeEnsemble<Unwrap<GenericInput>>))>(value: GenericValue): (input: GenericInput) => input is GenericInput & Primitive<Unwrap<GenericValue>>;
38
- export declare function equal<GenericInput extends Primitives, GenericValue extends (GenericInput extends Date ? (Date | Unwrap<Date>) : GenericInput extends Time ? (Time | Unwrap<Time>) : (Primitive<ToLargeEnsemble<Unwrap<GenericInput>>> | ToLargeEnsemble<Unwrap<GenericInput>>))>(input: GenericInput, value: GenericValue): input is GenericInput & Primitive<Unwrap<GenericValue>>;
37
+ export declare function equal<GenericInput extends Primitives, GenericValue extends (Primitive<ToLargeEnsemble<Unwrap<GenericInput>>> | ToLargeEnsemble<Unwrap<GenericInput>>)>(value: GenericValue): (input: GenericInput) => input is GenericInput & Primitive<Unwrap<GenericValue>>;
38
+ export declare function equal<GenericInput extends Primitives, GenericValue extends (Primitive<ToLargeEnsemble<Unwrap<GenericInput>>> | ToLargeEnsemble<Unwrap<GenericInput>>)>(input: GenericInput, value: GenericValue): input is GenericInput & Primitive<Unwrap<GenericValue>>;
@@ -6,7 +6,7 @@ function equal(...args) {
6
6
  return (input) => equal(input, value);
7
7
  }
8
8
  const [input, value] = args;
9
- return unwrap(input) === unwrap(value);
9
+ return unwrap(input).toString() === unwrap(value).toString();
10
10
  }
11
11
 
12
12
  export { equal };
@@ -2,13 +2,11 @@ import { type Date, type Number, type String, type Time } from "../base";
2
2
  import { type ToWrappedValue, type SortType } from "../../../common";
3
3
  import * as DDate from "../../../date";
4
4
  /**
5
- * Sorts an array of primitives (String, Number, Date, Time) in ascending or descending order.
5
+ * Sorts arrays of wrapped primitives (`String`, `Number`, `Date`, `Time`).
6
6
  *
7
7
  * **Supported call styles:**
8
- * - Classic: `sort(input, type)` -> returns a new array
9
- * - Curried: `sort(type)` -> returns a function waiting for the input
10
- *
11
- * The output array contains wrapped primitives.
8
+ * - Classic: `sort(input, type)` wrapped array
9
+ * - Curried: `sort(type)` function waiting for the input
12
10
  *
13
11
  * ```ts
14
12
  * const numbers = [
@@ -27,13 +25,13 @@ import * as DDate from "../../../date";
27
25
  * // desc: C.Number[]
28
26
  *
29
27
  * const dates = C.sort([
30
- * D.createTheDate(2),
31
- * D.createTheDate(1),
32
- * ], "ASC");
33
- * // dates: C.Date[]
34
- *
28
+ * D.create("2024-01-02"),
29
+ * D.create("2024-01-01"),
35
30
  * ```
36
31
  *
32
+ * @remarks
33
+ * - Supports mixed wrapped/raw values in the same primitive family.
34
+ *
37
35
  * @see https://utils.duplojs.dev/en/v1/api/clean/primitives/operators/sort
38
36
  *
39
37
  * @namespace C
@@ -1,22 +1,24 @@
1
1
  import { type Time } from "../../base";
2
2
  import { type TheTime } from "../../../../date";
3
3
  /**
4
- * Checks whether a Time is greater than a threshold.
4
+ * Checks whether a wrapped `Time` is strictly greater than a threshold.
5
5
  *
6
6
  * **Supported call styles:**
7
- * - Classic: `timeGreaterThan(time, threshold)` -> returns a boolean
8
- * - Curried: `timeGreaterThan(threshold)` -> returns a function waiting for the time
7
+ * - Classic: `timeGreaterThan(time, threshold)` `boolean`
8
+ * - Curried: `timeGreaterThan(threshold)` function waiting for the time
9
9
  *
10
- * Use it to compare wrapped durations or raw TheTime values.
10
+ * `threshold` accepts wrapped `Time` or raw `TheTime`.
11
11
  *
12
12
  * ```ts
13
- * const duration = C.Time.createOrThrow(D.createTheTime(3_600_000));
14
- * const threshold = D.createTheTime(1_800_000);
13
+ * const duration = C.Time.createOrThrow(D.createTime(1, "hour"));
14
+ * const threshold = D.createTime(30, "minute");
15
15
  *
16
- * if (C.timeGreaterThan(duration, threshold)) {
17
- * // duration is greater than threshold
18
- * }
16
+ * const result = C.timeGreaterThan(duration, threshold);
17
+ * // result: true
19
18
  *
19
+ * pipe(
20
+ * duration,
21
+ * C.timeGreaterThan(threshold),
20
22
  * ```
21
23
  *
22
24
  * @see https://utils.duplojs.dev/en/v1/api/clean/primitives/operators/timeGreaterThan
@@ -1,22 +1,24 @@
1
1
  import { type Time } from "../../base";
2
2
  import { type TheTime } from "../../../../date";
3
3
  /**
4
- * Checks whether a Time is less than a threshold.
4
+ * Checks whether a wrapped `Time` is strictly less than a threshold.
5
5
  *
6
6
  * **Supported call styles:**
7
- * - Classic: `timeLessThan(time, threshold)` -> returns a boolean
8
- * - Curried: `timeLessThan(threshold)` -> returns a function waiting for the time
7
+ * - Classic: `timeLessThan(time, threshold)` `boolean`
8
+ * - Curried: `timeLessThan(threshold)` function waiting for the time
9
9
  *
10
- * Use it to compare wrapped durations or raw TheTime values.
10
+ * `threshold` accepts wrapped `Time` or raw `TheTime`.
11
11
  *
12
12
  * ```ts
13
- * const duration = C.Time.createOrThrow(D.createTheTime(3_600_000));
14
- * const threshold = D.createTheTime(7_200_000);
13
+ * const duration = C.Time.createOrThrow(D.createTime(1, "hour"));
14
+ * const threshold = D.createTime(2, "hour");
15
15
  *
16
- * if (C.timeLessThan(duration, threshold)) {
17
- * // duration is less than threshold
18
- * }
16
+ * const result = C.timeLessThan(duration, threshold);
17
+ * // result: true
19
18
  *
19
+ * pipe(
20
+ * duration,
21
+ * C.timeLessThan(threshold),
20
22
  * ```
21
23
  *
22
24
  * @see https://utils.duplojs.dev/en/v1/api/clean/primitives/operators/timeLessThan
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var wrapValue = require('../../../../common/wrapValue.cjs');
4
- var createTheTime = require('../../../../date/createTheTime.cjs');
4
+ var theTime = require('../../../../date/theTime.cjs');
5
5
  var unwrap = require('../../../../common/unwrap.cjs');
6
6
  var toTimeValue = require('../../../../date/toTimeValue.cjs');
7
7
 
@@ -9,7 +9,7 @@ var toTimeValue = require('../../../../date/toTimeValue.cjs');
9
9
  * {@include clean/timeMax/index.md}
10
10
  */
11
11
  function timeMax(input) {
12
- return wrapValue.wrapValue(createTheTime.createTheTime(Math.max(...input.map(unwrap.unwrap).map(toTimeValue.toTimeValue))));
12
+ return wrapValue.wrapValue(theTime.TheTime.new(Math.max(...input.map(unwrap.unwrap).map(toTimeValue.toTimeValue))));
13
13
  }
14
14
 
15
15
  exports.timeMax = timeMax;
@@ -1,32 +1,25 @@
1
- import { type TheTime } from "../../../../date";
2
- import { type Time } from "../../base";
1
+ import { TheTime } from "../../../../date";
3
2
  import { type AnyTuple } from "../../../../common";
3
+ import { type Time } from "../../base";
4
4
  /**
5
- * Returns the largest duration from a tuple of Time values.
5
+ * Returns the largest wrapped `Time` from a tuple.
6
6
  *
7
7
  * **Supported call styles:**
8
- * - Classic: `timeMax(input)` -> returns a Time
8
+ * - Classic: `timeMax(input)` `Time`
9
9
  *
10
- * The input can mix wrapped Times and raw TheTime values.
10
+ * `input` can mix wrapped `Time` and raw `TheTime` values.
11
11
  *
12
12
  * ```ts
13
13
  * const largest = C.timeMax([
14
- * C.Time.createOrThrow(D.createTheTime(1_000)),
15
- * D.createTheTime(500),
16
- * D.createTheTime(2_000),
14
+ * C.Time.createOrThrow(D.createTime(1_000, "millisecond")),
15
+ * D.createTime(500, "millisecond"),
16
+ * D.createTime(2_000, "millisecond"),
17
17
  * ]);
18
18
  * // largest: C.Time
19
19
  *
20
- * const fromRaw = C.timeMax([
21
- * D.createTheTime(10),
22
- * D.createTheTime(5),
23
- * D.createTheTime(20),
24
- * ]);
25
- * // fromRaw: C.Time
26
- *
27
20
  * const mixed = C.timeMax([
28
- * C.Time.createOrThrow(D.createTheTime(100)),
29
- * D.createTheTime(50),
21
+ * C.Time.createOrThrow(D.createTime(100, "millisecond")),
22
+ * D.createTime(50, "millisecond"),
30
23
  * ]);
31
24
  * // mixed: C.Time
32
25
  *
@@ -1,5 +1,5 @@
1
1
  import { wrapValue } from '../../../../common/wrapValue.mjs';
2
- import { createTheTime } from '../../../../date/createTheTime.mjs';
2
+ import { TheTime } from '../../../../date/theTime.mjs';
3
3
  import { unwrap } from '../../../../common/unwrap.mjs';
4
4
  import { toTimeValue } from '../../../../date/toTimeValue.mjs';
5
5
 
@@ -7,7 +7,7 @@ import { toTimeValue } from '../../../../date/toTimeValue.mjs';
7
7
  * {@include clean/timeMax/index.md}
8
8
  */
9
9
  function timeMax(input) {
10
- return wrapValue(createTheTime(Math.max(...input.map(unwrap).map(toTimeValue))));
10
+ return wrapValue(TheTime.new(Math.max(...input.map(unwrap).map(toTimeValue))));
11
11
  }
12
12
 
13
13
  export { timeMax };
@@ -1,15 +1,15 @@
1
1
  'use strict';
2
2
 
3
- var toTimeValue = require('../../../../date/toTimeValue.cjs');
4
3
  var wrapValue = require('../../../../common/wrapValue.cjs');
5
- var createTheTime = require('../../../../date/createTheTime.cjs');
4
+ var theTime = require('../../../../date/theTime.cjs');
6
5
  var unwrap = require('../../../../common/unwrap.cjs');
6
+ var toTimeValue = require('../../../../date/toTimeValue.cjs');
7
7
 
8
8
  /**
9
9
  * {@include clean/timeMin/index.md}
10
10
  */
11
11
  function timeMin(input) {
12
- return wrapValue.wrapValue(createTheTime.createTheTime(Math.min(...input.map(unwrap.unwrap).map(toTimeValue.toTimeValue))));
12
+ return wrapValue.wrapValue(theTime.TheTime.new(Math.min(...input.map(unwrap.unwrap).map(toTimeValue.toTimeValue))));
13
13
  }
14
14
 
15
15
  exports.timeMin = timeMin;
@@ -1,32 +1,25 @@
1
- import { type TheTime } from "../../../../date";
2
- import { type Time } from "../../base";
3
1
  import { type AnyTuple } from "../../../../common";
2
+ import { TheTime } from "../../../../date";
3
+ import { type Time } from "../../base";
4
4
  /**
5
- * Returns the smallest duration from a tuple of Time values.
5
+ * Returns the smallest wrapped `Time` from a tuple.
6
6
  *
7
7
  * **Supported call styles:**
8
- * - Classic: `timeMin(input)` -> returns a Time
8
+ * - Classic: `timeMin(input)` `Time`
9
9
  *
10
- * The input can mix wrapped Times and raw TheTime values.
10
+ * `input` can mix wrapped `Time` and raw `TheTime` values.
11
11
  *
12
12
  * ```ts
13
13
  * const smallest = C.timeMin([
14
- * C.Time.createOrThrow(D.createTheTime(1_000)),
15
- * D.createTheTime(500),
16
- * D.createTheTime(2_000),
14
+ * C.Time.createOrThrow(D.createTime(1_000, "millisecond")),
15
+ * D.createTime(500, "millisecond"),
16
+ * D.createTime(2_000, "millisecond"),
17
17
  * ]);
18
18
  * // smallest: C.Time
19
19
  *
20
- * const fromRaw = C.timeMin([
21
- * D.createTheTime(10),
22
- * D.createTheTime(5),
23
- * D.createTheTime(20),
24
- * ]);
25
- * // fromRaw: C.Time
26
- *
27
20
  * const mixed = C.timeMin([
28
- * C.Time.createOrThrow(D.createTheTime(100)),
29
- * D.createTheTime(50),
21
+ * C.Time.createOrThrow(D.createTime(100, "millisecond")),
22
+ * D.createTime(50, "millisecond"),
30
23
  * ]);
31
24
  * // mixed: C.Time
32
25
  *
@@ -1,13 +1,13 @@
1
- import { toTimeValue } from '../../../../date/toTimeValue.mjs';
2
1
  import { wrapValue } from '../../../../common/wrapValue.mjs';
3
- import { createTheTime } from '../../../../date/createTheTime.mjs';
2
+ import { TheTime } from '../../../../date/theTime.mjs';
4
3
  import { unwrap } from '../../../../common/unwrap.mjs';
4
+ import { toTimeValue } from '../../../../date/toTimeValue.mjs';
5
5
 
6
6
  /**
7
7
  * {@include clean/timeMin/index.md}
8
8
  */
9
9
  function timeMin(input) {
10
- return wrapValue(createTheTime(Math.min(...input.map(unwrap).map(toTimeValue))));
10
+ return wrapValue(TheTime.new(Math.min(...input.map(unwrap).map(toTimeValue))));
11
11
  }
12
12
 
13
13
  export { timeMin };
@@ -2,9 +2,14 @@
2
2
 
3
3
  var entity = require('./entity.cjs');
4
4
  var flag = require('./flag.cjs');
5
+ var forward = require('../common/forward.cjs');
5
6
  var unwrap = require('../common/unwrap.cjs');
6
7
 
7
- function unwrapEntity(entity$1) {
8
+ /**
9
+ * {@include clean/unwrapEntity/index.md}
10
+ */
11
+ function unwrapEntity(entity$1, params) {
12
+ const transformer = params?.transformer ?? forward.forward;
8
13
  const unwrapEntity = {};
9
14
  for (const prop in entity$1) {
10
15
  if (prop === entity.entityKind.runTimeKey) {
@@ -14,10 +19,15 @@ function unwrapEntity(entity$1) {
14
19
  unwrapEntity._flags = entity$1[prop];
15
20
  }
16
21
  else if (entity$1[prop] instanceof Array) {
17
- unwrapEntity[prop] = entity$1[prop].map(unwrap.unwrap);
22
+ const length = entity$1[prop].length;
23
+ const result = [];
24
+ for (let index = 0; index < length; index++) {
25
+ result[index] = transformer(unwrap.unwrap(entity$1[prop][index]));
26
+ }
27
+ unwrapEntity[prop] = result;
18
28
  }
19
29
  else {
20
- unwrapEntity[prop] = unwrap.unwrap(entity$1[prop]);
30
+ unwrapEntity[prop] = transformer(unwrap.unwrap(entity$1[prop]));
21
31
  }
22
32
  }
23
33
  return unwrapEntity;
@@ -1,13 +1,65 @@
1
- import { type GetKindValue, type SimplifyTopLevel, type Kind, type Unwrap, type DeepReadonly } from "../common";
1
+ import { type GetKindValue, type SimplifyTopLevel, type Kind, type Unwrap, type DeepReadonly, type TransformerFunction, type IsEqual, type Transformer } from "../common";
2
2
  import { entityKind, type Entity } from "./entity";
3
3
  import { flagKind } from "./flag";
4
- type UnwrapArrayProperties<GenericValue extends readonly any[]> = GenericValue extends readonly [infer InferredFirst, ...infer InferredRest] ? (InferredRest extends readonly [] ? readonly [] : UnwrapArrayProperties<InferredRest>) extends infer InferredResult extends readonly any[] ? readonly [Unwrap<InferredFirst>, ...InferredResult] : never : readonly Unwrap<GenericValue[number]>[];
5
- export type UnwrapEntity<GenericEntity extends Entity> = SimplifyTopLevel<DeepReadonly<{
6
- [Prop in Extract<keyof GenericEntity, string>]: GenericEntity[Prop] extends readonly any[] ? UnwrapArrayProperties<GenericEntity[Prop]> : Unwrap<GenericEntity[Prop]>;
4
+ type ApplyTransformer<GenericValue extends unknown, GenericTransformer extends TransformerFunction> = IsEqual<GenericTransformer, never> extends true ? GenericValue : GenericTransformer extends TransformerFunction<infer InferredMethodName> ? Transformer<GenericValue, InferredMethodName> : never;
5
+ type UnwrapArrayProperties<GenericValue extends readonly any[], GenericTransformer extends TransformerFunction> = GenericValue extends readonly [infer InferredFirst, ...infer InferredRest] ? (InferredRest extends readonly [] ? readonly [] : UnwrapArrayProperties<InferredRest, GenericTransformer>) extends infer InferredResult extends readonly any[] ? readonly [
6
+ ApplyTransformer<Unwrap<InferredFirst>, GenericTransformer>,
7
+ ...InferredResult
8
+ ] : never : readonly ApplyTransformer<Unwrap<GenericValue[number]>, GenericTransformer>[];
9
+ export type UnwrapEntity<GenericEntity extends Entity, GenericTransformer extends TransformerFunction = never> = SimplifyTopLevel<DeepReadonly<{
10
+ [Prop in Extract<keyof GenericEntity, string>]: GenericEntity[Prop] extends readonly any[] ? UnwrapArrayProperties<GenericEntity[Prop], GenericTransformer> : ApplyTransformer<Unwrap<GenericEntity[Prop]>, GenericTransformer>;
7
11
  } & {
8
12
  [Prop in "_entityName"]: GetKindValue<typeof entityKind, GenericEntity>;
9
13
  } & (GenericEntity extends Kind<typeof flagKind.definition, any> ? {
10
14
  [Prop in "_flags"]: SimplifyTopLevel<GetKindValue<typeof flagKind, GenericEntity>>;
11
15
  } : {})>>;
12
- export declare function unwrapEntity<GenericEntity extends Entity>(entity: GenericEntity): UnwrapEntity<GenericEntity>;
16
+ /**
17
+ * Unwraps a `Clean` entity into a readonly plain object.
18
+ *
19
+ * Signature: `unwrapEntity(entity, params?)` → unwrapped object
20
+ *
21
+ * By default, wrapped values are unwrapped as-is. You can pass a transformer (for example `toNative` or `toJSON`) to project values during unwrapping.
22
+ *
23
+ * ```ts
24
+ * const Id = C.createNewType("userId", DP.number());
25
+ * const Name = C.createNewType("userName", DP.string());
26
+ * const Birth = C.createNewType("userBirth", DP.date());
27
+ * const TimeSpent = C.createNewType("userTimeSpent", DP.time());
28
+ *
29
+ * const User = C.createEntity("User", () => ({
30
+ * id: Id,
31
+ * name: Name,
32
+ * birth: Birth,
33
+ * timeSpent: TimeSpent,
34
+ * }));
35
+ *
36
+ * const entity = User.new({
37
+ * id: Id.createOrThrow(1),
38
+ * name: Name.createOrThrow("Ada"),
39
+ * birth: Birth.createOrThrow(D.create("2024-01-01")),
40
+ * timeSpent: TimeSpent.createOrThrow(D.createTime(30, "minute")),
41
+ * });
42
+ *
43
+ * const unwrapped = C.unwrapEntity(entity);
44
+ * // unwrapped.birth: TheDate, unwrapped.timeSpent: TheTime
45
+ *
46
+ * const asJSON = C.unwrapEntity(entity, { transformer: toJSON });
47
+ * // asJSON.birth: SerializedTheDate, asJSON.timeSpent: SerializedTheTime
48
+ *
49
+ * const asNative = C.unwrapEntity(entity, { transformer: toNative });
50
+ * // asNative.birth: Date, asNative.timeSpent: number
51
+ * ```
52
+ *
53
+ * @remarks
54
+ * - The result always contains `_entityName`.
55
+ * - If the entity has flags, `_flags` is also included.
56
+ *
57
+ * @see https://utils.duplojs.dev/en/v1/api/clean/unwrapEntity
58
+ *
59
+ * @namespace C
60
+ *
61
+ */
62
+ export declare function unwrapEntity<GenericEntity extends Entity, GenericTransformer extends TransformerFunction = never>(entity: GenericEntity, params?: {
63
+ transformer?: GenericTransformer;
64
+ }): UnwrapEntity<GenericEntity, GenericTransformer>;
13
65
  export {};