@gobrand/tiempo 3.0.0 → 3.1.2
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.
- package/README.md +8 -6
- package/dist/addBusinessDays.d.ts +28 -0
- package/dist/addBusinessDays.d.ts.map +1 -0
- package/dist/addBusinessDays.js +10 -0
- package/dist/addDays.d.ts +7 -4
- package/dist/addDays.d.ts.map +1 -1
- package/dist/addDays.js +3 -3
- package/dist/addHours.d.ts +1 -1
- package/dist/addHours.d.ts.map +1 -1
- package/dist/addHours.js +3 -3
- package/dist/addMicroseconds.d.ts +1 -1
- package/dist/addMicroseconds.d.ts.map +1 -1
- package/dist/addMicroseconds.js +3 -3
- package/dist/addMilliseconds.d.ts +1 -1
- package/dist/addMilliseconds.d.ts.map +1 -1
- package/dist/addMilliseconds.js +3 -3
- package/dist/addMinutes.d.ts +1 -1
- package/dist/addMinutes.d.ts.map +1 -1
- package/dist/addMinutes.js +3 -3
- package/dist/addMonths.d.ts +7 -4
- package/dist/addMonths.d.ts.map +1 -1
- package/dist/addMonths.js +3 -3
- package/dist/addNanoseconds.d.ts +1 -1
- package/dist/addNanoseconds.d.ts.map +1 -1
- package/dist/addNanoseconds.js +3 -3
- package/dist/addQuarters.d.ts +3 -3
- package/dist/addQuarters.d.ts.map +1 -1
- package/dist/addQuarters.js +3 -3
- package/dist/addSeconds.d.ts +1 -1
- package/dist/addSeconds.d.ts.map +1 -1
- package/dist/addSeconds.js +3 -3
- package/dist/addWeeks.d.ts +7 -4
- package/dist/addWeeks.d.ts.map +1 -1
- package/dist/addWeeks.js +3 -3
- package/dist/addYears.d.ts +7 -4
- package/dist/addYears.d.ts.map +1 -1
- package/dist/addYears.js +3 -3
- package/dist/{chunk-BEGD73DT.js → chunk-22IDWEHQ.js} +33 -47
- package/dist/chunk-22IDWEHQ.js.map +1 -0
- package/dist/{chunk-OFIPZPEA.js → chunk-23APOESH.js} +2 -2
- package/dist/chunk-23APOESH.js.map +1 -0
- package/dist/{chunk-L5AMAEWX.js → chunk-2AID4P2C.js} +2 -2
- package/dist/chunk-2LN57UVR.js +28 -0
- package/dist/chunk-2LN57UVR.js.map +1 -0
- package/dist/{chunk-ZOHYNJUD.js → chunk-2MFBXSTL.js} +4 -4
- package/dist/chunk-2MFBXSTL.js.map +1 -0
- package/dist/{chunk-DBVGH55Z.js → chunk-2OSJHJV5.js} +2 -2
- package/dist/chunk-33MHEBQR.js +16 -0
- package/dist/chunk-33MHEBQR.js.map +1 -0
- package/dist/chunk-35IJG3T2.js +28 -0
- package/dist/chunk-35IJG3T2.js.map +1 -0
- package/dist/{chunk-DMFV2AL7.js → chunk-3IYGWL34.js} +13 -13
- package/dist/chunk-3IYGWL34.js.map +1 -0
- package/dist/{chunk-VXOQ7IG5.js → chunk-3KE6GK4R.js} +2 -2
- package/dist/{chunk-VXOQ7IG5.js.map → chunk-3KE6GK4R.js.map} +1 -1
- package/dist/chunk-3S6TSXZ3.js +18 -0
- package/dist/chunk-3S6TSXZ3.js.map +1 -0
- package/dist/chunk-426MJGNT.js +19 -0
- package/dist/chunk-426MJGNT.js.map +1 -0
- package/dist/{chunk-MENMDB6M.js → chunk-44EIUFJB.js} +2 -2
- package/dist/chunk-44EIUFJB.js.map +1 -0
- package/dist/{chunk-OQNFKOPA.js → chunk-4E5OJUMN.js} +2 -2
- package/dist/chunk-4E5OJUMN.js.map +1 -0
- package/dist/{chunk-KPB5ENNM.js → chunk-5FCHKIGV.js} +4 -4
- package/dist/chunk-5FCHKIGV.js.map +1 -0
- package/dist/{chunk-7SCQV77A.js → chunk-5KVFPVBT.js} +3 -3
- package/dist/chunk-5KVFPVBT.js.map +1 -0
- package/dist/chunk-5MB7UZCJ.js +66 -0
- package/dist/chunk-5MB7UZCJ.js.map +1 -0
- package/dist/{chunk-4PGGOVSG.js → chunk-5ST6IOPN.js} +2 -2
- package/dist/chunk-5ST6IOPN.js.map +1 -0
- package/dist/{chunk-25CVKMFC.js → chunk-5WPQUOM4.js} +3 -3
- package/dist/chunk-5WPQUOM4.js.map +1 -0
- package/dist/{chunk-IONQ6TOR.js → chunk-5XJEKPO5.js} +2 -2
- package/dist/chunk-5XJEKPO5.js.map +1 -0
- package/dist/{chunk-PURKYS5T.js → chunk-6XEHR3MG.js} +2 -2
- package/dist/{chunk-RL2NW7HP.js → chunk-A34P5Z5O.js} +2 -2
- package/dist/chunk-A34P5Z5O.js.map +1 -0
- package/dist/{chunk-MM2HIW7M.js → chunk-AA56LFMF.js} +4 -6
- package/dist/{chunk-MM2HIW7M.js.map → chunk-AA56LFMF.js.map} +1 -1
- package/dist/chunk-ADPVFELS.js +16 -0
- package/dist/{chunk-NEHYVVTH.js.map → chunk-ADPVFELS.js.map} +1 -1
- package/dist/chunk-ASIYAAQV.js +42 -0
- package/dist/chunk-ASIYAAQV.js.map +1 -0
- package/dist/{chunk-RLVCSGRU.js → chunk-AVPV4BA5.js} +2 -2
- package/dist/{chunk-YNLBS34B.js → chunk-B6VZ2AKN.js} +4 -4
- package/dist/chunk-BMX7CIRD.js +9 -0
- package/dist/chunk-BMX7CIRD.js.map +1 -0
- package/dist/{chunk-R7ZCA6AQ.js → chunk-BSVOJYJ7.js} +7 -3
- package/dist/chunk-BSVOJYJ7.js.map +1 -0
- package/dist/{chunk-BTXU3OGV.js → chunk-C5OJIIJP.js} +2 -2
- package/dist/chunk-C5OJIIJP.js.map +1 -0
- package/dist/chunk-CDKIT7D3.js +9 -0
- package/dist/chunk-CDKIT7D3.js.map +1 -0
- package/dist/chunk-CN3OICYB.js +13 -0
- package/dist/chunk-CN3OICYB.js.map +1 -0
- package/dist/{chunk-EBVLBLR3.js → chunk-D3BJEYTR.js} +4 -7
- package/dist/chunk-D3BJEYTR.js.map +1 -0
- package/dist/{chunk-OVSCDXYN.js → chunk-DCZDGS5G.js} +3 -3
- package/dist/{chunk-OVSCDXYN.js.map → chunk-DCZDGS5G.js.map} +1 -1
- package/dist/{chunk-WTLAKRCT.js → chunk-DHVGDIIO.js} +3 -3
- package/dist/chunk-DHVGDIIO.js.map +1 -0
- package/dist/{chunk-3LTTYG6N.js → chunk-DXSRRBJO.js} +2 -2
- package/dist/chunk-DXSRRBJO.js.map +1 -0
- package/dist/chunk-E5HJJFUI.js +26 -0
- package/dist/chunk-E5HJJFUI.js.map +1 -0
- package/dist/{chunk-SDW4W3XE.js → chunk-EBQ25TEY.js} +2 -2
- package/dist/chunk-EBQ25TEY.js.map +1 -0
- package/dist/chunk-EH4GVGXD.js +16 -0
- package/dist/{chunk-OKXCGA4Y.js.map → chunk-EH4GVGXD.js.map} +1 -1
- package/dist/{chunk-WGLZHBJG.js → chunk-ETO77GIW.js} +2 -2
- package/dist/chunk-ETO77GIW.js.map +1 -0
- package/dist/{chunk-S7L5KBI4.js → chunk-FAVYJIRM.js} +3 -3
- package/dist/chunk-FL33IWLY.js +19 -0
- package/dist/chunk-FL33IWLY.js.map +1 -0
- package/dist/{chunk-6UMISP3B.js → chunk-FLVULRGY.js} +2 -2
- package/dist/chunk-FLVULRGY.js.map +1 -0
- package/dist/{chunk-SCD2JNY3.js → chunk-FUVG6A7U.js} +2 -2
- package/dist/chunk-FUVG6A7U.js.map +1 -0
- package/dist/chunk-GQXJICRA.js +26 -0
- package/dist/chunk-GQXJICRA.js.map +1 -0
- package/dist/chunk-H544BC2X.js +16 -0
- package/dist/chunk-H544BC2X.js.map +1 -0
- package/dist/{chunk-H5BHFVEN.js → chunk-HCVE7FSF.js} +2 -2
- package/dist/chunk-HCVE7FSF.js.map +1 -0
- package/dist/{chunk-BV32K227.js → chunk-HQ3YMKQ5.js} +3 -3
- package/dist/chunk-HSJMG5T7.js +16 -0
- package/dist/chunk-HSJMG5T7.js.map +1 -0
- package/dist/{chunk-M7Y67IAB.js → chunk-HT6L4VRQ.js} +2 -2
- package/dist/chunk-HT6L4VRQ.js.map +1 -0
- package/dist/{chunk-3TS3D7WD.js → chunk-ITQ6OJAL.js} +4 -4
- package/dist/chunk-ITQ6OJAL.js.map +1 -0
- package/dist/{chunk-NTMT5XGC.js → chunk-JNAWZ4RN.js} +2 -2
- package/dist/chunk-JNAWZ4RN.js.map +1 -0
- package/dist/chunk-JQ4Z4JTW.js +16 -0
- package/dist/chunk-JQ4Z4JTW.js.map +1 -0
- package/dist/chunk-JWYRXPR4.js +53 -0
- package/dist/chunk-JWYRXPR4.js.map +1 -0
- package/dist/{chunk-NX7MXLFS.js → chunk-KTMCYEU5.js} +2 -2
- package/dist/{chunk-JQFD563S.js → chunk-LKF7U4O4.js} +2 -2
- package/dist/chunk-LKF7U4O4.js.map +1 -0
- package/dist/{chunk-2E4KCD3Y.js → chunk-LQ3EQYIX.js} +4 -3
- package/dist/chunk-LQ3EQYIX.js.map +1 -0
- package/dist/{chunk-ELUSLRWQ.js → chunk-LRIVI5ZC.js} +2 -2
- package/dist/{chunk-M4KDJ4I4.js → chunk-LXOLIOAD.js} +2 -2
- package/dist/{chunk-T5WSO6US.js → chunk-MCPKXTX7.js} +2 -2
- package/dist/chunk-MCPKXTX7.js.map +1 -0
- package/dist/chunk-MWUVGTKC.js +23 -0
- package/dist/chunk-MWUVGTKC.js.map +1 -0
- package/dist/chunk-MXUGDXSG.js +28 -0
- package/dist/chunk-MXUGDXSG.js.map +1 -0
- package/dist/chunk-NKXMLC6T.js +56 -0
- package/dist/chunk-NKXMLC6T.js.map +1 -0
- package/dist/{chunk-PX2I4GCF.js → chunk-NL5MQVGD.js} +2 -2
- package/dist/chunk-NMMMAMKP.js +9 -0
- package/dist/chunk-NMMMAMKP.js.map +1 -0
- package/dist/chunk-NNUATTN7.js +16 -0
- package/dist/chunk-NNUATTN7.js.map +1 -0
- package/dist/{chunk-7OEGJCW7.js → chunk-NRYKSDVP.js} +4 -4
- package/dist/{chunk-7OEGJCW7.js.map → chunk-NRYKSDVP.js.map} +1 -1
- package/dist/{chunk-VC7RTDJP.js → chunk-NST7NM5Q.js} +2 -2
- package/dist/{chunk-FCJO72WG.js → chunk-NYM3EW3M.js} +2 -2
- package/dist/chunk-NYM3EW3M.js.map +1 -0
- package/dist/chunk-NZLRMN35.js +13 -0
- package/dist/chunk-NZLRMN35.js.map +1 -0
- package/dist/{chunk-CCVPCHUO.js → chunk-O4YU4N6Q.js} +4 -4
- package/dist/chunk-O4YU4N6Q.js.map +1 -0
- package/dist/chunk-OMYVTYHI.js +47 -0
- package/dist/chunk-OMYVTYHI.js.map +1 -0
- package/dist/chunk-OOOVMKOG.js +13 -0
- package/dist/chunk-OOOVMKOG.js.map +1 -0
- package/dist/{chunk-EMZFQEWM.js → chunk-OYTQWJ2O.js} +4 -7
- package/dist/chunk-OYTQWJ2O.js.map +1 -0
- package/dist/{chunk-IAXVREU5.js → chunk-PU6PU2JM.js} +2 -2
- package/dist/chunk-PU6PU2JM.js.map +1 -0
- package/dist/{chunk-CSOSM46M.js → chunk-PYV7MWJJ.js} +2 -2
- package/dist/chunk-PYV7MWJJ.js.map +1 -0
- package/dist/chunk-QD3ROUIT.js +20 -0
- package/dist/chunk-QD3ROUIT.js.map +1 -0
- package/dist/{chunk-TQUKIG26.js → chunk-QJYU5TLL.js} +2 -2
- package/dist/{chunk-VQAGV72H.js → chunk-QVSHSIA3.js} +2 -2
- package/dist/{chunk-OSBVYUOQ.js → chunk-R3PZ56AD.js} +4 -4
- package/dist/chunk-R3PZ56AD.js.map +1 -0
- package/dist/chunk-RDMDCTHJ.js +13 -0
- package/dist/chunk-RDMDCTHJ.js.map +1 -0
- package/dist/chunk-RQ5CX67T.js +30 -0
- package/dist/chunk-RQ5CX67T.js.map +1 -0
- package/dist/{chunk-MNV2H4N6.js → chunk-SATEE2TL.js} +2 -2
- package/dist/chunk-SATEE2TL.js.map +1 -0
- package/dist/chunk-SLBDEPBP.js +16 -0
- package/dist/chunk-SLBDEPBP.js.map +1 -0
- package/dist/chunk-SMMVTXL4.js +22 -0
- package/dist/chunk-SMMVTXL4.js.map +1 -0
- package/dist/{chunk-GR7322AQ.js → chunk-SUONQGAH.js} +3 -3
- package/dist/chunk-SUONQGAH.js.map +1 -0
- package/dist/{chunk-VKXN4FQD.js → chunk-SXR2SO42.js} +2 -2
- package/dist/chunk-T775UWIV.js +32 -0
- package/dist/chunk-T775UWIV.js.map +1 -0
- package/dist/chunk-TEL44S5A.js +16 -0
- package/dist/chunk-TEL44S5A.js.map +1 -0
- package/dist/{chunk-VS2VCQLP.js → chunk-TUZHOWSN.js} +2 -2
- package/dist/chunk-TUZHOWSN.js.map +1 -0
- package/dist/{chunk-6RETOV6A.js → chunk-TWRJEIBO.js} +3 -3
- package/dist/{chunk-PXF3RMFH.js → chunk-TWXUGWYX.js} +5 -3
- package/dist/{chunk-PXF3RMFH.js.map → chunk-TWXUGWYX.js.map} +1 -1
- package/dist/chunk-U7VOIXLY.js +13 -0
- package/dist/chunk-U7VOIXLY.js.map +1 -0
- package/dist/chunk-V2NSN6ET.js +13 -0
- package/dist/chunk-V2NSN6ET.js.map +1 -0
- package/dist/chunk-V36MCE25.js +19 -0
- package/dist/chunk-V36MCE25.js.map +1 -0
- package/dist/chunk-VDV24TWQ.js +13 -0
- package/dist/chunk-VDV24TWQ.js.map +1 -0
- package/dist/{chunk-YOSCEJ36.js → chunk-VM2YJ5PN.js} +2 -2
- package/dist/{chunk-MTDZG4HK.js → chunk-W27GPK6Q.js} +5 -5
- package/dist/chunk-W27GPK6Q.js.map +1 -0
- package/dist/{chunk-OLLX6YCN.js → chunk-W5FFJSCD.js} +2 -2
- package/dist/chunk-W5FFJSCD.js.map +1 -0
- package/dist/chunk-WJZHUNF5.js +19 -0
- package/dist/chunk-WJZHUNF5.js.map +1 -0
- package/dist/{chunk-XWBOD6MD.js → chunk-WTLMIOKZ.js} +2 -2
- package/dist/{chunk-LAITZAIG.js → chunk-WY5I452J.js} +2 -2
- package/dist/chunk-WY5I452J.js.map +1 -0
- package/dist/{chunk-URC6AG2N.js → chunk-XIVWFVVX.js} +2 -2
- package/dist/chunk-XIVWFVVX.js.map +1 -0
- package/dist/{chunk-RKEZOXD3.js → chunk-XR7Q6IP6.js} +2 -2
- package/dist/chunk-XR7Q6IP6.js.map +1 -0
- package/dist/{chunk-DHFBKOFZ.js → chunk-XTS6LZBP.js} +2 -2
- package/dist/chunk-XTS6LZBP.js.map +1 -0
- package/dist/{chunk-A42NID5P.js → chunk-XXB6HJ2R.js} +4 -4
- package/dist/chunk-XXB6HJ2R.js.map +1 -0
- package/dist/{chunk-5Y5JH32Z.js → chunk-XZS6J4LM.js} +3 -3
- package/dist/chunk-XZS6J4LM.js.map +1 -0
- package/dist/chunk-YHQSI4WC.js +65 -0
- package/dist/chunk-YHQSI4WC.js.map +1 -0
- package/dist/chunk-YMJHVVM4.js +13 -0
- package/dist/chunk-YMJHVVM4.js.map +1 -0
- package/dist/{chunk-UQ2F3I2S.js → chunk-YR26F7OA.js} +3 -3
- package/dist/chunk-YR26F7OA.js.map +1 -0
- package/dist/chunk-YSDLXJHE.js +16 -0
- package/dist/chunk-YSDLXJHE.js.map +1 -0
- package/dist/chunk-Z7I7YCKN.js +36 -0
- package/dist/chunk-Z7I7YCKN.js.map +1 -0
- package/dist/chunk-ZM32S3YU.js +16 -0
- package/dist/{chunk-UXMNCRG7.js.map → chunk-ZM32S3YU.js.map} +1 -1
- package/dist/{chunk-PWIEPZVO.js → chunk-ZO2MTD2E.js} +2 -2
- package/dist/chunk-ZO2MTD2E.js.map +1 -0
- package/dist/{chunk-PYALKKWZ.js → chunk-ZYRUL5E7.js} +4 -4
- package/dist/clamp.d.ts +36 -0
- package/dist/clamp.d.ts.map +1 -0
- package/dist/clamp.js +9 -0
- package/dist/clamp.js.map +1 -0
- package/dist/closestTo.d.ts +30 -0
- package/dist/closestTo.d.ts.map +1 -0
- package/dist/closestTo.js +9 -0
- package/dist/closestTo.js.map +1 -0
- package/dist/compareAsc.d.ts +28 -0
- package/dist/compareAsc.d.ts.map +1 -0
- package/dist/compareAsc.js +9 -0
- package/dist/compareAsc.js.map +1 -0
- package/dist/compareDesc.d.ts +28 -0
- package/dist/compareDesc.d.ts.map +1 -0
- package/dist/compareDesc.js +9 -0
- package/dist/compareDesc.js.map +1 -0
- package/dist/differenceInBusinessDays.d.ts +26 -0
- package/dist/differenceInBusinessDays.d.ts.map +1 -0
- package/dist/differenceInBusinessDays.js +10 -0
- package/dist/differenceInBusinessDays.js.map +1 -0
- package/dist/differenceInDays.d.ts +7 -3
- package/dist/differenceInDays.d.ts.map +1 -1
- package/dist/differenceInDays.js +3 -3
- package/dist/differenceInHours.d.ts +3 -0
- package/dist/differenceInHours.d.ts.map +1 -1
- package/dist/differenceInHours.js +3 -4
- package/dist/differenceInMicroseconds.js +3 -3
- package/dist/differenceInMilliseconds.d.ts +3 -0
- package/dist/differenceInMilliseconds.d.ts.map +1 -1
- package/dist/differenceInMilliseconds.js +4 -4
- package/dist/differenceInMinutes.d.ts +3 -0
- package/dist/differenceInMinutes.d.ts.map +1 -1
- package/dist/differenceInMinutes.js +3 -4
- package/dist/differenceInMonths.d.ts +5 -1
- package/dist/differenceInMonths.d.ts.map +1 -1
- package/dist/differenceInMonths.js +3 -3
- package/dist/differenceInNanoseconds.js +3 -3
- package/dist/differenceInQuarters.d.ts +1 -1
- package/dist/differenceInQuarters.d.ts.map +1 -1
- package/dist/differenceInQuarters.js +4 -4
- package/dist/differenceInSeconds.d.ts +3 -0
- package/dist/differenceInSeconds.d.ts.map +1 -1
- package/dist/differenceInSeconds.js +3 -4
- package/dist/differenceInWeeks.d.ts +4 -0
- package/dist/differenceInWeeks.d.ts.map +1 -1
- package/dist/differenceInWeeks.js +3 -3
- package/dist/differenceInYears.d.ts +6 -2
- package/dist/differenceInYears.d.ts.map +1 -1
- package/dist/differenceInYears.js +3 -3
- package/dist/eachDayOfInterval.d.ts +11 -4
- package/dist/eachDayOfInterval.d.ts.map +1 -1
- package/dist/eachDayOfInterval.js +4 -3
- package/dist/eachHourOfInterval.d.ts +5 -3
- package/dist/eachHourOfInterval.d.ts.map +1 -1
- package/dist/eachHourOfInterval.js +3 -3
- package/dist/eachMinuteOfInterval.d.ts.map +1 -1
- package/dist/eachMinuteOfInterval.js +3 -3
- package/dist/eachMonthOfInterval.d.ts +10 -0
- package/dist/eachMonthOfInterval.d.ts.map +1 -1
- package/dist/eachMonthOfInterval.js +5 -3
- package/dist/eachQuarterOfInterval.d.ts +3 -0
- package/dist/eachQuarterOfInterval.d.ts.map +1 -1
- package/dist/eachQuarterOfInterval.js +4 -3
- package/dist/eachWeekOfInterval.d.ts +7 -0
- package/dist/eachWeekOfInterval.d.ts.map +1 -1
- package/dist/eachWeekOfInterval.js +5 -3
- package/dist/eachYearOfInterval.d.ts +10 -0
- package/dist/eachYearOfInterval.d.ts.map +1 -1
- package/dist/eachYearOfInterval.js +5 -3
- package/dist/endOfDay.js +6 -6
- package/dist/endOfMonth.js +6 -6
- package/dist/endOfQuarter.d.ts +1 -1
- package/dist/endOfQuarter.d.ts.map +1 -1
- package/dist/endOfQuarter.js +6 -6
- package/dist/endOfWeek.d.ts +1 -1
- package/dist/endOfWeek.d.ts.map +1 -1
- package/dist/endOfWeek.js +5 -5
- package/dist/endOfYear.d.ts +1 -1
- package/dist/endOfYear.js +6 -6
- package/dist/format.d.ts +9 -4
- package/dist/format.d.ts.map +1 -1
- package/dist/format.js +4 -3
- package/dist/formatPlainDate.js +2 -2
- package/dist/getQuarter.d.ts +1 -1
- package/dist/getQuarter.d.ts.map +1 -1
- package/dist/getQuarter.js +3 -3
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +201 -142
- package/dist/intlFormatDistance.d.ts +1 -1
- package/dist/intlFormatDistance.d.ts.map +1 -1
- package/dist/intlFormatDistance.js +10 -11
- package/dist/isAfter.d.ts +8 -5
- package/dist/isAfter.d.ts.map +1 -1
- package/dist/isAfter.js +3 -4
- package/dist/isBefore.d.ts +9 -6
- package/dist/isBefore.d.ts.map +1 -1
- package/dist/isBefore.js +3 -4
- package/dist/isEqual.d.ts +27 -0
- package/dist/isEqual.d.ts.map +1 -0
- package/dist/isEqual.js +9 -0
- package/dist/isEqual.js.map +1 -0
- package/dist/isFuture.d.ts +1 -1
- package/dist/isFuture.d.ts.map +1 -1
- package/dist/isFuture.js +5 -5
- package/dist/isPast.d.ts +1 -1
- package/dist/isPast.d.ts.map +1 -1
- package/dist/isPast.js +5 -5
- package/dist/isPlainDateAfter.d.ts.map +1 -1
- package/dist/isPlainDateAfter.js +2 -2
- package/dist/isPlainDateBefore.d.ts.map +1 -1
- package/dist/isPlainDateBefore.js +2 -2
- package/dist/isPlainDateEqual.d.ts.map +1 -1
- package/dist/isPlainDateEqual.js +2 -2
- package/dist/isPlainTimeAfter.js +2 -2
- package/dist/isPlainTimeBefore.js +2 -2
- package/dist/isPlainTimeEqual.js +2 -2
- package/dist/isSameDay.js +3 -3
- package/dist/isSameHour.d.ts +1 -1
- package/dist/isSameHour.d.ts.map +1 -1
- package/dist/isSameHour.js +3 -3
- package/dist/isSameMicrosecond.d.ts +3 -3
- package/dist/isSameMicrosecond.d.ts.map +1 -1
- package/dist/isSameMicrosecond.js +3 -3
- package/dist/isSameMillisecond.d.ts +3 -3
- package/dist/isSameMillisecond.d.ts.map +1 -1
- package/dist/isSameMillisecond.js +3 -3
- package/dist/isSameMinute.d.ts +1 -1
- package/dist/isSameMinute.d.ts.map +1 -1
- package/dist/isSameMinute.js +3 -3
- package/dist/isSameMonth.d.ts +1 -1
- package/dist/isSameMonth.d.ts.map +1 -1
- package/dist/isSameMonth.js +3 -3
- package/dist/isSameNanosecond.d.ts +3 -3
- package/dist/isSameNanosecond.d.ts.map +1 -1
- package/dist/isSameNanosecond.js +3 -3
- package/dist/isSameQuarter.d.ts +1 -1
- package/dist/isSameQuarter.d.ts.map +1 -1
- package/dist/isSameQuarter.js +3 -3
- package/dist/isSameSecond.d.ts +1 -1
- package/dist/isSameSecond.d.ts.map +1 -1
- package/dist/isSameSecond.js +3 -3
- package/dist/isSameWeek.d.ts +1 -1
- package/dist/isSameWeek.d.ts.map +1 -1
- package/dist/isSameWeek.js +3 -3
- package/dist/isSameYear.d.ts +1 -1
- package/dist/isSameYear.d.ts.map +1 -1
- package/dist/isSameYear.js +3 -3
- package/dist/isToday.d.ts +21 -0
- package/dist/isToday.d.ts.map +1 -0
- package/dist/isToday.js +12 -0
- package/dist/isToday.js.map +1 -0
- package/dist/isTomorrow.d.ts +20 -0
- package/dist/isTomorrow.d.ts.map +1 -0
- package/dist/isTomorrow.js +12 -0
- package/dist/isTomorrow.js.map +1 -0
- package/dist/isWeekend.d.ts +18 -0
- package/dist/isWeekend.d.ts.map +1 -0
- package/dist/isWeekend.js +10 -0
- package/dist/isWeekend.js.map +1 -0
- package/dist/isWithinInterval.js +5 -5
- package/dist/isYesterday.d.ts +20 -0
- package/dist/isYesterday.d.ts.map +1 -0
- package/dist/isYesterday.js +12 -0
- package/dist/isYesterday.js.map +1 -0
- package/dist/max.d.ts +25 -0
- package/dist/max.d.ts.map +1 -0
- package/dist/max.js +9 -0
- package/dist/max.js.map +1 -0
- package/dist/min.d.ts +27 -0
- package/dist/min.d.ts.map +1 -0
- package/dist/min.js +9 -0
- package/dist/min.js.map +1 -0
- package/dist/now.js +2 -2
- package/dist/roundToNearestHour.d.ts +1 -1
- package/dist/roundToNearestHour.d.ts.map +1 -1
- package/dist/roundToNearestHour.js +3 -3
- package/dist/roundToNearestMinute.d.ts +1 -1
- package/dist/roundToNearestMinute.d.ts.map +1 -1
- package/dist/roundToNearestMinute.js +3 -3
- package/dist/roundToNearestSecond.d.ts +1 -1
- package/dist/roundToNearestSecond.d.ts.map +1 -1
- package/dist/roundToNearestSecond.js +3 -3
- package/dist/shared/businessDays.d.ts +24 -0
- package/dist/shared/businessDays.d.ts.map +1 -0
- package/dist/shared/businessDays.js +13 -0
- package/dist/shared/businessDays.js.map +1 -0
- package/dist/shared/compare.d.ts +22 -0
- package/dist/shared/compare.d.ts.map +1 -0
- package/dist/shared/compare.js +12 -0
- package/dist/shared/compare.js.map +1 -0
- package/dist/shared/differenceInMilliseconds.js +2 -2
- package/dist/shared/endOfDay.d.ts +1 -1
- package/dist/shared/endOfDay.d.ts.map +1 -1
- package/dist/shared/endOfDay.js +1 -1
- package/dist/shared/isAfter.d.ts +1 -1
- package/dist/shared/isAfter.d.ts.map +1 -1
- package/dist/shared/isAfter.js +1 -2
- package/dist/shared/isBefore.d.ts +1 -1
- package/dist/shared/isBefore.d.ts.map +1 -1
- package/dist/shared/isBefore.js +1 -2
- package/dist/shared/normalizeTemporalInput.d.ts +1 -1
- package/dist/shared/normalizeTemporalInput.d.ts.map +1 -1
- package/dist/shared/normalizeTemporalInput.js +2 -2
- package/dist/shared/normalizeWithPlainDate.d.ts +1 -1
- package/dist/shared/normalizeWithPlainDate.d.ts.map +1 -1
- package/dist/shared/normalizeWithPlainDate.js +4 -4
- package/dist/shared/nowZoned.js +3 -3
- package/dist/shared/plainDateToZonedDateTime.js +2 -2
- package/dist/shared/relativeDay.d.ts +9 -0
- package/dist/shared/relativeDay.d.ts.map +1 -0
- package/dist/shared/relativeDay.js +11 -0
- package/dist/shared/relativeDay.js.map +1 -0
- package/dist/shared/temporal.d.ts +1 -0
- package/dist/shared/temporal.d.ts.map +1 -1
- package/dist/shared/temporal.js +3 -1
- package/dist/simpleFormat.js +2 -2
- package/dist/startOfDay.js +5 -5
- package/dist/startOfMonth.js +5 -5
- package/dist/startOfQuarter.d.ts +2 -2
- package/dist/startOfQuarter.d.ts.map +1 -1
- package/dist/startOfQuarter.js +5 -5
- package/dist/startOfWeek.d.ts +1 -1
- package/dist/startOfWeek.d.ts.map +1 -1
- package/dist/startOfWeek.js +4 -4
- package/dist/startOfYear.d.ts +1 -1
- package/dist/startOfYear.js +5 -5
- package/dist/subBusinessDays.d.ts +23 -0
- package/dist/subBusinessDays.d.ts.map +1 -0
- package/dist/subBusinessDays.js +11 -0
- package/dist/subBusinessDays.js.map +1 -0
- package/dist/subDays.d.ts +7 -4
- package/dist/subDays.d.ts.map +1 -1
- package/dist/subDays.js +4 -4
- package/dist/subHours.d.ts +1 -1
- package/dist/subHours.d.ts.map +1 -1
- package/dist/subHours.js +4 -4
- package/dist/subMicroseconds.d.ts +1 -1
- package/dist/subMicroseconds.d.ts.map +1 -1
- package/dist/subMicroseconds.js +4 -4
- package/dist/subMilliseconds.d.ts +1 -1
- package/dist/subMilliseconds.d.ts.map +1 -1
- package/dist/subMilliseconds.js +4 -4
- package/dist/subMinutes.d.ts +1 -1
- package/dist/subMinutes.d.ts.map +1 -1
- package/dist/subMinutes.js +4 -4
- package/dist/subMonths.d.ts +7 -4
- package/dist/subMonths.d.ts.map +1 -1
- package/dist/subMonths.js +4 -4
- package/dist/subNanoseconds.d.ts +1 -1
- package/dist/subNanoseconds.d.ts.map +1 -1
- package/dist/subNanoseconds.js +4 -4
- package/dist/subQuarters.d.ts +3 -3
- package/dist/subQuarters.d.ts.map +1 -1
- package/dist/subQuarters.js +4 -4
- package/dist/subSeconds.d.ts +1 -1
- package/dist/subSeconds.d.ts.map +1 -1
- package/dist/subSeconds.js +4 -4
- package/dist/subWeeks.d.ts +7 -4
- package/dist/subWeeks.d.ts.map +1 -1
- package/dist/subWeeks.js +4 -4
- package/dist/subYears.d.ts +7 -4
- package/dist/subYears.d.ts.map +1 -1
- package/dist/subYears.js +4 -4
- package/dist/toDate.d.ts +4 -4
- package/dist/toDate.d.ts.map +1 -1
- package/dist/toDate.js +2 -2
- package/dist/toInstant.js +2 -2
- package/dist/toIso.d.ts +1 -1
- package/dist/toIso.d.ts.map +1 -1
- package/dist/toIso.js +2 -2
- package/dist/toIso9075.d.ts +1 -1
- package/dist/toIso9075.d.ts.map +1 -1
- package/dist/toIso9075.js +2 -2
- package/dist/toPlainDate.d.ts.map +1 -1
- package/dist/toPlainDate.js +2 -2
- package/dist/toPlainTime.js +2 -2
- package/dist/toZonedTime.js +2 -2
- package/dist/today.js +2 -2
- package/package.json +7 -4
- package/dist/chunk-25CVKMFC.js.map +0 -1
- package/dist/chunk-2E4KCD3Y.js.map +0 -1
- package/dist/chunk-2EFJSF2R.js +0 -13
- package/dist/chunk-2EFJSF2R.js.map +0 -1
- package/dist/chunk-3LTTYG6N.js.map +0 -1
- package/dist/chunk-3TS3D7WD.js.map +0 -1
- package/dist/chunk-4PGGOVSG.js.map +0 -1
- package/dist/chunk-567DXBLA.js +0 -27
- package/dist/chunk-567DXBLA.js.map +0 -1
- package/dist/chunk-5Y5JH32Z.js.map +0 -1
- package/dist/chunk-6UMISP3B.js.map +0 -1
- package/dist/chunk-6YU6BQOZ.js +0 -14
- package/dist/chunk-6YU6BQOZ.js.map +0 -1
- package/dist/chunk-7K5BJ6F7.js +0 -18
- package/dist/chunk-7K5BJ6F7.js.map +0 -1
- package/dist/chunk-7SCQV77A.js.map +0 -1
- package/dist/chunk-A42NID5P.js.map +0 -1
- package/dist/chunk-AVGNRINZ.js +0 -9
- package/dist/chunk-AVGNRINZ.js.map +0 -1
- package/dist/chunk-BEGD73DT.js.map +0 -1
- package/dist/chunk-BTXU3OGV.js.map +0 -1
- package/dist/chunk-CCVPCHUO.js.map +0 -1
- package/dist/chunk-CIA46DWB.js +0 -17
- package/dist/chunk-CIA46DWB.js.map +0 -1
- package/dist/chunk-CSOSM46M.js.map +0 -1
- package/dist/chunk-DCCHY45G.js +0 -17
- package/dist/chunk-DCCHY45G.js.map +0 -1
- package/dist/chunk-DCFRBZBY.js +0 -32
- package/dist/chunk-DCFRBZBY.js.map +0 -1
- package/dist/chunk-DHFBKOFZ.js.map +0 -1
- package/dist/chunk-DMFV2AL7.js.map +0 -1
- package/dist/chunk-EBVLBLR3.js.map +0 -1
- package/dist/chunk-EMZFQEWM.js.map +0 -1
- package/dist/chunk-EU3SYJHM.js +0 -17
- package/dist/chunk-EU3SYJHM.js.map +0 -1
- package/dist/chunk-EVEMK2K2.js +0 -13
- package/dist/chunk-EVEMK2K2.js.map +0 -1
- package/dist/chunk-FCJO72WG.js.map +0 -1
- package/dist/chunk-G2U5WGRP.js +0 -14
- package/dist/chunk-G2U5WGRP.js.map +0 -1
- package/dist/chunk-GR7322AQ.js.map +0 -1
- package/dist/chunk-H5BHFVEN.js.map +0 -1
- package/dist/chunk-IAXVREU5.js.map +0 -1
- package/dist/chunk-IONQ6TOR.js.map +0 -1
- package/dist/chunk-JBM7DESQ.js +0 -13
- package/dist/chunk-JBM7DESQ.js.map +0 -1
- package/dist/chunk-JK4WDDWU.js +0 -28
- package/dist/chunk-JK4WDDWU.js.map +0 -1
- package/dist/chunk-JQFD563S.js.map +0 -1
- package/dist/chunk-KGO3G2QB.js +0 -18
- package/dist/chunk-KGO3G2QB.js.map +0 -1
- package/dist/chunk-KPB5ENNM.js.map +0 -1
- package/dist/chunk-LAITZAIG.js.map +0 -1
- package/dist/chunk-LODULPI3.js +0 -17
- package/dist/chunk-LODULPI3.js.map +0 -1
- package/dist/chunk-LSKER4FN.js +0 -13
- package/dist/chunk-LSKER4FN.js.map +0 -1
- package/dist/chunk-M7Y67IAB.js.map +0 -1
- package/dist/chunk-MDXN3WMH.js +0 -13
- package/dist/chunk-MDXN3WMH.js.map +0 -1
- package/dist/chunk-MENMDB6M.js.map +0 -1
- package/dist/chunk-MNV2H4N6.js.map +0 -1
- package/dist/chunk-MTDZG4HK.js.map +0 -1
- package/dist/chunk-NEHYVVTH.js +0 -13
- package/dist/chunk-NTMT5XGC.js.map +0 -1
- package/dist/chunk-OFIPZPEA.js.map +0 -1
- package/dist/chunk-OKXCGA4Y.js +0 -13
- package/dist/chunk-OLLX6YCN.js.map +0 -1
- package/dist/chunk-OQNFKOPA.js.map +0 -1
- package/dist/chunk-OSBVYUOQ.js.map +0 -1
- package/dist/chunk-PWIEPZVO.js.map +0 -1
- package/dist/chunk-R7ZCA6AQ.js.map +0 -1
- package/dist/chunk-RKEZOXD3.js.map +0 -1
- package/dist/chunk-RL2NW7HP.js.map +0 -1
- package/dist/chunk-SCD2JNY3.js.map +0 -1
- package/dist/chunk-SDW4W3XE.js.map +0 -1
- package/dist/chunk-T5WSO6US.js.map +0 -1
- package/dist/chunk-UQ2F3I2S.js.map +0 -1
- package/dist/chunk-URC6AG2N.js.map +0 -1
- package/dist/chunk-UTN7ZKL4.js +0 -30
- package/dist/chunk-UTN7ZKL4.js.map +0 -1
- package/dist/chunk-UXMNCRG7.js +0 -13
- package/dist/chunk-VQPIPLHX.js +0 -14
- package/dist/chunk-VQPIPLHX.js.map +0 -1
- package/dist/chunk-VS2VCQLP.js.map +0 -1
- package/dist/chunk-WGLZHBJG.js.map +0 -1
- package/dist/chunk-WTLAKRCT.js.map +0 -1
- package/dist/chunk-X3ARINEH.js +0 -19
- package/dist/chunk-X3ARINEH.js.map +0 -1
- package/dist/chunk-YRCFMGBH.js +0 -54
- package/dist/chunk-YRCFMGBH.js.map +0 -1
- package/dist/chunk-ZG4ROOWI.js +0 -14
- package/dist/chunk-ZG4ROOWI.js.map +0 -1
- package/dist/chunk-ZGWLIISB.js +0 -40
- package/dist/chunk-ZGWLIISB.js.map +0 -1
- package/dist/chunk-ZOHYNJUD.js.map +0 -1
- package/dist/chunk-ZYU3P74L.js +0 -13
- package/dist/chunk-ZYU3P74L.js.map +0 -1
- package/dist/temporal.d.js +0 -1
- /package/dist/{temporal.d.js.map → addBusinessDays.js.map} +0 -0
- /package/dist/{chunk-L5AMAEWX.js.map → chunk-2AID4P2C.js.map} +0 -0
- /package/dist/{chunk-DBVGH55Z.js.map → chunk-2OSJHJV5.js.map} +0 -0
- /package/dist/{chunk-PURKYS5T.js.map → chunk-6XEHR3MG.js.map} +0 -0
- /package/dist/{chunk-RLVCSGRU.js.map → chunk-AVPV4BA5.js.map} +0 -0
- /package/dist/{chunk-YNLBS34B.js.map → chunk-B6VZ2AKN.js.map} +0 -0
- /package/dist/{chunk-S7L5KBI4.js.map → chunk-FAVYJIRM.js.map} +0 -0
- /package/dist/{chunk-BV32K227.js.map → chunk-HQ3YMKQ5.js.map} +0 -0
- /package/dist/{chunk-NX7MXLFS.js.map → chunk-KTMCYEU5.js.map} +0 -0
- /package/dist/{chunk-ELUSLRWQ.js.map → chunk-LRIVI5ZC.js.map} +0 -0
- /package/dist/{chunk-M4KDJ4I4.js.map → chunk-LXOLIOAD.js.map} +0 -0
- /package/dist/{chunk-PX2I4GCF.js.map → chunk-NL5MQVGD.js.map} +0 -0
- /package/dist/{chunk-VC7RTDJP.js.map → chunk-NST7NM5Q.js.map} +0 -0
- /package/dist/{chunk-TQUKIG26.js.map → chunk-QJYU5TLL.js.map} +0 -0
- /package/dist/{chunk-VQAGV72H.js.map → chunk-QVSHSIA3.js.map} +0 -0
- /package/dist/{chunk-VKXN4FQD.js.map → chunk-SXR2SO42.js.map} +0 -0
- /package/dist/{chunk-6RETOV6A.js.map → chunk-TWRJEIBO.js.map} +0 -0
- /package/dist/{chunk-YOSCEJ36.js.map → chunk-VM2YJ5PN.js.map} +0 -0
- /package/dist/{chunk-XWBOD6MD.js.map → chunk-WTLMIOKZ.js.map} +0 -0
- /package/dist/{chunk-PYALKKWZ.js.map → chunk-ZYRUL5E7.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/format.ts"],"sourcesContent":["import { type Temporal, isInstant, isPlainDate } from './shared/temporal';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\nimport type { Timezone } from './types';\nimport { formatPlainDate, type FormatPlainDateOptions } from './formatPlainDate';\n\nexport interface FormatOptions {\n locale?: string;\n timeZone?: Timezone;\n}\n\n/**\n * Format a Temporal.Instant, ZonedDateTime, or PlainDate using date-fns-like format tokens.\n * Uses Intl.DateTimeFormat for localized parts. PlainDate inputs delegate to\n * formatPlainDate and accept locale options only; no time or timezone is invented.\n *\n * @param input - A Temporal.Instant, Temporal.ZonedDateTime, or Temporal.PlainDate 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.PlainDate,\n formatStr: string,\n options?: FormatPlainDateOptions & { timeZone?: never }\n): string;\nexport function format(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n formatStr: string,\n options?: FormatOptions\n): string;\nexport function format(\n input: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate,\n formatStr: string,\n options: FormatOptions = {}\n): string {\n if (isPlainDate(input)) {\n if (options.timeZone !== undefined) {\n throw new TypeError('PlainDate formatting does not accept a timezone');\n }\n return formatPlainDate(input, formatStr, options);\n }\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 = isInstant(input) ? 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 (locale-aware; English widths applied only for ASCII AM/PM)\n case 'aaaaa': {\n const period = getDayPeriod(zonedDateTime, locale);\n if (isAsciiAmPm(period)) return isAm(period) ? 'a' : 'p';\n return period.charAt(0).toLowerCase();\n }\n case 'aaaa': {\n const period = getDayPeriod(zonedDateTime, locale);\n if (isAsciiAmPm(period)) return isAm(period) ? 'a.m.' : 'p.m.';\n return period;\n }\n case 'aaa':\n return getDayPeriod(zonedDateTime, locale).toLowerCase();\n case 'aa':\n case 'a':\n return getDayPeriod(zonedDateTime, 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 case 'XXXX':\n case 'XXX':\n case 'XX':\n case 'X':\n case 'xxxxx':\n case 'xxxx':\n case 'xxx':\n case 'xx':\n case 'x':\n return formatTimezoneOffset(zonedDateTime, token);\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' | 'hour' | 'minute' | 'second' | 'timeZoneName',\n style: 'narrow' | 'short' | 'long' | 'numeric' | '2-digit',\n locale: string\n): string {\n const options: Intl.DateTimeFormatOptions = {\n [part]: style,\n timeZone: zonedDateTime.timeZoneId,\n calendar: zonedDateTime.calendarId === 'iso8601' ? undefined : zonedDateTime.calendarId,\n };\n return new Intl.DateTimeFormat(locale, options)\n .formatToParts(zonedDateTime.epochMilliseconds)\n .find(value => value.type === part)?.value ?? '';\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 formatTimezoneOffset(zonedDateTime: Temporal.ZonedDateTime, token: string): string {\n if (token[0] === 'X' && zonedDateTime.offsetNanoseconds === 0) return 'Z';\n\n // Temporal supplies integer HH:mm[:ss] fields. Widths 1–3 omit seconds;\n // widths 4–5 retain them when present, as specified by Unicode date tokens.\n const offset = token.length >= 4 ? zonedDateTime.offset : zonedDateTime.offset.slice(0, 6);\n if (token.length === 1 && offset.endsWith(':00')) return offset.slice(0, 3);\n return token.length === 3 || token.length === 5 ? offset : offset.replaceAll(':', '');\n}\n\n/**\n * Locale-correct day period (AM/PM equivalent) via Intl.formatToParts.\n * Returns the locale's own value, e.g. \"AM\"/\"PM\" (en), \"p. m.\" (es), \"午後\" (ja).\n */\nfunction getDayPeriod(zonedDateTime: Temporal.ZonedDateTime, locale: string): string {\n const parts = new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n hour12: true,\n timeZone: zonedDateTime.timeZoneId,\n }).formatToParts(zonedDateTime.epochMilliseconds);\n return parts.find((p) => p.type === 'dayPeriod')?.value ?? '';\n}\n\n/** True when the day-period is recognizably ASCII AM/PM (so English widths apply). */\nfunction isAsciiAmPm(period: string): boolean {\n const normalized = period.toUpperCase().replace(/[.\\s]/g, '');\n return normalized === 'AM' || normalized === 'PM';\n}\n\n/** True for the AM half (only meaningful when isAsciiAmPm is true). */\nfunction isAm(period: string): boolean {\n return period.toUpperCase().replace(/[.\\s]/g, '').startsWith('A');\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
addHours
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-XTS6LZBP.js";
|
|
4
4
|
|
|
5
5
|
// src/subHours.ts
|
|
6
6
|
function subHours(input, hours) {
|
|
@@ -10,4 +10,4 @@ function subHours(input, hours) {
|
|
|
10
10
|
export {
|
|
11
11
|
subHours
|
|
12
12
|
};
|
|
13
|
-
//# sourceMappingURL=chunk-
|
|
13
|
+
//# sourceMappingURL=chunk-23APOESH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/subHours.ts"],"sourcesContent":["import type { Temporal } from './shared/temporal';\nimport { addHours } from './addHours';\n\n/**\n * Subtracts the specified number of hours from a datetime.\n *\n * This is a convenience wrapper around addHours with negated value.\n * Properly handles DST transitions through Temporal API.\n *\n * @param input - A Temporal.Instant (UTC) or Temporal.ZonedDateTime\n * @param hours - Number of hours to subtract\n * @returns ZonedDateTime with hours subtracted, in the same timezone as input\n *\n * @example\n * ```ts\n * const instant = Temporal.Instant.from('2025-01-20T15:00:00Z');\n * const result = subHours(instant, 3);\n * // 2025-01-20T12:00:00Z[UTC] (3 hours earlier)\n * ```\n */\nexport function subHours(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n hours: number\n): Temporal.ZonedDateTime {\n return addHours(input, -hours);\n}\n"],"mappings":";;;;;AAoBO,SAAS,SACd,OACA,OACwB;AACxB,SAAO,SAAS,OAAO,CAAC,KAAK;AAC/B;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Temporal
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BSVOJYJ7.js";
|
|
4
4
|
|
|
5
5
|
// src/shared/plainDateToZonedDateTime.ts
|
|
6
6
|
function plainDateToZonedDateTime(date, timezone) {
|
|
@@ -13,4 +13,4 @@ function plainDateToZonedDateTime(date, timezone) {
|
|
|
13
13
|
export {
|
|
14
14
|
plainDateToZonedDateTime
|
|
15
15
|
};
|
|
16
|
-
//# sourceMappingURL=chunk-
|
|
16
|
+
//# sourceMappingURL=chunk-2AID4P2C.js.map
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import {
|
|
2
|
+
normalizeTemporalInput
|
|
3
|
+
} from "./chunk-JNAWZ4RN.js";
|
|
4
|
+
import {
|
|
5
|
+
isPlainDate
|
|
6
|
+
} from "./chunk-BSVOJYJ7.js";
|
|
7
|
+
|
|
8
|
+
// src/differenceInMonths.ts
|
|
9
|
+
function differenceInMonths(laterDate, earlierDate, options) {
|
|
10
|
+
if (isPlainDate(laterDate) || isPlainDate(earlierDate)) {
|
|
11
|
+
if (!isPlainDate(laterDate) || !isPlainDate(earlierDate)) {
|
|
12
|
+
throw new TypeError("PlainDate differences require two PlainDate values");
|
|
13
|
+
}
|
|
14
|
+
const duration2 = earlierDate.until(laterDate.toString(), { largestUnit: "days" });
|
|
15
|
+
const precise2 = duration2.total({ unit: "months", relativeTo: earlierDate });
|
|
16
|
+
return options?.fractional ? precise2 : Math.trunc(precise2);
|
|
17
|
+
}
|
|
18
|
+
const zoned1 = normalizeTemporalInput(laterDate);
|
|
19
|
+
const zoned2 = normalizeTemporalInput(earlierDate);
|
|
20
|
+
const duration = zoned2.until(zoned1.toString(), { largestUnit: "hours" });
|
|
21
|
+
const precise = duration.total({ unit: "months", relativeTo: zoned2 });
|
|
22
|
+
return options?.fractional ? precise : Math.trunc(precise);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export {
|
|
26
|
+
differenceInMonths
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=chunk-2LN57UVR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/differenceInMonths.ts"],"sourcesContent":["import { Temporal, isPlainDate } from './shared/temporal';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\nimport type { DifferenceOptions } from './shared/differenceOptions';\n\n/**\n * Two PlainDates use calendar arithmetic without a timezone. Their calendars must match.\n * Native and polyfill inputs may be mixed within the same Temporal domain.\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 * @param options - Optional { fractional } to return the precise value\n * @returns The number of months between the dates, truncated toward zero (pass { fractional: true } for the precise value)\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-04: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 * // Pass { fractional: true } for partial-unit precision\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\n * differenceInMonths(later, earlier, { fractional: true }); // ~0.5\n * ```\n */\nexport function differenceInMonths(\n laterDate: Temporal.PlainDate,\n earlierDate: Temporal.PlainDate,\n options?: DifferenceOptions\n): number;\nexport function differenceInMonths(\n laterDate: Temporal.Instant | Temporal.ZonedDateTime,\n earlierDate: Temporal.Instant | Temporal.ZonedDateTime,\n options?: DifferenceOptions\n): number;\nexport function differenceInMonths(\n laterDate: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate,\n earlierDate: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate,\n options?: DifferenceOptions\n): number {\n if (isPlainDate(laterDate) || isPlainDate(earlierDate)) {\n if (!isPlainDate(laterDate) || !isPlainDate(earlierDate)) {\n throw new TypeError('PlainDate differences require two PlainDate values');\n }\n const duration = earlierDate.until(laterDate.toString(), { largestUnit: 'days' });\n const precise = duration.total({ unit: 'months', relativeTo: earlierDate });\n return options?.fractional ? precise : Math.trunc(precise);\n }\n const zoned1 = normalizeTemporalInput(laterDate);\n const zoned2 = normalizeTemporalInput(earlierDate);\n\n // A canonical string preserves zone, calendar, and precision across implementations.\n const duration = zoned2.until(zoned1.toString(), { largestUnit: 'hours' });\n const precise = duration.total({ unit: 'months', relativeTo: zoned2 });\n return options?.fractional ? precise : Math.trunc(precise);\n}\n"],"mappings":";;;;;;;;AA2DO,SAAS,mBACd,WACA,aACA,SACQ;AACR,MAAI,YAAY,SAAS,KAAK,YAAY,WAAW,GAAG;AACtD,QAAI,CAAC,YAAY,SAAS,KAAK,CAAC,YAAY,WAAW,GAAG;AACxD,YAAM,IAAI,UAAU,oDAAoD;AAAA,IAC1E;AACA,UAAMA,YAAW,YAAY,MAAM,UAAU,SAAS,GAAG,EAAE,aAAa,OAAO,CAAC;AAChF,UAAMC,WAAUD,UAAS,MAAM,EAAE,MAAM,UAAU,YAAY,YAAY,CAAC;AAC1E,WAAO,SAAS,aAAaC,WAAU,KAAK,MAAMA,QAAO;AAAA,EAC3D;AACA,QAAM,SAAS,uBAAuB,SAAS;AAC/C,QAAM,SAAS,uBAAuB,WAAW;AAGjD,QAAM,WAAW,OAAO,MAAM,OAAO,SAAS,GAAG,EAAE,aAAa,QAAQ,CAAC;AACzE,QAAM,UAAU,SAAS,MAAM,EAAE,MAAM,UAAU,YAAY,OAAO,CAAC;AACrE,SAAO,SAAS,aAAa,UAAU,KAAK,MAAM,OAAO;AAC3D;","names":["duration","precise"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
plainDateToZonedDateTime
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-2AID4P2C.js";
|
|
4
4
|
import {
|
|
5
5
|
normalizeTemporalInput
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-JNAWZ4RN.js";
|
|
7
7
|
import {
|
|
8
8
|
isPlainDate
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-BSVOJYJ7.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-
|
|
19
|
+
//# sourceMappingURL=chunk-2MFBXSTL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/shared/normalizeWithPlainDate.ts"],"sourcesContent":["import { type Temporal, isPlainDate } from './temporal';\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 isPlainDate(input)\n ? plainDateToZonedDateTime(input, timezone!)\n : normalizeTemporalInput(input);\n}\n"],"mappings":";;;;;;;;;;;AAyBO,SAAS,uBACd,OACA,UACwB;AACxB,SAAO,YAAY,KAAK,IACpB,yBAAyB,OAAO,QAAS,IACzC,uBAAuB,KAAK;AAClC;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
normalizeTemporalInput
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-JNAWZ4RN.js";
|
|
4
4
|
|
|
5
5
|
// src/differenceInMicroseconds.ts
|
|
6
6
|
function differenceInMicroseconds(laterDate, earlierDate) {
|
|
@@ -13,4 +13,4 @@ function differenceInMicroseconds(laterDate, earlierDate) {
|
|
|
13
13
|
export {
|
|
14
14
|
differenceInMicroseconds
|
|
15
15
|
};
|
|
16
|
-
//# sourceMappingURL=chunk-
|
|
16
|
+
//# sourceMappingURL=chunk-2OSJHJV5.js.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
addWeeks
|
|
3
|
+
} from "./chunk-426MJGNT.js";
|
|
4
|
+
import {
|
|
5
|
+
isPlainDate
|
|
6
|
+
} from "./chunk-BSVOJYJ7.js";
|
|
7
|
+
|
|
8
|
+
// src/subWeeks.ts
|
|
9
|
+
function subWeeks(input, weeks) {
|
|
10
|
+
return isPlainDate(input) ? addWeeks(input, -weeks) : addWeeks(input, -weeks);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export {
|
|
14
|
+
subWeeks
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=chunk-33MHEBQR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/subWeeks.ts"],"sourcesContent":["import { type Temporal, isPlainDate } from './shared/temporal';\nimport { addWeeks } from './addWeeks';\n\n/**\n * Subtracts the specified number of weeks from a datetime or date.\n *\n * This is a convenience wrapper around addWeeks with negated value.\n * Properly handles DST transitions and calendar edge cases through Temporal API.\n *\n * PlainDate inputs stay in calendar space, preserving their calendar without a timezone.\n *\n * @param input - A Temporal.Instant (UTC), Temporal.ZonedDateTime, or Temporal.PlainDate\n * @param weeks - Number of weeks to subtract\n * @returns PlainDate for a date input; otherwise ZonedDateTime with weeks subtracted\n *\n * @example\n * ```ts\n * const instant = Temporal.Instant.from('2025-02-03T12:00:00Z');\n * const result = subWeeks(instant, 2);\n * // 2025-01-20T12:00:00Z[UTC] (2 weeks earlier)\n * ```\n */\nexport function subWeeks(input: Temporal.PlainDate, weeks: number): Temporal.PlainDate;\nexport function subWeeks(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n weeks: number\n): Temporal.ZonedDateTime;\nexport function subWeeks(\n input: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate,\n weeks: number\n): Temporal.ZonedDateTime | Temporal.PlainDate {\n // Narrow each branch to the matching addWeeks overload.\n return isPlainDate(input) ? addWeeks(input, -weeks) : addWeeks(input, -weeks);\n}\n"],"mappings":";;;;;;;;AA2BO,SAAS,SACd,OACA,OAC6C;AAE7C,SAAO,YAAY,KAAK,IAAI,SAAS,OAAO,CAAC,KAAK,IAAI,SAAS,OAAO,CAAC,KAAK;AAC9E;","names":[]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import {
|
|
2
|
+
normalizeTemporalInput
|
|
3
|
+
} from "./chunk-JNAWZ4RN.js";
|
|
4
|
+
import {
|
|
5
|
+
isPlainDate
|
|
6
|
+
} from "./chunk-BSVOJYJ7.js";
|
|
7
|
+
|
|
8
|
+
// src/differenceInYears.ts
|
|
9
|
+
function differenceInYears(laterDate, earlierDate, options) {
|
|
10
|
+
if (isPlainDate(laterDate) || isPlainDate(earlierDate)) {
|
|
11
|
+
if (!isPlainDate(laterDate) || !isPlainDate(earlierDate)) {
|
|
12
|
+
throw new TypeError("PlainDate differences require two PlainDate values");
|
|
13
|
+
}
|
|
14
|
+
const duration2 = earlierDate.until(laterDate.toString(), { largestUnit: "days" });
|
|
15
|
+
const precise2 = duration2.total({ unit: "years", relativeTo: earlierDate });
|
|
16
|
+
return options?.fractional ? precise2 : Math.trunc(precise2);
|
|
17
|
+
}
|
|
18
|
+
const zoned1 = normalizeTemporalInput(laterDate);
|
|
19
|
+
const zoned2 = normalizeTemporalInput(earlierDate);
|
|
20
|
+
const duration = zoned2.until(zoned1.toString(), { largestUnit: "hours" });
|
|
21
|
+
const precise = duration.total({ unit: "years", relativeTo: zoned2 });
|
|
22
|
+
return options?.fractional ? precise : Math.trunc(precise);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export {
|
|
26
|
+
differenceInYears
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=chunk-35IJG3T2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/differenceInYears.ts"],"sourcesContent":["import { Temporal, isPlainDate } from './shared/temporal';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\nimport type { DifferenceOptions } from './shared/differenceOptions';\n\n/**\n * Two PlainDates use calendar arithmetic without a timezone. Their calendars must match.\n * Native and polyfill inputs may be mixed within the same Temporal domain.\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 * @param options - Optional { fractional } to return the precise value\n * @returns The number of years between the dates, truncated toward zero (pass { fractional: true } for the precise value)\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-04:00[America/New_York]');\n * const earlier = Temporal.ZonedDateTime.from('2025-06-15T15:00:00-04:00[America/New_York]');\n *\n * differenceInYears(later, earlier); // 5\n * ```\n *\n * @example\n * ```ts\n * // Pass { fractional: true } for partial-unit precision\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\n * differenceInYears(later, earlier, { fractional: true }); // ~0.5\n * ```\n */\nexport function differenceInYears(\n laterDate: Temporal.PlainDate,\n earlierDate: Temporal.PlainDate,\n options?: DifferenceOptions\n): number;\nexport function differenceInYears(\n laterDate: Temporal.Instant | Temporal.ZonedDateTime,\n earlierDate: Temporal.Instant | Temporal.ZonedDateTime,\n options?: DifferenceOptions\n): number;\nexport function differenceInYears(\n laterDate: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate,\n earlierDate: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate,\n options?: DifferenceOptions\n): number {\n if (isPlainDate(laterDate) || isPlainDate(earlierDate)) {\n if (!isPlainDate(laterDate) || !isPlainDate(earlierDate)) {\n throw new TypeError('PlainDate differences require two PlainDate values');\n }\n const duration = earlierDate.until(laterDate.toString(), { largestUnit: 'days' });\n const precise = duration.total({ unit: 'years', relativeTo: earlierDate });\n return options?.fractional ? precise : Math.trunc(precise);\n }\n const zoned1 = normalizeTemporalInput(laterDate);\n const zoned2 = normalizeTemporalInput(earlierDate);\n\n // A canonical string preserves zone, calendar, and precision across implementations.\n const duration = zoned2.until(zoned1.toString(), { largestUnit: 'hours' });\n const precise = duration.total({ unit: 'years', relativeTo: zoned2 });\n return options?.fractional ? precise : Math.trunc(precise);\n}\n"],"mappings":";;;;;;;;AA2DO,SAAS,kBACd,WACA,aACA,SACQ;AACR,MAAI,YAAY,SAAS,KAAK,YAAY,WAAW,GAAG;AACtD,QAAI,CAAC,YAAY,SAAS,KAAK,CAAC,YAAY,WAAW,GAAG;AACxD,YAAM,IAAI,UAAU,oDAAoD;AAAA,IAC1E;AACA,UAAMA,YAAW,YAAY,MAAM,UAAU,SAAS,GAAG,EAAE,aAAa,OAAO,CAAC;AAChF,UAAMC,WAAUD,UAAS,MAAM,EAAE,MAAM,SAAS,YAAY,YAAY,CAAC;AACzE,WAAO,SAAS,aAAaC,WAAU,KAAK,MAAMA,QAAO;AAAA,EAC3D;AACA,QAAM,SAAS,uBAAuB,SAAS;AAC/C,QAAM,SAAS,uBAAuB,WAAW;AAGjD,QAAM,WAAW,OAAO,MAAM,OAAO,SAAS,GAAG,EAAE,aAAa,QAAQ,CAAC;AACzE,QAAM,UAAU,SAAS,MAAM,EAAE,MAAM,SAAS,YAAY,OAAO,CAAC;AACpE,SAAO,SAAS,aAAa,UAAU,KAAK,MAAM,OAAO;AAC3D;","names":["duration","precise"]}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
differenceInMinutes
|
|
3
|
-
} from "./chunk-EMZFQEWM.js";
|
|
4
|
-
import {
|
|
5
|
-
differenceInMonths
|
|
6
|
-
} from "./chunk-CIA46DWB.js";
|
|
7
1
|
import {
|
|
8
2
|
differenceInSeconds
|
|
9
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-D3BJEYTR.js";
|
|
10
4
|
import {
|
|
11
5
|
differenceInWeeks
|
|
12
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-MXUGDXSG.js";
|
|
13
7
|
import {
|
|
14
8
|
differenceInYears
|
|
15
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-35IJG3T2.js";
|
|
16
10
|
import {
|
|
17
11
|
differenceInDays
|
|
18
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-E5HJJFUI.js";
|
|
19
13
|
import {
|
|
20
14
|
differenceInHours
|
|
21
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-SLBDEPBP.js";
|
|
16
|
+
import {
|
|
17
|
+
differenceInMinutes
|
|
18
|
+
} from "./chunk-OYTQWJ2O.js";
|
|
19
|
+
import {
|
|
20
|
+
differenceInMonths
|
|
21
|
+
} from "./chunk-2LN57UVR.js";
|
|
22
22
|
import {
|
|
23
23
|
normalizeTemporalInput
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-JNAWZ4RN.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-
|
|
95
|
+
//# sourceMappingURL=chunk-3IYGWL34.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/intlFormatDistance.ts"],"sourcesContent":["import type { Temporal } from './shared/temporal';\nimport { differenceInDays } from './differenceInDays.js';\nimport { differenceInHours } from './differenceInHours.js';\nimport { differenceInMinutes } from './differenceInMinutes.js';\nimport { differenceInMonths } from './differenceInMonths.js';\nimport { differenceInSeconds } from './differenceInSeconds.js';\nimport { differenceInWeeks } from './differenceInWeeks.js';\nimport { differenceInYears } from './differenceInYears.js';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput.js';\n\nexport interface IntlFormatDistanceOptions {\n /**\n * The unit to force formatting in. If not specified, the unit will be automatically selected.\n */\n unit?: Intl.RelativeTimeFormatUnit;\n /**\n * The locale to use for formatting. Defaults to the system locale.\n */\n locale?: string | string[];\n /**\n * The locale matching algorithm to use.\n */\n localeMatcher?: 'best fit' | 'lookup';\n /**\n * Whether to use numeric values always, or use special strings like \"yesterday\", \"tomorrow\", etc.\n * Defaults to 'auto'.\n */\n numeric?: 'always' | 'auto';\n /**\n * The formatting style to use.\n */\n style?: 'long' | 'short' | 'narrow';\n}\n\n/**\n * Formats the distance between two dates as a human-readable, internationalized string.\n *\n * The function automatically picks the most appropriate unit based on the distance between dates.\n * For example, if the distance is a few hours, it returns \"in X hours\". If the distance is a few\n * months, it returns \"in X months\".\n *\n * You can force a specific unit using the `options.unit` parameter.\n *\n * @param laterDate - The later date to compare\n * @param earlierDate - The earlier date to compare with\n * @param options - Formatting options\n * @returns The formatted distance string\n *\n * @example\n * ```typescript\n * const later = Temporal.Instant.from('2024-01-01T12:00:00Z');\n * const earlier = Temporal.Instant.from('2024-01-01T11:00:00Z');\n *\n * intlFormatDistance(later, earlier);\n * // => 'in 1 hour'\n *\n * intlFormatDistance(earlier, later);\n * // => '1 hour ago'\n * ```\n *\n * @example\n * ```typescript\n * // Force a specific unit\n * const later = Temporal.Instant.from('2025-01-01T00:00:00Z');\n * const earlier = Temporal.Instant.from('2024-01-01T00:00:00Z');\n *\n * intlFormatDistance(later, earlier, { unit: 'quarter' });\n * // => 'in 4 quarters'\n * ```\n *\n * @example\n * ```typescript\n * // Use a different locale\n * const later = Temporal.Instant.from('2024-01-01T12:00:00Z');\n * const earlier = Temporal.Instant.from('2024-01-01T11:00:00Z');\n *\n * intlFormatDistance(later, earlier, { locale: 'es' });\n * // => 'dentro de 1 hora'\n * ```\n *\n * @example\n * ```typescript\n * // Use numeric: 'always' to avoid special strings\n * const later = Temporal.Instant.from('2024-01-02T00:00:00Z');\n * const earlier = Temporal.Instant.from('2024-01-01T00:00:00Z');\n *\n * intlFormatDistance(later, earlier, { numeric: 'auto' });\n * // => 'tomorrow'\n *\n * intlFormatDistance(later, earlier, { numeric: 'always' });\n * // => 'in 1 day'\n * ```\n */\nexport function intlFormatDistance(\n laterDate: Temporal.Instant | Temporal.ZonedDateTime,\n earlierDate: Temporal.Instant | Temporal.ZonedDateTime,\n options?: IntlFormatDistanceOptions\n): string {\n const zoned1 = normalizeTemporalInput(laterDate);\n const zoned2 = normalizeTemporalInput(earlierDate);\n\n // Determine unit if not specified\n let unit = options?.unit;\n if (!unit) {\n const absSeconds = Math.abs(differenceInSeconds(zoned1, zoned2));\n const absMinutes = Math.abs(differenceInMinutes(zoned1, zoned2));\n const absHours = Math.abs(differenceInHours(zoned1, zoned2));\n // calendar units were fractional pre-2.x; sub-day units stay truncated so Math.round below is a no-op\n const absDays = Math.abs(differenceInDays(zoned1, zoned2, { fractional: true }));\n const absWeeks = Math.abs(differenceInWeeks(zoned1, zoned2, { fractional: true }));\n const absMonths = Math.abs(differenceInMonths(zoned1, zoned2, { fractional: true }));\n\n if (absSeconds < 60) {\n unit = 'second';\n } else if (absMinutes < 60) {\n unit = 'minute';\n } else if (absHours < 24) {\n unit = 'hour';\n } else if (absDays < 7) {\n unit = 'day';\n } else if (absWeeks < 4) {\n unit = 'week';\n } else if (absMonths < 12) {\n unit = 'month';\n } else {\n unit = 'year';\n }\n }\n\n // Calculate value for the selected unit\n let value: number;\n switch (unit) {\n case 'second':\n value = Math.round(differenceInSeconds(zoned1, zoned2));\n break;\n case 'minute':\n value = Math.round(differenceInMinutes(zoned1, zoned2));\n break;\n case 'hour':\n value = Math.round(differenceInHours(zoned1, zoned2));\n break;\n // calendar units were fractional pre-2.x; sub-day units stay truncated so Math.round is a no-op\n case 'day':\n value = Math.round(differenceInDays(zoned1, zoned2, { fractional: true }));\n break;\n case 'week':\n value = Math.round(differenceInWeeks(zoned1, zoned2, { fractional: true }));\n break;\n case 'month':\n value = Math.round(differenceInMonths(zoned1, zoned2, { fractional: true }));\n break;\n case 'quarter':\n value = Math.round(differenceInMonths(zoned1, zoned2, { fractional: true }) / 3);\n break;\n case 'year':\n value = Math.round(differenceInYears(zoned1, zoned2, { fractional: true }));\n break;\n default:\n // For any other unit type, try to use it directly\n value = Math.round(differenceInSeconds(zoned1, zoned2));\n }\n\n // Format using Intl.RelativeTimeFormat\n const formatter = new Intl.RelativeTimeFormat(options?.locale, {\n localeMatcher: options?.localeMatcher,\n numeric: options?.numeric ?? 'auto',\n style: options?.style,\n });\n\n return formatter.format(value, unit);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA6FO,SAAS,mBACd,WACA,aACA,SACQ;AACR,QAAM,SAAS,uBAAuB,SAAS;AAC/C,QAAM,SAAS,uBAAuB,WAAW;AAGjD,MAAI,OAAO,SAAS;AACpB,MAAI,CAAC,MAAM;AACT,UAAM,aAAa,KAAK,IAAI,oBAAoB,QAAQ,MAAM,CAAC;AAC/D,UAAM,aAAa,KAAK,IAAI,oBAAoB,QAAQ,MAAM,CAAC;AAC/D,UAAM,WAAW,KAAK,IAAI,kBAAkB,QAAQ,MAAM,CAAC;AAE3D,UAAM,UAAU,KAAK,IAAI,iBAAiB,QAAQ,QAAQ,EAAE,YAAY,KAAK,CAAC,CAAC;AAC/E,UAAM,WAAW,KAAK,IAAI,kBAAkB,QAAQ,QAAQ,EAAE,YAAY,KAAK,CAAC,CAAC;AACjF,UAAM,YAAY,KAAK,IAAI,mBAAmB,QAAQ,QAAQ,EAAE,YAAY,KAAK,CAAC,CAAC;AAEnF,QAAI,aAAa,IAAI;AACnB,aAAO;AAAA,IACT,WAAW,aAAa,IAAI;AAC1B,aAAO;AAAA,IACT,WAAW,WAAW,IAAI;AACxB,aAAO;AAAA,IACT,WAAW,UAAU,GAAG;AACtB,aAAO;AAAA,IACT,WAAW,WAAW,GAAG;AACvB,aAAO;AAAA,IACT,WAAW,YAAY,IAAI;AACzB,aAAO;AAAA,IACT,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAGA,MAAI;AACJ,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,cAAQ,KAAK,MAAM,oBAAoB,QAAQ,MAAM,CAAC;AACtD;AAAA,IACF,KAAK;AACH,cAAQ,KAAK,MAAM,oBAAoB,QAAQ,MAAM,CAAC;AACtD;AAAA,IACF,KAAK;AACH,cAAQ,KAAK,MAAM,kBAAkB,QAAQ,MAAM,CAAC;AACpD;AAAA;AAAA,IAEF,KAAK;AACH,cAAQ,KAAK,MAAM,iBAAiB,QAAQ,QAAQ,EAAE,YAAY,KAAK,CAAC,CAAC;AACzE;AAAA,IACF,KAAK;AACH,cAAQ,KAAK,MAAM,kBAAkB,QAAQ,QAAQ,EAAE,YAAY,KAAK,CAAC,CAAC;AAC1E;AAAA,IACF,KAAK;AACH,cAAQ,KAAK,MAAM,mBAAmB,QAAQ,QAAQ,EAAE,YAAY,KAAK,CAAC,CAAC;AAC3E;AAAA,IACF,KAAK;AACH,cAAQ,KAAK,MAAM,mBAAmB,QAAQ,QAAQ,EAAE,YAAY,KAAK,CAAC,IAAI,CAAC;AAC/E;AAAA,IACF,KAAK;AACH,cAAQ,KAAK,MAAM,kBAAkB,QAAQ,QAAQ,EAAE,YAAY,KAAK,CAAC,CAAC;AAC1E;AAAA,IACF;AAEE,cAAQ,KAAK,MAAM,oBAAoB,QAAQ,MAAM,CAAC;AAAA,EAC1D;AAGA,QAAM,YAAY,IAAI,KAAK,mBAAmB,SAAS,QAAQ;AAAA,IAC7D,eAAe,SAAS;AAAA,IACxB,SAAS,SAAS,WAAW;AAAA,IAC7B,OAAO,SAAS;AAAA,EAClB,CAAC;AAED,SAAO,UAAU,OAAO,OAAO,IAAI;AACrC;","names":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// src/shared/differenceInMilliseconds.ts
|
|
2
2
|
function differenceInMilliseconds(laterDate, earlierDate) {
|
|
3
|
-
return laterDate.
|
|
3
|
+
return Number((laterDate.epochNanoseconds - earlierDate.epochNanoseconds) / 1000000n);
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
export {
|
|
7
7
|
differenceInMilliseconds
|
|
8
8
|
};
|
|
9
|
-
//# sourceMappingURL=chunk-
|
|
9
|
+
//# sourceMappingURL=chunk-3KE6GK4R.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/shared/differenceInMilliseconds.ts"],"sourcesContent":["import { Temporal } from './temporal';\n\nexport function differenceInMilliseconds(\n laterDate: Temporal.ZonedDateTime,\n earlierDate: Temporal.ZonedDateTime\n): number {\n return laterDate.
|
|
1
|
+
{"version":3,"sources":["../src/shared/differenceInMilliseconds.ts"],"sourcesContent":["import { Temporal } from './temporal';\n\nexport function differenceInMilliseconds(\n laterDate: Temporal.ZonedDateTime,\n earlierDate: Temporal.ZonedDateTime\n): number {\n return Number((laterDate.epochNanoseconds - earlierDate.epochNanoseconds) / 1_000_000n);\n}\n"],"mappings":";AAEO,SAAS,yBACd,WACA,aACQ;AACR,SAAO,QAAQ,UAAU,mBAAmB,YAAY,oBAAoB,QAAU;AACxF;","names":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import {
|
|
2
|
+
compare
|
|
3
|
+
} from "./chunk-OMYVTYHI.js";
|
|
4
|
+
|
|
5
|
+
// src/clamp.ts
|
|
6
|
+
function clamp(value, interval) {
|
|
7
|
+
if (compare(interval.start, interval.end) > 0) {
|
|
8
|
+
throw new RangeError("clamp requires interval.start to be before or equal to interval.end");
|
|
9
|
+
}
|
|
10
|
+
if (compare(value, interval.start) < 0) return interval.start;
|
|
11
|
+
if (compare(value, interval.end) > 0) return interval.end;
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export {
|
|
16
|
+
clamp
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=chunk-3S6TSXZ3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/clamp.ts"],"sourcesContent":["import type { Temporal } from './shared/temporal';\nimport { compare, type Comparable, type Timeline } from './shared/compare';\n\n/**\n * Restricts a value to an inclusive interval. Returns the value itself when it\n * is inside, otherwise the nearer endpoint, unchanged.\n *\n * Timeline values compare by exact instant, PlainDates by date, and\n * PlainTimes by wall-clock time. Mixed domains throw a TypeError.\n *\n * @param value - The value to restrict\n * @param interval - Inclusive bounds from the same domain as value\n * @returns value, interval.start, or interval.end\n * @throws RangeError if interval.start is after interval.end\n *\n * @example\n * ```ts\n * const start = Temporal.PlainDate.from('2025-01-01');\n * const end = Temporal.PlainDate.from('2025-01-31');\n *\n * clamp(Temporal.PlainDate.from('2025-02-14'), { start, end }); // 2025-01-31\n * clamp(Temporal.PlainDate.from('2025-01-10'), { start, end }); // 2025-01-10\n * ```\n */\nexport function clamp<T extends Timeline, S extends Timeline, E extends Timeline>(\n value: T,\n interval: { start: S; end: E }\n): T | S | E;\nexport function clamp(\n value: Temporal.PlainDate,\n interval: { start: Temporal.PlainDate; end: Temporal.PlainDate }\n): Temporal.PlainDate;\nexport function clamp(\n value: Temporal.PlainTime,\n interval: { start: Temporal.PlainTime; end: Temporal.PlainTime }\n): Temporal.PlainTime;\nexport function clamp(\n value: Comparable,\n interval: { start: Comparable; end: Comparable }\n): Comparable {\n if (compare(interval.start, interval.end) > 0) {\n throw new RangeError('clamp requires interval.start to be before or equal to interval.end');\n }\n if (compare(value, interval.start) < 0) return interval.start;\n if (compare(value, interval.end) > 0) return interval.end;\n return value;\n}\n"],"mappings":";;;;;AAoCO,SAAS,MACd,OACA,UACY;AACZ,MAAI,QAAQ,SAAS,OAAO,SAAS,GAAG,IAAI,GAAG;AAC7C,UAAM,IAAI,WAAW,qEAAqE;AAAA,EAC5F;AACA,MAAI,QAAQ,OAAO,SAAS,KAAK,IAAI,EAAG,QAAO,SAAS;AACxD,MAAI,QAAQ,OAAO,SAAS,GAAG,IAAI,EAAG,QAAO,SAAS;AACtD,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
normalizeTemporalInput
|
|
3
|
+
} from "./chunk-JNAWZ4RN.js";
|
|
4
|
+
import {
|
|
5
|
+
isPlainDate
|
|
6
|
+
} from "./chunk-BSVOJYJ7.js";
|
|
7
|
+
|
|
8
|
+
// src/addWeeks.ts
|
|
9
|
+
function addWeeks(input, weeks) {
|
|
10
|
+
if (isPlainDate(input)) {
|
|
11
|
+
return input.add({ weeks });
|
|
12
|
+
}
|
|
13
|
+
return normalizeTemporalInput(input).add({ weeks });
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export {
|
|
17
|
+
addWeeks
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=chunk-426MJGNT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/addWeeks.ts"],"sourcesContent":["import { type Temporal, isPlainDate } from './shared/temporal';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Adds the specified number of weeks to a datetime or date.\n *\n * Properly handles DST transitions and calendar edge cases through Temporal API.\n * Instant inputs are converted to UTC. For ZonedDateTime inputs, their timezone is preserved.\n *\n * PlainDate inputs stay in calendar space, preserving their calendar without a timezone.\n *\n * @param input - A Temporal.Instant (UTC), Temporal.ZonedDateTime, or Temporal.PlainDate\n * @param weeks - Number of weeks to add (can be negative to subtract)\n * @returns PlainDate for a date input; otherwise ZonedDateTime with weeks added\n *\n * @example\n * ```ts\n * // From Instant (always UTC)\n * const instant = Temporal.Instant.from('2025-01-20T12:00:00Z');\n * const result = addWeeks(instant, 2);\n * // 2025-02-03T12:00:00Z[UTC] (2 weeks later)\n * ```\n *\n * @example\n * ```ts\n * // From ZonedDateTime (preserves timezone)\n * const zoned = Temporal.ZonedDateTime.from('2025-01-20T15:30:00-05:00[America/New_York]');\n * const result = addWeeks(zoned, 2);\n * // 2025-02-03T15:30:00-05:00[America/New_York]\n * ```\n *\n * @example\n * ```ts\n * // Negative values subtract weeks\n * const instant = Temporal.Instant.from('2025-01-20T12:00:00Z');\n * const result = addWeeks(instant, -1);\n * // 2025-01-13T12:00:00Z[UTC] (1 week earlier)\n * ```\n */\nexport function addWeeks(input: Temporal.PlainDate, weeks: number): Temporal.PlainDate;\nexport function addWeeks(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n weeks: number\n): Temporal.ZonedDateTime;\nexport function addWeeks(\n input: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate,\n weeks: number\n): Temporal.ZonedDateTime | Temporal.PlainDate {\n if (isPlainDate(input)) {\n return input.add({ weeks });\n }\n return normalizeTemporalInput(input).add({ weeks });\n}\n"],"mappings":";;;;;;;;AA4CO,SAAS,SACd,OACA,OAC6C;AAC7C,MAAI,YAAY,KAAK,GAAG;AACtB,WAAO,MAAM,IAAI,EAAE,MAAM,CAAC;AAAA,EAC5B;AACA,SAAO,uBAAuB,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC;AACpD;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
normalizeTemporalInput
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-JNAWZ4RN.js";
|
|
4
4
|
|
|
5
5
|
// src/isSameHour.ts
|
|
6
6
|
function isSameHour(date1, date2) {
|
|
@@ -12,4 +12,4 @@ function isSameHour(date1, date2) {
|
|
|
12
12
|
export {
|
|
13
13
|
isSameHour
|
|
14
14
|
};
|
|
15
|
-
//# sourceMappingURL=chunk-
|
|
15
|
+
//# sourceMappingURL=chunk-44EIUFJB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/isSameHour.ts"],"sourcesContent":["import type { Temporal } from './shared/temporal';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Returns true if both datetimes fall in the same hour.\n * Compares the year, month, day, and hour 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 in the same hour, false otherwise\n *\n * @example\n * ```ts\n * // Same timezone, same hour\n * const start = Temporal.ZonedDateTime.from('2025-01-20T14:00:00Z[UTC]');\n * const end = Temporal.ZonedDateTime.from('2025-01-20T14:59:59.999Z[UTC]');\n *\n * isSameHour(start, end); // true\n * ```\n *\n * @example\n * ```ts\n * // Same timezone, different hours\n * const hour14 = Temporal.ZonedDateTime.from('2025-01-20T14:59:59Z[UTC]');\n * const hour15 = Temporal.ZonedDateTime.from('2025-01-20T15:00:00Z[UTC]');\n *\n * isSameHour(hour14, hour15); // false\n * ```\n *\n * @example\n * ```ts\n * // Different timezones - compares their local hours\n * const ny = Temporal.ZonedDateTime.from('2025-01-20T14:30:00-05:00[America/New_York]');\n * const tokyo = Temporal.ZonedDateTime.from('2025-01-21T04:30:00+09:00[Asia/Tokyo]');\n *\n * // Same instant, different local hours from each person's perspective\n * isSameHour(ny, tokyo); // false (14:xx in NY, 04:xx in Tokyo)\n *\n * // Convert to UTC to compare in UTC timezone\n * isSameHour(ny.withTimeZone('UTC'), tokyo.withTimeZone('UTC')); // true (both 19:xx in UTC)\n *\n * // Convert to NY timezone to compare from NY perspective\n * isSameHour(ny, tokyo.withTimeZone('America/New_York')); // true (both 14:xx in NY)\n * ```\n *\n * @example\n * ```ts\n * // Instant inputs are converted to UTC\n * const instant1 = Temporal.Instant.from('2025-01-20T14:15:30Z');\n * const instant2 = Temporal.Instant.from('2025-01-20T14:45:50Z');\n *\n * isSameHour(instant1, instant2); // true (both 14:xx in UTC)\n * ```\n */\nexport function isSameHour(\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 zoned1.hour === zoned2.hour\n );\n}\n"],"mappings":";;;;;AA0DO,SAAS,WACd,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,OACtB,OAAO,SAAS,OAAO;AAE3B;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
addSeconds
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-WY5I452J.js";
|
|
4
4
|
|
|
5
5
|
// src/subSeconds.ts
|
|
6
6
|
function subSeconds(input, seconds) {
|
|
@@ -10,4 +10,4 @@ function subSeconds(input, seconds) {
|
|
|
10
10
|
export {
|
|
11
11
|
subSeconds
|
|
12
12
|
};
|
|
13
|
-
//# sourceMappingURL=chunk-
|
|
13
|
+
//# sourceMappingURL=chunk-4E5OJUMN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/subSeconds.ts"],"sourcesContent":["import type { Temporal } from './shared/temporal';\nimport { addSeconds } from './addSeconds';\n\n/**\n * Subtracts the specified number of seconds from a datetime.\n *\n * This is a convenience wrapper around addSeconds with negated value.\n *\n * @param input - A Temporal.Instant (UTC) or Temporal.ZonedDateTime\n * @param seconds - Number of seconds to subtract\n * @returns ZonedDateTime with seconds subtracted, in the same timezone as input\n *\n * @example\n * ```ts\n * const instant = Temporal.Instant.from('2025-01-20T12:00:45Z');\n * const result = subSeconds(instant, 30);\n * // 2025-01-20T12:00:15Z[UTC] (30 seconds earlier)\n * ```\n */\nexport function subSeconds(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n seconds: number\n): Temporal.ZonedDateTime {\n return addSeconds(input, -seconds);\n}\n"],"mappings":";;;;;AAmBO,SAAS,WACd,OACA,SACwB;AACxB,SAAO,WAAW,OAAO,CAAC,OAAO;AACnC;","names":[]}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
differenceInMonths
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-2LN57UVR.js";
|
|
4
4
|
import {
|
|
5
5
|
isPlainDate
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-BSVOJYJ7.js";
|
|
7
7
|
|
|
8
8
|
// src/differenceInQuarters.ts
|
|
9
9
|
function differenceInQuarters(laterDate, earlierDate, options) {
|
|
10
|
-
const months = isPlainDate(laterDate) && isPlainDate(earlierDate) ? earlierDate.until(laterDate).total({
|
|
10
|
+
const months = isPlainDate(laterDate) && isPlainDate(earlierDate) ? earlierDate.until(laterDate.toString()).total({
|
|
11
11
|
unit: "months",
|
|
12
12
|
relativeTo: earlierDate
|
|
13
13
|
}) : differenceInMonths(
|
|
@@ -22,4 +22,4 @@ function differenceInQuarters(laterDate, earlierDate, options) {
|
|
|
22
22
|
export {
|
|
23
23
|
differenceInQuarters
|
|
24
24
|
};
|
|
25
|
-
//# sourceMappingURL=chunk-
|
|
25
|
+
//# sourceMappingURL=chunk-5FCHKIGV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/differenceInQuarters.ts"],"sourcesContent":["import { type Temporal, isPlainDate } from \"./shared/temporal\";\nimport { differenceInMonths } from \"./differenceInMonths\";\nimport type { DifferenceOptions } from \"./shared/differenceOptions\";\n\n/**\n * Returns the number of quarters (3-month blocks) between two datetimes or dates.\n * The result is positive if laterDate is after earlierDate, negative if before.\n *\n * Uses calendar-aware, elapsed-time calculation (a quarter is three months).\n * Instant inputs are converted to UTC; ZonedDateTime inputs keep their timezone.\n * PlainDate inputs are compared directly — no timezone needed.\n *\n * @param laterDate - The later Instant or ZonedDateTime\n * @param earlierDate - The earlier Instant or ZonedDateTime\n * @param options - Optional { fractional } to return the precise value\n * @returns The number of quarters, truncated toward zero (pass { fractional: true } for the precise value)\n *\n * @example\n * ```ts\n * const later = Temporal.Instant.from('2025-07-20T12:00:00Z');\n * const earlier = Temporal.Instant.from('2025-01-20T12:00:00Z');\n * differenceInQuarters(later, earlier); // 2\n * ```\n *\n * @example\n * ```ts\n * // PlainDate comparison needs no timezone\n * const later = Temporal.PlainDate.from('2025-07-20');\n * const earlier = Temporal.PlainDate.from('2025-01-20');\n * differenceInQuarters(later, earlier); // 2\n * ```\n */\nexport function differenceInQuarters(\n laterDate: Temporal.Instant | Temporal.ZonedDateTime,\n earlierDate: Temporal.Instant | Temporal.ZonedDateTime,\n options?: DifferenceOptions,\n): number;\nexport function differenceInQuarters(\n laterDate: Temporal.PlainDate,\n earlierDate: Temporal.PlainDate,\n options?: DifferenceOptions,\n): number;\nexport function differenceInQuarters(\n laterDate: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate,\n earlierDate: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate,\n options?: DifferenceOptions,\n): number {\n // A quarter is three months, so work in elapsed months and divide by 3.\n // Serialize the other date to preserve its calendar across implementations.\n const months =\n isPlainDate(laterDate) && isPlainDate(earlierDate)\n ? earlierDate.until(laterDate.toString()).total({\n unit: \"months\",\n relativeTo: earlierDate,\n })\n : differenceInMonths(\n laterDate as Temporal.Instant | Temporal.ZonedDateTime,\n earlierDate as Temporal.Instant | Temporal.ZonedDateTime,\n { fractional: true },\n );\n\n const quarters = months / 3;\n return options?.fractional ? quarters : Math.trunc(quarters);\n}\n"],"mappings":";;;;;;;;AA0CO,SAAS,qBACd,WACA,aACA,SACQ;AAGR,QAAM,SACJ,YAAY,SAAS,KAAK,YAAY,WAAW,IAC7C,YAAY,MAAM,UAAU,SAAS,CAAC,EAAE,MAAM;AAAA,IAC5C,MAAM;AAAA,IACN,YAAY;AAAA,EACd,CAAC,IACD;AAAA,IACE;AAAA,IACA;AAAA,IACA,EAAE,YAAY,KAAK;AAAA,EACrB;AAEN,QAAM,WAAW,SAAS;AAC1B,SAAO,SAAS,aAAa,WAAW,KAAK,MAAM,QAAQ;AAC7D;","names":[]}
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
} from "./chunk-XS2HUADA.js";
|
|
4
4
|
import {
|
|
5
5
|
normalizeWithPlainDate
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-2MFBXSTL.js";
|
|
7
7
|
import {
|
|
8
8
|
isPlainDate
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-BSVOJYJ7.js";
|
|
10
10
|
|
|
11
11
|
// src/startOfQuarter.ts
|
|
12
12
|
function startOfQuarter(input, timezone) {
|
|
@@ -24,4 +24,4 @@ function startOfQuarter(input, timezone) {
|
|
|
24
24
|
export {
|
|
25
25
|
startOfQuarter
|
|
26
26
|
};
|
|
27
|
-
//# sourceMappingURL=chunk-
|
|
27
|
+
//# sourceMappingURL=chunk-5KVFPVBT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/startOfQuarter.ts"],"sourcesContent":["import { type Temporal, isPlainDate } from \"./shared/temporal\";\nimport type { Timezone } from \"./types\";\nimport { normalizeWithPlainDate } from \"./shared/normalizeWithPlainDate\";\nimport { quarterStartMonth } from \"./shared/quarter\";\n\n/**\n * Returns a ZonedDateTime representing the first moment of the quarter\n * (first day of the quarter's starting month at midnight).\n *\n * Quarters: Q1 = Jan–Mar, Q2 = Apr–Jun, Q3 = Jul–Sep, Q4 = Oct–Dec.\n *\n * @param input - A Temporal.Instant (UTC) or Temporal.ZonedDateTime\n * @returns ZonedDateTime at the 1st day of the quarter at 00:00:00.000000000\n *\n * @example\n * ```ts\n * // From Instant (always UTC)\n * const instant = Temporal.Instant.from('2025-05-15T12:00:00Z');\n * const start = startOfQuarter(instant);\n * // 2025-04-01T00:00:00Z[UTC]\n * ```\n *\n * @example\n * ```ts\n * // From ZonedDateTime (uses its timezone)\n * const zoned = Temporal.ZonedDateTime.from('2025-08-15T15:30:00-04:00[America/New_York]');\n * const start = startOfQuarter(zoned);\n * // 2025-07-01T00:00:00-04:00[America/New_York]\n * ```\n *\n * @example\n * ```ts\n * // From PlainDate (requires timezone)\n * const date = Temporal.PlainDate.from('2025-11-15');\n * const start = startOfQuarter(date, 'America/New_York');\n * // 2025-10-01T00:00:00-04:00[America/New_York]\n * ```\n */\nexport function startOfQuarter(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n): Temporal.ZonedDateTime;\nexport function startOfQuarter(input: Temporal.PlainDate): Temporal.PlainDate;\nexport function startOfQuarter(\n input: Temporal.PlainDate,\n timezone: Timezone,\n): Temporal.ZonedDateTime;\nexport function startOfQuarter(\n input: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate,\n timezone?: Timezone,\n): Temporal.ZonedDateTime | Temporal.PlainDate {\n // PlainDate with no timezone stays in calendar space → first day of quarter.\n if (isPlainDate(input) && timezone === undefined) {\n return input.with({ month: quarterStartMonth(input.month), day: 1 });\n }\n const zonedDateTime = normalizeWithPlainDate(input, timezone!);\n const firstDay = zonedDateTime.with({\n month: quarterStartMonth(zonedDateTime.month),\n day: 1,\n });\n return firstDay.startOfDay();\n}\n"],"mappings":";;;;;;;;;;;AA8CO,SAAS,eACd,OACA,UAC6C;AAE7C,MAAI,YAAY,KAAK,KAAK,aAAa,QAAW;AAChD,WAAO,MAAM,KAAK,EAAE,OAAO,kBAAkB,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC;AAAA,EACrE;AACA,QAAM,gBAAgB,uBAAuB,OAAO,QAAS;AAC7D,QAAM,WAAW,cAAc,KAAK;AAAA,IAClC,OAAO,kBAAkB,cAAc,KAAK;AAAA,IAC5C,KAAK;AAAA,EACP,CAAC;AACD,SAAO,SAAS,WAAW;AAC7B;","names":[]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isPlainDateBefore
|
|
3
|
+
} from "./chunk-ZM32S3YU.js";
|
|
4
|
+
import {
|
|
5
|
+
isPlainDateAfter
|
|
6
|
+
} from "./chunk-ADPVFELS.js";
|
|
7
|
+
import {
|
|
8
|
+
normalizeTemporalInput
|
|
9
|
+
} from "./chunk-JNAWZ4RN.js";
|
|
10
|
+
import {
|
|
11
|
+
Temporal,
|
|
12
|
+
isPlainDate
|
|
13
|
+
} from "./chunk-BSVOJYJ7.js";
|
|
14
|
+
|
|
15
|
+
// src/eachMonthOfInterval.ts
|
|
16
|
+
function eachMonthOfInterval(interval) {
|
|
17
|
+
if (isPlainDate(interval.start) || isPlainDate(interval.end)) {
|
|
18
|
+
if (!isPlainDate(interval.start) || !isPlainDate(interval.end)) {
|
|
19
|
+
throw new TypeError("PlainDate intervals require two PlainDate endpoints");
|
|
20
|
+
}
|
|
21
|
+
if (isPlainDateAfter(interval.start, interval.end)) return [];
|
|
22
|
+
const end = interval.end.withCalendar(interval.start.calendarId);
|
|
23
|
+
const last = end.with({ day: 1 });
|
|
24
|
+
let current2 = interval.start.with({ day: 1 });
|
|
25
|
+
const dates = [];
|
|
26
|
+
while (isPlainDateBefore(current2, last)) {
|
|
27
|
+
dates.push(current2);
|
|
28
|
+
current2 = current2.add({ months: 1 });
|
|
29
|
+
}
|
|
30
|
+
dates.push(current2);
|
|
31
|
+
return dates;
|
|
32
|
+
}
|
|
33
|
+
const startZoned = normalizeTemporalInput(interval.start);
|
|
34
|
+
const endZoned = normalizeTemporalInput(interval.end);
|
|
35
|
+
if (startZoned.epochNanoseconds > endZoned.epochNanoseconds) return [];
|
|
36
|
+
const timezone = startZoned.timeZoneId;
|
|
37
|
+
const startYearMonth = Temporal.PlainYearMonth.from({
|
|
38
|
+
year: startZoned.year,
|
|
39
|
+
month: startZoned.month,
|
|
40
|
+
calendar: startZoned.calendarId
|
|
41
|
+
});
|
|
42
|
+
const endInTimezone = endZoned.withTimeZone(timezone).withCalendar(startZoned.calendarId);
|
|
43
|
+
const endYearMonth = Temporal.PlainYearMonth.from({
|
|
44
|
+
year: endInTimezone.year,
|
|
45
|
+
month: endInTimezone.month,
|
|
46
|
+
calendar: startZoned.calendarId
|
|
47
|
+
});
|
|
48
|
+
const months = [];
|
|
49
|
+
let current = startYearMonth;
|
|
50
|
+
while (Temporal.PlainYearMonth.compare(current, endYearMonth) <= 0) {
|
|
51
|
+
const firstOfMonth = current.toPlainDate({ day: 1 });
|
|
52
|
+
months.push(
|
|
53
|
+
firstOfMonth.toZonedDateTime({
|
|
54
|
+
timeZone: timezone,
|
|
55
|
+
plainTime: new Temporal.PlainTime()
|
|
56
|
+
})
|
|
57
|
+
);
|
|
58
|
+
current = current.add({ months: 1 });
|
|
59
|
+
}
|
|
60
|
+
return months;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export {
|
|
64
|
+
eachMonthOfInterval
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=chunk-5MB7UZCJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/eachMonthOfInterval.ts"],"sourcesContent":["import { Temporal, isPlainDate } from './shared/temporal';\nimport { isPlainDateAfter } from './isPlainDateAfter';\nimport { isPlainDateBefore } from './isPlainDateBefore';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * PlainDate endpoints return date-only period starts in the start calendar.\n * Mixed date-only/timeline endpoints are rejected. Reversed endpoints return [].\n *\n * Uses the start endpoint's calendar and timezone, including for the end bound.\n * Native and polyfill endpoints may be mixed.\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.PlainDate;\n end: Temporal.PlainDate;\n}): Temporal.PlainDate[];\nexport function eachMonthOfInterval(interval: {\n start: Temporal.Instant | Temporal.ZonedDateTime;\n end: Temporal.Instant | Temporal.ZonedDateTime;\n}): Temporal.ZonedDateTime[];\nexport function eachMonthOfInterval(interval: {\n start: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate;\n end: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate;\n}): Temporal.ZonedDateTime[] | Temporal.PlainDate[] {\n if (isPlainDate(interval.start) || isPlainDate(interval.end)) {\n if (!isPlainDate(interval.start) || !isPlainDate(interval.end)) {\n throw new TypeError('PlainDate intervals require two PlainDate endpoints');\n }\n if (isPlainDateAfter(interval.start, interval.end)) return [];\n const end = interval.end.withCalendar(interval.start.calendarId);\n const last = end.with({ day: 1 });\n let current = interval.start.with({ day: 1 });\n const dates: Temporal.PlainDate[] = [];\n while (isPlainDateBefore(current, last)) {\n dates.push(current);\n current = current.add({ months: 1 });\n }\n dates.push(current);\n return dates;\n }\n const startZoned = normalizeTemporalInput(interval.start);\n const endZoned = normalizeTemporalInput(interval.end);\n if (startZoned.epochNanoseconds > endZoned.epochNanoseconds) return [];\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 calendar: startZoned.calendarId,\n });\n\n // Get end month in the same timezone\n const endInTimezone = endZoned.withTimeZone(timezone).withCalendar(startZoned.calendarId);\n const endYearMonth = Temporal.PlainYearMonth.from({\n year: endInTimezone.year,\n month: endInTimezone.month,\n calendar: startZoned.calendarId,\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":";;;;;;;;;;;;;;;AA2DO,SAAS,oBAAoB,UAGgB;AAClD,MAAI,YAAY,SAAS,KAAK,KAAK,YAAY,SAAS,GAAG,GAAG;AAC5D,QAAI,CAAC,YAAY,SAAS,KAAK,KAAK,CAAC,YAAY,SAAS,GAAG,GAAG;AAC9D,YAAM,IAAI,UAAU,qDAAqD;AAAA,IAC3E;AACA,QAAI,iBAAiB,SAAS,OAAO,SAAS,GAAG,EAAG,QAAO,CAAC;AAC5D,UAAM,MAAM,SAAS,IAAI,aAAa,SAAS,MAAM,UAAU;AAC/D,UAAM,OAAO,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC;AAChC,QAAIA,WAAU,SAAS,MAAM,KAAK,EAAE,KAAK,EAAE,CAAC;AAC5C,UAAM,QAA8B,CAAC;AACrC,WAAO,kBAAkBA,UAAS,IAAI,GAAG;AACvC,YAAM,KAAKA,QAAO;AAClB,MAAAA,WAAUA,SAAQ,IAAI,EAAE,QAAQ,EAAE,CAAC;AAAA,IACrC;AACA,UAAM,KAAKA,QAAO;AAClB,WAAO;AAAA,EACT;AACA,QAAM,aAAa,uBAAuB,SAAS,KAAK;AACxD,QAAM,WAAW,uBAAuB,SAAS,GAAG;AACpD,MAAI,WAAW,mBAAmB,SAAS,iBAAkB,QAAO,CAAC;AAErE,QAAM,WAAW,WAAW;AAG5B,QAAM,iBAAiB,SAAS,eAAe,KAAK;AAAA,IAClD,MAAM,WAAW;AAAA,IACjB,OAAO,WAAW;AAAA,IAClB,UAAU,WAAW;AAAA,EACvB,CAAC;AAGD,QAAM,gBAAgB,SAAS,aAAa,QAAQ,EAAE,aAAa,WAAW,UAAU;AACxF,QAAM,eAAe,SAAS,eAAe,KAAK;AAAA,IAChD,MAAM,cAAc;AAAA,IACpB,OAAO,cAAc;AAAA,IACrB,UAAU,WAAW;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":["current"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
normalizeTemporalInput
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-JNAWZ4RN.js";
|
|
4
4
|
|
|
5
5
|
// src/addMinutes.ts
|
|
6
6
|
function addMinutes(input, minutes) {
|
|
@@ -11,4 +11,4 @@ function addMinutes(input, minutes) {
|
|
|
11
11
|
export {
|
|
12
12
|
addMinutes
|
|
13
13
|
};
|
|
14
|
-
//# sourceMappingURL=chunk-
|
|
14
|
+
//# sourceMappingURL=chunk-5ST6IOPN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/addMinutes.ts"],"sourcesContent":["import type { Temporal } from './shared/temporal';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Adds the specified number of minutes to a datetime.\n *\n * Instant inputs are converted to UTC. For ZonedDateTime inputs, their timezone is preserved.\n *\n * @param input - A Temporal.Instant (UTC) or Temporal.ZonedDateTime\n * @param minutes - Number of minutes to add (can be negative to subtract)\n * @returns ZonedDateTime with minutes added, in the same timezone as input\n *\n * @example\n * ```ts\n * // From Instant (always UTC)\n * const instant = Temporal.Instant.from('2025-01-20T12:00:00Z');\n * const result = addMinutes(instant, 30);\n * // 2025-01-20T12:30:00Z[UTC] (30 minutes later)\n * ```\n *\n * @example\n * ```ts\n * // From ZonedDateTime (preserves timezone)\n * const zoned = Temporal.ZonedDateTime.from('2025-01-20T15:30:00-05:00[America/New_York]');\n * const result = addMinutes(zoned, 90);\n * // 2025-01-20T17:00:00-05:00[America/New_York]\n * ```\n *\n * @example\n * ```ts\n * // Negative values subtract minutes\n * const instant = Temporal.Instant.from('2025-01-20T12:00:00Z');\n * const result = addMinutes(instant, -15);\n * // 2025-01-20T11:45:00Z[UTC] (15 minutes earlier)\n * ```\n */\nexport function addMinutes(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n minutes: number\n): Temporal.ZonedDateTime {\n const zonedDateTime = normalizeTemporalInput(input);\n return zonedDateTime.add({ minutes });\n}\n"],"mappings":";;;;;AAoCO,SAAS,WACd,OACA,SACwB;AACxB,QAAM,gBAAgB,uBAAuB,KAAK;AAClD,SAAO,cAAc,IAAI,EAAE,QAAQ,CAAC;AACtC;","names":[]}
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
} from "./chunk-XS2HUADA.js";
|
|
4
4
|
import {
|
|
5
5
|
normalizeTemporalInput
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-JNAWZ4RN.js";
|
|
7
7
|
import {
|
|
8
8
|
isPlainDate
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-BSVOJYJ7.js";
|
|
10
10
|
|
|
11
11
|
// src/isSameQuarter.ts
|
|
12
12
|
function isSameQuarter(date1, date2) {
|
|
@@ -18,4 +18,4 @@ function isSameQuarter(date1, date2) {
|
|
|
18
18
|
export {
|
|
19
19
|
isSameQuarter
|
|
20
20
|
};
|
|
21
|
-
//# sourceMappingURL=chunk-
|
|
21
|
+
//# sourceMappingURL=chunk-5WPQUOM4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/isSameQuarter.ts"],"sourcesContent":["import { type Temporal, isPlainDate } from \"./shared/temporal\";\nimport { normalizeTemporalInput } from \"./shared/normalizeTemporalInput\";\nimport { quarterOfMonth } from \"./shared/quarter\";\n\n/**\n * Returns true if both inputs fall in the same calendar quarter and year.\n *\n * Quarters: Q1 = Jan–Mar, Q2 = Apr–Jun, Q3 = Jul–Sep, Q4 = Oct–Dec.\n *\n * Instant inputs are converted to UTC; ZonedDateTime inputs keep their own\n * timezone. PlainDate inputs are compared directly — a quarter is intrinsic to\n * the calendar date, so no timezone is needed.\n *\n * @param date1 - First Instant or ZonedDateTime\n * @param date2 - Second Instant or ZonedDateTime\n * @returns true if both are in the same calendar quarter, false otherwise\n *\n * @example\n * ```ts\n * const jan = Temporal.ZonedDateTime.from('2025-01-15T08:00:00Z[UTC]');\n * const mar = Temporal.ZonedDateTime.from('2025-03-31T23:59:59Z[UTC]');\n * isSameQuarter(jan, mar); // true\n * ```\n *\n * @example\n * ```ts\n * // PlainDate comparison needs no timezone\n * const a = Temporal.PlainDate.from('2025-04-05');\n * const b = Temporal.PlainDate.from('2025-06-28');\n * isSameQuarter(a, b); // true (both Q2)\n * ```\n */\nexport function isSameQuarter(\n date1: Temporal.Instant | Temporal.ZonedDateTime,\n date2: Temporal.Instant | Temporal.ZonedDateTime,\n): boolean;\nexport function isSameQuarter(date1: Temporal.PlainDate, date2: Temporal.PlainDate): boolean;\nexport function isSameQuarter(\n date1: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate,\n date2: Temporal.Instant | Temporal.ZonedDateTime | Temporal.PlainDate,\n): boolean {\n const a = isPlainDate(date1) ? date1 : normalizeTemporalInput(date1);\n const b = isPlainDate(date2) ? date2 : normalizeTemporalInput(date2);\n\n return a.year === b.year && quarterOfMonth(a.month) === quarterOfMonth(b.month);\n}\n"],"mappings":";;;;;;;;;;;AAqCO,SAAS,cACd,OACA,OACS;AACT,QAAM,IAAI,YAAY,KAAK,IAAI,QAAQ,uBAAuB,KAAK;AACnE,QAAM,IAAI,YAAY,KAAK,IAAI,QAAQ,uBAAuB,KAAK;AAEnE,SAAO,EAAE,SAAS,EAAE,QAAQ,eAAe,EAAE,KAAK,MAAM,eAAe,EAAE,KAAK;AAChF;","names":[]}
|