@gobrand/tiempo 3.1.3 → 3.2.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 (505) hide show
  1. package/dist/addBusinessDays.d.ts +14 -4
  2. package/dist/addBusinessDays.d.ts.map +1 -1
  3. package/dist/addBusinessDays.js +4 -4
  4. package/dist/addDays.js +3 -3
  5. package/dist/addHours.js +3 -3
  6. package/dist/addMicroseconds.js +3 -3
  7. package/dist/addMilliseconds.js +3 -3
  8. package/dist/addMinutes.js +3 -3
  9. package/dist/addMonths.js +3 -3
  10. package/dist/addNanoseconds.js +3 -3
  11. package/dist/addQuarters.d.ts +1 -1
  12. package/dist/addQuarters.js +3 -3
  13. package/dist/addSeconds.js +3 -3
  14. package/dist/addWeeks.js +3 -3
  15. package/dist/addYears.js +3 -3
  16. package/dist/areIntervalsOverlapping.d.ts +60 -0
  17. package/dist/areIntervalsOverlapping.d.ts.map +1 -0
  18. package/dist/areIntervalsOverlapping.js +9 -0
  19. package/dist/areIntervalsOverlapping.js.map +1 -0
  20. package/dist/{chunk-CN3OICYB.js → chunk-2LXWY2VY.js} +2 -2
  21. package/dist/{chunk-K3L6MJJB.js → chunk-2MWQYQ53.js} +2 -2
  22. package/dist/{chunk-LRIVI5ZC.js → chunk-34UWPATE.js} +2 -2
  23. package/dist/{chunk-QVSHSIA3.js → chunk-3OF6TFYK.js} +2 -2
  24. package/dist/{chunk-4KAIF44F.js → chunk-3YNUMQFB.js} +3 -3
  25. package/dist/{chunk-DZ3647ZK.js → chunk-4A3ORKMC.js} +3 -3
  26. package/dist/{chunk-Y24VUXMX.js → chunk-4JCRRIM3.js} +3 -3
  27. package/dist/{chunk-Y24VUXMX.js.map → chunk-4JCRRIM3.js.map} +1 -1
  28. package/dist/{chunk-IXNGK5OF.js → chunk-5EX3GTEU.js} +2 -2
  29. package/dist/{chunk-KTMCYEU5.js → chunk-5GRUOAYD.js} +2 -2
  30. package/dist/{chunk-KTMCYEU5.js.map → chunk-5GRUOAYD.js.map} +1 -1
  31. package/dist/{chunk-KZCSP3DU.js → chunk-5YKAVRED.js} +3 -3
  32. package/dist/{chunk-KYS54PLJ.js → chunk-6M654ZYJ.js} +3 -3
  33. package/dist/chunk-6M654ZYJ.js.map +1 -0
  34. package/dist/{chunk-DRBZDI52.js → chunk-6O66POF3.js} +2 -2
  35. package/dist/{chunk-U7VOIXLY.js → chunk-6SEPAWIA.js} +2 -2
  36. package/dist/{chunk-X27XGVCT.js → chunk-7DVEJNCP.js} +2 -2
  37. package/dist/{chunk-OF5YEVUT.js → chunk-7J7N4PCE.js} +2 -2
  38. package/dist/{chunk-OF5YEVUT.js.map → chunk-7J7N4PCE.js.map} +1 -1
  39. package/dist/chunk-7NHKDMBY.js +14 -0
  40. package/dist/chunk-7NHKDMBY.js.map +1 -0
  41. package/dist/{chunk-NMMMAMKP.js → chunk-7WGGUDW4.js} +1 -1
  42. package/dist/chunk-7WGGUDW4.js.map +1 -0
  43. package/dist/{chunk-DGUAV5XN.js → chunk-7ZJIEKIZ.js} +2 -2
  44. package/dist/chunk-7ZJIEKIZ.js.map +1 -0
  45. package/dist/{chunk-7IKCDOCT.js → chunk-AEAZ2F2T.js} +2 -2
  46. package/dist/{chunk-3HD7HEN4.js → chunk-APWSLQ47.js} +4 -4
  47. package/dist/{chunk-AOODDNHA.js → chunk-AWERPSJ5.js} +18 -16
  48. package/dist/chunk-AWERPSJ5.js.map +1 -0
  49. package/dist/{chunk-32AWWYBF.js → chunk-B7RDUXDN.js} +2 -2
  50. package/dist/{chunk-LQ3EQYIX.js → chunk-BE7CIKP7.js} +14 -6
  51. package/dist/chunk-BE7CIKP7.js.map +1 -0
  52. package/dist/{chunk-BI42E23Z.js → chunk-BM4OZR7U.js} +4 -4
  53. package/dist/{chunk-BI42E23Z.js.map → chunk-BM4OZR7U.js.map} +1 -1
  54. package/dist/{chunk-MXYAZTDE.js → chunk-C4LUGHIM.js} +7 -7
  55. package/dist/chunk-C4LUGHIM.js.map +1 -0
  56. package/dist/{chunk-3S6TSXZ3.js → chunk-CCDDXIAC.js} +2 -2
  57. package/dist/{chunk-BMX7CIRD.js → chunk-CMOBOTVN.js} +1 -1
  58. package/dist/chunk-CMOBOTVN.js.map +1 -0
  59. package/dist/{chunk-7NGP7SAD.js → chunk-COQJXPPT.js} +5 -5
  60. package/dist/{chunk-7NGP7SAD.js.map → chunk-COQJXPPT.js.map} +1 -1
  61. package/dist/{chunk-SLH6TKGN.js → chunk-CX37IV4D.js} +3 -3
  62. package/dist/{chunk-HYSGJJUR.js → chunk-D2HKS2OM.js} +2 -2
  63. package/dist/{chunk-4GEF7B7W.js → chunk-D73HU7YA.js} +3 -3
  64. package/dist/{chunk-OMYVTYHI.js → chunk-DAWWOF5W.js} +2 -2
  65. package/dist/{chunk-6QZUAJVF.js → chunk-DCQCZCKG.js} +4 -4
  66. package/dist/{chunk-5WHGX2J3.js → chunk-DEVXW65H.js} +2 -2
  67. package/dist/chunk-DFVLLH5O.js +17 -0
  68. package/dist/chunk-DFVLLH5O.js.map +1 -0
  69. package/dist/{chunk-ZM32S3YU.js → chunk-DYDSR35L.js} +2 -2
  70. package/dist/{chunk-ZM32S3YU.js.map → chunk-DYDSR35L.js.map} +1 -1
  71. package/dist/{chunk-QNZJR53W.js → chunk-DZFUKW5U.js} +4 -4
  72. package/dist/{chunk-QNZJR53W.js.map → chunk-DZFUKW5U.js.map} +1 -1
  73. package/dist/{chunk-F3UZDWOQ.js → chunk-EMJXV6KH.js} +2 -2
  74. package/dist/{chunk-F3UZDWOQ.js.map → chunk-EMJXV6KH.js.map} +1 -1
  75. package/dist/chunk-EMLUESE5.js +33 -0
  76. package/dist/chunk-EMLUESE5.js.map +1 -0
  77. package/dist/{chunk-QDY2KMYX.js → chunk-EQ3AZDKF.js} +3 -3
  78. package/dist/chunk-EQ3AZDKF.js.map +1 -0
  79. package/dist/{chunk-GQXJICRA.js → chunk-EWRNJC27.js} +2 -2
  80. package/dist/{chunk-TD6MVGV2.js → chunk-EYTJNGGV.js} +2 -2
  81. package/dist/{chunk-HCVE7FSF.js → chunk-FS7VH6AY.js} +2 -2
  82. package/dist/{chunk-HCVE7FSF.js.map → chunk-FS7VH6AY.js.map} +1 -1
  83. package/dist/{chunk-IWVSM77B.js → chunk-FTXHKXCS.js} +2 -2
  84. package/dist/{chunk-WTLMIOKZ.js → chunk-G7X7NHPV.js} +6 -3
  85. package/dist/{chunk-WTLMIOKZ.js.map → chunk-G7X7NHPV.js.map} +1 -1
  86. package/dist/{chunk-3HF4F36S.js → chunk-GLKCUJIZ.js} +3 -3
  87. package/dist/{chunk-GXSVYUCG.js → chunk-GZKKAIXF.js} +2 -2
  88. package/dist/{chunk-CDKIT7D3.js → chunk-H5TI3O4P.js} +1 -1
  89. package/dist/chunk-H5TI3O4P.js.map +1 -0
  90. package/dist/chunk-HH2HTC44.js +87 -0
  91. package/dist/chunk-HH2HTC44.js.map +1 -0
  92. package/dist/{chunk-TU3LNQKW.js → chunk-HMPHUFC6.js} +3 -3
  93. package/dist/{chunk-4VWUTQKP.js → chunk-HQ7JUUWD.js} +9 -5
  94. package/dist/chunk-HQ7JUUWD.js.map +1 -0
  95. package/dist/chunk-HXB6CDB4.js +26 -0
  96. package/dist/chunk-HXB6CDB4.js.map +1 -0
  97. package/dist/{chunk-SHKSAHJO.js → chunk-IOHTFQCP.js} +2 -2
  98. package/dist/chunk-IXRFVP3X.js +14 -0
  99. package/dist/chunk-IXRFVP3X.js.map +1 -0
  100. package/dist/{chunk-XSHFR2SX.js → chunk-IZPKAMAP.js} +2 -2
  101. package/dist/{chunk-3XGUCQ2A.js → chunk-JBGAF2FW.js} +2 -2
  102. package/dist/chunk-JDKM6JTT.js +20 -0
  103. package/dist/chunk-JDKM6JTT.js.map +1 -0
  104. package/dist/{chunk-ADPVFELS.js → chunk-K6IGDI5W.js} +2 -2
  105. package/dist/{chunk-ADPVFELS.js.map → chunk-K6IGDI5W.js.map} +1 -1
  106. package/dist/{chunk-AUOZACFS.js → chunk-KISBF5GX.js} +2 -2
  107. package/dist/{chunk-67XABEBT.js → chunk-KUDGVLQT.js} +11 -6
  108. package/dist/{chunk-67XABEBT.js.map → chunk-KUDGVLQT.js.map} +1 -1
  109. package/dist/{chunk-ZXKU4SKR.js → chunk-L535UIYN.js} +3 -3
  110. package/dist/{chunk-TIZJRCAA.js → chunk-L7X3FQZI.js} +2 -2
  111. package/dist/{chunk-TIZJRCAA.js.map → chunk-L7X3FQZI.js.map} +1 -1
  112. package/dist/{chunk-YMJHVVM4.js → chunk-LJMPJUHN.js} +2 -2
  113. package/dist/{chunk-NL5MQVGD.js → chunk-LKDENGBC.js} +2 -2
  114. package/dist/{chunk-A34P5Z5O.js → chunk-LL7XWZGU.js} +2 -2
  115. package/dist/chunk-LL7XWZGU.js.map +1 -0
  116. package/dist/{chunk-VDV24TWQ.js → chunk-LTYIPGQD.js} +2 -2
  117. package/dist/{chunk-JA5ER27P.js → chunk-LXAT3CDM.js} +2 -2
  118. package/dist/chunk-LXAT3CDM.js.map +1 -0
  119. package/dist/{chunk-MVGBYHG5.js → chunk-LY7IXVZO.js} +3 -3
  120. package/dist/{chunk-EBOLL4LY.js → chunk-M2QFNUJF.js} +2 -2
  121. package/dist/chunk-M2XB72L5.js +17 -0
  122. package/dist/chunk-M2XB72L5.js.map +1 -0
  123. package/dist/{chunk-BSVOJYJ7.js → chunk-M4ESIRFH.js} +1 -1
  124. package/dist/chunk-M4ESIRFH.js.map +1 -0
  125. package/dist/{chunk-RDMDCTHJ.js → chunk-MLD3VIOP.js} +2 -2
  126. package/dist/{chunk-BYPHFTFD.js → chunk-MPJ6UOLX.js} +7 -85
  127. package/dist/chunk-MPJ6UOLX.js.map +1 -0
  128. package/dist/{chunk-JGPTGV5X.js → chunk-MRJNMV4A.js} +3 -3
  129. package/dist/chunk-MYCH45BC.js +28 -0
  130. package/dist/chunk-MYCH45BC.js.map +1 -0
  131. package/dist/chunk-MZ26BHHP.js +21 -0
  132. package/dist/chunk-MZ26BHHP.js.map +1 -0
  133. package/dist/{chunk-EH4GVGXD.js → chunk-N5YFRFLA.js} +2 -2
  134. package/dist/{chunk-EH4GVGXD.js.map → chunk-N5YFRFLA.js.map} +1 -1
  135. package/dist/{chunk-NGS5UKDW.js → chunk-OJIV6AKO.js} +5 -5
  136. package/dist/chunk-OJIV6AKO.js.map +1 -0
  137. package/dist/{chunk-DBOIK3XA.js → chunk-ONTXMGEZ.js} +2 -2
  138. package/dist/{chunk-YKXRVQ4S.js → chunk-OURPZP7V.js} +2 -2
  139. package/dist/{chunk-MWUVGTKC.js → chunk-OZ5APQB7.js} +5 -5
  140. package/dist/{chunk-OOOVMKOG.js → chunk-PCYPESIN.js} +2 -2
  141. package/dist/{chunk-NZLRMN35.js → chunk-PENSGCVW.js} +2 -2
  142. package/dist/{chunk-6XEHR3MG.js → chunk-PI3QU5U5.js} +2 -2
  143. package/dist/{chunk-6XEHR3MG.js.map → chunk-PI3QU5U5.js.map} +1 -1
  144. package/dist/chunk-PJABNMRI.js +16 -0
  145. package/dist/chunk-PJABNMRI.js.map +1 -0
  146. package/dist/chunk-POCGMXLO.js +247 -0
  147. package/dist/chunk-POCGMXLO.js.map +1 -0
  148. package/dist/{chunk-VM2YJ5PN.js → chunk-PXKPP6C4.js} +2 -2
  149. package/dist/{chunk-HCORON7B.js → chunk-Q6MDBQRJ.js} +4 -4
  150. package/dist/{chunk-HCORON7B.js.map → chunk-Q6MDBQRJ.js.map} +1 -1
  151. package/dist/{chunk-TCB3IDJM.js → chunk-QCIY5PSJ.js} +4 -4
  152. package/dist/{chunk-LXOLIOAD.js → chunk-QF4M4T6G.js} +14 -6
  153. package/dist/{chunk-LXOLIOAD.js.map → chunk-QF4M4T6G.js.map} +1 -1
  154. package/dist/chunk-QFQHFBN4.js +61 -0
  155. package/dist/chunk-QFQHFBN4.js.map +1 -0
  156. package/dist/{chunk-ZW32E6EJ.js → chunk-QKIREPRK.js} +9 -9
  157. package/dist/{chunk-ZW32E6EJ.js.map → chunk-QKIREPRK.js.map} +1 -1
  158. package/dist/{chunk-LMOAA73F.js → chunk-QPE2V3MY.js} +3 -3
  159. package/dist/{chunk-2AID4P2C.js → chunk-R6CQ6XSS.js} +2 -2
  160. package/dist/{chunk-2AID4P2C.js.map → chunk-R6CQ6XSS.js.map} +1 -1
  161. package/dist/{chunk-6QH4NCPA.js → chunk-RCX6YW4I.js} +2 -2
  162. package/dist/{chunk-EAO2SO4N.js → chunk-RFUXK65B.js} +2 -2
  163. package/dist/chunk-RMVIA3NK.js +19 -0
  164. package/dist/chunk-RMVIA3NK.js.map +1 -0
  165. package/dist/chunk-S5CDK44R.js +22 -0
  166. package/dist/chunk-S5CDK44R.js.map +1 -0
  167. package/dist/{chunk-GU3CZAIN.js → chunk-SKHUBXIN.js} +2 -2
  168. package/dist/chunk-SURP2NUP.js +19 -0
  169. package/dist/chunk-SURP2NUP.js.map +1 -0
  170. package/dist/chunk-TH6YVPP4.js +21 -0
  171. package/dist/chunk-TH6YVPP4.js.map +1 -0
  172. package/dist/{chunk-V2NSN6ET.js → chunk-TP3VDQLF.js} +2 -2
  173. package/dist/{chunk-3X2U6I44.js → chunk-TZ4NUY3W.js} +3 -3
  174. package/dist/{chunk-6QOLNYFY.js → chunk-UB3F342R.js} +2 -2
  175. package/dist/chunk-UB3F342R.js.map +1 -0
  176. package/dist/{chunk-YSDLXJHE.js → chunk-UIOLC7XM.js} +2 -2
  177. package/dist/{chunk-PAM6VJQM.js → chunk-UP5M7NHW.js} +3 -3
  178. package/dist/chunk-UP5M7NHW.js.map +1 -0
  179. package/dist/chunk-UPWUAGEV.js +36 -0
  180. package/dist/chunk-UPWUAGEV.js.map +1 -0
  181. package/dist/{chunk-TI6WBLCB.js → chunk-UQ5GR6IX.js} +2 -2
  182. package/dist/{chunk-Q6QLOUXJ.js → chunk-UTM7YAT4.js} +2 -2
  183. package/dist/{chunk-HT6L4VRQ.js → chunk-UYHQBNQ4.js} +2 -2
  184. package/dist/{chunk-HT6L4VRQ.js.map → chunk-UYHQBNQ4.js.map} +1 -1
  185. package/dist/{chunk-R5XRTUWH.js → chunk-VQFWMNZO.js} +2 -2
  186. package/dist/{chunk-R2DCUSBY.js → chunk-WALS2M6Z.js} +2 -2
  187. package/dist/{chunk-K6NQZIAW.js → chunk-WTZ4LRQT.js} +2 -2
  188. package/dist/{chunk-3D4YR2SR.js → chunk-WVBZIXQP.js} +3 -3
  189. package/dist/{chunk-3D4YR2SR.js.map → chunk-WVBZIXQP.js.map} +1 -1
  190. package/dist/{chunk-525OLFRD.js → chunk-WWCLSC2B.js} +3 -3
  191. package/dist/chunk-WWCLSC2B.js.map +1 -0
  192. package/dist/chunk-X4ULMQ53.js +14 -0
  193. package/dist/chunk-X4ULMQ53.js.map +1 -0
  194. package/dist/{chunk-OEPVYNB6.js → chunk-XD4JKMGT.js} +2 -2
  195. package/dist/{chunk-OVBZ2NBB.js → chunk-XEAP4MXS.js} +11 -5
  196. package/dist/chunk-XEAP4MXS.js.map +1 -0
  197. package/dist/{chunk-BPMS34GV.js → chunk-XKS2HTEX.js} +3 -3
  198. package/dist/chunk-XKS2HTEX.js.map +1 -0
  199. package/dist/{chunk-TWXUGWYX.js → chunk-YN3Z5H5O.js} +1 -1
  200. package/dist/chunk-YN3Z5H5O.js.map +1 -0
  201. package/dist/{chunk-QZ6WXAUO.js → chunk-YPAI5UGF.js} +2 -2
  202. package/dist/{chunk-HRCTWTP3.js → chunk-YSUNJQBP.js} +3 -3
  203. package/dist/{chunk-NOWUJERX.js → chunk-Z7C5ZNPZ.js} +3 -3
  204. package/dist/{chunk-NOWUJERX.js.map → chunk-Z7C5ZNPZ.js.map} +1 -1
  205. package/dist/{chunk-QJYU5TLL.js → chunk-ZBNR46A5.js} +2 -2
  206. package/dist/{chunk-QJYU5TLL.js.map → chunk-ZBNR46A5.js.map} +1 -1
  207. package/dist/{chunk-JQ4Z4JTW.js → chunk-ZMAMJNWT.js} +2 -2
  208. package/dist/{chunk-NVFFQJEW.js → chunk-ZVAPV5JP.js} +4 -4
  209. package/dist/{chunk-NVFFQJEW.js.map → chunk-ZVAPV5JP.js.map} +1 -1
  210. package/dist/clamp.js +3 -3
  211. package/dist/closestTo.js +3 -3
  212. package/dist/compareAsc.js +3 -3
  213. package/dist/compareDesc.js +3 -3
  214. package/dist/differenceInBusinessDays.d.ts +7 -5
  215. package/dist/differenceInBusinessDays.d.ts.map +1 -1
  216. package/dist/differenceInBusinessDays.js +4 -4
  217. package/dist/differenceInCalendarDays.d.ts +35 -0
  218. package/dist/differenceInCalendarDays.d.ts.map +1 -0
  219. package/dist/differenceInCalendarDays.js +10 -0
  220. package/dist/differenceInCalendarDays.js.map +1 -0
  221. package/dist/differenceInCalendarMonths.d.ts +27 -0
  222. package/dist/differenceInCalendarMonths.d.ts.map +1 -0
  223. package/dist/differenceInCalendarMonths.js +10 -0
  224. package/dist/differenceInCalendarMonths.js.map +1 -0
  225. package/dist/differenceInCalendarQuarters.d.ts +26 -0
  226. package/dist/differenceInCalendarQuarters.d.ts.map +1 -0
  227. package/dist/differenceInCalendarQuarters.js +11 -0
  228. package/dist/differenceInCalendarQuarters.js.map +1 -0
  229. package/dist/differenceInCalendarWeeks.d.ts +29 -0
  230. package/dist/differenceInCalendarWeeks.d.ts.map +1 -0
  231. package/dist/differenceInCalendarWeeks.js +11 -0
  232. package/dist/differenceInCalendarWeeks.js.map +1 -0
  233. package/dist/differenceInCalendarYears.d.ts +27 -0
  234. package/dist/differenceInCalendarYears.d.ts.map +1 -0
  235. package/dist/differenceInCalendarYears.js +10 -0
  236. package/dist/differenceInCalendarYears.js.map +1 -0
  237. package/dist/differenceInDays.js +3 -3
  238. package/dist/differenceInHours.js +3 -3
  239. package/dist/differenceInMicroseconds.js +3 -3
  240. package/dist/differenceInMilliseconds.js +3 -3
  241. package/dist/differenceInMinutes.js +3 -3
  242. package/dist/differenceInMonths.js +3 -3
  243. package/dist/differenceInNanoseconds.js +3 -3
  244. package/dist/differenceInQuarters.d.ts +2 -2
  245. package/dist/differenceInQuarters.js +4 -4
  246. package/dist/differenceInSeconds.js +3 -3
  247. package/dist/differenceInWeeks.js +3 -3
  248. package/dist/differenceInYears.js +3 -3
  249. package/dist/eachDayOfInterval.js +4 -4
  250. package/dist/eachHourOfInterval.d.ts.map +1 -1
  251. package/dist/eachHourOfInterval.js +3 -3
  252. package/dist/eachMinuteOfInterval.js +3 -3
  253. package/dist/eachMonthOfInterval.js +5 -5
  254. package/dist/eachQuarterOfInterval.d.ts +1 -1
  255. package/dist/eachQuarterOfInterval.js +4 -4
  256. package/dist/eachWeekOfInterval.d.ts +7 -5
  257. package/dist/eachWeekOfInterval.d.ts.map +1 -1
  258. package/dist/eachWeekOfInterval.js +6 -5
  259. package/dist/eachYearOfInterval.js +5 -5
  260. package/dist/endOfDay.d.ts.map +1 -1
  261. package/dist/endOfDay.js +6 -6
  262. package/dist/endOfMonth.d.ts.map +1 -1
  263. package/dist/endOfMonth.js +6 -6
  264. package/dist/endOfQuarter.d.ts +2 -2
  265. package/dist/endOfQuarter.js +6 -6
  266. package/dist/endOfWeek.d.ts +17 -7
  267. package/dist/endOfWeek.d.ts.map +1 -1
  268. package/dist/endOfWeek.js +6 -5
  269. package/dist/endOfYear.d.ts.map +1 -1
  270. package/dist/endOfYear.js +6 -6
  271. package/dist/format.d.ts.map +1 -1
  272. package/dist/format.js +5 -4
  273. package/dist/formatPlainDate.js +2 -2
  274. package/dist/getQuarter.d.ts +1 -1
  275. package/dist/getQuarter.js +3 -3
  276. package/dist/index.d.ts +116 -106
  277. package/dist/index.d.ts.map +1 -1
  278. package/dist/index.js +191 -152
  279. package/dist/intlFormatDistance.js +10 -10
  280. package/dist/isAfter.js +3 -3
  281. package/dist/isBefore.js +3 -3
  282. package/dist/isEqual.js +3 -3
  283. package/dist/isFuture.d.ts.map +1 -1
  284. package/dist/isFuture.js +5 -5
  285. package/dist/isPast.d.ts.map +1 -1
  286. package/dist/isPast.js +5 -5
  287. package/dist/isPlainDateAfter.d.ts.map +1 -1
  288. package/dist/isPlainDateAfter.js +2 -2
  289. package/dist/isPlainDateBefore.d.ts.map +1 -1
  290. package/dist/isPlainDateBefore.js +2 -2
  291. package/dist/isPlainDateEqual.d.ts.map +1 -1
  292. package/dist/isPlainDateEqual.js +2 -2
  293. package/dist/isPlainTimeAfter.d.ts.map +1 -1
  294. package/dist/isPlainTimeAfter.js +2 -2
  295. package/dist/isPlainTimeBefore.d.ts.map +1 -1
  296. package/dist/isPlainTimeBefore.js +2 -2
  297. package/dist/isPlainTimeEqual.d.ts.map +1 -1
  298. package/dist/isPlainTimeEqual.js +2 -2
  299. package/dist/isSameDay.d.ts.map +1 -1
  300. package/dist/isSameDay.js +3 -3
  301. package/dist/isSameHour.js +3 -3
  302. package/dist/isSameMicrosecond.js +3 -3
  303. package/dist/isSameMillisecond.js +3 -3
  304. package/dist/isSameMinute.js +3 -3
  305. package/dist/isSameMonth.js +3 -3
  306. package/dist/isSameNanosecond.js +3 -3
  307. package/dist/isSameQuarter.d.ts +1 -1
  308. package/dist/isSameQuarter.js +3 -3
  309. package/dist/isSameSecond.js +3 -3
  310. package/dist/isSameWeek.d.ts +16 -7
  311. package/dist/isSameWeek.d.ts.map +1 -1
  312. package/dist/isSameWeek.js +4 -3
  313. package/dist/isSameYear.js +3 -3
  314. package/dist/isToday.js +6 -6
  315. package/dist/isTomorrow.js +6 -6
  316. package/dist/isWeekend.js +4 -4
  317. package/dist/isWithinInterval.d.ts +41 -6
  318. package/dist/isWithinInterval.d.ts.map +1 -1
  319. package/dist/isWithinInterval.js +6 -5
  320. package/dist/isYesterday.js +6 -6
  321. package/dist/max.js +3 -3
  322. package/dist/min.js +3 -3
  323. package/dist/nextDay.d.ts +33 -0
  324. package/dist/nextDay.d.ts.map +1 -0
  325. package/dist/nextDay.js +10 -0
  326. package/dist/nextDay.js.map +1 -0
  327. package/dist/now.js +2 -2
  328. package/dist/parse.d.ts +57 -0
  329. package/dist/parse.d.ts.map +1 -0
  330. package/dist/parse.js +9 -0
  331. package/dist/parse.js.map +1 -0
  332. package/dist/previousDay.d.ts +26 -0
  333. package/dist/previousDay.d.ts.map +1 -0
  334. package/dist/previousDay.js +10 -0
  335. package/dist/previousDay.js.map +1 -0
  336. package/dist/roundToNearestHour.js +3 -3
  337. package/dist/roundToNearestMinute.js +3 -3
  338. package/dist/roundToNearestSecond.js +3 -3
  339. package/dist/shared/businessDays.d.ts +15 -0
  340. package/dist/shared/businessDays.d.ts.map +1 -1
  341. package/dist/shared/businessDays.js +9 -5
  342. package/dist/shared/calendarDates.d.ts +9 -0
  343. package/dist/shared/calendarDates.d.ts.map +1 -0
  344. package/dist/shared/calendarDates.js +9 -0
  345. package/dist/shared/calendarDates.js.map +1 -0
  346. package/dist/shared/compare.js +2 -2
  347. package/dist/shared/differenceInMilliseconds.js +1 -1
  348. package/dist/shared/endOfDay.d.ts.map +1 -1
  349. package/dist/shared/endOfDay.js +1 -1
  350. package/dist/shared/formatTokens.d.ts +8 -0
  351. package/dist/shared/formatTokens.d.ts.map +1 -0
  352. package/dist/shared/formatTokens.js +7 -0
  353. package/dist/shared/formatTokens.js.map +1 -0
  354. package/dist/shared/isAfter.d.ts.map +1 -1
  355. package/dist/shared/isAfter.js +1 -1
  356. package/dist/shared/isBefore.d.ts.map +1 -1
  357. package/dist/shared/isBefore.js +1 -1
  358. package/dist/shared/normalizeTemporalInput.js +2 -2
  359. package/dist/shared/normalizeWithPlainDate.js +4 -4
  360. package/dist/shared/nowZoned.js +3 -3
  361. package/dist/shared/plainDateToZonedDateTime.js +2 -2
  362. package/dist/shared/relativeDay.js +5 -5
  363. package/dist/shared/temporal.d.ts +1 -1
  364. package/dist/shared/temporal.js +1 -1
  365. package/dist/shared/week.d.ts +26 -0
  366. package/dist/shared/week.d.ts.map +1 -0
  367. package/dist/shared/week.js +9 -0
  368. package/dist/shared/week.js.map +1 -0
  369. package/dist/simpleFormat.d.ts.map +1 -1
  370. package/dist/simpleFormat.js +2 -2
  371. package/dist/startOfDay.d.ts.map +1 -1
  372. package/dist/startOfDay.js +5 -5
  373. package/dist/startOfMonth.d.ts.map +1 -1
  374. package/dist/startOfMonth.js +5 -5
  375. package/dist/startOfQuarter.d.ts +2 -2
  376. package/dist/startOfQuarter.js +5 -5
  377. package/dist/startOfWeek.d.ts +17 -7
  378. package/dist/startOfWeek.d.ts.map +1 -1
  379. package/dist/startOfWeek.js +5 -4
  380. package/dist/startOfYear.d.ts.map +1 -1
  381. package/dist/startOfYear.js +5 -5
  382. package/dist/subBusinessDays.d.ts +6 -4
  383. package/dist/subBusinessDays.d.ts.map +1 -1
  384. package/dist/subBusinessDays.js +5 -5
  385. package/dist/subDays.js +4 -4
  386. package/dist/subHours.js +4 -4
  387. package/dist/subMicroseconds.js +4 -4
  388. package/dist/subMilliseconds.js +4 -4
  389. package/dist/subMinutes.js +4 -4
  390. package/dist/subMonths.js +4 -4
  391. package/dist/subNanoseconds.js +4 -4
  392. package/dist/subQuarters.d.ts +1 -1
  393. package/dist/subQuarters.js +4 -4
  394. package/dist/subSeconds.js +4 -4
  395. package/dist/subWeeks.js +4 -4
  396. package/dist/subYears.js +4 -4
  397. package/dist/toDate.d.ts.map +1 -1
  398. package/dist/toDate.js +2 -2
  399. package/dist/toInstant.js +2 -2
  400. package/dist/toIso.d.ts.map +1 -1
  401. package/dist/toIso.js +2 -2
  402. package/dist/toIso9075.d.ts.map +1 -1
  403. package/dist/toIso9075.js +2 -2
  404. package/dist/toPlainDate.js +2 -2
  405. package/dist/toPlainTime.js +2 -2
  406. package/dist/toZonedTime.js +2 -2
  407. package/dist/today.js +2 -2
  408. package/package.json +33 -26
  409. package/dist/chunk-2TISXHHK.js +0 -29
  410. package/dist/chunk-2TISXHHK.js.map +0 -1
  411. package/dist/chunk-4PS6BEAC.js +0 -16
  412. package/dist/chunk-4PS6BEAC.js.map +0 -1
  413. package/dist/chunk-4VWUTQKP.js.map +0 -1
  414. package/dist/chunk-525OLFRD.js.map +0 -1
  415. package/dist/chunk-57MHNRCU.js +0 -22
  416. package/dist/chunk-57MHNRCU.js.map +0 -1
  417. package/dist/chunk-6QOLNYFY.js.map +0 -1
  418. package/dist/chunk-A34P5Z5O.js.map +0 -1
  419. package/dist/chunk-AOODDNHA.js.map +0 -1
  420. package/dist/chunk-BMX7CIRD.js.map +0 -1
  421. package/dist/chunk-BPMS34GV.js.map +0 -1
  422. package/dist/chunk-BSVOJYJ7.js.map +0 -1
  423. package/dist/chunk-BYPHFTFD.js.map +0 -1
  424. package/dist/chunk-CDKIT7D3.js.map +0 -1
  425. package/dist/chunk-D3N7BT44.js +0 -22
  426. package/dist/chunk-D3N7BT44.js.map +0 -1
  427. package/dist/chunk-DGUAV5XN.js.map +0 -1
  428. package/dist/chunk-GCVX5QIX.js +0 -15
  429. package/dist/chunk-GCVX5QIX.js.map +0 -1
  430. package/dist/chunk-JA5ER27P.js.map +0 -1
  431. package/dist/chunk-K7CLBBBM.js +0 -36
  432. package/dist/chunk-K7CLBBBM.js.map +0 -1
  433. package/dist/chunk-KYS54PLJ.js.map +0 -1
  434. package/dist/chunk-LQ3EQYIX.js.map +0 -1
  435. package/dist/chunk-MLHFNZEA.js +0 -26
  436. package/dist/chunk-MLHFNZEA.js.map +0 -1
  437. package/dist/chunk-MXYAZTDE.js.map +0 -1
  438. package/dist/chunk-NGS5UKDW.js.map +0 -1
  439. package/dist/chunk-NMMMAMKP.js.map +0 -1
  440. package/dist/chunk-OVBZ2NBB.js.map +0 -1
  441. package/dist/chunk-PAM6VJQM.js.map +0 -1
  442. package/dist/chunk-QDY2KMYX.js.map +0 -1
  443. package/dist/chunk-TWXUGWYX.js.map +0 -1
  444. /package/dist/{chunk-CN3OICYB.js.map → chunk-2LXWY2VY.js.map} +0 -0
  445. /package/dist/{chunk-K3L6MJJB.js.map → chunk-2MWQYQ53.js.map} +0 -0
  446. /package/dist/{chunk-LRIVI5ZC.js.map → chunk-34UWPATE.js.map} +0 -0
  447. /package/dist/{chunk-QVSHSIA3.js.map → chunk-3OF6TFYK.js.map} +0 -0
  448. /package/dist/{chunk-4KAIF44F.js.map → chunk-3YNUMQFB.js.map} +0 -0
  449. /package/dist/{chunk-DZ3647ZK.js.map → chunk-4A3ORKMC.js.map} +0 -0
  450. /package/dist/{chunk-IXNGK5OF.js.map → chunk-5EX3GTEU.js.map} +0 -0
  451. /package/dist/{chunk-KZCSP3DU.js.map → chunk-5YKAVRED.js.map} +0 -0
  452. /package/dist/{chunk-DRBZDI52.js.map → chunk-6O66POF3.js.map} +0 -0
  453. /package/dist/{chunk-U7VOIXLY.js.map → chunk-6SEPAWIA.js.map} +0 -0
  454. /package/dist/{chunk-X27XGVCT.js.map → chunk-7DVEJNCP.js.map} +0 -0
  455. /package/dist/{chunk-7IKCDOCT.js.map → chunk-AEAZ2F2T.js.map} +0 -0
  456. /package/dist/{chunk-3HD7HEN4.js.map → chunk-APWSLQ47.js.map} +0 -0
  457. /package/dist/{chunk-32AWWYBF.js.map → chunk-B7RDUXDN.js.map} +0 -0
  458. /package/dist/{chunk-3S6TSXZ3.js.map → chunk-CCDDXIAC.js.map} +0 -0
  459. /package/dist/{chunk-SLH6TKGN.js.map → chunk-CX37IV4D.js.map} +0 -0
  460. /package/dist/{chunk-HYSGJJUR.js.map → chunk-D2HKS2OM.js.map} +0 -0
  461. /package/dist/{chunk-4GEF7B7W.js.map → chunk-D73HU7YA.js.map} +0 -0
  462. /package/dist/{chunk-OMYVTYHI.js.map → chunk-DAWWOF5W.js.map} +0 -0
  463. /package/dist/{chunk-6QZUAJVF.js.map → chunk-DCQCZCKG.js.map} +0 -0
  464. /package/dist/{chunk-5WHGX2J3.js.map → chunk-DEVXW65H.js.map} +0 -0
  465. /package/dist/{chunk-GQXJICRA.js.map → chunk-EWRNJC27.js.map} +0 -0
  466. /package/dist/{chunk-TD6MVGV2.js.map → chunk-EYTJNGGV.js.map} +0 -0
  467. /package/dist/{chunk-IWVSM77B.js.map → chunk-FTXHKXCS.js.map} +0 -0
  468. /package/dist/{chunk-3HF4F36S.js.map → chunk-GLKCUJIZ.js.map} +0 -0
  469. /package/dist/{chunk-GXSVYUCG.js.map → chunk-GZKKAIXF.js.map} +0 -0
  470. /package/dist/{chunk-TU3LNQKW.js.map → chunk-HMPHUFC6.js.map} +0 -0
  471. /package/dist/{chunk-SHKSAHJO.js.map → chunk-IOHTFQCP.js.map} +0 -0
  472. /package/dist/{chunk-XSHFR2SX.js.map → chunk-IZPKAMAP.js.map} +0 -0
  473. /package/dist/{chunk-3XGUCQ2A.js.map → chunk-JBGAF2FW.js.map} +0 -0
  474. /package/dist/{chunk-AUOZACFS.js.map → chunk-KISBF5GX.js.map} +0 -0
  475. /package/dist/{chunk-ZXKU4SKR.js.map → chunk-L535UIYN.js.map} +0 -0
  476. /package/dist/{chunk-YMJHVVM4.js.map → chunk-LJMPJUHN.js.map} +0 -0
  477. /package/dist/{chunk-NL5MQVGD.js.map → chunk-LKDENGBC.js.map} +0 -0
  478. /package/dist/{chunk-VDV24TWQ.js.map → chunk-LTYIPGQD.js.map} +0 -0
  479. /package/dist/{chunk-MVGBYHG5.js.map → chunk-LY7IXVZO.js.map} +0 -0
  480. /package/dist/{chunk-EBOLL4LY.js.map → chunk-M2QFNUJF.js.map} +0 -0
  481. /package/dist/{chunk-RDMDCTHJ.js.map → chunk-MLD3VIOP.js.map} +0 -0
  482. /package/dist/{chunk-JGPTGV5X.js.map → chunk-MRJNMV4A.js.map} +0 -0
  483. /package/dist/{chunk-DBOIK3XA.js.map → chunk-ONTXMGEZ.js.map} +0 -0
  484. /package/dist/{chunk-YKXRVQ4S.js.map → chunk-OURPZP7V.js.map} +0 -0
  485. /package/dist/{chunk-MWUVGTKC.js.map → chunk-OZ5APQB7.js.map} +0 -0
  486. /package/dist/{chunk-OOOVMKOG.js.map → chunk-PCYPESIN.js.map} +0 -0
  487. /package/dist/{chunk-NZLRMN35.js.map → chunk-PENSGCVW.js.map} +0 -0
  488. /package/dist/{chunk-VM2YJ5PN.js.map → chunk-PXKPP6C4.js.map} +0 -0
  489. /package/dist/{chunk-TCB3IDJM.js.map → chunk-QCIY5PSJ.js.map} +0 -0
  490. /package/dist/{chunk-LMOAA73F.js.map → chunk-QPE2V3MY.js.map} +0 -0
  491. /package/dist/{chunk-6QH4NCPA.js.map → chunk-RCX6YW4I.js.map} +0 -0
  492. /package/dist/{chunk-EAO2SO4N.js.map → chunk-RFUXK65B.js.map} +0 -0
  493. /package/dist/{chunk-GU3CZAIN.js.map → chunk-SKHUBXIN.js.map} +0 -0
  494. /package/dist/{chunk-V2NSN6ET.js.map → chunk-TP3VDQLF.js.map} +0 -0
  495. /package/dist/{chunk-3X2U6I44.js.map → chunk-TZ4NUY3W.js.map} +0 -0
  496. /package/dist/{chunk-YSDLXJHE.js.map → chunk-UIOLC7XM.js.map} +0 -0
  497. /package/dist/{chunk-TI6WBLCB.js.map → chunk-UQ5GR6IX.js.map} +0 -0
  498. /package/dist/{chunk-Q6QLOUXJ.js.map → chunk-UTM7YAT4.js.map} +0 -0
  499. /package/dist/{chunk-R5XRTUWH.js.map → chunk-VQFWMNZO.js.map} +0 -0
  500. /package/dist/{chunk-R2DCUSBY.js.map → chunk-WALS2M6Z.js.map} +0 -0
  501. /package/dist/{chunk-K6NQZIAW.js.map → chunk-WTZ4LRQT.js.map} +0 -0
  502. /package/dist/{chunk-OEPVYNB6.js.map → chunk-XD4JKMGT.js.map} +0 -0
  503. /package/dist/{chunk-QZ6WXAUO.js.map → chunk-YPAI5UGF.js.map} +0 -0
  504. /package/dist/{chunk-HRCTWTP3.js.map → chunk-YSUNJQBP.js.map} +0 -0
  505. /package/dist/{chunk-JQ4Z4JTW.js.map → chunk-ZMAMJNWT.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isDaysFromToday
3
- } from "./chunk-MWUVGTKC.js";
3
+ } from "./chunk-OZ5APQB7.js";
4
4
 
5
5
  // src/isToday.ts
6
6
  function isToday(date, timezone) {
@@ -10,4 +10,4 @@ function isToday(date, timezone) {
10
10
  export {
11
11
  isToday
12
12
  };
13
- //# sourceMappingURL=chunk-NZLRMN35.js.map
13
+ //# sourceMappingURL=chunk-PENSGCVW.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Temporal
3
- } from "./chunk-BSVOJYJ7.js";
3
+ } from "./chunk-M4ESIRFH.js";
4
4
 
5
5
  // src/isPlainTimeEqual.ts
6
6
  function isPlainTimeEqual(time1, time2) {
@@ -10,4 +10,4 @@ function isPlainTimeEqual(time1, time2) {
10
10
  export {
11
11
  isPlainTimeEqual
12
12
  };
13
- //# sourceMappingURL=chunk-6XEHR3MG.js.map
13
+ //# sourceMappingURL=chunk-PI3QU5U5.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/isPlainTimeEqual.ts"],"sourcesContent":["import { Temporal } from './shared/temporal';\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":";;;;;AAoBO,SAAS,iBACd,OACA,OACS;AACT,SAAO,SAAS,UAAU,QAAQ,OAAO,KAAK,MAAM;AACtD;","names":[]}
1
+ {"version":3,"sources":["../src/isPlainTimeEqual.ts"],"sourcesContent":["import { Temporal } from './shared/temporal';\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(time1: Temporal.PlainTime, time2: Temporal.PlainTime): boolean {\n return Temporal.PlainTime.compare(time1, time2) === 0;\n}\n"],"mappings":";;;;;AAoBO,SAAS,iBAAiB,OAA2B,OAAoC;AAC9F,SAAO,SAAS,UAAU,QAAQ,OAAO,KAAK,MAAM;AACtD;","names":[]}
@@ -0,0 +1,16 @@
1
+ import {
2
+ addBusinessDays
3
+ } from "./chunk-S5CDK44R.js";
4
+ import {
5
+ isPlainDate
6
+ } from "./chunk-M4ESIRFH.js";
7
+
8
+ // src/subBusinessDays.ts
9
+ function subBusinessDays(input, days, holidays) {
10
+ return isPlainDate(input) ? addBusinessDays(input, -days, holidays) : addBusinessDays(input, -days, holidays);
11
+ }
12
+
13
+ export {
14
+ subBusinessDays
15
+ };
16
+ //# sourceMappingURL=chunk-PJABNMRI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/subBusinessDays.ts"],"sourcesContent":["import { type Temporal, isPlainDate } from './shared/temporal';\nimport { addBusinessDays } from './addBusinessDays';\n\n/**\n * Subtracts business days (Monday–Friday), skipping weekends and any holidays\n * you pass. Equivalent to `addBusinessDays(input, -days, holidays)`.\n *\n * Instant inputs are converted to UTC. ZonedDateTime inputs keep their\n * timezone and time of day. PlainDate inputs stay dates.\n *\n * @param input - An Instant (UTC), ZonedDateTime, or PlainDate\n * @param days - Whole business days to subtract (negative to add)\n * @param holidays - Dates that are not business days. For Instant and ZonedDateTime\n * inputs they are matched against the input's own date (UTC for Instant).\n * @returns PlainDate for a date input; otherwise ZonedDateTime\n * @throws RangeError if days is not an integer\n *\n * @example\n * ```ts\n * const monday = Temporal.PlainDate.from('2025-01-27');\n *\n * subBusinessDays(monday, 1); // 2025-01-24 (Friday)\n * ```\n */\nexport function subBusinessDays(\n input: Temporal.PlainDate,\n days: number,\n holidays?: readonly Temporal.PlainDate[]\n): Temporal.PlainDate;\nexport function subBusinessDays(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n days: number,\n holidays?: readonly Temporal.PlainDate[]\n): Temporal.ZonedDateTime;\nexport function subBusinessDays(\n input: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate,\n days: number,\n holidays?: readonly Temporal.PlainDate[]\n): Temporal.ZonedDateTime | Temporal.PlainDate {\n // Narrow each branch to the matching addBusinessDays overload.\n return isPlainDate(input)\n ? addBusinessDays(input, -days, holidays)\n : addBusinessDays(input, -days, holidays);\n}\n"],"mappings":";;;;;;;;AAkCO,SAAS,gBACd,OACA,MACA,UAC6C;AAE7C,SAAO,YAAY,KAAK,IACpB,gBAAgB,OAAO,CAAC,MAAM,QAAQ,IACtC,gBAAgB,OAAO,CAAC,MAAM,QAAQ;AAC5C;","names":[]}
@@ -0,0 +1,247 @@
1
+ import {
2
+ consumeToken
3
+ } from "./chunk-HH2HTC44.js";
4
+ import {
5
+ Temporal
6
+ } from "./chunk-M4ESIRFH.js";
7
+
8
+ // src/parse.ts
9
+ function parse(text, pattern, options = {}) {
10
+ const { locale = "en-US", timeZone } = options;
11
+ const fields = readFields(text, pattern, locale);
12
+ const fail = (reason) => new RangeError(`Cannot parse "${text}" with pattern "${pattern}": ${reason}`);
13
+ if (fields.year === void 0 || fields.month === void 0 || fields.day === void 0) {
14
+ throw fail("the pattern needs a year, month, and day");
15
+ }
16
+ const date = Temporal.PlainDate.from(
17
+ { year: fields.year, month: fields.month, day: fields.day },
18
+ { overflow: "reject" }
19
+ );
20
+ if (fields.dayOfWeek !== void 0 && fields.dayOfWeek !== date.dayOfWeek) {
21
+ throw fail(`${date} is not that day of the week`);
22
+ }
23
+ const hasTime = fields.hour !== void 0 || fields.hour12 !== void 0 || fields.minute !== void 0 || fields.second !== void 0 || fields.millisecond !== void 0;
24
+ if (timeZone === void 0) {
25
+ if (hasTime || fields.offset !== void 0) {
26
+ throw new TypeError("Patterns with time or offset fields need a timeZone");
27
+ }
28
+ return date;
29
+ }
30
+ if (!hasTime && fields.offset === void 0) {
31
+ return date.toZonedDateTime(timeZone);
32
+ }
33
+ if (fields.hour12 !== void 0) {
34
+ if (fields.pm === void 0) throw fail("12-hour times (h) need AM/PM (a)");
35
+ if (fields.hour12 < 1 || fields.hour12 > 12)
36
+ throw fail(`${fields.hour12} is not a 12-hour hour`);
37
+ }
38
+ const hour = fields.hour ?? (fields.hour12 === void 0 ? 0 : fields.hour12 % 12 + (fields.pm ? 12 : 0));
39
+ const dateTime = Temporal.PlainDateTime.from(
40
+ {
41
+ year: date.year,
42
+ month: date.month,
43
+ day: date.day,
44
+ hour,
45
+ minute: fields.minute ?? 0,
46
+ second: fields.second ?? 0,
47
+ millisecond: fields.millisecond ?? 0
48
+ },
49
+ { overflow: "reject" }
50
+ );
51
+ if (fields.offset !== void 0) {
52
+ return Temporal.Instant.from(`${dateTime}${fields.offset}`).toZonedDateTimeISO(timeZone);
53
+ }
54
+ return dateTime.toZonedDateTime(timeZone);
55
+ }
56
+ function readFields(text, pattern, locale) {
57
+ const fields = {};
58
+ let position = 0;
59
+ const fail = (reason) => new RangeError(`Cannot parse "${text}" with pattern "${pattern}": ${reason}`);
60
+ const literal = (expected) => {
61
+ if (!text.startsWith(expected, position)) {
62
+ throw fail(`expected "${expected}" at position ${position}`);
63
+ }
64
+ position += expected.length;
65
+ };
66
+ const digits = (min, max) => {
67
+ const match = text.slice(position).match(new RegExp(`^\\d{${min},${max}}`));
68
+ if (!match)
69
+ throw fail(`expected ${min === max ? min : `${min}\u2013${max}`} digits at position ${position}`);
70
+ position += match[0].length;
71
+ return match[0];
72
+ };
73
+ const name = (candidates) => {
74
+ const rest = text.slice(position).toLocaleLowerCase(locale);
75
+ let best = -1;
76
+ let length = 0;
77
+ candidates.forEach((candidate, index) => {
78
+ const lower = candidate.toLocaleLowerCase(locale);
79
+ if (lower.length > length && rest.startsWith(lower)) {
80
+ best = index;
81
+ length = lower.length;
82
+ }
83
+ });
84
+ if (best === -1) throw fail(`expected one of ${candidates.join(", ")} at position ${position}`);
85
+ position += length;
86
+ return best;
87
+ };
88
+ for (let i = 0; i < pattern.length; ) {
89
+ const char = pattern[i];
90
+ if (char === "'") {
91
+ if (pattern[i + 1] === "'") {
92
+ literal("'");
93
+ i += 2;
94
+ continue;
95
+ }
96
+ let quoted = "";
97
+ for (i++; i < pattern.length; i++) {
98
+ if (pattern[i] !== "'") quoted += pattern[i];
99
+ else if (pattern[i + 1] === "'") quoted += "'", i++;
100
+ else break;
101
+ }
102
+ literal(quoted);
103
+ i++;
104
+ continue;
105
+ }
106
+ const token = consumeToken(pattern, i, char);
107
+ if (token === null) {
108
+ literal(char);
109
+ i++;
110
+ continue;
111
+ }
112
+ i += token.length;
113
+ switch (token) {
114
+ case "yyyy":
115
+ fields.year = Number(digits(4, 4));
116
+ break;
117
+ case "y":
118
+ fields.year = Number(digits(1, 6));
119
+ break;
120
+ case "MMMM":
121
+ case "MMM":
122
+ fields.month = name(monthNames(locale, token === "MMMM" ? "long" : "short")) + 1;
123
+ break;
124
+ case "MM":
125
+ fields.month = Number(digits(2, 2));
126
+ break;
127
+ case "M":
128
+ fields.month = Number(digits(1, 2));
129
+ break;
130
+ case "dd":
131
+ fields.day = Number(digits(2, 2));
132
+ break;
133
+ case "d":
134
+ fields.day = Number(digits(1, 2));
135
+ break;
136
+ case "EEEE":
137
+ case "EEE":
138
+ case "EE":
139
+ case "E":
140
+ fields.dayOfWeek = name(weekdayNames(locale, token === "EEEE" ? "long" : "short")) + 1;
141
+ break;
142
+ case "HH":
143
+ fields.hour = Number(digits(2, 2));
144
+ break;
145
+ case "H":
146
+ fields.hour = Number(digits(1, 2));
147
+ break;
148
+ case "hh":
149
+ fields.hour12 = Number(digits(2, 2));
150
+ break;
151
+ case "h":
152
+ fields.hour12 = Number(digits(1, 2));
153
+ break;
154
+ case "aaaa":
155
+ case "aaa":
156
+ case "aa":
157
+ case "a": {
158
+ const [am, pm] = dayPeriods(locale);
159
+ const candidates = [am, pm];
160
+ if (isAsciiAmPm(am) && isAsciiAmPm(pm)) candidates.push("a.m.", "p.m.");
161
+ fields.pm = name(candidates) % 2 === 1;
162
+ break;
163
+ }
164
+ case "mm":
165
+ fields.minute = Number(digits(2, 2));
166
+ break;
167
+ case "m":
168
+ fields.minute = Number(digits(1, 2));
169
+ break;
170
+ case "ss":
171
+ fields.second = Number(digits(2, 2));
172
+ break;
173
+ case "s":
174
+ fields.second = Number(digits(1, 2));
175
+ break;
176
+ case "SSS":
177
+ case "SS":
178
+ case "S":
179
+ fields.millisecond = Number(digits(token.length, token.length).padEnd(3, "0"));
180
+ break;
181
+ default:
182
+ if (/^[Xx]+$/.test(token)) {
183
+ const match = text.slice(position).match(token[0] === "X" ? /^(Z|[+-]\d{2}(:?\d{2}){0,2})/ : /^[+-]\d{2}(:?\d{2}){0,2}/);
184
+ if (!match) throw fail(`expected a UTC offset at position ${position}`);
185
+ position += match[0].length;
186
+ fields.offset = match[0] === "Z" ? "+00:00" : normalizeOffset(match[0]);
187
+ break;
188
+ }
189
+ throw new RangeError(
190
+ token === "yy" ? "parse does not read two-digit years (yy); the century would be a guess" : token === "T" || token === "t" ? "parse does not read timestamps (T, t); use toInstant" : `parse does not support the "${token}" token`
191
+ );
192
+ }
193
+ }
194
+ if (position !== text.length) {
195
+ throw fail(`unexpected "${text.slice(position)}" at position ${position}`);
196
+ }
197
+ return fields;
198
+ }
199
+ function normalizeOffset(offset) {
200
+ const numbers = offset.slice(1).replaceAll(":", "");
201
+ const parts = numbers.match(/\d{2}/g);
202
+ return `${offset[0]}${parts.length === 1 ? `${parts[0]}:00` : parts.join(":")}`;
203
+ }
204
+ function intlPart(locale, options, type, date) {
205
+ const epochMilliseconds = date.toZonedDateTime("UTC").epochMilliseconds;
206
+ return new Intl.DateTimeFormat(locale, { ...options, timeZone: "UTC" }).formatToParts(epochMilliseconds).find((part) => part.type === type)?.value ?? "";
207
+ }
208
+ function monthNames(locale, style) {
209
+ return Array.from(
210
+ { length: 12 },
211
+ (_, index) => intlPart(
212
+ locale,
213
+ { month: style },
214
+ "month",
215
+ Temporal.PlainDateTime.from({ year: 2e3, month: index + 1, day: 15 })
216
+ )
217
+ );
218
+ }
219
+ function weekdayNames(locale, style) {
220
+ return Array.from(
221
+ { length: 7 },
222
+ (_, index) => intlPart(
223
+ locale,
224
+ { weekday: style },
225
+ "weekday",
226
+ Temporal.PlainDateTime.from({ year: 2e3, month: 1, day: 3 + index })
227
+ )
228
+ );
229
+ }
230
+ function dayPeriods(locale) {
231
+ const at = (hour) => intlPart(
232
+ locale,
233
+ { hour: "numeric", hour12: true },
234
+ "dayPeriod",
235
+ Temporal.PlainDateTime.from({ year: 2e3, month: 1, day: 3, hour })
236
+ );
237
+ return [at(9), at(15)];
238
+ }
239
+ function isAsciiAmPm(period) {
240
+ const normalized = period.toUpperCase().replace(/[.\s]/g, "");
241
+ return normalized === "AM" || normalized === "PM";
242
+ }
243
+
244
+ export {
245
+ parse
246
+ };
247
+ //# sourceMappingURL=chunk-POCGMXLO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/parse.ts"],"sourcesContent":["import { Temporal } from './shared/temporal';\nimport { consumeToken } from './shared/formatTokens';\nimport type { Timezone } from './types';\n\nexport interface ParseOptions {\n /** Locale for month, weekday, and AM/PM names. @default 'en-US' */\n locale?: string;\n /** Timezone the parsed wall-clock time belongs to. Required when the pattern has time fields. */\n timeZone?: Timezone;\n}\n\ninterface Fields {\n year?: number;\n month?: number;\n day?: number;\n dayOfWeek?: number;\n hour?: number;\n hour12?: number;\n pm?: boolean;\n minute?: number;\n second?: number;\n millisecond?: number;\n offset?: string;\n}\n\n/**\n * Reads a date, or a date and time, written in a known pattern. The pattern uses\n * the same tokens as `format`, so text that `format` writes with a supported\n * pattern reads back to the same fields.\n *\n * Without a timeZone the result is a PlainDate, and the pattern may only hold\n * date fields. With a timeZone the result is a ZonedDateTime in that timezone:\n * an offset in the text (`XXX`) fixes the moment, otherwise the wall-clock time\n * is read in the timezone, and a time skipped by a DST change moves forward as\n * in Temporal. A pattern without time fields gives the start of that day.\n *\n * Supported tokens: `yyyy` `y` `MMMM` `MMM` `MM` `M` `dd` `d` `EEEE` `EEE` `HH`\n * `H` `hh` `h` `a` `mm` `m` `ss` `s` `SSS` `SS` `S` `X…XXXXX` `x…xxxxx`. Text in\n * single quotes and any other character must match exactly. Two-digit years\n * (`yy`) are rejected because the century is a guess.\n *\n * @param text - The text to read\n * @param pattern - The pattern the text is written in, such as `dd/MM/yyyy`\n * @param options - `timeZone` for patterns with a time; `locale` for names (default 'en-US')\n * @returns PlainDate without a timeZone; ZonedDateTime with one\n * @throws RangeError if the text does not match the pattern or names an impossible date\n * @throws TypeError if the pattern has time fields but no timeZone is given\n *\n * @example\n * ```ts\n * parse('20/01/2025', 'dd/MM/yyyy').toString(); // \"2025-01-20\"\n * parse('January 20, 2025', 'MMMM d, yyyy').toString(); // \"2025-01-20\"\n * ```\n *\n * @example\n * ```ts\n * parse('01/20/2025 3:45 PM', 'MM/dd/yyyy h:mm a', { timeZone: 'America/New_York' }).toString();\n * // \"2025-01-20T15:45:00-05:00[America/New_York]\"\n * ```\n *\n * @example\n * ```ts\n * parse('20 enero 2025', 'd MMMM yyyy', { locale: 'es' }).toString(); // \"2025-01-20\"\n * ```\n */\nexport function parse(\n text: string,\n pattern: string,\n options: { locale?: string; timeZone: Timezone }\n): Temporal.ZonedDateTime;\nexport function parse(\n text: string,\n pattern: string,\n options?: { locale?: string; timeZone?: undefined }\n): Temporal.PlainDate;\nexport function parse(\n text: string,\n pattern: string,\n options: ParseOptions = {}\n): Temporal.ZonedDateTime | Temporal.PlainDate {\n const { locale = 'en-US', timeZone } = options;\n const fields = readFields(text, pattern, locale);\n const fail = (reason: string) =>\n new RangeError(`Cannot parse \"${text}\" with pattern \"${pattern}\": ${reason}`);\n\n if (fields.year === undefined || fields.month === undefined || fields.day === undefined) {\n throw fail('the pattern needs a year, month, and day');\n }\n const date = Temporal.PlainDate.from(\n { year: fields.year, month: fields.month, day: fields.day },\n { overflow: 'reject' }\n );\n if (fields.dayOfWeek !== undefined && fields.dayOfWeek !== date.dayOfWeek) {\n throw fail(`${date} is not that day of the week`);\n }\n\n const hasTime =\n fields.hour !== undefined ||\n fields.hour12 !== undefined ||\n fields.minute !== undefined ||\n fields.second !== undefined ||\n fields.millisecond !== undefined;\n if (timeZone === undefined) {\n if (hasTime || fields.offset !== undefined) {\n throw new TypeError('Patterns with time or offset fields need a timeZone');\n }\n return date;\n }\n if (!hasTime && fields.offset === undefined) {\n return date.toZonedDateTime(timeZone);\n }\n\n if (fields.hour12 !== undefined) {\n if (fields.pm === undefined) throw fail('12-hour times (h) need AM/PM (a)');\n if (fields.hour12 < 1 || fields.hour12 > 12)\n throw fail(`${fields.hour12} is not a 12-hour hour`);\n }\n const hour =\n fields.hour ?? (fields.hour12 === undefined ? 0 : (fields.hour12 % 12) + (fields.pm ? 12 : 0));\n const dateTime = Temporal.PlainDateTime.from(\n {\n year: date.year,\n month: date.month,\n day: date.day,\n hour,\n minute: fields.minute ?? 0,\n second: fields.second ?? 0,\n millisecond: fields.millisecond ?? 0\n },\n { overflow: 'reject' }\n );\n if (fields.offset !== undefined) {\n return Temporal.Instant.from(`${dateTime}${fields.offset}`).toZonedDateTimeISO(timeZone);\n }\n return dateTime.toZonedDateTime(timeZone);\n}\n\nfunction readFields(text: string, pattern: string, locale: string): Fields {\n const fields: Fields = {};\n let position = 0;\n const fail = (reason: string) =>\n new RangeError(`Cannot parse \"${text}\" with pattern \"${pattern}\": ${reason}`);\n\n const literal = (expected: string) => {\n if (!text.startsWith(expected, position)) {\n throw fail(`expected \"${expected}\" at position ${position}`);\n }\n position += expected.length;\n };\n\n const digits = (min: number, max: number) => {\n const match = text.slice(position).match(new RegExp(`^\\\\d{${min},${max}}`));\n if (!match)\n throw fail(`expected ${min === max ? min : `${min}–${max}`} digits at position ${position}`);\n position += match[0].length;\n return match[0];\n };\n\n const name = (candidates: readonly string[]) => {\n const rest = text.slice(position).toLocaleLowerCase(locale);\n let best = -1;\n let length = 0;\n candidates.forEach((candidate, index) => {\n const lower = candidate.toLocaleLowerCase(locale);\n if (lower.length > length && rest.startsWith(lower)) {\n best = index;\n length = lower.length;\n }\n });\n if (best === -1) throw fail(`expected one of ${candidates.join(', ')} at position ${position}`);\n position += length;\n return best;\n };\n\n for (let i = 0; i < pattern.length;) {\n const char = pattern[i]!;\n\n if (char === \"'\") {\n // '' is a literal quote; 'text' is literal text with '' for a quote inside.\n if (pattern[i + 1] === \"'\") {\n literal(\"'\");\n i += 2;\n continue;\n }\n let quoted = '';\n for (i++; i < pattern.length; i++) {\n if (pattern[i] !== \"'\") quoted += pattern[i];\n else if (pattern[i + 1] === \"'\") ((quoted += \"'\"), i++);\n else break;\n }\n literal(quoted);\n i++;\n continue;\n }\n\n const token = consumeToken(pattern, i, char);\n if (token === null) {\n literal(char);\n i++;\n continue;\n }\n i += token.length;\n\n switch (token) {\n case 'yyyy':\n fields.year = Number(digits(4, 4));\n break;\n case 'y':\n fields.year = Number(digits(1, 6));\n break;\n case 'MMMM':\n case 'MMM':\n fields.month = name(monthNames(locale, token === 'MMMM' ? 'long' : 'short')) + 1;\n break;\n case 'MM':\n fields.month = Number(digits(2, 2));\n break;\n case 'M':\n fields.month = Number(digits(1, 2));\n break;\n case 'dd':\n fields.day = Number(digits(2, 2));\n break;\n case 'd':\n fields.day = Number(digits(1, 2));\n break;\n case 'EEEE':\n case 'EEE':\n case 'EE':\n case 'E':\n fields.dayOfWeek = name(weekdayNames(locale, token === 'EEEE' ? 'long' : 'short')) + 1;\n break;\n case 'HH':\n fields.hour = Number(digits(2, 2));\n break;\n case 'H':\n fields.hour = Number(digits(1, 2));\n break;\n case 'hh':\n fields.hour12 = Number(digits(2, 2));\n break;\n case 'h':\n fields.hour12 = Number(digits(1, 2));\n break;\n case 'aaaa':\n case 'aaa':\n case 'aa':\n case 'a': {\n const [am, pm] = dayPeriods(locale);\n const candidates = [am, pm];\n if (isAsciiAmPm(am) && isAsciiAmPm(pm)) candidates.push('a.m.', 'p.m.');\n fields.pm = name(candidates) % 2 === 1;\n break;\n }\n case 'mm':\n fields.minute = Number(digits(2, 2));\n break;\n case 'm':\n fields.minute = Number(digits(1, 2));\n break;\n case 'ss':\n fields.second = Number(digits(2, 2));\n break;\n case 's':\n fields.second = Number(digits(1, 2));\n break;\n case 'SSS':\n case 'SS':\n case 'S':\n fields.millisecond = Number(digits(token.length, token.length).padEnd(3, '0'));\n break;\n default:\n if (/^[Xx]+$/.test(token)) {\n const match = text\n .slice(position)\n .match(token[0] === 'X' ? /^(Z|[+-]\\d{2}(:?\\d{2}){0,2})/ : /^[+-]\\d{2}(:?\\d{2}){0,2}/);\n if (!match) throw fail(`expected a UTC offset at position ${position}`);\n position += match[0].length;\n fields.offset = match[0] === 'Z' ? '+00:00' : normalizeOffset(match[0]);\n break;\n }\n throw new RangeError(\n token === 'yy'\n ? 'parse does not read two-digit years (yy); the century would be a guess'\n : token === 'T' || token === 't'\n ? 'parse does not read timestamps (T, t); use toInstant'\n : `parse does not support the \"${token}\" token`\n );\n }\n }\n\n if (position !== text.length) {\n throw fail(`unexpected \"${text.slice(position)}\" at position ${position}`);\n }\n return fields;\n}\n\n// \"+0530\" and \"+05:30\" both become \"+05:30\", which Temporal reads.\nfunction normalizeOffset(offset: string): string {\n const numbers = offset.slice(1).replaceAll(':', '');\n const parts = numbers.match(/\\d{2}/g)!;\n return `${offset[0]}${parts.length === 1 ? `${parts[0]}:00` : parts.join(':')}`;\n}\n\n// Names come from Intl exactly as format writes them, so what format writes, parse reads.\nfunction intlPart(\n locale: string,\n options: Intl.DateTimeFormatOptions,\n type: Intl.DateTimeFormatPartTypes,\n date: Temporal.PlainDateTime\n): string {\n const epochMilliseconds = date.toZonedDateTime('UTC').epochMilliseconds;\n return (\n new Intl.DateTimeFormat(locale, { ...options, timeZone: 'UTC' })\n .formatToParts(epochMilliseconds)\n .find((part) => part.type === type)?.value ?? ''\n );\n}\n\nfunction monthNames(locale: string, style: 'long' | 'short'): string[] {\n return Array.from({ length: 12 }, (_, index) =>\n intlPart(\n locale,\n { month: style },\n 'month',\n Temporal.PlainDateTime.from({ year: 2000, month: index + 1, day: 15 })\n )\n );\n}\n\nfunction weekdayNames(locale: string, style: 'long' | 'short'): string[] {\n // 3 January 2000 was a Monday.\n return Array.from({ length: 7 }, (_, index) =>\n intlPart(\n locale,\n { weekday: style },\n 'weekday',\n Temporal.PlainDateTime.from({ year: 2000, month: 1, day: 3 + index })\n )\n );\n}\n\nfunction dayPeriods(locale: string): [am: string, pm: string] {\n const at = (hour: number) =>\n intlPart(\n locale,\n { hour: 'numeric', hour12: true },\n 'dayPeriod',\n Temporal.PlainDateTime.from({ year: 2000, month: 1, day: 3, hour })\n );\n return [at(9), at(15)];\n}\n\nfunction isAsciiAmPm(period: string): boolean {\n const normalized = period.toUpperCase().replace(/[.\\s]/g, '');\n return normalized === 'AM' || normalized === 'PM';\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Temporal
3
- } from "./chunk-BSVOJYJ7.js";
3
+ } from "./chunk-M4ESIRFH.js";
4
4
 
5
5
  // src/now.ts
6
6
  function now(timezone) {
@@ -10,4 +10,4 @@ function now(timezone) {
10
10
  export {
11
11
  now
12
12
  };
13
- //# sourceMappingURL=chunk-VM2YJ5PN.js.map
13
+ //# sourceMappingURL=chunk-PXKPP6C4.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  normalizeWithPlainDate
3
- } from "./chunk-TCB3IDJM.js";
3
+ } from "./chunk-QCIY5PSJ.js";
4
4
  import {
5
5
  getEndOfDay
6
- } from "./chunk-NMMMAMKP.js";
6
+ } from "./chunk-7WGGUDW4.js";
7
7
  import {
8
8
  isPlainDate
9
- } from "./chunk-BSVOJYJ7.js";
9
+ } from "./chunk-M4ESIRFH.js";
10
10
 
11
11
  // src/endOfMonth.ts
12
12
  function endOfMonth(input, timezone) {
@@ -21,4 +21,4 @@ function endOfMonth(input, timezone) {
21
21
  export {
22
22
  endOfMonth
23
23
  };
24
- //# sourceMappingURL=chunk-HCORON7B.js.map
24
+ //# sourceMappingURL=chunk-Q6MDBQRJ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/endOfMonth.ts"],"sourcesContent":["import { isPlainDate, Temporal } from './shared/temporal';\nimport type { Timezone } from './types';\nimport { getEndOfDay } from './shared/endOfDay';\nimport { normalizeWithPlainDate } from './shared/normalizeWithPlainDate';\n\n/**\n * Returns the last boundary of the month.\n * PlainDate inputs stay in calendar space unless a timezone is provided.\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.999999999+00:00[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 (stays a date)\n * const date = Temporal.PlainDate.from('2025-02-15');\n * const end = endOfMonth(date);\n * // 2025-02-28\n * ```\n *\n * @example\n * ```ts\n * // From PlainDate with a timezone (returns a ZonedDateTime)\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(input: Temporal.PlainDate): Temporal.PlainDate;\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 | Temporal.PlainDate {\n if (isPlainDate(input) && timezone === undefined) {\n return input.with({ day: input.daysInMonth });\n }\n\n const zonedDateTime = normalizeWithPlainDate(input, timezone!);\n const lastDay = zonedDateTime.with({ day: zonedDateTime.daysInMonth });\n return getEndOfDay(lastDay);\n}\n"],"mappings":";;;;;;;;;;;AAoDO,SAAS,WACd,OACA,UAC6C;AAC7C,MAAI,YAAY,KAAK,KAAK,aAAa,QAAW;AAChD,WAAO,MAAM,KAAK,EAAE,KAAK,MAAM,YAAY,CAAC;AAAA,EAC9C;AAEA,QAAM,gBAAgB,uBAAuB,OAAO,QAAS;AAC7D,QAAM,UAAU,cAAc,KAAK,EAAE,KAAK,cAAc,YAAY,CAAC;AACrE,SAAO,YAAY,OAAO;AAC5B;","names":[]}
1
+ {"version":3,"sources":["../src/endOfMonth.ts"],"sourcesContent":["import { isPlainDate, Temporal } from './shared/temporal';\nimport type { Timezone } from './types';\nimport { getEndOfDay } from './shared/endOfDay';\nimport { normalizeWithPlainDate } from './shared/normalizeWithPlainDate';\n\n/**\n * Returns the last boundary of the month.\n * PlainDate inputs stay in calendar space unless a timezone is provided.\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.999999999+00:00[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 (stays a date)\n * const date = Temporal.PlainDate.from('2025-02-15');\n * const end = endOfMonth(date);\n * // 2025-02-28\n * ```\n *\n * @example\n * ```ts\n * // From PlainDate with a timezone (returns a ZonedDateTime)\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(input: Temporal.PlainDate): Temporal.PlainDate;\nexport function endOfMonth(input: Temporal.PlainDate, timezone: Timezone): Temporal.ZonedDateTime;\nexport function endOfMonth(\n input: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate,\n timezone?: Timezone\n): Temporal.ZonedDateTime | Temporal.PlainDate {\n if (isPlainDate(input) && timezone === undefined) {\n return input.with({ day: input.daysInMonth });\n }\n\n const zonedDateTime = normalizeWithPlainDate(input, timezone!);\n const lastDay = zonedDateTime.with({ day: zonedDateTime.daysInMonth });\n return getEndOfDay(lastDay);\n}\n"],"mappings":";;;;;;;;;;;AAiDO,SAAS,WACd,OACA,UAC6C;AAC7C,MAAI,YAAY,KAAK,KAAK,aAAa,QAAW;AAChD,WAAO,MAAM,KAAK,EAAE,KAAK,MAAM,YAAY,CAAC;AAAA,EAC9C;AAEA,QAAM,gBAAgB,uBAAuB,OAAO,QAAS;AAC7D,QAAM,UAAU,cAAc,KAAK,EAAE,KAAK,cAAc,YAAY,CAAC;AACrE,SAAO,YAAY,OAAO;AAC5B;","names":[]}
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  plainDateToZonedDateTime
3
- } from "./chunk-2AID4P2C.js";
3
+ } from "./chunk-R6CQ6XSS.js";
4
4
  import {
5
5
  normalizeTemporalInput
6
- } from "./chunk-Q6QLOUXJ.js";
6
+ } from "./chunk-UTM7YAT4.js";
7
7
  import {
8
8
  isPlainDate
9
- } from "./chunk-BSVOJYJ7.js";
9
+ } from "./chunk-M4ESIRFH.js";
10
10
 
11
11
  // src/shared/normalizeWithPlainDate.ts
12
12
  function normalizeWithPlainDate(input, timezone) {
@@ -16,4 +16,4 @@ function normalizeWithPlainDate(input, timezone) {
16
16
  export {
17
17
  normalizeWithPlainDate
18
18
  };
19
- //# sourceMappingURL=chunk-TCB3IDJM.js.map
19
+ //# sourceMappingURL=chunk-QCIY5PSJ.js.map
@@ -2,7 +2,7 @@ import {
2
2
  Temporal,
3
3
  isInstant,
4
4
  isZonedDateTime
5
- } from "./chunk-BSVOJYJ7.js";
5
+ } from "./chunk-M4ESIRFH.js";
6
6
 
7
7
  // src/toPlainTime.ts
8
8
  var PLAIN_TIME_PATTERN = /^\d{2}:\d{2}(:\d{2}(\.\d+)?)?$/;
@@ -12,19 +12,25 @@ function toPlainTime(input, timezone) {
12
12
  }
13
13
  if (input instanceof Date) {
14
14
  if (timezone === void 0) {
15
- throw new Error("Timezone is required unless input is a ZonedDateTime, PlainTimeLike, or plain time string");
15
+ throw new Error(
16
+ "Timezone is required unless input is a ZonedDateTime, PlainTimeLike, or plain time string"
17
+ );
16
18
  }
17
19
  return Temporal.Instant.from(input.toISOString()).toZonedDateTimeISO(timezone).toPlainTime();
18
20
  }
19
21
  if (isInstant(input)) {
20
22
  if (timezone === void 0) {
21
- throw new Error("Timezone is required unless input is a ZonedDateTime, PlainTimeLike, or plain time string");
23
+ throw new Error(
24
+ "Timezone is required unless input is a ZonedDateTime, PlainTimeLike, or plain time string"
25
+ );
22
26
  }
23
27
  return input.toZonedDateTimeISO(timezone).toPlainTime();
24
28
  }
25
29
  if (isZonedDateTime(input)) {
26
30
  if (timezone === void 0) {
27
- throw new Error("Timezone is required unless input is a ZonedDateTime, PlainTimeLike, or plain time string");
31
+ throw new Error(
32
+ "Timezone is required unless input is a ZonedDateTime, PlainTimeLike, or plain time string"
33
+ );
28
34
  }
29
35
  return input.toInstant().toZonedDateTimeISO(timezone).toPlainTime();
30
36
  }
@@ -35,7 +41,9 @@ function toPlainTime(input, timezone) {
35
41
  if (PLAIN_TIME_PATTERN.test(input)) {
36
42
  return Temporal.PlainTime.from(input);
37
43
  }
38
- throw new Error("Timezone is required unless input is a ZonedDateTime, PlainTimeLike, or plain time string");
44
+ throw new Error(
45
+ "Timezone is required unless input is a ZonedDateTime, PlainTimeLike, or plain time string"
46
+ );
39
47
  }
40
48
  return Temporal.PlainTime.from(input);
41
49
  }
@@ -43,4 +51,4 @@ function toPlainTime(input, timezone) {
43
51
  export {
44
52
  toPlainTime
45
53
  };
46
- //# sourceMappingURL=chunk-LXOLIOAD.js.map
54
+ //# sourceMappingURL=chunk-QF4M4T6G.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/toPlainTime.ts"],"sourcesContent":["import { Temporal, isInstant, isZonedDateTime } from './shared/temporal';\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 (isZonedDateTime(input) && 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 (isInstant(input)) {\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 (isZonedDateTime(input)) {\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":";;;;;;;AAIA,IAAM,qBAAqB;AA0CpB,SAAS,YACd,OACA,UACoB;AAEpB,MAAI,gBAAgB,KAAK,KAAK,aAAa,QAAW;AACpD,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,UAAU,KAAK,GAAG;AACpB,QAAI,aAAa,QAAW;AAC1B,YAAM,IAAI,MAAM,2FAA2F;AAAA,IAC7G;AACA,WAAO,MAAM,mBAAmB,QAAQ,EAAE,YAAY;AAAA,EACxD;AAGA,MAAI,gBAAgB,KAAK,GAAG;AAC1B,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
+ {"version":3,"sources":["../src/toPlainTime.ts"],"sourcesContent":["import { Temporal, isInstant, isZonedDateTime } from './shared/temporal';\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 (isZonedDateTime(input) && 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(\n 'Timezone is required unless input is a ZonedDateTime, PlainTimeLike, or plain time string'\n );\n }\n return Temporal.Instant.from(input.toISOString()).toZonedDateTimeISO(timezone).toPlainTime();\n }\n\n // Instant requires timezone\n if (isInstant(input)) {\n if (timezone === undefined) {\n throw new Error(\n 'Timezone is required unless input is a ZonedDateTime, PlainTimeLike, or plain time string'\n );\n }\n return input.toZonedDateTimeISO(timezone).toPlainTime();\n }\n\n // ZonedDateTime with timezone override\n if (isZonedDateTime(input)) {\n if (timezone === undefined) {\n throw new Error(\n 'Timezone is required unless input is a ZonedDateTime, PlainTimeLike, or plain time string'\n );\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(\n 'Timezone is required unless input is a ZonedDateTime, PlainTimeLike, or plain time string'\n );\n }\n\n // PlainTimeLike object - pass directly to Temporal.PlainTime.from()\n return Temporal.PlainTime.from(input);\n}\n"],"mappings":";;;;;;;AAIA,IAAM,qBAAqB;AA0CpB,SAAS,YACd,OACA,UACoB;AAEpB,MAAI,gBAAgB,KAAK,KAAK,aAAa,QAAW;AACpD,WAAO,MAAM,YAAY;AAAA,EAC3B;AAGA,MAAI,iBAAiB,MAAM;AACzB,QAAI,aAAa,QAAW;AAC1B,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AACA,WAAO,SAAS,QAAQ,KAAK,MAAM,YAAY,CAAC,EAAE,mBAAmB,QAAQ,EAAE,YAAY;AAAA,EAC7F;AAGA,MAAI,UAAU,KAAK,GAAG;AACpB,QAAI,aAAa,QAAW;AAC1B,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AACA,WAAO,MAAM,mBAAmB,QAAQ,EAAE,YAAY;AAAA,EACxD;AAGA,MAAI,gBAAgB,KAAK,GAAG;AAC1B,QAAI,aAAa,QAAW;AAC1B,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;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;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAGA,SAAO,SAAS,UAAU,KAAK,KAAK;AACtC;","names":[]}
@@ -0,0 +1,61 @@
1
+ import {
2
+ normalizeTemporalInput
3
+ } from "./chunk-UTM7YAT4.js";
4
+ import {
5
+ Temporal,
6
+ isPlainDate
7
+ } from "./chunk-M4ESIRFH.js";
8
+
9
+ // src/shared/businessDays.ts
10
+ function isWeekendDay(dayOfWeek) {
11
+ return dayOfWeek >= 6;
12
+ }
13
+ function addWeekdays(start, days) {
14
+ if (!Number.isInteger(days)) {
15
+ throw new RangeError("Business day counts must be integers");
16
+ }
17
+ const step = days < 0 ? -1 : 1;
18
+ const fullWeeks = Math.max(0, Math.trunc((Math.abs(days) - 1) / 5));
19
+ let result = fullWeeks === 0 ? start : start.add({ days: step * fullWeeks * 7 });
20
+ for (let remaining = Math.abs(days) - fullWeeks * 5; remaining > 0; ) {
21
+ result = result.add({ days: step });
22
+ if (!isWeekendDay(result.dayOfWeek)) remaining--;
23
+ }
24
+ return result;
25
+ }
26
+ function isoDate(input) {
27
+ const date = isPlainDate(input) ? input : normalizeTemporalInput(input).toPlainDate();
28
+ return Temporal.PlainDate.from(date.toString()).withCalendar("iso8601");
29
+ }
30
+ function addBusinessDaysSkipping(start, days, holidays) {
31
+ let result = addWeekdays(start, days);
32
+ const dates = weekdayHolidays(holidays);
33
+ if (dates.length === 0 || days === 0) return result;
34
+ const step = days < 0 ? -1 : 1;
35
+ for (let from = isoDate(start); ; ) {
36
+ const to = isoDate(result);
37
+ const skipped = dates.filter(
38
+ (date) => step > 0 ? Temporal.PlainDate.compare(date, from) > 0 && Temporal.PlainDate.compare(date, to) <= 0 : Temporal.PlainDate.compare(date, from) < 0 && Temporal.PlainDate.compare(date, to) >= 0
39
+ ).length;
40
+ if (skipped === 0) return result;
41
+ from = to;
42
+ result = addWeekdays(result, step * skipped);
43
+ }
44
+ }
45
+ function weekdayHolidays(holidays) {
46
+ const unique = /* @__PURE__ */ new Map();
47
+ for (const holiday of holidays) {
48
+ const date = isoDate(holiday);
49
+ if (!isWeekendDay(date.dayOfWeek)) unique.set(date.toString(), date);
50
+ }
51
+ return [...unique.values()];
52
+ }
53
+
54
+ export {
55
+ isWeekendDay,
56
+ addWeekdays,
57
+ isoDate,
58
+ addBusinessDaysSkipping,
59
+ weekdayHolidays
60
+ };
61
+ //# sourceMappingURL=chunk-QFQHFBN4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/shared/businessDays.ts"],"sourcesContent":["import { Temporal, isPlainDate } from './temporal';\nimport { normalizeTemporalInput } from './normalizeTemporalInput';\n\n/**\n * @internal\n * Saturday (6) and Sunday (7) in Temporal's Monday-based dayOfWeek.\n */\nexport function isWeekendDay(dayOfWeek: number): boolean {\n return dayOfWeek >= 6;\n}\n\n/**\n * @internal\n * Adds days counting only Monday–Friday. The result keeps the input's type,\n * time of day, and timezone.\n */\nexport function addWeekdays<T extends { dayOfWeek: number; add(duration: { days: number }): T }>(\n start: T,\n days: number\n): T {\n if (!Number.isInteger(days)) {\n throw new RangeError('Business day counts must be integers');\n }\n const step = days < 0 ? -1 : 1;\n // Any 7 consecutive days hold exactly 5 weekdays, so jump whole weeks. Keep\n // at least one business day to walk so a weekend landing is never returned.\n const fullWeeks = Math.max(0, Math.trunc((Math.abs(days) - 1) / 5));\n let result = fullWeeks === 0 ? start : start.add({ days: step * fullWeeks * 7 });\n for (let remaining = Math.abs(days) - fullWeeks * 5; remaining > 0;) {\n result = result.add({ days: step });\n if (!isWeekendDay(result.dayOfWeek)) remaining--;\n }\n return result;\n}\n\n/**\n * @internal\n * The calendar date of a value as an ISO PlainDate from this library's\n * Temporal implementation. Instant uses UTC; ZonedDateTime uses its timezone.\n */\nexport function isoDate(\n input: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate\n): Temporal.PlainDate {\n const date = isPlainDate(input) ? input : normalizeTemporalInput(input).toPlainDate();\n return Temporal.PlainDate.from(date.toString()).withCalendar('iso8601');\n}\n\n/**\n * @internal\n * Adds days counting only Monday–Friday that are not holidays. Holidays are\n * matched by ISO date; those on weekends are already skipped.\n */\nexport function addBusinessDaysSkipping<\n T extends (Temporal.ZonedDateTime | Temporal.PlainDate) & {\n add(duration: { days: number }): T;\n }\n>(start: T, days: number, holidays: readonly Temporal.PlainDate[]): T {\n let result = addWeekdays<T>(start, days);\n const dates = weekdayHolidays(holidays);\n if (dates.length === 0 || days === 0) return result;\n\n // Each holiday passed over pushes the result one more business day along.\n // Repeat until a stretch passes no holiday, which also leaves the result off one.\n const step = days < 0 ? -1 : 1;\n for (let from = isoDate(start); ;) {\n const to = isoDate(result);\n const skipped = dates.filter((date) =>\n step > 0\n ? Temporal.PlainDate.compare(date, from) > 0 && Temporal.PlainDate.compare(date, to) <= 0\n : Temporal.PlainDate.compare(date, from) < 0 && Temporal.PlainDate.compare(date, to) >= 0\n ).length;\n if (skipped === 0) return result;\n from = to;\n result = addWeekdays<T>(result, step * skipped);\n }\n}\n\n/**\n * @internal\n * Distinct holidays that fall Monday–Friday, as ISO PlainDates.\n */\nexport function weekdayHolidays(holidays: readonly Temporal.PlainDate[]): Temporal.PlainDate[] {\n const unique = new Map<string, Temporal.PlainDate>();\n for (const holiday of holidays) {\n const date = isoDate(holiday);\n if (!isWeekendDay(date.dayOfWeek)) unique.set(date.toString(), date);\n }\n return [...unique.values()];\n}\n"],"mappings":";;;;;;;;;AAOO,SAAS,aAAa,WAA4B;AACvD,SAAO,aAAa;AACtB;AAOO,SAAS,YACd,OACA,MACG;AACH,MAAI,CAAC,OAAO,UAAU,IAAI,GAAG;AAC3B,UAAM,IAAI,WAAW,sCAAsC;AAAA,EAC7D;AACA,QAAM,OAAO,OAAO,IAAI,KAAK;AAG7B,QAAM,YAAY,KAAK,IAAI,GAAG,KAAK,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC;AAClE,MAAI,SAAS,cAAc,IAAI,QAAQ,MAAM,IAAI,EAAE,MAAM,OAAO,YAAY,EAAE,CAAC;AAC/E,WAAS,YAAY,KAAK,IAAI,IAAI,IAAI,YAAY,GAAG,YAAY,KAAI;AACnE,aAAS,OAAO,IAAI,EAAE,MAAM,KAAK,CAAC;AAClC,QAAI,CAAC,aAAa,OAAO,SAAS,EAAG;AAAA,EACvC;AACA,SAAO;AACT;AAOO,SAAS,QACd,OACoB;AACpB,QAAM,OAAO,YAAY,KAAK,IAAI,QAAQ,uBAAuB,KAAK,EAAE,YAAY;AACpF,SAAO,SAAS,UAAU,KAAK,KAAK,SAAS,CAAC,EAAE,aAAa,SAAS;AACxE;AAOO,SAAS,wBAId,OAAU,MAAc,UAA4C;AACpE,MAAI,SAAS,YAAe,OAAO,IAAI;AACvC,QAAM,QAAQ,gBAAgB,QAAQ;AACtC,MAAI,MAAM,WAAW,KAAK,SAAS,EAAG,QAAO;AAI7C,QAAM,OAAO,OAAO,IAAI,KAAK;AAC7B,WAAS,OAAO,QAAQ,KAAK,OAAM;AACjC,UAAM,KAAK,QAAQ,MAAM;AACzB,UAAM,UAAU,MAAM;AAAA,MAAO,CAAC,SAC5B,OAAO,IACH,SAAS,UAAU,QAAQ,MAAM,IAAI,IAAI,KAAK,SAAS,UAAU,QAAQ,MAAM,EAAE,KAAK,IACtF,SAAS,UAAU,QAAQ,MAAM,IAAI,IAAI,KAAK,SAAS,UAAU,QAAQ,MAAM,EAAE,KAAK;AAAA,IAC5F,EAAE;AACF,QAAI,YAAY,EAAG,QAAO;AAC1B,WAAO;AACP,aAAS,YAAe,QAAQ,OAAO,OAAO;AAAA,EAChD;AACF;AAMO,SAAS,gBAAgB,UAA+D;AAC7F,QAAM,SAAS,oBAAI,IAAgC;AACnD,aAAW,WAAW,UAAU;AAC9B,UAAM,OAAO,QAAQ,OAAO;AAC5B,QAAI,CAAC,aAAa,KAAK,SAAS,EAAG,QAAO,IAAI,KAAK,SAAS,GAAG,IAAI;AAAA,EACrE;AACA,SAAO,CAAC,GAAG,OAAO,OAAO,CAAC;AAC5B;","names":[]}
@@ -1,27 +1,27 @@
1
1
  import {
2
2
  differenceInSeconds
3
- } from "./chunk-XSHFR2SX.js";
3
+ } from "./chunk-IZPKAMAP.js";
4
4
  import {
5
5
  differenceInWeeks
6
- } from "./chunk-TU3LNQKW.js";
6
+ } from "./chunk-HMPHUFC6.js";
7
7
  import {
8
8
  differenceInYears
9
- } from "./chunk-LMOAA73F.js";
9
+ } from "./chunk-QPE2V3MY.js";
10
10
  import {
11
11
  differenceInDays
12
- } from "./chunk-JGPTGV5X.js";
12
+ } from "./chunk-MRJNMV4A.js";
13
13
  import {
14
14
  differenceInHours
15
- } from "./chunk-GU3CZAIN.js";
15
+ } from "./chunk-SKHUBXIN.js";
16
16
  import {
17
17
  differenceInMinutes
18
- } from "./chunk-OEPVYNB6.js";
18
+ } from "./chunk-XD4JKMGT.js";
19
19
  import {
20
20
  differenceInMonths
21
- } from "./chunk-KZCSP3DU.js";
21
+ } from "./chunk-5YKAVRED.js";
22
22
  import {
23
23
  normalizeTemporalInput
24
- } from "./chunk-Q6QLOUXJ.js";
24
+ } from "./chunk-UTM7YAT4.js";
25
25
 
26
26
  // src/intlFormatDistance.ts
27
27
  function intlFormatDistance(laterDate, earlierDate, options) {
@@ -92,4 +92,4 @@ function intlFormatDistance(laterDate, earlierDate, options) {
92
92
  export {
93
93
  intlFormatDistance
94
94
  };
95
- //# sourceMappingURL=chunk-ZW32E6EJ.js.map
95
+ //# sourceMappingURL=chunk-QKIREPRK.js.map