@gobrand/tiempo 2.8.1 → 2.9.1

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 (445) hide show
  1. package/dist/addDays.js +3 -2
  2. package/dist/addHours.js +3 -2
  3. package/dist/addMicroseconds.js +3 -2
  4. package/dist/addMilliseconds.js +3 -2
  5. package/dist/addMinutes.js +3 -2
  6. package/dist/addMonths.js +3 -2
  7. package/dist/addNanoseconds.js +3 -2
  8. package/dist/addSeconds.js +3 -2
  9. package/dist/addWeeks.js +3 -2
  10. package/dist/addYears.js +3 -2
  11. package/dist/{chunk-TNCLJK4Y.js → chunk-26VAIV6A.js} +5 -3
  12. package/dist/chunk-26VAIV6A.js.map +1 -0
  13. package/dist/{chunk-JA7SVLAF.js → chunk-2KYXZIGP.js} +4 -4
  14. package/dist/{chunk-AE36GX4F.js → chunk-2PDEHGNB.js} +5 -2
  15. package/dist/chunk-2PDEHGNB.js.map +1 -0
  16. package/dist/{chunk-VLZ3HQQA.js → chunk-2Q6WEULJ.js} +2 -2
  17. package/dist/{chunk-ZGR4NZTS.js → chunk-347TWPBS.js} +2 -3
  18. package/dist/chunk-347TWPBS.js.map +1 -0
  19. package/dist/{chunk-JOD4ATPE.js → chunk-3HXEOAQN.js} +2 -2
  20. package/dist/{chunk-WVHAYLBW.js → chunk-3ORGILYG.js} +2 -2
  21. package/dist/{chunk-7ATM7AXL.js → chunk-3RSGMPWR.js} +2 -2
  22. package/dist/{chunk-AHMKY474.js → chunk-3XNQYFWS.js} +2 -2
  23. package/dist/{chunk-5C3TQSWA.js → chunk-4BQ4BJ4Y.js} +4 -5
  24. package/dist/chunk-4BQ4BJ4Y.js.map +1 -0
  25. package/dist/{chunk-4E7OGJ3F.js → chunk-4EFKJDHV.js} +5 -2
  26. package/dist/chunk-4EFKJDHV.js.map +1 -0
  27. package/dist/{chunk-U4RNUZXO.js → chunk-4JPDLKBK.js} +2 -2
  28. package/dist/{chunk-Y7CIJQ67.js → chunk-4JPVE6OV.js} +5 -3
  29. package/dist/chunk-4JPVE6OV.js.map +1 -0
  30. package/dist/{chunk-OLEOU3XE.js → chunk-4N6CTX4N.js} +5 -3
  31. package/dist/chunk-4N6CTX4N.js.map +1 -0
  32. package/dist/{chunk-XW5MLXX5.js → chunk-4RLD3OE2.js} +2 -2
  33. package/dist/{chunk-YQBM63DC.js → chunk-5DQVEAAR.js} +9 -4
  34. package/dist/chunk-5DQVEAAR.js.map +1 -0
  35. package/dist/{chunk-YKBP3G7L.js → chunk-5ZOOVGMT.js} +2 -2
  36. package/dist/{chunk-UBY22QWM.js → chunk-63RSJ2W4.js} +4 -4
  37. package/dist/chunk-65RGM7EG.js +13 -0
  38. package/dist/chunk-65RGM7EG.js.map +1 -0
  39. package/dist/{chunk-EEQ3REET.js → chunk-6KAIABBV.js} +2 -2
  40. package/dist/{chunk-PPB62JYV.js → chunk-6SF6EC2I.js} +2 -2
  41. package/dist/{chunk-5BYRBC7H.js → chunk-7EVZGEAI.js} +18 -17
  42. package/dist/{chunk-5BYRBC7H.js.map → chunk-7EVZGEAI.js.map} +1 -1
  43. package/dist/{chunk-4NJMCCUM.js → chunk-7JL3U64G.js} +2 -2
  44. package/dist/{chunk-JNA3AFOC.js → chunk-AHBTUFRW.js} +5 -2
  45. package/dist/chunk-AHBTUFRW.js.map +1 -0
  46. package/dist/chunk-AI5MRREC.js +22 -0
  47. package/dist/chunk-AI5MRREC.js.map +1 -0
  48. package/dist/{chunk-RW3C2677.js → chunk-ALAAO5GL.js} +2 -3
  49. package/dist/chunk-ALAAO5GL.js.map +1 -0
  50. package/dist/{chunk-A5VVBYNT.js → chunk-ATEVQYB6.js} +2 -2
  51. package/dist/{chunk-OQ4CWKJT.js → chunk-BO5WXWO2.js} +2 -3
  52. package/dist/chunk-BO5WXWO2.js.map +1 -0
  53. package/dist/{chunk-4PSMM55Q.js → chunk-BQHSXMGZ.js} +7 -3
  54. package/dist/chunk-BQHSXMGZ.js.map +1 -0
  55. package/dist/{chunk-776JOVV6.js → chunk-C4UZJHM7.js} +2 -3
  56. package/dist/chunk-C4UZJHM7.js.map +1 -0
  57. package/dist/{chunk-VZJGCDAG.js → chunk-C5O6LIWR.js} +5 -2
  58. package/dist/chunk-C5O6LIWR.js.map +1 -0
  59. package/dist/{chunk-LDO6PRNJ.js → chunk-C7SIOWMA.js} +2 -2
  60. package/dist/{chunk-FSD3DDFC.js → chunk-CKOIGPND.js} +5 -2
  61. package/dist/chunk-CKOIGPND.js.map +1 -0
  62. package/dist/{chunk-6IP245MS.js → chunk-DC5JXNIC.js} +5 -5
  63. package/dist/chunk-DC5JXNIC.js.map +1 -0
  64. package/dist/{chunk-HOCNCQTC.js → chunk-E2MU2P66.js} +2 -3
  65. package/dist/chunk-E2MU2P66.js.map +1 -0
  66. package/dist/{chunk-ADQTZVMH.js → chunk-EKR6BYFM.js} +2 -2
  67. package/dist/{chunk-PVAOUYXF.js → chunk-EOXULNBC.js} +5 -5
  68. package/dist/chunk-EOXULNBC.js.map +1 -0
  69. package/dist/{chunk-BV6CLVSI.js → chunk-EW3MVOID.js} +3 -4
  70. package/dist/chunk-EW3MVOID.js.map +1 -0
  71. package/dist/{chunk-WUAIUEH7.js → chunk-EZJDWFFE.js} +5 -2
  72. package/dist/chunk-EZJDWFFE.js.map +1 -0
  73. package/dist/{chunk-BQBLSXK2.js → chunk-FLRHLAMD.js} +2 -2
  74. package/dist/{chunk-TGKWBQ7L.js → chunk-GSVAMMHA.js} +6 -3
  75. package/dist/chunk-GSVAMMHA.js.map +1 -0
  76. package/dist/{chunk-3TSFIPUR.js → chunk-HDTIOOWB.js} +2 -3
  77. package/dist/chunk-HDTIOOWB.js.map +1 -0
  78. package/dist/{chunk-EZ7NVTZI.js → chunk-I6S6EIZG.js} +7 -5
  79. package/dist/chunk-I6S6EIZG.js.map +1 -0
  80. package/dist/{chunk-NRD5HRZV.js → chunk-IOLV6PTH.js} +2 -2
  81. package/dist/{chunk-ZC6KWXCW.js → chunk-IV47GMAA.js} +36 -27
  82. package/dist/chunk-IV47GMAA.js.map +1 -0
  83. package/dist/{chunk-HFQUXON5.js → chunk-J52B4PX6.js} +10 -5
  84. package/dist/chunk-J52B4PX6.js.map +1 -0
  85. package/dist/{chunk-WY63VEXE.js → chunk-JM42PLWS.js} +5 -2
  86. package/dist/chunk-JM42PLWS.js.map +1 -0
  87. package/dist/{chunk-DKYVFYWM.js → chunk-JTANYFEV.js} +5 -3
  88. package/dist/chunk-JTANYFEV.js.map +1 -0
  89. package/dist/{chunk-G2JUEBC5.js → chunk-LOANS6ZE.js} +5 -3
  90. package/dist/chunk-LOANS6ZE.js.map +1 -0
  91. package/dist/{chunk-MMI2HHT7.js → chunk-LTW2TDLL.js} +2 -2
  92. package/dist/{chunk-JHRXY36W.js → chunk-MA7PR6V5.js} +2 -2
  93. package/dist/{chunk-L4SVABDH.js → chunk-MEADD45E.js} +2 -2
  94. package/dist/{chunk-2XHAHSB6.js → chunk-MXE44KVG.js} +2 -2
  95. package/dist/{chunk-DT2EWLHU.js → chunk-NE7HNEF6.js} +2 -2
  96. package/dist/{chunk-EYO2ZJLH.js → chunk-OPWK2TVF.js} +2 -2
  97. package/dist/{chunk-BIAPE4MR.js → chunk-OVFO6CZ7.js} +5 -5
  98. package/dist/chunk-OVFO6CZ7.js.map +1 -0
  99. package/dist/{chunk-HDBH7RTY.js → chunk-OX4I35UO.js} +2 -2
  100. package/dist/{chunk-3A6X6WV5.js → chunk-PXF3RMFH.js} +1 -2
  101. package/dist/chunk-PXF3RMFH.js.map +1 -0
  102. package/dist/{chunk-CY746ZUQ.js → chunk-RB2YCLBV.js} +2 -2
  103. package/dist/{chunk-UJWM2BV2.js → chunk-RLF3Y7VC.js} +10 -5
  104. package/dist/chunk-RLF3Y7VC.js.map +1 -0
  105. package/dist/{chunk-RBEW6PXR.js → chunk-RPQ5K247.js} +5 -2
  106. package/dist/chunk-RPQ5K247.js.map +1 -0
  107. package/dist/{chunk-HLGMUTFK.js → chunk-RQUVNJBG.js} +2 -3
  108. package/dist/chunk-RQUVNJBG.js.map +1 -0
  109. package/dist/{chunk-UJW2FPI4.js → chunk-RTNF2H34.js} +2 -2
  110. package/dist/{chunk-BPZ7BRJW.js → chunk-RW25XXOH.js} +5 -2
  111. package/dist/chunk-RW25XXOH.js.map +1 -0
  112. package/dist/{chunk-QFNGYTTH.js → chunk-RXTMPPOP.js} +5 -3
  113. package/dist/chunk-RXTMPPOP.js.map +1 -0
  114. package/dist/{chunk-S63QUP4W.js → chunk-SAFMGBXL.js} +2 -2
  115. package/dist/chunk-SGHPW77A.js +19 -0
  116. package/dist/chunk-SGHPW77A.js.map +1 -0
  117. package/dist/{chunk-AJEIDKVJ.js → chunk-T4J7PXYZ.js} +5 -2
  118. package/dist/chunk-T4J7PXYZ.js.map +1 -0
  119. package/dist/{chunk-KZB6NERH.js → chunk-TCEDHHNM.js} +5 -2
  120. package/dist/chunk-TCEDHHNM.js.map +1 -0
  121. package/dist/{chunk-J6G2I2TU.js → chunk-TKV5JYQY.js} +2 -2
  122. package/dist/chunk-TUOGC2TY.js +19 -0
  123. package/dist/chunk-TUOGC2TY.js.map +1 -0
  124. package/dist/chunk-TWZNSMKO.js +19 -0
  125. package/dist/chunk-TWZNSMKO.js.map +1 -0
  126. package/dist/{chunk-YIT6EMBC.js → chunk-TYYV5UYX.js} +2 -3
  127. package/dist/chunk-TYYV5UYX.js.map +1 -0
  128. package/dist/{chunk-7VLSSOVC.js → chunk-UAYBKORB.js} +3 -4
  129. package/dist/chunk-UAYBKORB.js.map +1 -0
  130. package/dist/{chunk-OABS374T.js → chunk-VBDGWVJ4.js} +2 -3
  131. package/dist/chunk-VBDGWVJ4.js.map +1 -0
  132. package/dist/{chunk-BUX26GTD.js → chunk-VDEZJB42.js} +5 -3
  133. package/dist/chunk-VDEZJB42.js.map +1 -0
  134. package/dist/{chunk-O6RIN7K3.js → chunk-VJGNLAF2.js} +5 -2
  135. package/dist/chunk-VJGNLAF2.js.map +1 -0
  136. package/dist/{chunk-ZDA7GSWU.js → chunk-VTP4QJY6.js} +3 -4
  137. package/dist/chunk-VTP4QJY6.js.map +1 -0
  138. package/dist/{chunk-DFLGGK4F.js → chunk-VTXBG2JV.js} +6 -3
  139. package/dist/chunk-VTXBG2JV.js.map +1 -0
  140. package/dist/{chunk-BH2YB4MV.js → chunk-VXG2IG2N.js} +2 -2
  141. package/dist/{chunk-AJ4JBKJK.js → chunk-VXOQ7IG5.js} +1 -2
  142. package/dist/chunk-VXOQ7IG5.js.map +1 -0
  143. package/dist/{chunk-V27NUBXQ.js → chunk-WWLDINLH.js} +2 -2
  144. package/dist/{chunk-CHW2EN2O.js → chunk-X3T7QMBA.js} +5 -5
  145. package/dist/chunk-X3T7QMBA.js.map +1 -0
  146. package/dist/chunk-XVAVCEKT.js +19 -0
  147. package/dist/chunk-XVAVCEKT.js.map +1 -0
  148. package/dist/{chunk-Q2F3HEXB.js → chunk-YMS7JXBN.js} +2 -2
  149. package/dist/{chunk-52NEOY34.js → chunk-YNV6WGXV.js} +2 -2
  150. package/dist/{chunk-BSV32PSO.js → chunk-YO2VXHA5.js} +6 -3
  151. package/dist/chunk-YO2VXHA5.js.map +1 -0
  152. package/dist/{chunk-ISHZRFVN.js → chunk-ZITFEEZS.js} +2 -2
  153. package/dist/{chunk-X26WIJ6L.js → chunk-ZSOH7VST.js} +7 -5
  154. package/dist/chunk-ZSOH7VST.js.map +1 -0
  155. package/dist/differenceInDays.d.ts +5 -3
  156. package/dist/differenceInDays.d.ts.map +1 -1
  157. package/dist/differenceInDays.js +3 -2
  158. package/dist/differenceInHours.d.ts +5 -3
  159. package/dist/differenceInHours.d.ts.map +1 -1
  160. package/dist/differenceInHours.js +4 -3
  161. package/dist/differenceInMicroseconds.d.ts +1 -1
  162. package/dist/differenceInMicroseconds.d.ts.map +1 -1
  163. package/dist/differenceInMicroseconds.js +3 -2
  164. package/dist/differenceInMilliseconds.d.ts +1 -1
  165. package/dist/differenceInMilliseconds.d.ts.map +1 -1
  166. package/dist/differenceInMilliseconds.js +4 -3
  167. package/dist/differenceInMinutes.d.ts +5 -3
  168. package/dist/differenceInMinutes.d.ts.map +1 -1
  169. package/dist/differenceInMinutes.js +4 -3
  170. package/dist/differenceInMonths.d.ts +8 -5
  171. package/dist/differenceInMonths.d.ts.map +1 -1
  172. package/dist/differenceInMonths.js +3 -2
  173. package/dist/differenceInNanoseconds.d.ts +1 -1
  174. package/dist/differenceInNanoseconds.d.ts.map +1 -1
  175. package/dist/differenceInNanoseconds.js +3 -2
  176. package/dist/differenceInSeconds.d.ts +5 -3
  177. package/dist/differenceInSeconds.d.ts.map +1 -1
  178. package/dist/differenceInSeconds.js +4 -3
  179. package/dist/differenceInWeeks.d.ts +6 -4
  180. package/dist/differenceInWeeks.d.ts.map +1 -1
  181. package/dist/differenceInWeeks.js +3 -2
  182. package/dist/differenceInYears.d.ts +8 -5
  183. package/dist/differenceInYears.d.ts.map +1 -1
  184. package/dist/differenceInYears.js +3 -2
  185. package/dist/eachDayOfInterval.d.ts +1 -1
  186. package/dist/eachDayOfInterval.d.ts.map +1 -1
  187. package/dist/eachDayOfInterval.js +3 -2
  188. package/dist/eachHourOfInterval.d.ts +1 -1
  189. package/dist/eachHourOfInterval.d.ts.map +1 -1
  190. package/dist/eachHourOfInterval.js +3 -2
  191. package/dist/eachMinuteOfInterval.d.ts +1 -1
  192. package/dist/eachMinuteOfInterval.d.ts.map +1 -1
  193. package/dist/eachMinuteOfInterval.js +3 -2
  194. package/dist/eachMonthOfInterval.d.ts +1 -1
  195. package/dist/eachMonthOfInterval.d.ts.map +1 -1
  196. package/dist/eachMonthOfInterval.js +3 -2
  197. package/dist/eachWeekOfInterval.d.ts +1 -1
  198. package/dist/eachWeekOfInterval.d.ts.map +1 -1
  199. package/dist/eachWeekOfInterval.js +3 -2
  200. package/dist/eachYearOfInterval.d.ts +1 -1
  201. package/dist/eachYearOfInterval.d.ts.map +1 -1
  202. package/dist/eachYearOfInterval.js +3 -2
  203. package/dist/endOfDay.d.ts +1 -1
  204. package/dist/endOfDay.d.ts.map +1 -1
  205. package/dist/endOfDay.js +5 -4
  206. package/dist/endOfMonth.d.ts +1 -1
  207. package/dist/endOfMonth.d.ts.map +1 -1
  208. package/dist/endOfMonth.js +5 -4
  209. package/dist/endOfWeek.d.ts +1 -1
  210. package/dist/endOfWeek.d.ts.map +1 -1
  211. package/dist/endOfWeek.js +4 -3
  212. package/dist/endOfYear.d.ts +1 -1
  213. package/dist/endOfYear.d.ts.map +1 -1
  214. package/dist/endOfYear.js +5 -4
  215. package/dist/format.d.ts +1 -1
  216. package/dist/format.d.ts.map +1 -1
  217. package/dist/format.js +3 -2
  218. package/dist/formatPlainDate.d.ts +1 -1
  219. package/dist/formatPlainDate.d.ts.map +1 -1
  220. package/dist/formatPlainDate.js +2 -1
  221. package/dist/index.d.ts +1 -0
  222. package/dist/index.d.ts.map +1 -1
  223. package/dist/index.js +89 -88
  224. package/dist/intlFormatDistance.d.ts.map +1 -1
  225. package/dist/intlFormatDistance.js +11 -10
  226. package/dist/isAfter.d.ts +1 -1
  227. package/dist/isAfter.d.ts.map +1 -1
  228. package/dist/isAfter.js +4 -3
  229. package/dist/isBefore.d.ts +1 -1
  230. package/dist/isBefore.d.ts.map +1 -1
  231. package/dist/isBefore.js +4 -3
  232. package/dist/isFuture.js +5 -4
  233. package/dist/isPast.js +5 -4
  234. package/dist/isPlainDateAfter.d.ts +1 -1
  235. package/dist/isPlainDateAfter.d.ts.map +1 -1
  236. package/dist/isPlainDateAfter.js +2 -1
  237. package/dist/isPlainDateBefore.d.ts +1 -1
  238. package/dist/isPlainDateBefore.d.ts.map +1 -1
  239. package/dist/isPlainDateBefore.js +2 -1
  240. package/dist/isPlainDateEqual.d.ts +1 -1
  241. package/dist/isPlainDateEqual.d.ts.map +1 -1
  242. package/dist/isPlainDateEqual.js +2 -1
  243. package/dist/isPlainTimeAfter.d.ts +1 -1
  244. package/dist/isPlainTimeAfter.d.ts.map +1 -1
  245. package/dist/isPlainTimeAfter.js +2 -1
  246. package/dist/isPlainTimeBefore.d.ts +1 -1
  247. package/dist/isPlainTimeBefore.d.ts.map +1 -1
  248. package/dist/isPlainTimeBefore.js +2 -1
  249. package/dist/isPlainTimeEqual.d.ts +1 -1
  250. package/dist/isPlainTimeEqual.d.ts.map +1 -1
  251. package/dist/isPlainTimeEqual.js +2 -1
  252. package/dist/isSameDay.d.ts +1 -1
  253. package/dist/isSameDay.d.ts.map +1 -1
  254. package/dist/isSameDay.js +3 -2
  255. package/dist/isSameHour.js +3 -2
  256. package/dist/isSameMicrosecond.js +3 -2
  257. package/dist/isSameMillisecond.js +3 -2
  258. package/dist/isSameMinute.js +3 -2
  259. package/dist/isSameMonth.js +3 -2
  260. package/dist/isSameNanosecond.js +3 -2
  261. package/dist/isSameSecond.js +3 -2
  262. package/dist/isSameWeek.js +3 -2
  263. package/dist/isSameYear.js +3 -2
  264. package/dist/isWithinInterval.d.ts +1 -1
  265. package/dist/isWithinInterval.d.ts.map +1 -1
  266. package/dist/isWithinInterval.js +5 -4
  267. package/dist/now.d.ts +1 -1
  268. package/dist/now.d.ts.map +1 -1
  269. package/dist/now.js +2 -1
  270. package/dist/roundToNearestHour.js +3 -2
  271. package/dist/roundToNearestMinute.js +3 -2
  272. package/dist/roundToNearestSecond.js +3 -2
  273. package/dist/shared/differenceInMilliseconds.d.ts +1 -1
  274. package/dist/shared/differenceInMilliseconds.d.ts.map +1 -1
  275. package/dist/shared/differenceInMilliseconds.js +2 -1
  276. package/dist/shared/differenceOptions.d.ts +16 -0
  277. package/dist/shared/differenceOptions.d.ts.map +1 -0
  278. package/dist/shared/differenceOptions.js +1 -0
  279. package/dist/shared/differenceOptions.js.map +1 -0
  280. package/dist/shared/isAfter.d.ts +1 -1
  281. package/dist/shared/isAfter.d.ts.map +1 -1
  282. package/dist/shared/isAfter.js +2 -1
  283. package/dist/shared/isBefore.d.ts +1 -1
  284. package/dist/shared/isBefore.d.ts.map +1 -1
  285. package/dist/shared/isBefore.js +2 -1
  286. package/dist/shared/normalizeTemporalInput.d.ts +1 -1
  287. package/dist/shared/normalizeTemporalInput.d.ts.map +1 -1
  288. package/dist/shared/normalizeTemporalInput.js +2 -1
  289. package/dist/shared/normalizeWithPlainDate.d.ts +1 -1
  290. package/dist/shared/normalizeWithPlainDate.d.ts.map +1 -1
  291. package/dist/shared/normalizeWithPlainDate.js +4 -3
  292. package/dist/shared/nowZoned.d.ts +1 -1
  293. package/dist/shared/nowZoned.d.ts.map +1 -1
  294. package/dist/shared/nowZoned.js +3 -2
  295. package/dist/shared/plainDateToZonedDateTime.d.ts +1 -1
  296. package/dist/shared/plainDateToZonedDateTime.d.ts.map +1 -1
  297. package/dist/shared/plainDateToZonedDateTime.js +2 -1
  298. package/dist/shared/temporal.d.ts +21 -0
  299. package/dist/shared/temporal.d.ts.map +1 -0
  300. package/dist/shared/temporal.js +13 -0
  301. package/dist/shared/temporal.js.map +1 -0
  302. package/dist/shared/temporal.test.d.ts +2 -0
  303. package/dist/shared/temporal.test.d.ts.map +1 -0
  304. package/dist/simpleFormat.d.ts +1 -1
  305. package/dist/simpleFormat.d.ts.map +1 -1
  306. package/dist/simpleFormat.js +2 -1
  307. package/dist/startOfDay.d.ts +1 -1
  308. package/dist/startOfDay.d.ts.map +1 -1
  309. package/dist/startOfDay.js +5 -4
  310. package/dist/startOfMonth.d.ts +1 -1
  311. package/dist/startOfMonth.d.ts.map +1 -1
  312. package/dist/startOfMonth.js +5 -4
  313. package/dist/startOfWeek.d.ts +1 -1
  314. package/dist/startOfWeek.d.ts.map +1 -1
  315. package/dist/startOfWeek.js +4 -3
  316. package/dist/startOfYear.d.ts +1 -1
  317. package/dist/startOfYear.d.ts.map +1 -1
  318. package/dist/startOfYear.js +5 -4
  319. package/dist/subDays.js +4 -3
  320. package/dist/subHours.js +4 -3
  321. package/dist/subMicroseconds.js +4 -3
  322. package/dist/subMilliseconds.js +4 -3
  323. package/dist/subMinutes.js +4 -3
  324. package/dist/subMonths.js +4 -3
  325. package/dist/subNanoseconds.js +4 -3
  326. package/dist/subSeconds.js +4 -3
  327. package/dist/subWeeks.js +4 -3
  328. package/dist/subYears.js +4 -3
  329. package/dist/toDate.d.ts +1 -1
  330. package/dist/toDate.d.ts.map +1 -1
  331. package/dist/toDate.js +2 -1
  332. package/dist/toIso.d.ts +1 -1
  333. package/dist/toIso.d.ts.map +1 -1
  334. package/dist/toIso.js +2 -1
  335. package/dist/toIso9075.d.ts +1 -1
  336. package/dist/toIso9075.d.ts.map +1 -1
  337. package/dist/toIso9075.js +2 -1
  338. package/dist/toPlainDate.d.ts +1 -1
  339. package/dist/toPlainDate.d.ts.map +1 -1
  340. package/dist/toPlainDate.js +2 -1
  341. package/dist/toPlainTime.d.ts +1 -1
  342. package/dist/toPlainTime.d.ts.map +1 -1
  343. package/dist/toPlainTime.js +2 -1
  344. package/dist/toUtc.d.ts +1 -1
  345. package/dist/toUtc.d.ts.map +1 -1
  346. package/dist/toUtc.js +2 -1
  347. package/dist/toZonedTime.d.ts +1 -1
  348. package/dist/toZonedTime.d.ts.map +1 -1
  349. package/dist/toZonedTime.js +2 -1
  350. package/dist/today.d.ts +1 -1
  351. package/dist/today.d.ts.map +1 -1
  352. package/dist/today.js +2 -1
  353. package/package.json +1 -1
  354. package/dist/chunk-3A6X6WV5.js.map +0 -1
  355. package/dist/chunk-3TSFIPUR.js.map +0 -1
  356. package/dist/chunk-4E7OGJ3F.js.map +0 -1
  357. package/dist/chunk-4PSMM55Q.js.map +0 -1
  358. package/dist/chunk-5C3TQSWA.js.map +0 -1
  359. package/dist/chunk-6IP245MS.js.map +0 -1
  360. package/dist/chunk-776JOVV6.js.map +0 -1
  361. package/dist/chunk-7VLSSOVC.js.map +0 -1
  362. package/dist/chunk-AE36GX4F.js.map +0 -1
  363. package/dist/chunk-AJ4JBKJK.js.map +0 -1
  364. package/dist/chunk-AJEIDKVJ.js.map +0 -1
  365. package/dist/chunk-B2R2G5YK.js +0 -19
  366. package/dist/chunk-B2R2G5YK.js.map +0 -1
  367. package/dist/chunk-BIAPE4MR.js.map +0 -1
  368. package/dist/chunk-BPZ7BRJW.js.map +0 -1
  369. package/dist/chunk-BSV32PSO.js.map +0 -1
  370. package/dist/chunk-BUX26GTD.js.map +0 -1
  371. package/dist/chunk-BV6CLVSI.js.map +0 -1
  372. package/dist/chunk-CHW2EN2O.js.map +0 -1
  373. package/dist/chunk-DFLGGK4F.js.map +0 -1
  374. package/dist/chunk-DKYVFYWM.js.map +0 -1
  375. package/dist/chunk-EZ7NVTZI.js.map +0 -1
  376. package/dist/chunk-FSD3DDFC.js.map +0 -1
  377. package/dist/chunk-G2JUEBC5.js.map +0 -1
  378. package/dist/chunk-HFQUXON5.js.map +0 -1
  379. package/dist/chunk-HLGMUTFK.js.map +0 -1
  380. package/dist/chunk-HOCNCQTC.js.map +0 -1
  381. package/dist/chunk-JNA3AFOC.js.map +0 -1
  382. package/dist/chunk-KGVUENQO.js +0 -17
  383. package/dist/chunk-KGVUENQO.js.map +0 -1
  384. package/dist/chunk-KZB6NERH.js.map +0 -1
  385. package/dist/chunk-MJSZNWCV.js +0 -10
  386. package/dist/chunk-MJSZNWCV.js.map +0 -1
  387. package/dist/chunk-O6RIN7K3.js.map +0 -1
  388. package/dist/chunk-OABS374T.js.map +0 -1
  389. package/dist/chunk-OLEOU3XE.js.map +0 -1
  390. package/dist/chunk-OQ4CWKJT.js.map +0 -1
  391. package/dist/chunk-PMJD5N5J.js +0 -19
  392. package/dist/chunk-PMJD5N5J.js.map +0 -1
  393. package/dist/chunk-PVAOUYXF.js.map +0 -1
  394. package/dist/chunk-QFNGYTTH.js.map +0 -1
  395. package/dist/chunk-QVOEXF46.js +0 -19
  396. package/dist/chunk-QVOEXF46.js.map +0 -1
  397. package/dist/chunk-RBEW6PXR.js.map +0 -1
  398. package/dist/chunk-RW3C2677.js.map +0 -1
  399. package/dist/chunk-TGKWBQ7L.js.map +0 -1
  400. package/dist/chunk-TNCLJK4Y.js.map +0 -1
  401. package/dist/chunk-UJWM2BV2.js.map +0 -1
  402. package/dist/chunk-VZJGCDAG.js.map +0 -1
  403. package/dist/chunk-WUAIUEH7.js.map +0 -1
  404. package/dist/chunk-WY63VEXE.js.map +0 -1
  405. package/dist/chunk-X26WIJ6L.js.map +0 -1
  406. package/dist/chunk-Y7CIJQ67.js.map +0 -1
  407. package/dist/chunk-YIT6EMBC.js.map +0 -1
  408. package/dist/chunk-YQBM63DC.js.map +0 -1
  409. package/dist/chunk-ZC6KWXCW.js.map +0 -1
  410. package/dist/chunk-ZDA7GSWU.js.map +0 -1
  411. package/dist/chunk-ZGR4NZTS.js.map +0 -1
  412. /package/dist/{chunk-JA7SVLAF.js.map → chunk-2KYXZIGP.js.map} +0 -0
  413. /package/dist/{chunk-VLZ3HQQA.js.map → chunk-2Q6WEULJ.js.map} +0 -0
  414. /package/dist/{chunk-JOD4ATPE.js.map → chunk-3HXEOAQN.js.map} +0 -0
  415. /package/dist/{chunk-WVHAYLBW.js.map → chunk-3ORGILYG.js.map} +0 -0
  416. /package/dist/{chunk-7ATM7AXL.js.map → chunk-3RSGMPWR.js.map} +0 -0
  417. /package/dist/{chunk-AHMKY474.js.map → chunk-3XNQYFWS.js.map} +0 -0
  418. /package/dist/{chunk-U4RNUZXO.js.map → chunk-4JPDLKBK.js.map} +0 -0
  419. /package/dist/{chunk-XW5MLXX5.js.map → chunk-4RLD3OE2.js.map} +0 -0
  420. /package/dist/{chunk-YKBP3G7L.js.map → chunk-5ZOOVGMT.js.map} +0 -0
  421. /package/dist/{chunk-UBY22QWM.js.map → chunk-63RSJ2W4.js.map} +0 -0
  422. /package/dist/{chunk-EEQ3REET.js.map → chunk-6KAIABBV.js.map} +0 -0
  423. /package/dist/{chunk-PPB62JYV.js.map → chunk-6SF6EC2I.js.map} +0 -0
  424. /package/dist/{chunk-4NJMCCUM.js.map → chunk-7JL3U64G.js.map} +0 -0
  425. /package/dist/{chunk-A5VVBYNT.js.map → chunk-ATEVQYB6.js.map} +0 -0
  426. /package/dist/{chunk-LDO6PRNJ.js.map → chunk-C7SIOWMA.js.map} +0 -0
  427. /package/dist/{chunk-ADQTZVMH.js.map → chunk-EKR6BYFM.js.map} +0 -0
  428. /package/dist/{chunk-BQBLSXK2.js.map → chunk-FLRHLAMD.js.map} +0 -0
  429. /package/dist/{chunk-NRD5HRZV.js.map → chunk-IOLV6PTH.js.map} +0 -0
  430. /package/dist/{chunk-MMI2HHT7.js.map → chunk-LTW2TDLL.js.map} +0 -0
  431. /package/dist/{chunk-JHRXY36W.js.map → chunk-MA7PR6V5.js.map} +0 -0
  432. /package/dist/{chunk-L4SVABDH.js.map → chunk-MEADD45E.js.map} +0 -0
  433. /package/dist/{chunk-2XHAHSB6.js.map → chunk-MXE44KVG.js.map} +0 -0
  434. /package/dist/{chunk-DT2EWLHU.js.map → chunk-NE7HNEF6.js.map} +0 -0
  435. /package/dist/{chunk-EYO2ZJLH.js.map → chunk-OPWK2TVF.js.map} +0 -0
  436. /package/dist/{chunk-HDBH7RTY.js.map → chunk-OX4I35UO.js.map} +0 -0
  437. /package/dist/{chunk-CY746ZUQ.js.map → chunk-RB2YCLBV.js.map} +0 -0
  438. /package/dist/{chunk-UJW2FPI4.js.map → chunk-RTNF2H34.js.map} +0 -0
  439. /package/dist/{chunk-S63QUP4W.js.map → chunk-SAFMGBXL.js.map} +0 -0
  440. /package/dist/{chunk-J6G2I2TU.js.map → chunk-TKV5JYQY.js.map} +0 -0
  441. /package/dist/{chunk-BH2YB4MV.js.map → chunk-VXG2IG2N.js.map} +0 -0
  442. /package/dist/{chunk-V27NUBXQ.js.map → chunk-WWLDINLH.js.map} +0 -0
  443. /package/dist/{chunk-Q2F3HEXB.js.map → chunk-YMS7JXBN.js.map} +0 -0
  444. /package/dist/{chunk-52NEOY34.js.map → chunk-YNV6WGXV.js.map} +0 -0
  445. /package/dist/{chunk-ISHZRFVN.js.map → chunk-ZITFEEZS.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/differenceInMinutes.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\nimport { differenceInMilliseconds } from './shared/differenceInMilliseconds';\n\n/**\n * Returns the number of minutes between two datetimes.\n * The result is positive if laterDate is after earlierDate, negative if before.\n *\n * @param laterDate - The later datetime (Instant or ZonedDateTime)\n * @param earlierDate - The earlier datetime (Instant or ZonedDateTime)\n * @returns The number of minutes between the dates\n *\n * @example\n * ```ts\n * const later = Temporal.Instant.from('2025-01-20T12:45:00Z');\n * const earlier = Temporal.Instant.from('2025-01-20T12:30:00Z');\n *\n * differenceInMinutes(later, earlier); // 15\n * ```\n *\n * @example\n * ```ts\n * // Works with ZonedDateTime\n * const later = Temporal.ZonedDateTime.from('2025-01-20T16:00:00-05:00[America/New_York]');\n * const earlier = Temporal.ZonedDateTime.from('2025-01-20T15:00:00-05:00[America/New_York]');\n *\n * differenceInMinutes(later, earlier); // 60\n * ```\n *\n * @example\n * ```ts\n * // Handles different timezones - compares by instant\n * const tokyo = Temporal.ZonedDateTime.from('2025-01-21T00:00:00+09:00[Asia/Tokyo]');\n * const ny = Temporal.ZonedDateTime.from('2025-01-20T10:00:00-05:00[America/New_York]');\n *\n * differenceInMinutes(tokyo, ny); // 0 (same instant)\n * ```\n */\nexport function differenceInMinutes(\n laterDate: Temporal.Instant | Temporal.ZonedDateTime,\n earlierDate: Temporal.Instant | Temporal.ZonedDateTime\n): number {\n const zoned1 = normalizeTemporalInput(laterDate);\n const zoned2 = normalizeTemporalInput(earlierDate);\n\n return Math.trunc(differenceInMilliseconds(zoned1, zoned2) / 60000);\n}\n"],"mappings":";;;;;;;;AAAA,OAAyB;AAsClB,SAAS,oBACd,WACA,aACQ;AACR,QAAM,SAAS,uBAAuB,SAAS;AAC/C,QAAM,SAAS,uBAAuB,WAAW;AAEjD,SAAO,KAAK,MAAM,yBAAyB,QAAQ,MAAM,IAAI,GAAK;AACpE;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/differenceInMonths.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Returns the number of months between two datetimes.\n * The result is positive if laterDate is after earlierDate, negative if before.\n *\n * This function uses calendar-aware calculation, which means it properly handles\n * months with different numbers of days (28, 29, 30, or 31).\n *\n * Instant inputs are converted to UTC for calendar calculations.\n * For ZonedDateTime inputs, their timezone is preserved.\n *\n * @param laterDate - The later datetime (Instant or ZonedDateTime)\n * @param earlierDate - The earlier datetime (Instant or ZonedDateTime)\n * @returns The number of months between the dates\n *\n * @example\n * ```ts\n * const later = Temporal.Instant.from('2025-04-20T12:00:00Z');\n * const earlier = Temporal.Instant.from('2025-01-20T12:00:00Z');\n *\n * differenceInMonths(later, earlier); // 3\n * ```\n *\n * @example\n * ```ts\n * // Works with ZonedDateTime\n * const later = Temporal.ZonedDateTime.from('2025-06-15T15:00:00-05:00[America/New_York]');\n * const earlier = Temporal.ZonedDateTime.from('2025-01-15T15:00:00-05:00[America/New_York]');\n *\n * differenceInMonths(later, earlier); // 5\n * ```\n *\n * @example\n * ```ts\n * // Returns fractional months for partial month differences\n * const later = Temporal.Instant.from('2025-02-05T12:00:00Z');\n * const earlier = Temporal.Instant.from('2025-01-20T12:00:00Z');\n *\n * differenceInMonths(later, earlier); // ~0.5 (approximately half a month)\n * ```\n */\nexport function differenceInMonths(\n laterDate: Temporal.Instant | Temporal.ZonedDateTime,\n earlierDate: Temporal.Instant | Temporal.ZonedDateTime\n): number {\n const zoned1 = normalizeTemporalInput(laterDate);\n const zoned2 = normalizeTemporalInput(earlierDate);\n\n const duration = zoned2.until(zoned1, { largestUnit: 'hours' });\n return duration.total({ unit: 'months', relativeTo: zoned2 });\n}\n"],"mappings":";;;;;AAAA,OAAyB;AA2ClB,SAAS,mBACd,WACA,aACQ;AACR,QAAM,SAAS,uBAAuB,SAAS;AAC/C,QAAM,SAAS,uBAAuB,WAAW;AAEjD,QAAM,WAAW,OAAO,MAAM,QAAQ,EAAE,aAAa,QAAQ,CAAC;AAC9D,SAAO,SAAS,MAAM,EAAE,MAAM,UAAU,YAAY,OAAO,CAAC;AAC9D;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/isPlainDateAfter.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\n\n/**\n * Returns true if the first plain date is after the second plain date.\n * Compares calendar dates without time or timezone considerations.\n *\n * @param date1 - First plain date\n * @param date2 - Second plain date\n * @returns true if date1 is after date2, false otherwise\n *\n * @example\n * ```ts\n * const jan20 = Temporal.PlainDate.from('2025-01-20');\n * const jan25 = Temporal.PlainDate.from('2025-01-25');\n *\n * isPlainDateAfter(jan25, jan20); // true\n * isPlainDateAfter(jan20, jan25); // false\n * isPlainDateAfter(jan20, jan20); // false\n * ```\n */\nexport function isPlainDateAfter(\n date1: Temporal.PlainDate,\n date2: Temporal.PlainDate\n): boolean {\n return Temporal.PlainDate.compare(date1, date2) > 0;\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AAoBlB,SAAS,iBACd,OACA,OACS;AACT,SAAO,SAAS,UAAU,QAAQ,OAAO,KAAK,IAAI;AACpD;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/toIso.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\n\nexport type IsoMode = 'utc' | 'offset';\n\nexport interface ToIsoOptions {\n /**\n * Output mode for time zone designator.\n * - 'utc' (default): UTC time with Z suffix\n * - 'offset': local time with offset suffix\n */\n mode?: IsoMode;\n}\n\n/**\n * Convert a Temporal.Instant to a UTC ISO 8601 string.\n */\nexport function toIso(input: Temporal.Instant): string;\n\n/**\n * Convert a Temporal.ZonedDateTime to an ISO 8601 string.\n *\n * @param input - A Temporal.ZonedDateTime\n * @param options - Output options\n *\n * @example\n * ```typescript\n * const zoned = Temporal.ZonedDateTime.from(\"2025-01-20T15:00:00-05:00[America/New_York]\");\n *\n * toIso(zoned); // \"2025-01-20T20:00:00Z\"\n * toIso(zoned, { mode: 'utc' }); // \"2025-01-20T20:00:00Z\"\n * toIso(zoned, { mode: 'offset' }); // \"2025-01-20T15:00:00-05:00\"\n * ```\n */\nexport function toIso(\n input: Temporal.ZonedDateTime,\n options?: ToIsoOptions\n): string;\n\nexport function toIso(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n options: ToIsoOptions = {}\n): string {\n const { mode = 'utc' } = options;\n\n if (input instanceof Temporal.Instant) {\n return input.toString();\n }\n\n if (mode === 'offset') {\n return input.toString({ timeZoneName: 'never' });\n }\n\n return input.toInstant().toString();\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AAsClB,SAAS,MACd,OACA,UAAwB,CAAC,GACjB;AACR,QAAM,EAAE,OAAO,MAAM,IAAI;AAEzB,MAAI,iBAAiB,SAAS,SAAS;AACrC,WAAO,MAAM,SAAS;AAAA,EACxB;AAEA,MAAI,SAAS,UAAU;AACrB,WAAO,MAAM,SAAS,EAAE,cAAc,QAAQ,CAAC;AAAA,EACjD;AAEA,SAAO,MAAM,UAAU,EAAE,SAAS;AACpC;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/eachYearOfInterval.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Returns an array of ZonedDateTime objects for each year within the interval.\n * Each element represents the first moment of the year (January 1st at midnight).\n * The interval is inclusive of both start and end years.\n *\n * For Instant inputs, UTC is used as the timezone.\n * For ZonedDateTime inputs, the timezone of the start date is preserved.\n *\n * @param interval - The interval with start and end datetimes\n * @returns Array of ZonedDateTime at start of each year in the interval\n *\n * @example\n * ```ts\n * const start = Temporal.ZonedDateTime.from('2022-06-15T10:00:00Z[UTC]');\n * const end = Temporal.ZonedDateTime.from('2025-03-20T14:00:00Z[UTC]');\n *\n * const years = eachYearOfInterval({ start, end });\n * // [\n * // 2022-01-01T00:00:00Z[UTC],\n * // 2023-01-01T00:00:00Z[UTC],\n * // 2024-01-01T00:00:00Z[UTC],\n * // 2025-01-01T00:00:00Z[UTC]\n * // ]\n * ```\n *\n * @example\n * ```ts\n * // Single year\n * const start = Temporal.ZonedDateTime.from('2025-01-15T00:00:00Z[UTC]');\n * const end = Temporal.ZonedDateTime.from('2025-12-31T23:59:59Z[UTC]');\n *\n * const years = eachYearOfInterval({ start, end });\n * // [2025-01-01T00:00:00Z[UTC]]\n * ```\n *\n * @example\n * ```ts\n * // With timezone\n * const start = Temporal.ZonedDateTime.from('2024-01-01T00:00:00-05:00[America/New_York]');\n * const end = Temporal.ZonedDateTime.from('2026-06-15T00:00:00-04:00[America/New_York]');\n *\n * const years = eachYearOfInterval({ start, end });\n * // [\n * // 2024-01-01T00:00:00-05:00[America/New_York],\n * // 2025-01-01T00:00:00-05:00[America/New_York],\n * // 2026-01-01T00:00:00-05:00[America/New_York]\n * // ]\n * ```\n */\nexport function eachYearOfInterval(interval: {\n start: Temporal.Instant | Temporal.ZonedDateTime;\n end: Temporal.Instant | Temporal.ZonedDateTime;\n}): Temporal.ZonedDateTime[] {\n const startZoned = normalizeTemporalInput(interval.start);\n const endZoned = normalizeTemporalInput(interval.end);\n\n const timezone = startZoned.timeZoneId;\n const startYear = startZoned.year;\n\n // Get end year in the same timezone\n const endInTimezone = endZoned.withTimeZone(timezone);\n const endYear = endInTimezone.year;\n\n const years: Temporal.ZonedDateTime[] = [];\n\n for (let year = startYear; year <= endYear; year++) {\n const firstOfYear = Temporal.PlainDate.from({ year, month: 1, day: 1 });\n years.push(\n firstOfYear.toZonedDateTime({\n timeZone: timezone,\n plainTime: new Temporal.PlainTime(),\n })\n );\n }\n\n return years;\n}\n"],"mappings":";;;;;AAAA,SAAS,gBAAgB;AAoDlB,SAAS,mBAAmB,UAGN;AAC3B,QAAM,aAAa,uBAAuB,SAAS,KAAK;AACxD,QAAM,WAAW,uBAAuB,SAAS,GAAG;AAEpD,QAAM,WAAW,WAAW;AAC5B,QAAM,YAAY,WAAW;AAG7B,QAAM,gBAAgB,SAAS,aAAa,QAAQ;AACpD,QAAM,UAAU,cAAc;AAE9B,QAAM,QAAkC,CAAC;AAEzC,WAAS,OAAO,WAAW,QAAQ,SAAS,QAAQ;AAClD,UAAM,cAAc,SAAS,UAAU,KAAK,EAAE,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;AACtE,UAAM;AAAA,MACJ,YAAY,gBAAgB;AAAA,QAC1B,UAAU;AAAA,QACV,WAAW,IAAI,SAAS,UAAU;AAAA,MACpC,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO;AACT;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/differenceInMilliseconds.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\nimport { differenceInMilliseconds as differenceInMillisecondsInternal } from './shared/differenceInMilliseconds';\n\n/**\n * Returns the number of milliseconds between two datetimes.\n * The result is positive if laterDate is after earlierDate, negative if before.\n *\n * @param laterDate - The later datetime (Instant or ZonedDateTime)\n * @param earlierDate - The earlier datetime (Instant or ZonedDateTime)\n * @returns The number of milliseconds between the dates\n *\n * @example\n * ```ts\n * const later = Temporal.Instant.from('2025-01-20T12:30:21.700Z');\n * const earlier = Temporal.Instant.from('2025-01-20T12:30:20.600Z');\n *\n * differenceInMilliseconds(later, earlier); // 1100\n * ```\n *\n * @example\n * ```ts\n * // Works with ZonedDateTime\n * const later = Temporal.ZonedDateTime.from('2025-01-20T15:00:00-05:00[America/New_York]');\n * const earlier = Temporal.ZonedDateTime.from('2025-01-20T14:00:00-05:00[America/New_York]');\n *\n * differenceInMilliseconds(later, earlier); // 3600000\n * ```\n *\n * @example\n * ```ts\n * // Handles different timezones - compares by instant\n * const tokyo = Temporal.ZonedDateTime.from('2025-01-21T00:00:00+09:00[Asia/Tokyo]');\n * const ny = Temporal.ZonedDateTime.from('2025-01-20T10:00:00-05:00[America/New_York]');\n *\n * differenceInMilliseconds(tokyo, ny); // 0 (same instant)\n * ```\n */\nexport function differenceInMilliseconds(\n laterDate: Temporal.Instant | Temporal.ZonedDateTime,\n earlierDate: Temporal.Instant | Temporal.ZonedDateTime\n): number {\n const zoned1 = normalizeTemporalInput(laterDate);\n const zoned2 = normalizeTemporalInput(earlierDate);\n\n return differenceInMillisecondsInternal(zoned1, zoned2);\n}\n"],"mappings":";;;;;;;;AAAA,OAAyB;AAsClB,SAASA,0BACd,WACA,aACQ;AACR,QAAM,SAAS,uBAAuB,SAAS;AAC/C,QAAM,SAAS,uBAAuB,WAAW;AAEjD,SAAO,yBAAiC,QAAQ,MAAM;AACxD;","names":["differenceInMilliseconds"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/differenceInYears.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Returns the number of years between two datetimes.\n * The result is positive if laterDate is after earlierDate, negative if before.\n *\n * This function uses calendar-aware calculation, which means it properly handles\n * leap years (366 days) and regular years (365 days).\n *\n * Instant inputs are converted to UTC for calendar calculations.\n * For ZonedDateTime inputs, their timezone is preserved.\n *\n * @param laterDate - The later datetime (Instant or ZonedDateTime)\n * @param earlierDate - The earlier datetime (Instant or ZonedDateTime)\n * @returns The number of years between the dates\n *\n * @example\n * ```ts\n * const later = Temporal.Instant.from('2028-01-20T12:00:00Z');\n * const earlier = Temporal.Instant.from('2025-01-20T12:00:00Z');\n *\n * differenceInYears(later, earlier); // 3\n * ```\n *\n * @example\n * ```ts\n * // Works with ZonedDateTime\n * const later = Temporal.ZonedDateTime.from('2030-06-15T15:00:00-05:00[America/New_York]');\n * const earlier = Temporal.ZonedDateTime.from('2025-06-15T15:00:00-05:00[America/New_York]');\n *\n * differenceInYears(later, earlier); // 5\n * ```\n *\n * @example\n * ```ts\n * // Returns fractional years for partial year differences\n * const later = Temporal.Instant.from('2025-07-20T12:00:00Z');\n * const earlier = Temporal.Instant.from('2025-01-20T12:00:00Z');\n *\n * differenceInYears(later, earlier); // ~0.5 (approximately half a year)\n * ```\n */\nexport function differenceInYears(\n laterDate: Temporal.Instant | Temporal.ZonedDateTime,\n earlierDate: Temporal.Instant | Temporal.ZonedDateTime\n): number {\n const zoned1 = normalizeTemporalInput(laterDate);\n const zoned2 = normalizeTemporalInput(earlierDate);\n\n const duration = zoned2.until(zoned1, { largestUnit: 'hours' });\n return duration.total({ unit: 'years', relativeTo: zoned2 });\n}\n"],"mappings":";;;;;AAAA,OAAyB;AA2ClB,SAAS,kBACd,WACA,aACQ;AACR,QAAM,SAAS,uBAAuB,SAAS;AAC/C,QAAM,SAAS,uBAAuB,WAAW;AAEjD,QAAM,WAAW,OAAO,MAAM,QAAQ,EAAE,aAAa,QAAQ,CAAC;AAC9D,SAAO,SAAS,MAAM,EAAE,MAAM,SAAS,YAAY,OAAO,CAAC;AAC7D;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/toIso9075.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\n\nexport type Iso9075Mode = 'utc' | 'local';\nexport type Iso9075Representation = 'complete' | 'date' | 'time';\n\nexport interface ToIso9075Options {\n /**\n * Which time to output.\n * - 'utc' (default): convert to UTC before formatting\n * - 'local': use the local time of the ZonedDateTime\n */\n mode?: Iso9075Mode;\n /**\n * What to include in the output.\n * - 'complete' (default): date and time (2019-09-18 19:00:52)\n * - 'date': date only (2019-09-18)\n * - 'time': time only (19:00:52)\n */\n representation?: Iso9075Representation;\n}\n\n/**\n * Convert a Temporal.Instant to an ISO 9075 (SQL) formatted string in UTC.\n */\nexport function toIso9075(\n input: Temporal.Instant,\n options?: Omit<ToIso9075Options, 'mode'>\n): string;\n\n/**\n * Convert a Temporal.ZonedDateTime to an ISO 9075 (SQL) formatted string.\n *\n * @param input - A Temporal.ZonedDateTime\n * @param options - Format options\n *\n * @example\n * ```typescript\n * const zoned = Temporal.ZonedDateTime.from(\"2025-01-20T15:00:00-05:00[America/New_York]\");\n *\n * toIso9075(zoned); // \"2025-01-20 20:00:00\" (UTC, default)\n * toIso9075(zoned, { mode: 'utc' }); // \"2025-01-20 20:00:00\"\n * toIso9075(zoned, { mode: 'local' }); // \"2025-01-20 15:00:00\"\n * toIso9075(zoned, { representation: 'date' }); // \"2025-01-20\"\n * toIso9075(zoned, { representation: 'time' }); // \"20:00:00\"\n * ```\n */\nexport function toIso9075(\n input: Temporal.ZonedDateTime,\n options?: ToIso9075Options\n): string;\n\nexport function toIso9075(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n options: ToIso9075Options = {}\n): string {\n const { mode = 'utc', representation = 'complete' } = options;\n\n let zdt: Temporal.ZonedDateTime;\n\n if (input instanceof Temporal.Instant) {\n zdt = input.toZonedDateTimeISO('UTC');\n } else {\n // ZonedDateTime: apply mode\n zdt = mode === 'utc' ? input.toInstant().toZonedDateTimeISO('UTC') : input;\n }\n\n const year = zdt.year;\n const month = zdt.month;\n const day = zdt.day;\n const hour = zdt.hour;\n const minute = zdt.minute;\n const second = zdt.second;\n\n const datePart = `${year}-${pad(month)}-${pad(day)}`;\n const timePart = `${pad(hour)}:${pad(minute)}:${pad(second)}`;\n\n if (representation === 'date') return datePart;\n if (representation === 'time') return timePart;\n return `${datePart} ${timePart}`;\n}\n\nfunction pad(n: number): string {\n return n.toString().padStart(2, '0');\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AAmDlB,SAAS,UACd,OACA,UAA4B,CAAC,GACrB;AACR,QAAM,EAAE,OAAO,OAAO,iBAAiB,WAAW,IAAI;AAEtD,MAAI;AAEJ,MAAI,iBAAiB,SAAS,SAAS;AACrC,UAAM,MAAM,mBAAmB,KAAK;AAAA,EACtC,OAAO;AAEL,UAAM,SAAS,QAAQ,MAAM,UAAU,EAAE,mBAAmB,KAAK,IAAI;AAAA,EACvE;AAEA,QAAM,OAAO,IAAI;AACjB,QAAM,QAAQ,IAAI;AAClB,QAAM,MAAM,IAAI;AAChB,QAAM,OAAO,IAAI;AACjB,QAAM,SAAS,IAAI;AACnB,QAAM,SAAS,IAAI;AAEnB,QAAM,WAAW,GAAG,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC;AAClD,QAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC;AAE3D,MAAI,mBAAmB,OAAQ,QAAO;AACtC,MAAI,mBAAmB,OAAQ,QAAO;AACtC,SAAO,GAAG,QAAQ,IAAI,QAAQ;AAChC;AAEA,SAAS,IAAI,GAAmB;AAC9B,SAAO,EAAE,SAAS,EAAE,SAAS,GAAG,GAAG;AACrC;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/eachDayOfInterval.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Returns an array of ZonedDateTime objects for each calendar day within the interval.\n * Each element represents the start of day (midnight) in the timezone of the interval start.\n * The interval is inclusive of both start and end days.\n *\n * For Instant inputs, UTC is used as the timezone.\n * For ZonedDateTime inputs, the timezone of the start date is preserved.\n *\n * @param interval - The interval with start and end datetimes\n * @returns Array of ZonedDateTime at start of each day in the interval\n *\n * @example\n * ```ts\n * const start = Temporal.ZonedDateTime.from('2025-01-06T10:00:00Z[UTC]');\n * const end = Temporal.ZonedDateTime.from('2025-01-10T14:00:00Z[UTC]');\n *\n * const days = eachDayOfInterval({ start, end });\n * // [\n * // 2025-01-06T00:00:00Z[UTC],\n * // 2025-01-07T00:00:00Z[UTC],\n * // 2025-01-08T00:00:00Z[UTC],\n * // 2025-01-09T00:00:00Z[UTC],\n * // 2025-01-10T00:00:00Z[UTC]\n * // ]\n * ```\n *\n * @example\n * ```ts\n * // With timezone - preserves the timezone from start\n * const start = Temporal.ZonedDateTime.from('2025-01-06T10:00:00-05:00[America/New_York]');\n * const end = Temporal.ZonedDateTime.from('2025-01-08T14:00:00-05:00[America/New_York]');\n *\n * const days = eachDayOfInterval({ start, end });\n * // [\n * // 2025-01-06T00:00:00-05:00[America/New_York],\n * // 2025-01-07T00:00:00-05:00[America/New_York],\n * // 2025-01-08T00:00:00-05:00[America/New_York]\n * // ]\n * ```\n *\n * @example\n * ```ts\n * // With Instant (uses UTC)\n * const start = Temporal.Instant.from('2025-01-06T00:00:00Z');\n * const end = Temporal.Instant.from('2025-01-08T00:00:00Z');\n *\n * const days = eachDayOfInterval({ start, end });\n * // [\n * // 2025-01-06T00:00:00Z[UTC],\n * // 2025-01-07T00:00:00Z[UTC],\n * // 2025-01-08T00:00:00Z[UTC]\n * // ]\n * ```\n *\n * @example\n * ```ts\n * // Single day interval\n * const date = Temporal.ZonedDateTime.from('2025-01-15T12:00:00Z[UTC]');\n *\n * eachDayOfInterval({ start: date, end: date });\n * // [2025-01-15T00:00:00Z[UTC]]\n * ```\n */\nexport function eachDayOfInterval(interval: {\n start: Temporal.Instant | Temporal.ZonedDateTime;\n end: Temporal.Instant | Temporal.ZonedDateTime;\n}): Temporal.ZonedDateTime[] {\n const startZoned = normalizeTemporalInput(interval.start);\n const endZoned = normalizeTemporalInput(interval.end);\n\n const timezone = startZoned.timeZoneId;\n const startDate = startZoned.toPlainDate();\n const endDate = endZoned.withTimeZone(timezone).toPlainDate();\n\n const days: Temporal.ZonedDateTime[] = [];\n let current = startDate;\n\n while (Temporal.PlainDate.compare(current, endDate) <= 0) {\n days.push(current.toZonedDateTime({ timeZone: timezone, plainTime: new Temporal.PlainTime() }));\n current = current.add({ days: 1 });\n }\n\n return days;\n}\n"],"mappings":";;;;;AAAA,SAAS,gBAAgB;AAkElB,SAAS,kBAAkB,UAGL;AAC3B,QAAM,aAAa,uBAAuB,SAAS,KAAK;AACxD,QAAM,WAAW,uBAAuB,SAAS,GAAG;AAEpD,QAAM,WAAW,WAAW;AAC5B,QAAM,YAAY,WAAW,YAAY;AACzC,QAAM,UAAU,SAAS,aAAa,QAAQ,EAAE,YAAY;AAE5D,QAAM,OAAiC,CAAC;AACxC,MAAI,UAAU;AAEd,SAAO,SAAS,UAAU,QAAQ,SAAS,OAAO,KAAK,GAAG;AACxD,SAAK,KAAK,QAAQ,gBAAgB,EAAE,UAAU,UAAU,WAAW,IAAI,SAAS,UAAU,EAAE,CAAC,CAAC;AAC9F,cAAU,QAAQ,IAAI,EAAE,MAAM,EAAE,CAAC;AAAA,EACnC;AAEA,SAAO;AACT;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/startOfWeek.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport type { Timezone } from './types';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\nimport { plainDateToZonedDateTime } from './shared/plainDateToZonedDateTime';\n\n/**\n * Returns a ZonedDateTime representing the first moment of the week (Monday at midnight).\n * Uses ISO 8601 week definition: weeks start on Monday.\n *\n * @param input - A Temporal.Instant (UTC) or Temporal.ZonedDateTime\n * @returns ZonedDateTime at Monday 00:00:00.000000000\n *\n * @example\n * ```ts\n * // From Instant (always UTC)\n * const instant = Temporal.Instant.from('2025-01-20T12:00:00Z'); // Monday\n * const start = startOfWeek(instant);\n * // 2025-01-20T00:00:00Z[UTC] (same day, it's already Monday)\n * ```\n *\n * @example\n * ```ts\n * // From ZonedDateTime (uses its timezone)\n * const zoned = Temporal.ZonedDateTime.from('2025-01-22T15:30:00-05:00[America/New_York]'); // Wednesday\n * const start = startOfWeek(zoned);\n * // 2025-01-20T00:00:00-05:00[America/New_York] (previous Monday)\n * ```\n *\n * @example\n * ```ts\n * // From PlainDate (requires timezone)\n * const date = Temporal.PlainDate.from('2025-01-22'); // Wednesday\n * const start = startOfWeek(date, 'America/New_York');\n * // 2025-01-20T00:00:00-05:00[America/New_York] (previous Monday)\n * ```\n */\nexport function startOfWeek(\n input: Temporal.Instant | Temporal.ZonedDateTime\n): Temporal.ZonedDateTime;\nexport function startOfWeek(\n input: Temporal.PlainDate,\n timezone: Timezone\n): Temporal.ZonedDateTime;\nexport function startOfWeek(\n input: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate,\n timezone?: Timezone\n): Temporal.ZonedDateTime {\n const zonedDateTime =\n input instanceof Temporal.PlainDate\n ? plainDateToZonedDateTime(input, timezone!)\n : normalizeTemporalInput(input);\n\n // Get the day of week (1 = Monday, 7 = Sunday in ISO 8601)\n const dayOfWeek = zonedDateTime.dayOfWeek;\n\n // Calculate days to subtract to get to Monday\n const daysToSubtract = dayOfWeek - 1;\n\n // Go to Monday, then get start of that day\n const monday = zonedDateTime.subtract({ days: daysToSubtract });\n\n return monday.startOfDay();\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,gBAAgB;AA2ClB,SAAS,YACd,OACA,UACwB;AACxB,QAAM,gBACJ,iBAAiB,SAAS,YACtB,yBAAyB,OAAO,QAAS,IACzC,uBAAuB,KAAK;AAGlC,QAAM,YAAY,cAAc;AAGhC,QAAM,iBAAiB,YAAY;AAGnC,QAAM,SAAS,cAAc,SAAS,EAAE,MAAM,eAAe,CAAC;AAE9D,SAAO,OAAO,WAAW;AAC3B;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/now.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport type { Timezone } from './types';\n\n/**\n * Get the current date and time in the specified timezone.\n *\n * @param timezone - IANA timezone identifier (e.g., \"America/New_York\", \"Europe/London\") or \"UTC\"\n * @returns A Temporal.ZonedDateTime representing the current date and time\n *\n * @example\n * ```typescript\n * import { now, browserTimezone } from '@gobrand/tiempo';\n *\n * // Server-side: Get now in UTC\n * const nowUtc = now(\"UTC\");\n *\n * // Server-side: Get now in user's timezone (from DB/preferences)\n * const nowUser = now(user.timezone);\n *\n * // Client-side: Get now in browser's timezone\n * const nowLocal = now(browserTimezone());\n *\n * // Get now in a specific timezone\n * const nowInMadrid = now(\"Europe/Madrid\");\n * ```\n */\nexport function now(timezone: Timezone): Temporal.ZonedDateTime {\n return Temporal.Now.zonedDateTimeISO(timezone);\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AA0BlB,SAAS,IAAI,UAA4C;AAC9D,SAAO,SAAS,IAAI,iBAAiB,QAAQ;AAC/C;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/eachMinuteOfInterval.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Returns an array of ZonedDateTime objects for each minute within the interval.\n * Each element represents the start of the minute (seconds/etc. set to 0).\n * The interval is inclusive of both start and end minutes.\n *\n * For Instant inputs, UTC is used as the timezone.\n * For ZonedDateTime inputs, the timezone of the start date is preserved.\n *\n * Warning: Large intervals can produce very large arrays. For example, a 24-hour\n * interval produces 1,441 elements. Consider whether this is appropriate for your use case.\n *\n * @param interval - The interval with start and end datetimes\n * @returns Array of ZonedDateTime at start of each minute in the interval\n *\n * @example\n * ```ts\n * const start = Temporal.ZonedDateTime.from('2025-01-06T10:30:00Z[UTC]');\n * const end = Temporal.ZonedDateTime.from('2025-01-06T10:33:45Z[UTC]');\n *\n * const minutes = eachMinuteOfInterval({ start, end });\n * // [\n * // 2025-01-06T10:30:00Z[UTC],\n * // 2025-01-06T10:31:00Z[UTC],\n * // 2025-01-06T10:32:00Z[UTC],\n * // 2025-01-06T10:33:00Z[UTC]\n * // ]\n * ```\n *\n * @example\n * ```ts\n * // Cross-hour boundary\n * const start = Temporal.ZonedDateTime.from('2025-01-06T10:58:00Z[UTC]');\n * const end = Temporal.ZonedDateTime.from('2025-01-06T11:02:00Z[UTC]');\n *\n * const minutes = eachMinuteOfInterval({ start, end });\n * // [\n * // 2025-01-06T10:58:00Z[UTC],\n * // 2025-01-06T10:59:00Z[UTC],\n * // 2025-01-06T11:00:00Z[UTC],\n * // 2025-01-06T11:01:00Z[UTC],\n * // 2025-01-06T11:02:00Z[UTC]\n * // ]\n * ```\n */\nexport function eachMinuteOfInterval(interval: {\n start: Temporal.Instant | Temporal.ZonedDateTime;\n end: Temporal.Instant | Temporal.ZonedDateTime;\n}): Temporal.ZonedDateTime[] {\n const startZoned = normalizeTemporalInput(interval.start);\n const endZoned = normalizeTemporalInput(interval.end);\n\n const timezone = startZoned.timeZoneId;\n\n // Get start of the starting minute\n const startMinute = startZoned.round({ smallestUnit: 'minute', roundingMode: 'floor' });\n\n // Get start of the ending minute in the same timezone\n const endInTimezone = endZoned.withTimeZone(timezone);\n const endMinute = endInTimezone.round({ smallestUnit: 'minute', roundingMode: 'floor' });\n\n const minutes: Temporal.ZonedDateTime[] = [];\n let current = startMinute;\n\n while (Temporal.ZonedDateTime.compare(current, endMinute) <= 0) {\n minutes.push(current);\n current = current.add({ minutes: 1 });\n }\n\n return minutes;\n}\n"],"mappings":";;;;;AAAA,SAAS,gBAAgB;AA+ClB,SAAS,qBAAqB,UAGR;AAC3B,QAAM,aAAa,uBAAuB,SAAS,KAAK;AACxD,QAAM,WAAW,uBAAuB,SAAS,GAAG;AAEpD,QAAM,WAAW,WAAW;AAG5B,QAAM,cAAc,WAAW,MAAM,EAAE,cAAc,UAAU,cAAc,QAAQ,CAAC;AAGtF,QAAM,gBAAgB,SAAS,aAAa,QAAQ;AACpD,QAAM,YAAY,cAAc,MAAM,EAAE,cAAc,UAAU,cAAc,QAAQ,CAAC;AAEvF,QAAM,UAAoC,CAAC;AAC3C,MAAI,UAAU;AAEd,SAAO,SAAS,cAAc,QAAQ,SAAS,SAAS,KAAK,GAAG;AAC9D,YAAQ,KAAK,OAAO;AACpB,cAAU,QAAQ,IAAI,EAAE,SAAS,EAAE,CAAC;AAAA,EACtC;AAEA,SAAO;AACT;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/toPlainDate.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport type { Timezone } from './types';\n\n// Pattern to detect plain date strings: YYYY-MM-DD\nconst PLAIN_DATE_PATTERN = /^\\d{4}-\\d{2}-\\d{2}$/;\n\n/**\n * Parse a plain date or extract the calendar date from a datetime.\n *\n * @param input - A PlainDateLike object, plain date string (YYYY-MM-DD), ZonedDateTime, or datetime input requiring timezone\n * @param timezone - IANA timezone identifier. Required for ISO strings, Date, and Instant inputs.\n * @returns A Temporal.PlainDate representing the calendar date\n *\n * @example\n * ```typescript\n * import { toPlainDate, toZonedTime } from '@gobrand/tiempo';\n *\n * // From PlainDateLike object (no timezone needed)\n * const date = toPlainDate({ year: 2025, month: 1, day: 20 }); // 2025-01-20\n *\n * // From plain date string (no timezone needed)\n * const date2 = toPlainDate(\"2025-01-20\"); // 2025-01-20\n *\n * // From ZonedDateTime (no timezone needed)\n * const zdt = toZonedTime(\"2025-01-20T15:30:00Z\", \"America/New_York\");\n * const date3 = toPlainDate(zdt); // 2025-01-20\n *\n * // From UTC string with timezone\n * const date4 = toPlainDate(\"2025-01-20T15:30:00Z\", \"America/New_York\"); // 2025-01-20\n *\n * // From Date with timezone\n * const jsDate = new Date(\"2025-01-20T15:30:00.000Z\");\n * const date5 = toPlainDate(jsDate, \"Europe/London\"); // 2025-01-20\n *\n * // Date boundary crossing: 23:00 UTC on Jan 20 → Jan 21 in Tokyo\n * const date6 = toPlainDate(\"2025-01-20T23:00:00Z\", \"Asia/Tokyo\"); // 2025-01-21\n * ```\n */\nexport function toPlainDate(input: Temporal.ZonedDateTime): Temporal.PlainDate;\nexport function toPlainDate(\n input: string | Date | Temporal.Instant | Temporal.ZonedDateTime,\n timezone: Timezone\n): Temporal.PlainDate;\nexport function toPlainDate(input: Temporal.PlainDateLike | string): Temporal.PlainDate;\nexport function toPlainDate(\n input: string | Date | Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDateLike,\n timezone?: Timezone\n): Temporal.PlainDate {\n // ZonedDateTime without timezone override\n if (input instanceof Temporal.ZonedDateTime && timezone === undefined) {\n return input.toPlainDate();\n }\n\n // Date requires timezone\n if (input instanceof Date) {\n if (timezone === undefined) {\n throw new Error('Timezone is required unless input is a ZonedDateTime, PlainDateLike, or plain date string');\n }\n return Temporal.Instant.from(input.toISOString()).toZonedDateTimeISO(timezone).toPlainDate();\n }\n\n // Instant requires timezone\n if (input instanceof Temporal.Instant) {\n if (timezone === undefined) {\n throw new Error('Timezone is required unless input is a ZonedDateTime, PlainDateLike, or plain date string');\n }\n return input.toZonedDateTimeISO(timezone).toPlainDate();\n }\n\n // ZonedDateTime with timezone override\n if (input instanceof Temporal.ZonedDateTime) {\n if (timezone === undefined) {\n throw new Error('Timezone is required unless input is a ZonedDateTime, PlainDateLike, or plain date string');\n }\n return input.toInstant().toZonedDateTimeISO(timezone).toPlainDate();\n }\n\n // String: ISO datetime (requires timezone) or plain date (no timezone)\n if (typeof input === 'string') {\n if (timezone !== undefined) {\n return Temporal.Instant.from(input).toZonedDateTimeISO(timezone).toPlainDate();\n }\n if (PLAIN_DATE_PATTERN.test(input)) {\n return Temporal.PlainDate.from(input);\n }\n throw new Error('Timezone is required unless input is a ZonedDateTime, PlainDateLike, or plain date string');\n }\n\n // PlainDateLike object - pass directly to Temporal.PlainDate.from()\n return Temporal.PlainDate.from(input);\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AAIzB,IAAM,qBAAqB;AAwCpB,SAAS,YACd,OACA,UACoB;AAEpB,MAAI,iBAAiB,SAAS,iBAAiB,aAAa,QAAW;AACrE,WAAO,MAAM,YAAY;AAAA,EAC3B;AAGA,MAAI,iBAAiB,MAAM;AACzB,QAAI,aAAa,QAAW;AAC1B,YAAM,IAAI,MAAM,2FAA2F;AAAA,IAC7G;AACA,WAAO,SAAS,QAAQ,KAAK,MAAM,YAAY,CAAC,EAAE,mBAAmB,QAAQ,EAAE,YAAY;AAAA,EAC7F;AAGA,MAAI,iBAAiB,SAAS,SAAS;AACrC,QAAI,aAAa,QAAW;AAC1B,YAAM,IAAI,MAAM,2FAA2F;AAAA,IAC7G;AACA,WAAO,MAAM,mBAAmB,QAAQ,EAAE,YAAY;AAAA,EACxD;AAGA,MAAI,iBAAiB,SAAS,eAAe;AAC3C,QAAI,aAAa,QAAW;AAC1B,YAAM,IAAI,MAAM,2FAA2F;AAAA,IAC7G;AACA,WAAO,MAAM,UAAU,EAAE,mBAAmB,QAAQ,EAAE,YAAY;AAAA,EACpE;AAGA,MAAI,OAAO,UAAU,UAAU;AAC7B,QAAI,aAAa,QAAW;AAC1B,aAAO,SAAS,QAAQ,KAAK,KAAK,EAAE,mBAAmB,QAAQ,EAAE,YAAY;AAAA,IAC/E;AACA,QAAI,mBAAmB,KAAK,KAAK,GAAG;AAClC,aAAO,SAAS,UAAU,KAAK,KAAK;AAAA,IACtC;AACA,UAAM,IAAI,MAAM,2FAA2F;AAAA,EAC7G;AAGA,SAAO,SAAS,UAAU,KAAK,KAAK;AACtC;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/startOfMonth.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport type { Timezone } from './types';\nimport { normalizeWithPlainDate } from './shared/normalizeWithPlainDate';\n\n/**\n * Returns a ZonedDateTime representing the first moment of the month (day 1 at midnight).\n *\n * @param input - A Temporal.Instant (UTC) or Temporal.ZonedDateTime\n * @returns ZonedDateTime at the 1st day of the month at 00:00:00.000000000\n *\n * @example\n * ```ts\n * // From Instant (always UTC)\n * const instant = Temporal.Instant.from('2025-01-15T12:00:00Z');\n * const start = startOfMonth(instant);\n * // 2025-01-01T00:00:00Z[UTC]\n * ```\n *\n * @example\n * ```ts\n * // From ZonedDateTime (uses its timezone)\n * const zoned = Temporal.ZonedDateTime.from('2025-01-15T15:30:00-05:00[America/New_York]');\n * const start = startOfMonth(zoned);\n * // 2025-01-01T00:00:00-05:00[America/New_York]\n * ```\n *\n * @example\n * ```ts\n * // From PlainDate (requires timezone)\n * const date = Temporal.PlainDate.from('2025-01-15');\n * const start = startOfMonth(date, 'America/New_York');\n * // 2025-01-01T00:00:00-05:00[America/New_York]\n * ```\n */\nexport function startOfMonth(\n input: Temporal.Instant | Temporal.ZonedDateTime\n): Temporal.ZonedDateTime;\nexport function startOfMonth(\n input: Temporal.PlainDate,\n timezone: Timezone\n): Temporal.ZonedDateTime;\nexport function startOfMonth(\n input: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate,\n timezone?: Timezone\n): Temporal.ZonedDateTime {\n const zonedDateTime = normalizeWithPlainDate(input, timezone!);\n const firstDay = zonedDateTime.with({ day: 1 });\n return firstDay.startOfDay();\n}\n"],"mappings":";;;;;AAAA,OAAyB;AAyClB,SAAS,aACd,OACA,UACwB;AACxB,QAAM,gBAAgB,uBAAuB,OAAO,QAAS;AAC7D,QAAM,WAAW,cAAc,KAAK,EAAE,KAAK,EAAE,CAAC;AAC9C,SAAO,SAAS,WAAW;AAC7B;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/endOfDay.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport type { Timezone } from './types';\nimport { getEndOfDay } from './shared/endOfDay';\nimport { normalizeWithPlainDate } from './shared/normalizeWithPlainDate';\n\n/**\n * Returns a ZonedDateTime representing the last nanosecond of the day.\n *\n * @param input - A Temporal.Instant (UTC) or Temporal.ZonedDateTime\n * @returns ZonedDateTime at 23:59:59.999999999\n *\n * @example\n * ```ts\n * // From Instant (always UTC)\n * const instant = Temporal.Instant.from('2025-01-20T12:00:00Z');\n * const end = endOfDay(instant);\n * // 2025-01-20T23:59:59.999999999Z[UTC]\n * ```\n *\n * @example\n * ```ts\n * // From ZonedDateTime (uses its timezone)\n * const zoned = Temporal.ZonedDateTime.from('2025-01-20T15:30:00-05:00[America/New_York]');\n * const end = endOfDay(zoned);\n * // 2025-01-20T23:59:59.999999999-05:00[America/New_York]\n * ```\n *\n * @example\n * ```ts\n * // From PlainDate (requires timezone)\n * const date = Temporal.PlainDate.from('2025-01-20');\n * const end = endOfDay(date, 'America/New_York');\n * // 2025-01-20T23:59:59.999999999-05:00[America/New_York]\n * ```\n */\nexport function endOfDay(\n input: Temporal.Instant | Temporal.ZonedDateTime\n): Temporal.ZonedDateTime;\nexport function endOfDay(\n input: Temporal.PlainDate,\n timezone: Timezone\n): Temporal.ZonedDateTime;\nexport function endOfDay(\n input: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate,\n timezone?: Timezone\n): Temporal.ZonedDateTime {\n const zonedDateTime = normalizeWithPlainDate(input, timezone!);\n return getEndOfDay(zonedDateTime);\n}\n"],"mappings":";;;;;;;;AAAA,OAAyB;AA0ClB,SAAS,SACd,OACA,UACwB;AACxB,QAAM,gBAAgB,uBAAuB,OAAO,QAAS;AAC7D,SAAO,YAAY,aAAa;AAClC;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/shared/plainDateToZonedDateTime.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport type { Timezone } from '../types';\n\n/**\n * @internal\n * Converts a PlainDate to a ZonedDateTime at midnight in the specified timezone.\n * This is an internal helper - do not use directly.\n */\nexport function plainDateToZonedDateTime(\n date: Temporal.PlainDate,\n timezone: Timezone\n): Temporal.ZonedDateTime {\n return date.toZonedDateTime({\n timeZone: timezone,\n plainTime: Temporal.PlainTime.from('00:00'),\n });\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AAQlB,SAAS,yBACd,MACA,UACwB;AACxB,SAAO,KAAK,gBAAgB;AAAA,IAC1B,UAAU;AAAA,IACV,WAAW,SAAS,UAAU,KAAK,OAAO;AAAA,EAC5C,CAAC;AACH;","names":[]}
@@ -1,17 +0,0 @@
1
- import {
2
- plainDateToZonedDateTime
3
- } from "./chunk-JNA3AFOC.js";
4
- import {
5
- normalizeTemporalInput
6
- } from "./chunk-MJSZNWCV.js";
7
-
8
- // src/shared/normalizeWithPlainDate.ts
9
- import { Temporal } from "@js-temporal/polyfill";
10
- function normalizeWithPlainDate(input, timezone) {
11
- return input instanceof Temporal.PlainDate ? plainDateToZonedDateTime(input, timezone) : normalizeTemporalInput(input);
12
- }
13
-
14
- export {
15
- normalizeWithPlainDate
16
- };
17
- //# sourceMappingURL=chunk-KGVUENQO.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/shared/normalizeWithPlainDate.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport type { Timezone } from '../types';\nimport { normalizeTemporalInput } from './normalizeTemporalInput';\nimport { plainDateToZonedDateTime } from './plainDateToZonedDateTime';\n\n/**\n * @internal\n * Normalizes any temporal input (Instant, ZonedDateTime, or PlainDate) to ZonedDateTime.\n * - Instant → UTC ZonedDateTime\n * - ZonedDateTime → returned as-is\n * - PlainDate → ZonedDateTime at midnight in the specified timezone\n *\n * This is an internal helper - do not use directly.\n */\nexport function normalizeWithPlainDate(\n input: Temporal.Instant | Temporal.ZonedDateTime\n): Temporal.ZonedDateTime;\nexport function normalizeWithPlainDate(\n input: Temporal.PlainDate,\n timezone: Timezone\n): Temporal.ZonedDateTime;\nexport function normalizeWithPlainDate(\n input: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate,\n timezone?: Timezone\n): Temporal.ZonedDateTime;\nexport function normalizeWithPlainDate(\n input: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate,\n timezone?: Timezone\n): Temporal.ZonedDateTime {\n return input instanceof Temporal.PlainDate\n ? plainDateToZonedDateTime(input, timezone!)\n : normalizeTemporalInput(input);\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,gBAAgB;AAyBlB,SAAS,uBACd,OACA,UACwB;AACxB,SAAO,iBAAiB,SAAS,YAC7B,yBAAyB,OAAO,QAAS,IACzC,uBAAuB,KAAK;AAClC;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/today.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport type { Timezone } from './types';\n\n/**\n * Get today's date in the specified timezone.\n *\n * @param timezone - IANA timezone identifier (e.g., \"America/New_York\", \"Europe/London\") or \"UTC\"\n * @returns A Temporal.PlainDate representing today's date\n *\n * @example\n * ```typescript\n * import { today, browserTimezone } from '@gobrand/tiempo';\n *\n * // Server-side: Get today in UTC\n * const todayUtc = today(\"UTC\");\n *\n * // Server-side: Get today in user's timezone (from DB/preferences)\n * const todayUser = today(user.timezone);\n *\n * // Client-side: Get today in browser's timezone\n * const todayLocal = today(browserTimezone());\n *\n * // Get today in a specific timezone\n * const todayInMadrid = today(\"Europe/Madrid\");\n * ```\n */\nexport function today(timezone: Timezone): Temporal.PlainDate {\n return Temporal.Now.zonedDateTimeISO(timezone).toPlainDate();\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AA0BlB,SAAS,MAAM,UAAwC;AAC5D,SAAO,SAAS,IAAI,iBAAiB,QAAQ,EAAE,YAAY;AAC7D;","names":[]}
@@ -1,10 +0,0 @@
1
- // src/shared/normalizeTemporalInput.ts
2
- import { Temporal } from "@js-temporal/polyfill";
3
- function normalizeTemporalInput(input) {
4
- return input instanceof Temporal.Instant ? input.toZonedDateTimeISO("UTC") : input;
5
- }
6
-
7
- export {
8
- normalizeTemporalInput
9
- };
10
- //# sourceMappingURL=chunk-MJSZNWCV.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/shared/normalizeTemporalInput.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\n\n/**\n * @internal\n * Normalizes input to ZonedDateTime. Converts Instant to UTC, or returns existing ZonedDateTime.\n * This is an internal helper - do not use directly.\n */\nexport function normalizeTemporalInput(\n input: Temporal.Instant | Temporal.ZonedDateTime\n): Temporal.ZonedDateTime {\n return input instanceof Temporal.Instant\n ? input.toZonedDateTimeISO('UTC')\n : input;\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AAOlB,SAAS,uBACd,OACwB;AACxB,SAAO,iBAAiB,SAAS,UAC7B,MAAM,mBAAmB,KAAK,IAC9B;AACN;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/isPlainDateEqual.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\n\n/**\n * Returns true if the two plain dates are equal.\n * Compares calendar dates without time or timezone considerations.\n *\n * @param date1 - First plain date\n * @param date2 - Second plain date\n * @returns true if date1 equals date2, false otherwise\n *\n * @example\n * ```ts\n * const jan20a = Temporal.PlainDate.from('2025-01-20');\n * const jan20b = Temporal.PlainDate.from('2025-01-20');\n * const jan25 = Temporal.PlainDate.from('2025-01-25');\n *\n * isPlainDateEqual(jan20a, jan20b); // true\n * isPlainDateEqual(jan20a, jan25); // false\n * ```\n */\nexport function isPlainDateEqual(\n date1: Temporal.PlainDate,\n date2: Temporal.PlainDate\n): boolean {\n return Temporal.PlainDate.compare(date1, date2) === 0;\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AAoBlB,SAAS,iBACd,OACA,OACS;AACT,SAAO,SAAS,UAAU,QAAQ,OAAO,KAAK,MAAM;AACtD;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/differenceInNanoseconds.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Returns the number of nanoseconds between two datetimes.\n * The result is positive if laterDate is after earlierDate, negative if before.\n *\n * @param laterDate - The later datetime (Instant or ZonedDateTime)\n * @param earlierDate - The earlier datetime (Instant or ZonedDateTime)\n * @returns The number of nanoseconds between the dates as a BigInt\n *\n * @example\n * ```ts\n * const later = Temporal.Instant.from('2025-01-20T12:30:20.000000500Z');\n * const earlier = Temporal.Instant.from('2025-01-20T12:30:20.000000000Z');\n *\n * differenceInNanoseconds(later, earlier); // 500n\n * ```\n *\n * @example\n * ```ts\n * // Works with ZonedDateTime\n * const later = Temporal.ZonedDateTime.from('2025-01-20T15:00:00.000000001-05:00[America/New_York]');\n * const earlier = Temporal.ZonedDateTime.from('2025-01-20T15:00:00.000000000-05:00[America/New_York]');\n *\n * differenceInNanoseconds(later, earlier); // 1n\n * ```\n *\n * @example\n * ```ts\n * // Handles different timezones - compares by instant\n * const tokyo = Temporal.ZonedDateTime.from('2025-01-21T00:00:00+09:00[Asia/Tokyo]');\n * const ny = Temporal.ZonedDateTime.from('2025-01-20T10:00:00-05:00[America/New_York]');\n *\n * differenceInNanoseconds(tokyo, ny); // 0n (same instant)\n * ```\n */\nexport function differenceInNanoseconds(\n laterDate: Temporal.Instant | Temporal.ZonedDateTime,\n earlierDate: Temporal.Instant | Temporal.ZonedDateTime\n): bigint {\n const zoned1 = normalizeTemporalInput(laterDate);\n const zoned2 = normalizeTemporalInput(earlierDate);\n\n return zoned1.epochNanoseconds - zoned2.epochNanoseconds;\n}\n"],"mappings":";;;;;AAAA,OAAyB;AAqClB,SAAS,wBACd,WACA,aACQ;AACR,QAAM,SAAS,uBAAuB,SAAS;AAC/C,QAAM,SAAS,uBAAuB,WAAW;AAEjD,SAAO,OAAO,mBAAmB,OAAO;AAC1C;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/eachWeekOfInterval.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Returns an array of ZonedDateTime objects for each week within the interval.\n * Each element represents the first moment of the week (Monday at midnight).\n * Uses ISO 8601 week definition: weeks start on Monday.\n * The interval is inclusive of both start and end weeks.\n *\n * For Instant inputs, UTC is used as the timezone.\n * For ZonedDateTime inputs, the timezone of the start date is preserved.\n *\n * @param interval - The interval with start and end datetimes\n * @returns Array of ZonedDateTime at start of each week (Monday) in the interval\n *\n * @example\n * ```ts\n * const start = Temporal.ZonedDateTime.from('2025-01-06T10:00:00Z[UTC]'); // Monday\n * const end = Temporal.ZonedDateTime.from('2025-01-22T14:00:00Z[UTC]'); // Wednesday\n *\n * const weeks = eachWeekOfInterval({ start, end });\n * // [\n * // 2025-01-06T00:00:00Z[UTC], // Week 2\n * // 2025-01-13T00:00:00Z[UTC], // Week 3\n * // 2025-01-20T00:00:00Z[UTC] // Week 4\n * // ]\n * ```\n *\n * @example\n * ```ts\n * // Mid-week start\n * const start = Temporal.ZonedDateTime.from('2025-01-08T10:00:00Z[UTC]'); // Wednesday\n * const end = Temporal.ZonedDateTime.from('2025-01-15T14:00:00Z[UTC]'); // Wednesday\n *\n * const weeks = eachWeekOfInterval({ start, end });\n * // [\n * // 2025-01-06T00:00:00Z[UTC], // Monday of week containing Jan 8\n * // 2025-01-13T00:00:00Z[UTC] // Monday of week containing Jan 15\n * // ]\n * ```\n *\n * @example\n * ```ts\n * // Cross-year boundary\n * const start = Temporal.ZonedDateTime.from('2024-12-25T00:00:00Z[UTC]');\n * const end = Temporal.ZonedDateTime.from('2025-01-08T00:00:00Z[UTC]');\n *\n * const weeks = eachWeekOfInterval({ start, end });\n * // [\n * // 2024-12-23T00:00:00Z[UTC], // Monday of week containing Dec 25\n * // 2024-12-30T00:00:00Z[UTC], // Monday of week containing Dec 30\n * // 2025-01-06T00:00:00Z[UTC] // Monday of week containing Jan 8\n * // ]\n * ```\n */\nexport function eachWeekOfInterval(interval: {\n start: Temporal.Instant | Temporal.ZonedDateTime;\n end: Temporal.Instant | Temporal.ZonedDateTime;\n}): Temporal.ZonedDateTime[] {\n const startZoned = normalizeTemporalInput(interval.start);\n const endZoned = normalizeTemporalInput(interval.end);\n\n const timezone = startZoned.timeZoneId;\n\n // Get Monday of the starting week\n // dayOfWeek: 1 = Monday, 7 = Sunday (ISO 8601)\n const daysToSubtractStart = startZoned.dayOfWeek - 1;\n const startMonday = startZoned.subtract({ days: daysToSubtractStart }).startOfDay();\n\n // Get Monday of the ending week\n const endInTimezone = endZoned.withTimeZone(timezone);\n const daysToSubtractEnd = endInTimezone.dayOfWeek - 1;\n const endMonday = endInTimezone.subtract({ days: daysToSubtractEnd }).startOfDay();\n\n const weeks: Temporal.ZonedDateTime[] = [];\n let current = startMonday;\n\n while (Temporal.ZonedDateTime.compare(current, endMonday) <= 0) {\n weeks.push(current);\n current = current.add({ weeks: 1 });\n }\n\n return weeks;\n}\n"],"mappings":";;;;;AAAA,SAAS,gBAAgB;AAuDlB,SAAS,mBAAmB,UAGN;AAC3B,QAAM,aAAa,uBAAuB,SAAS,KAAK;AACxD,QAAM,WAAW,uBAAuB,SAAS,GAAG;AAEpD,QAAM,WAAW,WAAW;AAI5B,QAAM,sBAAsB,WAAW,YAAY;AACnD,QAAM,cAAc,WAAW,SAAS,EAAE,MAAM,oBAAoB,CAAC,EAAE,WAAW;AAGlF,QAAM,gBAAgB,SAAS,aAAa,QAAQ;AACpD,QAAM,oBAAoB,cAAc,YAAY;AACpD,QAAM,YAAY,cAAc,SAAS,EAAE,MAAM,kBAAkB,CAAC,EAAE,WAAW;AAEjF,QAAM,QAAkC,CAAC;AACzC,MAAI,UAAU;AAEd,SAAO,SAAS,cAAc,QAAQ,SAAS,SAAS,KAAK,GAAG;AAC9D,UAAM,KAAK,OAAO;AAClB,cAAU,QAAQ,IAAI,EAAE,OAAO,EAAE,CAAC;AAAA,EACpC;AAEA,SAAO;AACT;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/endOfMonth.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport type { Timezone } from './types';\nimport { getEndOfDay } from './shared/endOfDay';\nimport { normalizeWithPlainDate } from './shared/normalizeWithPlainDate';\n\n/**\n * Returns a ZonedDateTime representing the last moment of the month (last day at 23:59:59.999999999).\n *\n * @param input - A Temporal.Instant (UTC) or Temporal.ZonedDateTime\n * @returns ZonedDateTime at the last day of the month at 23:59:59.999999999\n *\n * @example\n * ```ts\n * // From Instant (always UTC)\n * const instant = Temporal.Instant.from('2025-01-15T12:00:00Z');\n * const end = endOfMonth(instant);\n * // 2025-01-31T23:59:59.999999999Z[UTC]\n * ```\n *\n * @example\n * ```ts\n * // From ZonedDateTime (uses its timezone)\n * const zoned = Temporal.ZonedDateTime.from('2025-02-15T15:30:00-05:00[America/New_York]');\n * const end = endOfMonth(zoned);\n * // 2025-02-28T23:59:59.999999999-05:00[America/New_York]\n * ```\n *\n * @example\n * ```ts\n * // From PlainDate (requires timezone)\n * const date = Temporal.PlainDate.from('2025-02-15');\n * const end = endOfMonth(date, 'America/New_York');\n * // 2025-02-28T23:59:59.999999999-05:00[America/New_York]\n * ```\n */\nexport function endOfMonth(\n input: Temporal.Instant | Temporal.ZonedDateTime\n): Temporal.ZonedDateTime;\nexport function endOfMonth(\n input: Temporal.PlainDate,\n timezone: Timezone\n): Temporal.ZonedDateTime;\nexport function endOfMonth(\n input: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate,\n timezone?: Timezone\n): Temporal.ZonedDateTime {\n const zonedDateTime = normalizeWithPlainDate(input, timezone!);\n const lastDay = zonedDateTime.with({ day: zonedDateTime.daysInMonth });\n return getEndOfDay(lastDay);\n}\n"],"mappings":";;;;;;;;AAAA,OAAyB;AA0ClB,SAAS,WACd,OACA,UACwB;AACxB,QAAM,gBAAgB,uBAAuB,OAAO,QAAS;AAC7D,QAAM,UAAU,cAAc,KAAK,EAAE,KAAK,cAAc,YAAY,CAAC;AACrE,SAAO,YAAY,OAAO;AAC5B;","names":[]}
@@ -1,19 +0,0 @@
1
- import {
2
- differenceInMilliseconds
3
- } from "./chunk-AJ4JBKJK.js";
4
- import {
5
- normalizeTemporalInput
6
- } from "./chunk-MJSZNWCV.js";
7
-
8
- // src/differenceInHours.ts
9
- import "@js-temporal/polyfill";
10
- function differenceInHours(laterDate, earlierDate) {
11
- const zoned1 = normalizeTemporalInput(laterDate);
12
- const zoned2 = normalizeTemporalInput(earlierDate);
13
- return Math.trunc(differenceInMilliseconds(zoned1, zoned2) / 36e5);
14
- }
15
-
16
- export {
17
- differenceInHours
18
- };
19
- //# sourceMappingURL=chunk-PMJD5N5J.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/differenceInHours.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\nimport { differenceInMilliseconds } from './shared/differenceInMilliseconds';\n\n/**\n * Returns the number of hours between two datetimes.\n * The result is positive if laterDate is after earlierDate, negative if before.\n *\n * @param laterDate - The later datetime (Instant or ZonedDateTime)\n * @param earlierDate - The earlier datetime (Instant or ZonedDateTime)\n * @returns The number of hours between the dates\n *\n * @example\n * ```ts\n * const later = Temporal.Instant.from('2025-01-20T18:00:00Z');\n * const earlier = Temporal.Instant.from('2025-01-20T15:00:00Z');\n *\n * differenceInHours(later, earlier); // 3\n * ```\n *\n * @example\n * ```ts\n * // Works with ZonedDateTime\n * const later = Temporal.ZonedDateTime.from('2025-01-21T00:00:00-05:00[America/New_York]');\n * const earlier = Temporal.ZonedDateTime.from('2025-01-20T15:00:00-05:00[America/New_York]');\n *\n * differenceInHours(later, earlier); // 9\n * ```\n *\n * @example\n * ```ts\n * // Handles different timezones - compares by instant\n * const tokyo = Temporal.ZonedDateTime.from('2025-01-21T00:00:00+09:00[Asia/Tokyo]');\n * const ny = Temporal.ZonedDateTime.from('2025-01-20T10:00:00-05:00[America/New_York]');\n *\n * differenceInHours(tokyo, ny); // 0 (same instant)\n * ```\n */\nexport function differenceInHours(\n laterDate: Temporal.Instant | Temporal.ZonedDateTime,\n earlierDate: Temporal.Instant | Temporal.ZonedDateTime\n): number {\n const zoned1 = normalizeTemporalInput(laterDate);\n const zoned2 = normalizeTemporalInput(earlierDate);\n\n return Math.trunc(differenceInMilliseconds(zoned1, zoned2) / 3600000);\n}\n"],"mappings":";;;;;;;;AAAA,OAAyB;AAsClB,SAAS,kBACd,WACA,aACQ;AACR,QAAM,SAAS,uBAAuB,SAAS;AAC/C,QAAM,SAAS,uBAAuB,WAAW;AAEjD,SAAO,KAAK,MAAM,yBAAyB,QAAQ,MAAM,IAAI,IAAO;AACtE;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/differenceInWeeks.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Returns the number of weeks between two datetimes.\n * The result is positive if laterDate is after earlierDate, negative if before.\n *\n * This function uses calendar-aware calculation, which means it properly handles\n * DST transitions and calendar weeks.\n *\n * Instant inputs are converted to UTC for calendar calculations.\n * For ZonedDateTime inputs, their timezone is preserved.\n *\n * @param laterDate - The later datetime (Instant or ZonedDateTime)\n * @param earlierDate - The earlier datetime (Instant or ZonedDateTime)\n * @returns The number of weeks between the dates\n *\n * @example\n * ```ts\n * const later = Temporal.Instant.from('2025-02-10T12:00:00Z');\n * const earlier = Temporal.Instant.from('2025-01-20T12:00:00Z');\n *\n * differenceInWeeks(later, earlier); // 3\n * ```\n *\n * @example\n * ```ts\n * // Works with ZonedDateTime\n * const later = Temporal.ZonedDateTime.from('2025-02-10T15:00:00-05:00[America/New_York]');\n * const earlier = Temporal.ZonedDateTime.from('2025-01-20T15:00:00-05:00[America/New_York]');\n *\n * differenceInWeeks(later, earlier); // 3\n * ```\n *\n * @example\n * ```ts\n * // Returns fractional weeks for partial week differences\n * const later = Temporal.Instant.from('2025-01-27T12:00:00Z');\n * const earlier = Temporal.Instant.from('2025-01-20T12:00:00Z');\n *\n * differenceInWeeks(later, earlier); // 1\n * ```\n */\nexport function differenceInWeeks(\n laterDate: Temporal.Instant | Temporal.ZonedDateTime,\n earlierDate: Temporal.Instant | Temporal.ZonedDateTime\n): number {\n const zoned1 = normalizeTemporalInput(laterDate);\n const zoned2 = normalizeTemporalInput(earlierDate);\n\n const duration = zoned2.until(zoned1, { largestUnit: 'hours' });\n return duration.total({ unit: 'weeks', relativeTo: zoned2 });\n}\n"],"mappings":";;;;;AAAA,OAAyB;AA2ClB,SAAS,kBACd,WACA,aACQ;AACR,QAAM,SAAS,uBAAuB,SAAS;AAC/C,QAAM,SAAS,uBAAuB,WAAW;AAEjD,QAAM,WAAW,OAAO,MAAM,QAAQ,EAAE,aAAa,QAAQ,CAAC;AAC9D,SAAO,SAAS,MAAM,EAAE,MAAM,SAAS,YAAY,OAAO,CAAC;AAC7D;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/shared/nowZoned.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './normalizeTemporalInput';\n\nexport function nowZoned(): Temporal.ZonedDateTime {\n return normalizeTemporalInput(Temporal.Now.instant());\n}\n"],"mappings":";;;;;AAAA,SAAS,gBAAgB;AAGlB,SAAS,WAAmC;AACjD,SAAO,uBAAuB,SAAS,IAAI,QAAQ,CAAC;AACtD;","names":[]}
@@ -1,19 +0,0 @@
1
- import {
2
- differenceInMilliseconds
3
- } from "./chunk-AJ4JBKJK.js";
4
- import {
5
- normalizeTemporalInput
6
- } from "./chunk-MJSZNWCV.js";
7
-
8
- // src/differenceInSeconds.ts
9
- import "@js-temporal/polyfill";
10
- function differenceInSeconds(laterDate, earlierDate) {
11
- const zoned1 = normalizeTemporalInput(laterDate);
12
- const zoned2 = normalizeTemporalInput(earlierDate);
13
- return Math.trunc(differenceInMilliseconds(zoned1, zoned2) / 1e3);
14
- }
15
-
16
- export {
17
- differenceInSeconds
18
- };
19
- //# sourceMappingURL=chunk-QVOEXF46.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/differenceInSeconds.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\nimport { differenceInMilliseconds } from './shared/differenceInMilliseconds';\n\n/**\n * Returns the number of seconds between two datetimes.\n * The result is positive if laterDate is after earlierDate, negative if before.\n *\n * @param laterDate - The later datetime (Instant or ZonedDateTime)\n * @param earlierDate - The earlier datetime (Instant or ZonedDateTime)\n * @returns The number of seconds between the dates\n *\n * @example\n * ```ts\n * const later = Temporal.Instant.from('2025-01-20T12:30:25Z');\n * const earlier = Temporal.Instant.from('2025-01-20T12:30:20Z');\n *\n * differenceInSeconds(later, earlier); // 5\n * ```\n *\n * @example\n * ```ts\n * // Works with ZonedDateTime\n * const later = Temporal.ZonedDateTime.from('2025-01-20T15:01:00-05:00[America/New_York]');\n * const earlier = Temporal.ZonedDateTime.from('2025-01-20T15:00:00-05:00[America/New_York]');\n *\n * differenceInSeconds(later, earlier); // 60\n * ```\n *\n * @example\n * ```ts\n * // Handles different timezones - compares by instant\n * const tokyo = Temporal.ZonedDateTime.from('2025-01-21T00:00:00+09:00[Asia/Tokyo]');\n * const ny = Temporal.ZonedDateTime.from('2025-01-20T10:00:00-05:00[America/New_York]');\n *\n * differenceInSeconds(tokyo, ny); // 0 (same instant)\n * ```\n */\nexport function differenceInSeconds(\n laterDate: Temporal.Instant | Temporal.ZonedDateTime,\n earlierDate: Temporal.Instant | Temporal.ZonedDateTime\n): number {\n const zoned1 = normalizeTemporalInput(laterDate);\n const zoned2 = normalizeTemporalInput(earlierDate);\n\n return Math.trunc(differenceInMilliseconds(zoned1, zoned2) / 1000);\n}\n"],"mappings":";;;;;;;;AAAA,OAAyB;AAsClB,SAAS,oBACd,WACA,aACQ;AACR,QAAM,SAAS,uBAAuB,SAAS;AAC/C,QAAM,SAAS,uBAAuB,WAAW;AAEjD,SAAO,KAAK,MAAM,yBAAyB,QAAQ,MAAM,IAAI,GAAI;AACnE;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/isPlainTimeAfter.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\n\n/**\n * Returns true if the first plain time is after the second plain time.\n * Compares wall-clock times without date or timezone considerations.\n *\n * @param time1 - First plain time\n * @param time2 - Second plain time\n * @returns true if time1 is after time2, false otherwise\n *\n * @example\n * ```ts\n * const morning = Temporal.PlainTime.from('09:00');\n * const evening = Temporal.PlainTime.from('17:00');\n *\n * isPlainTimeAfter(evening, morning); // true\n * isPlainTimeAfter(morning, evening); // false\n * isPlainTimeAfter(morning, morning); // false\n * ```\n */\nexport function isPlainTimeAfter(\n time1: Temporal.PlainTime,\n time2: Temporal.PlainTime\n): boolean {\n return Temporal.PlainTime.compare(time1, time2) > 0;\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AAoBlB,SAAS,iBACd,OACA,OACS;AACT,SAAO,SAAS,UAAU,QAAQ,OAAO,KAAK,IAAI;AACpD;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/isSameDay.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Returns true if both datetimes fall on the same calendar day.\n * Compares the year, month, and day fields directly.\n *\n * Instant inputs are converted to UTC. For ZonedDateTime inputs, their\n * timezone is preserved. Convert to a common timezone before calling if\n * you need to compare from a specific perspective.\n *\n * @param date1 - First datetime (Instant or ZonedDateTime)\n * @param date2 - Second datetime (Instant or ZonedDateTime)\n * @returns true if both dates are on the same calendar day, false otherwise\n *\n * @example\n * ```ts\n * // Same timezone, same day\n * const morning = Temporal.ZonedDateTime.from('2025-01-20T08:00:00Z[UTC]');\n * const evening = Temporal.ZonedDateTime.from('2025-01-20T23:00:00Z[UTC]');\n *\n * isSameDay(morning, evening); // true\n * ```\n *\n * @example\n * ```ts\n * // Same timezone, different days\n * const today = Temporal.ZonedDateTime.from('2025-01-20T23:59:59Z[UTC]');\n * const tomorrow = Temporal.ZonedDateTime.from('2025-01-21T00:00:00Z[UTC]');\n *\n * isSameDay(today, tomorrow); // false\n * ```\n *\n * @example\n * ```ts\n * // Different timezones - compares their local calendar days\n * const ny = Temporal.ZonedDateTime.from('2025-01-20T23:00:00-05:00[America/New_York]');\n * const tokyo = Temporal.ZonedDateTime.from('2025-01-21T13:00:00+09:00[Asia/Tokyo]');\n *\n * // Same instant, different calendar days from each person's perspective\n * isSameDay(ny, tokyo); // false (Jan 20 in NY, Jan 21 in Tokyo)\n *\n * // Convert to UTC to compare in UTC timezone\n * isSameDay(ny.withTimeZone('UTC'), tokyo.withTimeZone('UTC')); // true (both Jan 21 in UTC)\n *\n * // Convert to NY timezone to compare from NY perspective\n * isSameDay(ny, tokyo.withTimeZone('America/New_York')); // true (both Jan 20 in NY)\n * ```\n *\n * @example\n * ```ts\n * // Instant inputs are converted to UTC\n * const instant1 = Temporal.Instant.from('2025-01-20T10:00:00Z');\n * const instant2 = Temporal.Instant.from('2025-01-20T23:00:00Z');\n *\n * isSameDay(instant1, instant2); // true (both Jan 20 in UTC)\n * ```\n */\nexport function isSameDay(\n date1: Temporal.Instant | Temporal.ZonedDateTime,\n date2: Temporal.Instant | Temporal.ZonedDateTime\n): boolean {\n const zoned1 = normalizeTemporalInput(date1);\n const zoned2 = normalizeTemporalInput(date2);\n\n return (\n zoned1.year === zoned2.year &&\n zoned1.month === zoned2.month &&\n zoned1.day === zoned2.day\n );\n}\n"],"mappings":";;;;;AAAA,OAAyB;AA0DlB,SAAS,UACd,OACA,OACS;AACT,QAAM,SAAS,uBAAuB,KAAK;AAC3C,QAAM,SAAS,uBAAuB,KAAK;AAE3C,SACE,OAAO,SAAS,OAAO,QACvB,OAAO,UAAU,OAAO,SACxB,OAAO,QAAQ,OAAO;AAE1B;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/toDate.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\n\n/**\n * Convert a Temporal.Instant or ZonedDateTime to a Date object.\n *\n * @param input - A Temporal.Instant or Temporal.ZonedDateTime\n * @returns A Date object representing the same moment in time\n *\n * @example\n * ```typescript\n * // From Instant\n * const instant = Temporal.Instant.from(\"2025-01-20T20:00:00Z\");\n * const date = toDate(instant);\n * // date.toISOString() === \"2025-01-20T20:00:00.000Z\"\n *\n * // From ZonedDateTime\n * const zoned = Temporal.ZonedDateTime.from(\"2025-01-20T15:00:00-05:00[America/New_York]\");\n * const date2 = toDate(zoned);\n * // date2.toISOString() === \"2025-01-20T20:00:00.000Z\"\n *\n * // Use with Drizzle ORM (for storing back to database)\n * const instant = Temporal.Instant.from(\"2025-01-20T20:00:00Z\");\n * const date = toDate(instant);\n * await db.update(posts).set({ publishedAt: date });\n * ```\n */\nexport function toDate(\n input: Temporal.Instant | Temporal.ZonedDateTime\n): Date {\n if (input instanceof Temporal.Instant) {\n return new Date(input.toString());\n }\n\n return new Date(input.toInstant().toString());\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AA0BlB,SAAS,OACd,OACM;AACN,MAAI,iBAAiB,SAAS,SAAS;AACrC,WAAO,IAAI,KAAK,MAAM,SAAS,CAAC;AAAA,EAClC;AAEA,SAAO,IAAI,KAAK,MAAM,UAAU,EAAE,SAAS,CAAC;AAC9C;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/eachMonthOfInterval.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Returns an array of ZonedDateTime objects for each month within the interval.\n * Each element represents the first moment of the month (day 1 at midnight).\n * The interval is inclusive of both start and end months.\n *\n * For Instant inputs, UTC is used as the timezone.\n * For ZonedDateTime inputs, the timezone of the start date is preserved.\n *\n * @param interval - The interval with start and end datetimes\n * @returns Array of ZonedDateTime at start of each month in the interval\n *\n * @example\n * ```ts\n * const start = Temporal.ZonedDateTime.from('2025-01-15T10:00:00Z[UTC]');\n * const end = Temporal.ZonedDateTime.from('2025-04-20T14:00:00Z[UTC]');\n *\n * const months = eachMonthOfInterval({ start, end });\n * // [\n * // 2025-01-01T00:00:00Z[UTC],\n * // 2025-02-01T00:00:00Z[UTC],\n * // 2025-03-01T00:00:00Z[UTC],\n * // 2025-04-01T00:00:00Z[UTC]\n * // ]\n * ```\n *\n * @example\n * ```ts\n * // Cross-year boundary\n * const start = Temporal.ZonedDateTime.from('2024-11-15T00:00:00Z[UTC]');\n * const end = Temporal.ZonedDateTime.from('2025-02-15T00:00:00Z[UTC]');\n *\n * const months = eachMonthOfInterval({ start, end });\n * // [\n * // 2024-11-01T00:00:00Z[UTC],\n * // 2024-12-01T00:00:00Z[UTC],\n * // 2025-01-01T00:00:00Z[UTC],\n * // 2025-02-01T00:00:00Z[UTC]\n * // ]\n * ```\n */\nexport function eachMonthOfInterval(interval: {\n start: Temporal.Instant | Temporal.ZonedDateTime;\n end: Temporal.Instant | Temporal.ZonedDateTime;\n}): Temporal.ZonedDateTime[] {\n const startZoned = normalizeTemporalInput(interval.start);\n const endZoned = normalizeTemporalInput(interval.end);\n\n const timezone = startZoned.timeZoneId;\n\n // Get start of the starting month\n const startYearMonth = Temporal.PlainYearMonth.from({\n year: startZoned.year,\n month: startZoned.month,\n });\n\n // Get end month in the same timezone\n const endInTimezone = endZoned.withTimeZone(timezone);\n const endYearMonth = Temporal.PlainYearMonth.from({\n year: endInTimezone.year,\n month: endInTimezone.month,\n });\n\n const months: Temporal.ZonedDateTime[] = [];\n let current = startYearMonth;\n\n while (Temporal.PlainYearMonth.compare(current, endYearMonth) <= 0) {\n const firstOfMonth = current.toPlainDate({ day: 1 });\n months.push(\n firstOfMonth.toZonedDateTime({\n timeZone: timezone,\n plainTime: new Temporal.PlainTime(),\n })\n );\n current = current.add({ months: 1 });\n }\n\n return months;\n}\n"],"mappings":";;;;;AAAA,SAAS,gBAAgB;AA2ClB,SAAS,oBAAoB,UAGP;AAC3B,QAAM,aAAa,uBAAuB,SAAS,KAAK;AACxD,QAAM,WAAW,uBAAuB,SAAS,GAAG;AAEpD,QAAM,WAAW,WAAW;AAG5B,QAAM,iBAAiB,SAAS,eAAe,KAAK;AAAA,IAClD,MAAM,WAAW;AAAA,IACjB,OAAO,WAAW;AAAA,EACpB,CAAC;AAGD,QAAM,gBAAgB,SAAS,aAAa,QAAQ;AACpD,QAAM,eAAe,SAAS,eAAe,KAAK;AAAA,IAChD,MAAM,cAAc;AAAA,IACpB,OAAO,cAAc;AAAA,EACvB,CAAC;AAED,QAAM,SAAmC,CAAC;AAC1C,MAAI,UAAU;AAEd,SAAO,SAAS,eAAe,QAAQ,SAAS,YAAY,KAAK,GAAG;AAClE,UAAM,eAAe,QAAQ,YAAY,EAAE,KAAK,EAAE,CAAC;AACnD,WAAO;AAAA,MACL,aAAa,gBAAgB;AAAA,QAC3B,UAAU;AAAA,QACV,WAAW,IAAI,SAAS,UAAU;AAAA,MACpC,CAAC;AAAA,IACH;AACA,cAAU,QAAQ,IAAI,EAAE,QAAQ,EAAE,CAAC;AAAA,EACrC;AAEA,SAAO;AACT;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/toPlainTime.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport type { Timezone } from './types';\n\n// Pattern to detect plain time strings: HH:MM, HH:MM:SS, or HH:MM:SS.fractional\nconst PLAIN_TIME_PATTERN = /^\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?$/;\n\n/**\n * Parse a plain time or extract the wall-clock time from a datetime.\n *\n * @param input - A PlainTimeLike object, plain time string (HH:MM or HH:MM:SS), ZonedDateTime, or datetime input requiring timezone\n * @param timezone - IANA timezone identifier. Required for ISO strings, Date, and Instant inputs.\n * @returns A Temporal.PlainTime representing the wall-clock time\n *\n * @example\n * ```typescript\n * import { toPlainTime, toZonedTime } from '@gobrand/tiempo';\n *\n * // From PlainTimeLike object (no timezone needed)\n * const time = toPlainTime({ hour: 14, minute: 30 }); // 14:30\n *\n * // From plain time string (no timezone needed)\n * const time2 = toPlainTime(\"14:30\"); // 14:30\n * const timeWithSeconds = toPlainTime(\"14:30:45\"); // 14:30:45\n *\n * // From ZonedDateTime (no timezone needed)\n * const zdt = toZonedTime(\"2025-01-20T15:30:00Z\", \"America/New_York\");\n * const time3 = toPlainTime(zdt); // 10:30\n *\n * // From UTC string with timezone\n * const time4 = toPlainTime(\"2025-01-20T15:30:00Z\", \"America/New_York\"); // 10:30\n *\n * // From Date with timezone\n * const date = new Date(\"2025-01-20T15:30:00.000Z\");\n * const time5 = toPlainTime(date, \"Europe/London\"); // 15:30\n *\n * // From Instant with timezone\n * const instant = Temporal.Instant.from(\"2025-01-20T15:30:00Z\");\n * const time6 = toPlainTime(instant, \"Asia/Tokyo\"); // 00:30\n * ```\n */\nexport function toPlainTime(input: Temporal.ZonedDateTime): Temporal.PlainTime;\nexport function toPlainTime(\n input: string | Date | Temporal.Instant | Temporal.ZonedDateTime,\n timezone: Timezone\n): Temporal.PlainTime;\nexport function toPlainTime(input: Temporal.PlainTimeLike | string): Temporal.PlainTime;\nexport function toPlainTime(\n input: string | Date | Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainTimeLike,\n timezone?: Timezone\n): Temporal.PlainTime {\n // ZonedDateTime without timezone override\n if (input instanceof Temporal.ZonedDateTime && timezone === undefined) {\n return input.toPlainTime();\n }\n\n // Date requires timezone\n if (input instanceof Date) {\n if (timezone === undefined) {\n throw new Error('Timezone is required unless input is a ZonedDateTime, PlainTimeLike, or plain time string');\n }\n return Temporal.Instant.from(input.toISOString()).toZonedDateTimeISO(timezone).toPlainTime();\n }\n\n // Instant requires timezone\n if (input instanceof Temporal.Instant) {\n if (timezone === undefined) {\n throw new Error('Timezone is required unless input is a ZonedDateTime, PlainTimeLike, or plain time string');\n }\n return input.toZonedDateTimeISO(timezone).toPlainTime();\n }\n\n // ZonedDateTime with timezone override\n if (input instanceof Temporal.ZonedDateTime) {\n if (timezone === undefined) {\n throw new Error('Timezone is required unless input is a ZonedDateTime, PlainTimeLike, or plain time string');\n }\n return input.toInstant().toZonedDateTimeISO(timezone).toPlainTime();\n }\n\n // String: ISO datetime (requires timezone) or plain time (no timezone)\n if (typeof input === 'string') {\n if (timezone !== undefined) {\n return Temporal.Instant.from(input).toZonedDateTimeISO(timezone).toPlainTime();\n }\n if (PLAIN_TIME_PATTERN.test(input)) {\n return Temporal.PlainTime.from(input);\n }\n throw new Error('Timezone is required unless input is a ZonedDateTime, PlainTimeLike, or plain time string');\n }\n\n // PlainTimeLike object - pass directly to Temporal.PlainTime.from()\n return Temporal.PlainTime.from(input);\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AAIzB,IAAM,qBAAqB;AA0CpB,SAAS,YACd,OACA,UACoB;AAEpB,MAAI,iBAAiB,SAAS,iBAAiB,aAAa,QAAW;AACrE,WAAO,MAAM,YAAY;AAAA,EAC3B;AAGA,MAAI,iBAAiB,MAAM;AACzB,QAAI,aAAa,QAAW;AAC1B,YAAM,IAAI,MAAM,2FAA2F;AAAA,IAC7G;AACA,WAAO,SAAS,QAAQ,KAAK,MAAM,YAAY,CAAC,EAAE,mBAAmB,QAAQ,EAAE,YAAY;AAAA,EAC7F;AAGA,MAAI,iBAAiB,SAAS,SAAS;AACrC,QAAI,aAAa,QAAW;AAC1B,YAAM,IAAI,MAAM,2FAA2F;AAAA,IAC7G;AACA,WAAO,MAAM,mBAAmB,QAAQ,EAAE,YAAY;AAAA,EACxD;AAGA,MAAI,iBAAiB,SAAS,eAAe;AAC3C,QAAI,aAAa,QAAW;AAC1B,YAAM,IAAI,MAAM,2FAA2F;AAAA,IAC7G;AACA,WAAO,MAAM,UAAU,EAAE,mBAAmB,QAAQ,EAAE,YAAY;AAAA,EACpE;AAGA,MAAI,OAAO,UAAU,UAAU;AAC7B,QAAI,aAAa,QAAW;AAC1B,aAAO,SAAS,QAAQ,KAAK,KAAK,EAAE,mBAAmB,QAAQ,EAAE,YAAY;AAAA,IAC/E;AACA,QAAI,mBAAmB,KAAK,KAAK,GAAG;AAClC,aAAO,SAAS,UAAU,KAAK,KAAK;AAAA,IACtC;AACA,UAAM,IAAI,MAAM,2FAA2F;AAAA,EAC7G;AAGA,SAAO,SAAS,UAAU,KAAK,KAAK;AACtC;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/isPlainTimeEqual.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\n\n/**\n * Returns true if the two plain times are equal.\n * Compares wall-clock times without date or timezone considerations.\n *\n * @param time1 - First plain time\n * @param time2 - Second plain time\n * @returns true if time1 equals time2, false otherwise\n *\n * @example\n * ```ts\n * const nineAM_a = Temporal.PlainTime.from('09:00');\n * const nineAM_b = Temporal.PlainTime.from('09:00');\n * const fivePM = Temporal.PlainTime.from('17:00');\n *\n * isPlainTimeEqual(nineAM_a, nineAM_b); // true\n * isPlainTimeEqual(nineAM_a, fivePM); // false\n * ```\n */\nexport function isPlainTimeEqual(\n time1: Temporal.PlainTime,\n time2: Temporal.PlainTime\n): boolean {\n return Temporal.PlainTime.compare(time1, time2) === 0;\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AAoBlB,SAAS,iBACd,OACA,OACS;AACT,SAAO,SAAS,UAAU,QAAQ,OAAO,KAAK,MAAM;AACtD;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/shared/isBefore.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\n\nexport function isBefore(\n date1: Temporal.ZonedDateTime,\n date2: Temporal.ZonedDateTime\n): boolean {\n return Temporal.ZonedDateTime.compare(date1, date2) < 0;\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AAElB,SAAS,SACd,OACA,OACS;AACT,SAAO,SAAS,cAAc,QAAQ,OAAO,KAAK,IAAI;AACxD;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/shared/isAfter.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\n\nexport function isAfter(\n date1: Temporal.ZonedDateTime,\n date2: Temporal.ZonedDateTime\n): boolean {\n return Temporal.ZonedDateTime.compare(date1, date2) > 0;\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AAElB,SAAS,QACd,OACA,OACS;AACT,SAAO,SAAS,cAAc,QAAQ,OAAO,KAAK,IAAI;AACxD;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/endOfWeek.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport type { Timezone } from './types';\nimport { getEndOfDay } from './shared/endOfDay';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\nimport { plainDateToZonedDateTime } from './shared/plainDateToZonedDateTime';\n\n/**\n * Returns a ZonedDateTime representing the last moment of the week (Sunday at 23:59:59.999999999).\n * Uses ISO 8601 week definition: weeks end on Sunday.\n *\n * @param input - A Temporal.Instant (UTC) or Temporal.ZonedDateTime\n * @returns ZonedDateTime at Sunday 23:59:59.999999999\n *\n * @example\n * ```ts\n * // From Instant (always UTC)\n * const instant = Temporal.Instant.from('2025-01-20T12:00:00Z'); // Monday\n * const end = endOfWeek(instant);\n * // 2025-01-26T23:59:59.999999999Z[UTC] (next Sunday)\n * ```\n *\n * @example\n * ```ts\n * // From ZonedDateTime (uses its timezone)\n * const zoned = Temporal.ZonedDateTime.from('2025-01-22T15:30:00-05:00[America/New_York]'); // Wednesday\n * const end = endOfWeek(zoned);\n * // 2025-01-26T23:59:59.999999999-05:00[America/New_York] (next Sunday)\n * ```\n *\n * @example\n * ```ts\n * // From PlainDate (requires timezone)\n * const date = Temporal.PlainDate.from('2025-01-22'); // Wednesday\n * const end = endOfWeek(date, 'America/New_York');\n * // 2025-01-26T23:59:59.999999999-05:00[America/New_York] (next Sunday)\n * ```\n */\nexport function endOfWeek(\n input: Temporal.Instant | Temporal.ZonedDateTime\n): Temporal.ZonedDateTime;\nexport function endOfWeek(\n input: Temporal.PlainDate,\n timezone: Timezone\n): Temporal.ZonedDateTime;\nexport function endOfWeek(\n input: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate,\n timezone?: Timezone\n): Temporal.ZonedDateTime {\n const zonedDateTime =\n input instanceof Temporal.PlainDate\n ? plainDateToZonedDateTime(input, timezone!)\n : normalizeTemporalInput(input);\n\n // Get the day of week (1 = Monday, 7 = Sunday in ISO 8601)\n const dayOfWeek = zonedDateTime.dayOfWeek;\n\n // Calculate days to add to get to Sunday\n const daysToAdd = 7 - dayOfWeek;\n\n // Go to Sunday, then get end of that day\n const sunday = zonedDateTime.add({ days: daysToAdd });\n\n return getEndOfDay(sunday);\n}\n"],"mappings":";;;;;;;;;;;AAAA,SAAS,gBAAgB;AA4ClB,SAAS,UACd,OACA,UACwB;AACxB,QAAM,gBACJ,iBAAiB,SAAS,YACtB,yBAAyB,OAAO,QAAS,IACzC,uBAAuB,KAAK;AAGlC,QAAM,YAAY,cAAc;AAGhC,QAAM,YAAY,IAAI;AAGtB,QAAM,SAAS,cAAc,IAAI,EAAE,MAAM,UAAU,CAAC;AAEpD,SAAO,YAAY,MAAM;AAC3B;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/eachHourOfInterval.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Returns an array of ZonedDateTime objects for each hour within the interval.\n * Each element represents the start of the hour (minute/second/etc. set to 0).\n * The interval is inclusive of both start and end hours.\n *\n * For Instant inputs, UTC is used as the timezone.\n * For ZonedDateTime inputs, the timezone of the start date is preserved.\n *\n * Note: During DST transitions, some hours may be skipped (spring forward) or\n * the array may contain fewer/more hours than expected based on wall-clock time.\n *\n * @param interval - The interval with start and end datetimes\n * @returns Array of ZonedDateTime at start of each hour in the interval\n *\n * @example\n * ```ts\n * const start = Temporal.ZonedDateTime.from('2025-01-06T10:30:00Z[UTC]');\n * const end = Temporal.ZonedDateTime.from('2025-01-06T14:15:00Z[UTC]');\n *\n * const hours = eachHourOfInterval({ start, end });\n * // [\n * // 2025-01-06T10:00:00Z[UTC],\n * // 2025-01-06T11:00:00Z[UTC],\n * // 2025-01-06T12:00:00Z[UTC],\n * // 2025-01-06T13:00:00Z[UTC],\n * // 2025-01-06T14:00:00Z[UTC]\n * // ]\n * ```\n *\n * @example\n * ```ts\n * // Cross-day boundary\n * const start = Temporal.ZonedDateTime.from('2025-01-06T22:00:00Z[UTC]');\n * const end = Temporal.ZonedDateTime.from('2025-01-07T02:00:00Z[UTC]');\n *\n * const hours = eachHourOfInterval({ start, end });\n * // [\n * // 2025-01-06T22:00:00Z[UTC],\n * // 2025-01-06T23:00:00Z[UTC],\n * // 2025-01-07T00:00:00Z[UTC],\n * // 2025-01-07T01:00:00Z[UTC],\n * // 2025-01-07T02:00:00Z[UTC]\n * // ]\n * ```\n */\nexport function eachHourOfInterval(interval: {\n start: Temporal.Instant | Temporal.ZonedDateTime;\n end: Temporal.Instant | Temporal.ZonedDateTime;\n}): Temporal.ZonedDateTime[] {\n const startZoned = normalizeTemporalInput(interval.start);\n const endZoned = normalizeTemporalInput(interval.end);\n\n const timezone = startZoned.timeZoneId;\n\n // Get start of the starting hour\n const startHour = startZoned.round({ smallestUnit: 'hour', roundingMode: 'floor' });\n\n // Get start of the ending hour in the same timezone\n const endInTimezone = endZoned.withTimeZone(timezone);\n const endHour = endInTimezone.round({ smallestUnit: 'hour', roundingMode: 'floor' });\n\n const hours: Temporal.ZonedDateTime[] = [];\n let current = startHour;\n\n while (Temporal.ZonedDateTime.compare(current, endHour) <= 0) {\n hours.push(current);\n current = current.add({ hours: 1 });\n }\n\n return hours;\n}\n"],"mappings":";;;;;AAAA,SAAS,gBAAgB;AAgDlB,SAAS,mBAAmB,UAGN;AAC3B,QAAM,aAAa,uBAAuB,SAAS,KAAK;AACxD,QAAM,WAAW,uBAAuB,SAAS,GAAG;AAEpD,QAAM,WAAW,WAAW;AAG5B,QAAM,YAAY,WAAW,MAAM,EAAE,cAAc,QAAQ,cAAc,QAAQ,CAAC;AAGlF,QAAM,gBAAgB,SAAS,aAAa,QAAQ;AACpD,QAAM,UAAU,cAAc,MAAM,EAAE,cAAc,QAAQ,cAAc,QAAQ,CAAC;AAEnF,QAAM,QAAkC,CAAC;AACzC,MAAI,UAAU;AAEd,SAAO,SAAS,cAAc,QAAQ,SAAS,OAAO,KAAK,GAAG;AAC5D,UAAM,KAAK,OAAO;AAClB,cAAU,QAAQ,IAAI,EAAE,OAAO,EAAE,CAAC;AAAA,EACpC;AAEA,SAAO;AACT;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/startOfDay.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport type { Timezone } from './types';\nimport { normalizeWithPlainDate } from './shared/normalizeWithPlainDate';\n\n/**\n * Returns a ZonedDateTime representing the first moment of the day (midnight).\n *\n * @param input - A Temporal.Instant (UTC) or Temporal.ZonedDateTime\n * @returns ZonedDateTime at 00:00:00.000000000\n *\n * @example\n * ```ts\n * // From Instant (always UTC)\n * const instant = Temporal.Instant.from('2025-01-20T12:00:00Z');\n * const start = startOfDay(instant);\n * // 2025-01-20T00:00:00Z[UTC]\n * ```\n *\n * @example\n * ```ts\n * // From ZonedDateTime (uses its timezone)\n * const zoned = Temporal.ZonedDateTime.from('2025-01-20T15:30:00-05:00[America/New_York]');\n * const start = startOfDay(zoned);\n * // 2025-01-20T00:00:00-05:00[America/New_York]\n * ```\n *\n * @example\n * ```ts\n * // From PlainDate (requires timezone)\n * const date = Temporal.PlainDate.from('2025-01-20');\n * const start = startOfDay(date, 'America/New_York');\n * // 2025-01-20T00:00:00-05:00[America/New_York]\n * ```\n */\nexport function startOfDay(\n input: Temporal.Instant | Temporal.ZonedDateTime\n): Temporal.ZonedDateTime;\nexport function startOfDay(\n input: Temporal.PlainDate,\n timezone: Timezone\n): Temporal.ZonedDateTime;\nexport function startOfDay(\n input: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate,\n timezone?: Timezone\n): Temporal.ZonedDateTime {\n const zonedDateTime = normalizeWithPlainDate(input, timezone!);\n return zonedDateTime.startOfDay();\n}\n"],"mappings":";;;;;AAAA,OAAyB;AAyClB,SAAS,WACd,OACA,UACwB;AACxB,QAAM,gBAAgB,uBAAuB,OAAO,QAAS;AAC7D,SAAO,cAAc,WAAW;AAClC;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/simpleFormat.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport type { Timezone } from './types';\n\ninterface BaseOptions {\n locale?: string;\n timeZone?: Timezone;\n}\n\ninterface DateOnlyOptions extends BaseOptions {\n date: 'compact' | 'auto' | 'full';\n time?: never;\n}\n\ninterface TimeOnlyOptions extends BaseOptions {\n date?: never;\n time: '12h' | '24h' | 'compact';\n}\n\ninterface DateAndTimeOptions extends BaseOptions {\n date: 'compact' | 'auto' | 'full';\n time: '12h' | '24h' | 'compact';\n}\n\nexport type SimpleFormatOptions = DateOnlyOptions | TimeOnlyOptions | DateAndTimeOptions;\n\n/**\n * Format a Temporal date/time in a human-friendly way.\n *\n * Pass `date`, `time`, or both to control what's displayed.\n * At least one of `date` or `time` is required.\n *\n * @param input - A Temporal.Instant, ZonedDateTime, or PlainDate\n * @param options - Format options (at least `date` or `time` required)\n *\n * Date formats:\n * - `'compact'` - \"Dec 23\" (never shows year)\n * - `'auto'` - \"Dec 23\" or \"Dec 23, 2020\" (shows year only if not current year)\n * - `'full'` - \"Dec 23, 2026\" (always shows year)\n *\n * Time formats:\n * - `'12h'` - \"3:30 PM\"\n * - `'24h'` - \"15:30\"\n * - `'compact'` - \"9am\" or \"2:30pm\" (omits minutes when zero, lowercase am/pm)\n *\n * @example\n * ```typescript\n * const zdt = Temporal.ZonedDateTime.from(\"2026-12-23T09:00:00[America/New_York]\");\n * const pastZdt = Temporal.ZonedDateTime.from(\"2020-12-23T14:30:00[America/New_York]\");\n *\n * // Date only\n * simpleFormat(zdt, { date: 'compact' }); // \"Dec 23\"\n * simpleFormat(zdt, { date: 'auto' }); // \"Dec 23\"\n * simpleFormat(pastZdt, { date: 'auto' }); // \"Dec 23, 2020\"\n * simpleFormat(zdt, { date: 'full' }); // \"Dec 23, 2026\"\n *\n * // Time only\n * simpleFormat(zdt, { time: 'compact' }); // \"9am\"\n * simpleFormat(pastZdt, { time: 'compact' }); // \"2:30pm\"\n * simpleFormat(zdt, { time: '12h' }); // \"9:00 AM\"\n * simpleFormat(zdt, { time: '24h' }); // \"09:00\"\n *\n * // Date and time\n * simpleFormat(zdt, { date: 'auto', time: 'compact' }); // \"Dec 23, 9am\"\n * simpleFormat(zdt, { date: 'full', time: '12h' }); // \"Dec 23, 2026, 9:00 AM\"\n *\n * // With Instant (timeZone required)\n * const instant = Temporal.Instant.from(\"2026-12-23T14:00:00Z\");\n * simpleFormat(instant, { date: 'auto', timeZone: 'America/New_York' }); // \"Dec 23\"\n * ```\n */\nexport function simpleFormat(\n input: Temporal.PlainDate | Temporal.ZonedDateTime | Temporal.Instant,\n options: SimpleFormatOptions\n): string {\n const { locale = 'en-US', timeZone } = options;\n const dateFormat = 'date' in options ? options.date : undefined;\n const timeFormat = 'time' in options ? options.time : undefined;\n\n // Convert input to ZonedDateTime for consistent handling\n let zdt: Temporal.ZonedDateTime;\n\n if (input instanceof Temporal.Instant) {\n const tz = timeZone ?? 'UTC';\n zdt = input.toZonedDateTimeISO(tz);\n } else if (input instanceof Temporal.ZonedDateTime) {\n if (timeZone) {\n zdt = input.toInstant().toZonedDateTimeISO(timeZone);\n } else {\n zdt = input;\n }\n } else {\n // PlainDate - convert to ZonedDateTime at midnight UTC for formatting\n zdt = input.toZonedDateTime({ timeZone: timeZone ?? 'UTC', plainTime: new Temporal.PlainTime() });\n }\n\n const parts: string[] = [];\n\n // Format date part\n if (dateFormat) {\n const currentYear = Temporal.Now.plainDateISO().year;\n const showYear =\n dateFormat === 'full' ? true : dateFormat === 'compact' ? false : zdt.year !== currentYear;\n\n const dateOptions: Intl.DateTimeFormatOptions = {\n day: 'numeric',\n month: 'short',\n year: showYear ? 'numeric' : undefined,\n };\n\n parts.push(zdt.toLocaleString(locale, dateOptions));\n }\n\n // Format time part\n if (timeFormat) {\n if (timeFormat === 'compact') {\n parts.push(formatCompactTime(zdt));\n } else {\n const timeOptions: Intl.DateTimeFormatOptions = {\n hour: 'numeric',\n minute: '2-digit',\n hour12: timeFormat === '12h',\n };\n parts.push(zdt.toLocaleString(locale, timeOptions));\n }\n }\n\n return parts.join(', ');\n}\n\n/**\n * Format time in compact style: \"9am\" or \"2:30pm\"\n * Omits minutes when they're zero for cleaner display.\n */\nfunction formatCompactTime(zdt: Temporal.ZonedDateTime): string {\n const hour12 = zdt.hour % 12 || 12;\n const ampm = zdt.hour < 12 ? 'am' : 'pm';\n\n if (zdt.minute === 0) {\n return `${hour12}${ampm}`;\n }\n return `${hour12}:${zdt.minute.toString().padStart(2, '0')}${ampm}`;\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AAsElB,SAAS,aACd,OACA,SACQ;AACR,QAAM,EAAE,SAAS,SAAS,SAAS,IAAI;AACvC,QAAM,aAAa,UAAU,UAAU,QAAQ,OAAO;AACtD,QAAM,aAAa,UAAU,UAAU,QAAQ,OAAO;AAGtD,MAAI;AAEJ,MAAI,iBAAiB,SAAS,SAAS;AACrC,UAAM,KAAK,YAAY;AACvB,UAAM,MAAM,mBAAmB,EAAE;AAAA,EACnC,WAAW,iBAAiB,SAAS,eAAe;AAClD,QAAI,UAAU;AACZ,YAAM,MAAM,UAAU,EAAE,mBAAmB,QAAQ;AAAA,IACrD,OAAO;AACL,YAAM;AAAA,IACR;AAAA,EACF,OAAO;AAEL,UAAM,MAAM,gBAAgB,EAAE,UAAU,YAAY,OAAO,WAAW,IAAI,SAAS,UAAU,EAAE,CAAC;AAAA,EAClG;AAEA,QAAM,QAAkB,CAAC;AAGzB,MAAI,YAAY;AACd,UAAM,cAAc,SAAS,IAAI,aAAa,EAAE;AAChD,UAAM,WACJ,eAAe,SAAS,OAAO,eAAe,YAAY,QAAQ,IAAI,SAAS;AAEjF,UAAM,cAA0C;AAAA,MAC9C,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM,WAAW,YAAY;AAAA,IAC/B;AAEA,UAAM,KAAK,IAAI,eAAe,QAAQ,WAAW,CAAC;AAAA,EACpD;AAGA,MAAI,YAAY;AACd,QAAI,eAAe,WAAW;AAC5B,YAAM,KAAK,kBAAkB,GAAG,CAAC;AAAA,IACnC,OAAO;AACL,YAAM,cAA0C;AAAA,QAC9C,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ,eAAe;AAAA,MACzB;AACA,YAAM,KAAK,IAAI,eAAe,QAAQ,WAAW,CAAC;AAAA,IACpD;AAAA,EACF;AAEA,SAAO,MAAM,KAAK,IAAI;AACxB;AAMA,SAAS,kBAAkB,KAAqC;AAC9D,QAAM,SAAS,IAAI,OAAO,MAAM;AAChC,QAAM,OAAO,IAAI,OAAO,KAAK,OAAO;AAEpC,MAAI,IAAI,WAAW,GAAG;AACpB,WAAO,GAAG,MAAM,GAAG,IAAI;AAAA,EACzB;AACA,SAAO,GAAG,MAAM,IAAI,IAAI,OAAO,SAAS,EAAE,SAAS,GAAG,GAAG,CAAC,GAAG,IAAI;AACnE;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/format.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\nimport type { Timezone } from './types';\n\nexport interface FormatOptions {\n locale?: string;\n timeZone?: Timezone;\n}\n\n/**\n * Format a Temporal.Instant or ZonedDateTime using date-fns-like format tokens.\n * Uses Intl.DateTimeFormat under the hood via Temporal's toLocaleString() for zero dependencies.\n *\n * @param input - A Temporal.Instant or Temporal.ZonedDateTime to format\n * @param formatStr - Format string using date-fns tokens (e.g., \"yyyy-MM-dd HH:mm:ss\")\n * @param options - Optional configuration for locale and timezone\n * @returns Formatted date string\n *\n * @example\n * ```typescript\n * const zoned = Temporal.ZonedDateTime.from(\"2025-01-20T15:00:00-05:00[America/New_York]\");\n *\n * format(zoned, \"yyyy-MM-dd\"); // \"2025-01-20\"\n * format(zoned, \"MMMM d, yyyy\"); // \"January 20, 2025\"\n * format(zoned, \"h:mm a\"); // \"3:00 PM\"\n * format(zoned, \"EEEE, MMMM do, yyyy 'at' h:mm a\"); // \"Monday, January 20th, 2025 at 3:00 PM\"\n *\n * // With locale\n * format(zoned, \"MMMM d, yyyy\", { locale: \"es-ES\" }); // \"enero 20, 2025\"\n * ```\n */\nexport function format(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n formatStr: string,\n options: FormatOptions = {}\n): string {\n const { locale = 'en-US', timeZone } = options;\n\n // Convert to ZonedDateTime, applying custom timezone if provided\n let zonedDateTime: Temporal.ZonedDateTime;\n if (timeZone) {\n // If custom timezone specified, convert via Instant\n const instant = input instanceof Temporal.Instant ? input : input.toInstant();\n zonedDateTime = instant.toZonedDateTimeISO(timeZone);\n } else {\n // No custom timezone: normalize to ZonedDateTime (Instant -> UTC, ZonedDateTime -> keep as-is)\n zonedDateTime = normalizeTemporalInput(input);\n }\n\n let result = '';\n let i = 0;\n const len = formatStr.length;\n\n while (i < len) {\n const char = formatStr[i];\n if (!char) break;\n\n // Handle escaped text\n if (char === \"'\") {\n // Check for double single quote (not inside a string, just '')\n if (i + 1 < len && formatStr[i + 1] === \"'\") {\n result += \"'\";\n i += 2;\n continue;\n }\n // Find closing quote, handling '' inside the string\n i++;\n while (i < len) {\n if (formatStr[i] === \"'\") {\n // Check if it's a doubled quote ''\n if (i + 1 < len && formatStr[i + 1] === \"'\") {\n result += \"'\";\n i += 2;\n } else {\n // End of quoted string\n i++;\n break;\n }\n } else {\n result += formatStr[i];\n i++;\n }\n }\n continue;\n }\n\n // Check for tokens by looking ahead\n const token = consumeToken(formatStr, i, char);\n if (token !== null) {\n result += formatToken(token, zonedDateTime, locale);\n i += token.length;\n } else {\n result += char;\n i++;\n }\n }\n\n return result;\n}\n\nfunction consumeToken(formatStr: string, start: number, char: string): string | null {\n // Special case for 'Mo' and 'do' - these end with 'o'\n if (char === 'M' && start + 1 < formatStr.length && formatStr[start + 1] === 'o') {\n return 'Mo';\n }\n if (char === 'd' && start + 1 < formatStr.length && formatStr[start + 1] === 'o') {\n return 'do';\n }\n\n // Count how many consecutive identical characters\n let end = start;\n while (end < formatStr.length && formatStr[end] === char) {\n end++;\n }\n const count = end - start;\n\n // Check if this is a valid token pattern\n const validTokens = [\n 'GGGGG',\n 'GGGG',\n 'GGG',\n 'GG',\n 'G',\n 'yyyy',\n 'yyy',\n 'yy',\n 'y',\n 'QQQQQ',\n 'QQQQ',\n 'QQQ',\n 'QQ',\n 'Q',\n 'MMMMM',\n 'MMMM',\n 'MMM',\n 'MM',\n 'M',\n 'dd',\n 'd',\n 'EEEEEE',\n 'EEEEE',\n 'EEEE',\n 'EEE',\n 'EE',\n 'E',\n 'aaaaa',\n 'aaaa',\n 'aaa',\n 'aa',\n 'a',\n 'HH',\n 'H',\n 'hh',\n 'h',\n 'mm',\n 'm',\n 'ss',\n 's',\n 'SSS',\n 'SS',\n 'S',\n 'XXXXX',\n 'XXXX',\n 'XXX',\n 'XX',\n 'X',\n 'xxxxx',\n 'xxxx',\n 'xxx',\n 'xx',\n 'x',\n 'zzzz',\n 'zzz',\n 'zz',\n 'z',\n 'T',\n 't',\n ];\n\n // Try to match from longest to shortest\n for (let len = Math.min(count, 6); len > 0; len--) {\n const candidate = char.repeat(len);\n if (validTokens.includes(candidate)) {\n return candidate;\n }\n }\n\n return null;\n}\n\nfunction formatToken(token: string, zonedDateTime: Temporal.ZonedDateTime, locale: string): string {\n switch (token) {\n // Era\n case 'GGGGG':\n return formatPart(zonedDateTime, 'era', 'narrow', locale);\n case 'GGGG':\n return formatPart(zonedDateTime, 'era', 'long', locale);\n case 'GGG':\n case 'GG':\n case 'G':\n return formatPart(zonedDateTime, 'era', 'short', locale);\n\n // Year\n case 'yyyy':\n return zonedDateTime.year.toString().padStart(4, '0');\n case 'yyy':\n return zonedDateTime.year.toString().padStart(3, '0');\n case 'yy':\n return (zonedDateTime.year % 100).toString().padStart(2, '0');\n case 'y':\n return zonedDateTime.year.toString();\n\n // Quarter\n case 'QQQQQ':\n return Math.ceil(zonedDateTime.month / 3).toString();\n case 'QQQQ': {\n const quarter = Math.ceil(zonedDateTime.month / 3);\n return `${quarter}${getOrdinalSuffix(quarter)} quarter`;\n }\n case 'QQQ':\n return `Q${Math.ceil(zonedDateTime.month / 3)}`;\n case 'QQ':\n return Math.ceil(zonedDateTime.month / 3)\n .toString()\n .padStart(2, '0');\n case 'Q':\n return Math.ceil(zonedDateTime.month / 3).toString();\n\n // Month\n case 'MMMMM':\n return formatPart(zonedDateTime, 'month', 'narrow', locale);\n case 'MMMM':\n return formatPart(zonedDateTime, 'month', 'long', locale);\n case 'MMM':\n return formatPart(zonedDateTime, 'month', 'short', locale);\n case 'MM':\n return zonedDateTime.month.toString().padStart(2, '0');\n case 'Mo':\n return `${zonedDateTime.month}${getOrdinalSuffix(zonedDateTime.month)}`;\n case 'M':\n return zonedDateTime.month.toString();\n\n // Day of month\n case 'do':\n return `${zonedDateTime.day}${getOrdinalSuffix(zonedDateTime.day)}`;\n case 'dd':\n return zonedDateTime.day.toString().padStart(2, '0');\n case 'd':\n return zonedDateTime.day.toString();\n\n // Day of week\n case 'EEEEEE':\n return formatPart(zonedDateTime, 'weekday', 'short', locale).slice(0, 2);\n case 'EEEEE':\n return formatPart(zonedDateTime, 'weekday', 'narrow', locale);\n case 'EEEE':\n return formatPart(zonedDateTime, 'weekday', 'long', locale);\n case 'EEE':\n case 'EE':\n case 'E':\n return formatPart(zonedDateTime, 'weekday', 'short', locale);\n\n // AM/PM\n case 'aaaaa': {\n const period = formatPart(zonedDateTime, 'dayPeriod', 'narrow', locale).toLowerCase();\n return period.charAt(0);\n }\n case 'aaaa': {\n const period = formatPart(zonedDateTime, 'dayPeriod', 'short', locale);\n return period === 'AM' ? 'a.m.' : 'p.m.';\n }\n case 'aaa':\n return formatPart(zonedDateTime, 'dayPeriod', 'short', locale).toLowerCase();\n case 'aa':\n case 'a':\n return formatPart(zonedDateTime, 'dayPeriod', 'short', locale);\n\n // Hour [0-23]\n case 'HH':\n return zonedDateTime.hour.toString().padStart(2, '0');\n case 'H':\n return zonedDateTime.hour.toString();\n\n // Hour [1-12]\n case 'hh': {\n const hour12 = zonedDateTime.hour % 12 || 12;\n return hour12.toString().padStart(2, '0');\n }\n case 'h': {\n const hour12 = zonedDateTime.hour % 12 || 12;\n return hour12.toString();\n }\n\n // Minute\n case 'mm':\n return zonedDateTime.minute.toString().padStart(2, '0');\n case 'm':\n return zonedDateTime.minute.toString();\n\n // Second\n case 'ss':\n return zonedDateTime.second.toString().padStart(2, '0');\n case 's':\n return zonedDateTime.second.toString();\n\n // Fractional seconds\n case 'SSS':\n return zonedDateTime.millisecond.toString().padStart(3, '0');\n case 'SS':\n return Math.floor(zonedDateTime.millisecond / 10)\n .toString()\n .padStart(2, '0');\n case 'S':\n return Math.floor(zonedDateTime.millisecond / 100).toString();\n\n // Timezone\n case 'XXXXX': {\n const offset = getTimezoneOffset(zonedDateTime);\n return offset === '+00:00' ? 'Z' : offset;\n }\n case 'XXXX': {\n const offset = getTimezoneOffset(zonedDateTime).replace(':', '');\n return offset === '+0000' ? 'Z' : offset;\n }\n case 'XXX': {\n const offset = getTimezoneOffset(zonedDateTime);\n return offset === '+00:00' ? 'Z' : offset;\n }\n case 'XX': {\n const offset = getTimezoneOffset(zonedDateTime).replace(':', '');\n return offset === '+0000' ? 'Z' : offset;\n }\n case 'X': {\n const offset = getTimezoneOffset(zonedDateTime);\n if (offset === '+00:00') return 'Z';\n const [hours] = offset.split(':');\n return hours || '+00';\n }\n case 'xxxxx':\n return getTimezoneOffset(zonedDateTime);\n case 'xxxx':\n return getTimezoneOffset(zonedDateTime).replace(':', '');\n case 'xxx':\n return getTimezoneOffset(zonedDateTime);\n case 'xx':\n return getTimezoneOffset(zonedDateTime).replace(':', '');\n case 'x': {\n const offset = getTimezoneOffset(zonedDateTime);\n const [hours] = offset.split(':');\n return hours || '+00';\n }\n case 'zzzz':\n return formatPart(zonedDateTime, 'timeZoneName', 'long', locale);\n case 'zzz':\n case 'zz':\n case 'z':\n return formatPart(zonedDateTime, 'timeZoneName', 'short', locale);\n\n // Timestamps\n case 'T':\n return zonedDateTime.epochMilliseconds.toString();\n case 't':\n return Math.floor(zonedDateTime.epochMilliseconds / 1000).toString();\n\n default:\n return token;\n }\n}\n\nfunction formatPart(\n zonedDateTime: Temporal.ZonedDateTime,\n part: 'era' | 'year' | 'month' | 'weekday' | 'day' | 'dayPeriod' | 'hour' | 'minute' | 'second' | 'timeZoneName',\n style: 'narrow' | 'short' | 'long' | 'numeric' | '2-digit',\n locale: string\n): string {\n const options: Intl.DateTimeFormatOptions = {};\n\n if (part === 'dayPeriod') {\n // dayPeriod needs hour to be present\n options.hour = 'numeric';\n options.hour12 = true;\n } else {\n options[part] = style as any;\n }\n\n const formatted = zonedDateTime.toLocaleString(locale, options);\n\n if (part === 'dayPeriod') {\n // Extract just the AM/PM part\n const match = formatted.match(/\\b(AM|PM|am|pm|a\\.m\\.|p\\.m\\.)\\b/);\n return match ? match[0] : formatted.split(' ').pop() || '';\n }\n\n return formatted;\n}\n\nfunction getOrdinalSuffix(num: number): string {\n const j = num % 10;\n const k = num % 100;\n if (j === 1 && k !== 11) return 'st';\n if (j === 2 && k !== 12) return 'nd';\n if (j === 3 && k !== 13) return 'rd';\n return 'th';\n}\n\nfunction getTimezoneOffset(zonedDateTime: Temporal.ZonedDateTime): string {\n const offsetNs = zonedDateTime.offsetNanoseconds;\n const offsetMinutes = offsetNs / (60 * 1e9);\n const sign = offsetMinutes >= 0 ? '+' : '-';\n const absMinutes = Math.abs(offsetMinutes);\n const hours = Math.floor(absMinutes / 60);\n const minutes = absMinutes % 60;\n return `${sign}${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/isBefore.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\nimport { isBefore as isBeforeInternal } from './shared/isBefore';\n\n/**\n * Returns true if the first datetime is before the second datetime.\n * Compares by the underlying instant (epoch time), not by calendar date/time.\n *\n * @param date1 - First datetime (Instant or ZonedDateTime)\n * @param date2 - Second datetime (Instant or ZonedDateTime)\n * @returns true if date1 is before date2, false otherwise\n *\n * @example\n * ```ts\n * const earlier = Temporal.ZonedDateTime.from('2025-01-20T10:00:00-05:00[America/New_York]');\n * const later = Temporal.ZonedDateTime.from('2025-01-20T16:00:00-05:00[America/New_York]');\n *\n * isBefore(earlier, later); // true\n * isBefore(later, earlier); // false\n * isBefore(earlier, earlier); // false\n * ```\n *\n * @example\n * ```ts\n * // Works with Instant too\n * const instant1 = Temporal.Instant.from('2025-01-20T15:00:00Z');\n * const instant2 = Temporal.Instant.from('2025-01-20T16:00:00Z');\n *\n * isBefore(instant1, instant2); // true\n * ```\n *\n * @example\n * ```ts\n * // Different timezones - compares by instant\n * const ny = Temporal.ZonedDateTime.from('2025-01-20T10:00:00-05:00[America/New_York]');\n * const tokyo = Temporal.ZonedDateTime.from('2025-01-21T00:00:00+09:00[Asia/Tokyo]');\n *\n * isBefore(ny, tokyo); // true\n * // NY 10:00 is 15:00 UTC, Tokyo 00:00 is 15:00 UTC the previous day\n * ```\n */\nexport function isBefore(\n date1: Temporal.Instant | Temporal.ZonedDateTime,\n date2: Temporal.Instant | Temporal.ZonedDateTime\n): boolean {\n const zoned1 = normalizeTemporalInput(date1);\n const zoned2 = normalizeTemporalInput(date2);\n\n return isBeforeInternal(zoned1, zoned2);\n}\n"],"mappings":";;;;;;;;AAAA,OAAyB;AAyClB,SAASA,UACd,OACA,OACS;AACT,QAAM,SAAS,uBAAuB,KAAK;AAC3C,QAAM,SAAS,uBAAuB,KAAK;AAE3C,SAAO,SAAiB,QAAQ,MAAM;AACxC;","names":["isBefore"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/differenceInMicroseconds.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Returns the number of microseconds between two datetimes.\n * The result is positive if laterDate is after earlierDate, negative if before.\n *\n * @param laterDate - The later datetime (Instant or ZonedDateTime)\n * @param earlierDate - The earlier datetime (Instant or ZonedDateTime)\n * @returns The number of microseconds between the dates\n *\n * @example\n * ```ts\n * const later = Temporal.Instant.from('2025-01-20T12:30:20.001000Z');\n * const earlier = Temporal.Instant.from('2025-01-20T12:30:20.000000Z');\n *\n * differenceInMicroseconds(later, earlier); // 1000\n * ```\n *\n * @example\n * ```ts\n * // Works with ZonedDateTime\n * const later = Temporal.ZonedDateTime.from('2025-01-20T15:00:00.000500-05:00[America/New_York]');\n * const earlier = Temporal.ZonedDateTime.from('2025-01-20T15:00:00.000000-05:00[America/New_York]');\n *\n * differenceInMicroseconds(later, earlier); // 500\n * ```\n *\n * @example\n * ```ts\n * // Handles different timezones - compares by instant\n * const tokyo = Temporal.ZonedDateTime.from('2025-01-21T00:00:00+09:00[Asia/Tokyo]');\n * const ny = Temporal.ZonedDateTime.from('2025-01-20T10:00:00-05:00[America/New_York]');\n *\n * differenceInMicroseconds(tokyo, ny); // 0 (same instant)\n * ```\n */\nexport function differenceInMicroseconds(\n laterDate: Temporal.Instant | Temporal.ZonedDateTime,\n earlierDate: Temporal.Instant | Temporal.ZonedDateTime\n): number {\n const zoned1 = normalizeTemporalInput(laterDate);\n const zoned2 = normalizeTemporalInput(earlierDate);\n\n const diffNanos = zoned1.epochNanoseconds - zoned2.epochNanoseconds;\n return Number(diffNanos / 1000n);\n}\n"],"mappings":";;;;;AAAA,OAAyB;AAqClB,SAAS,yBACd,WACA,aACQ;AACR,QAAM,SAAS,uBAAuB,SAAS;AAC/C,QAAM,SAAS,uBAAuB,WAAW;AAEjD,QAAM,YAAY,OAAO,mBAAmB,OAAO;AACnD,SAAO,OAAO,YAAY,KAAK;AACjC;","names":[]}