@northguild/gmt 1.17.0 → 1.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (638) hide show
  1. package/README.md +462 -22
  2. package/dist/calendar/calculate/bucketRange.d.ts +3 -3
  3. package/dist/calendar/calculate/bucketRange.js +6 -6
  4. package/dist/calendar/calculate/floorToZone.d.ts +5 -3
  5. package/dist/calendar/calculate/floorToZone.js +6 -5
  6. package/dist/calendar/calculate/getFiscalPeriod.d.ts +21 -8
  7. package/dist/calendar/calculate/getFiscalPeriod.js +9 -8
  8. package/dist/calendar/calculate/getIsoWeekDate.d.ts +10 -5
  9. package/dist/calendar/calculate/getIsoWeekDate.js +1 -5
  10. package/dist/calendar/calculate/getOrdinalDate.d.ts +10 -3
  11. package/dist/calendar/calculate/getOrdinalDate.js +2 -3
  12. package/dist/calendar/calculate/getQuarter.d.ts +21 -9
  13. package/dist/calendar/calculate/getQuarter.js +8 -12
  14. package/dist/calendar/hours/addOperatingTime.d.ts +53 -0
  15. package/dist/calendar/hours/addOperatingTime.js +59 -0
  16. package/dist/calendar/hours/index.d.ts +7 -0
  17. package/dist/calendar/hours/index.js +7 -0
  18. package/dist/calendar/hours/isOpenAt.d.ts +39 -0
  19. package/dist/calendar/hours/isOpenAt.js +44 -0
  20. package/dist/calendar/hours/nextCloseAt.d.ts +49 -0
  21. package/dist/calendar/hours/nextCloseAt.js +51 -0
  22. package/dist/calendar/hours/nextOpenAt.d.ts +45 -0
  23. package/dist/calendar/hours/nextOpenAt.js +47 -0
  24. package/dist/calendar/hours/operatingIntervals.d.ts +43 -0
  25. package/dist/calendar/hours/operatingIntervals.js +52 -0
  26. package/dist/calendar/hours/operatingTimeBetween.d.ts +40 -0
  27. package/dist/calendar/hours/operatingTimeBetween.js +49 -0
  28. package/dist/calendar/hours/recurringWindows.d.ts +61 -0
  29. package/dist/calendar/hours/recurringWindows.js +80 -0
  30. package/dist/calendar/index.d.ts +1 -0
  31. package/dist/calendar/index.js +1 -0
  32. package/dist/duration/calculate/durationAs.d.ts +13 -8
  33. package/dist/duration/calculate/durationAs.js +4 -8
  34. package/dist/duration/compare/compareDurations.d.ts +12 -6
  35. package/dist/duration/compare/compareDurations.js +3 -6
  36. package/dist/duration/format/formatDuration.d.ts +16 -4
  37. package/dist/duration/format/formatDuration.js +4 -5
  38. package/dist/duration/normalize/normalizeDuration.d.ts +39 -14
  39. package/dist/duration/normalize/normalizeDuration.js +6 -15
  40. package/dist/duration/parse/parseDuration.d.ts +21 -3
  41. package/dist/duration/parse/parseDuration.js +1 -3
  42. package/dist/instant/convert/classifyLocal.d.ts +1 -1
  43. package/dist/instant/convert/classifyLocal.js +1 -1
  44. package/dist/instant/convert/fromOffsetInstant.d.ts +3 -1
  45. package/dist/instant/convert/fromOffsetInstant.js +3 -1
  46. package/dist/instant/convert/resolveLocal.d.ts +12 -7
  47. package/dist/instant/convert/resolveLocal.js +6 -10
  48. package/dist/instant/convert/toOffsetInstant.d.ts +22 -9
  49. package/dist/instant/convert/toOffsetInstant.js +10 -3
  50. package/dist/intermodal/calculate/billingTimeline.d.ts +31 -11
  51. package/dist/intermodal/calculate/billingTimeline.js +2 -2
  52. package/dist/intermodal/calculate/chargeableDays.d.ts +13 -11
  53. package/dist/intermodal/calculate/chargeableDays.js +4 -9
  54. package/dist/intermodal/calculate/demurrageClock.d.ts +16 -7
  55. package/dist/intermodal/calculate/demurrageClock.js +7 -7
  56. package/dist/intermodal/calculate/freeTimeExpiry.d.ts +5 -4
  57. package/dist/intermodal/calculate/freeTimeExpiry.js +6 -6
  58. package/dist/internal/businessCalendar.d.ts +5 -0
  59. package/dist/internal/businessCalendar.js +5 -1
  60. package/dist/internal/cycleFieldValue.d.ts +6 -4
  61. package/dist/internal/cycleFieldValue.js +6 -4
  62. package/dist/internal/daylightTime.d.ts +33 -0
  63. package/dist/internal/daylightTime.js +164 -0
  64. package/dist/internal/durationUntilString.js +4 -3
  65. package/dist/internal/englishCalendarNames.js +1 -2
  66. package/dist/internal/epochNanoseconds.d.ts +2 -0
  67. package/dist/internal/epochNanoseconds.js +2 -0
  68. package/dist/internal/exactDuration.d.ts +37 -0
  69. package/dist/internal/exactDuration.js +64 -0
  70. package/dist/internal/exactMoment.d.ts +72 -0
  71. package/dist/internal/exactMoment.js +114 -0
  72. package/dist/internal/fiscalCalendar.d.ts +4 -3
  73. package/dist/internal/fiscalCalendar.js +4 -3
  74. package/dist/internal/formatCalendarDays.d.ts +2 -2
  75. package/dist/internal/formatRelativeDuration.d.ts +21 -1
  76. package/dist/internal/formatRelativeDuration.js +47 -7
  77. package/dist/internal/index.d.ts +9 -4
  78. package/dist/internal/index.js +9 -4
  79. package/dist/internal/instantFormatOptions.js +2 -1
  80. package/dist/internal/instantNanoseconds.d.ts +75 -9
  81. package/dist/internal/instantNanoseconds.js +192 -11
  82. package/dist/internal/joinDateTimeConnector.d.ts +1 -1
  83. package/dist/internal/monthGridWeekRow.d.ts +2 -1
  84. package/dist/internal/monthGridWeekRow.js +2 -1
  85. package/dist/internal/normalizeTimeZone.d.ts +2 -2
  86. package/dist/internal/normalizeTimeZone.js +2 -2
  87. package/dist/internal/operatingSchedule.d.ts +129 -0
  88. package/dist/internal/operatingSchedule.js +668 -0
  89. package/dist/internal/optionOrDefault.d.ts +18 -0
  90. package/dist/internal/optionOrDefault.js +20 -0
  91. package/dist/internal/patternToken.d.ts +2 -2
  92. package/dist/internal/patternToken.js +28 -13
  93. package/dist/internal/plainDateUntil.js +10 -6
  94. package/dist/internal/punctuality.d.ts +38 -0
  95. package/dist/internal/punctuality.js +59 -0
  96. package/dist/internal/readDateTimeFormatOptions.d.ts +30 -0
  97. package/dist/internal/readDateTimeFormatOptions.js +93 -0
  98. package/dist/internal/resolveDurationRelativeTo.d.ts +4 -0
  99. package/dist/internal/resolveDurationRelativeTo.js +11 -1
  100. package/dist/internal/resolveRelativeRounding.d.ts +17 -6
  101. package/dist/internal/resolveRelativeRounding.js +27 -7
  102. package/dist/internal/resolveRelativeUnit.d.ts +30 -0
  103. package/dist/internal/resolveRelativeUnit.js +40 -0
  104. package/dist/internal/splitStep.d.ts +24 -1
  105. package/dist/internal/splitStep.js +34 -2
  106. package/dist/internal/startOrEndOfZoned.js +2 -3
  107. package/dist/internal/temporalCompat/capabilities.d.ts +26 -0
  108. package/dist/internal/temporalCompat/capabilities.js +35 -3
  109. package/dist/internal/temporalCompat/fieldSearch.js +1 -1
  110. package/dist/internal/temporalCompat/index.d.ts +1 -1
  111. package/dist/internal/temporalCompat/index.js +1 -1
  112. package/dist/internal/temporalCompat/repros.d.ts +1 -1
  113. package/dist/internal/temporalCompat/repros.js +157 -0
  114. package/dist/internal/timestampEvents.d.ts +32 -0
  115. package/dist/internal/timestampEvents.js +76 -0
  116. package/dist/internal/utcZonedDateTime.d.ts +5 -2
  117. package/dist/internal/utcZonedDateTime.js +8 -5
  118. package/dist/internal/zonedBucket.js +8 -6
  119. package/dist/internal/zonedLocalDates.js +1 -1
  120. package/dist/internal/zonedTransitionSearch.d.ts +27 -0
  121. package/dist/internal/zonedTransitionSearch.js +218 -0
  122. package/dist/internal/zonedWallClock.d.ts +21 -7
  123. package/dist/internal/zonedWallClock.js +87 -18
  124. package/dist/internal/zonedWallClockOperations.d.ts +26 -13
  125. package/dist/internal/zonedWallClockOperations.js +87 -34
  126. package/dist/interval/validate/isValidInterval.d.ts +6 -3
  127. package/dist/interval/validate/isValidInterval.js +6 -3
  128. package/dist/plain/calculate/addDate.d.ts +11 -8
  129. package/dist/plain/calculate/addDate.js +5 -8
  130. package/dist/plain/calculate/addDateTime.d.ts +7 -4
  131. package/dist/plain/calculate/addDateTime.js +1 -4
  132. package/dist/plain/calculate/cycleDate.d.ts +16 -7
  133. package/dist/plain/calculate/cycleDate.js +3 -7
  134. package/dist/plain/calculate/cycleDateTime.d.ts +14 -4
  135. package/dist/plain/calculate/cycleDateTime.js +1 -4
  136. package/dist/plain/calculate/cycleTime.d.ts +10 -5
  137. package/dist/plain/calculate/cycleTime.js +3 -5
  138. package/dist/plain/calculate/diffDate.d.ts +1 -1
  139. package/dist/plain/calculate/diffDate.js +1 -1
  140. package/dist/plain/calculate/diffDateAsDuration.d.ts +1 -1
  141. package/dist/plain/calculate/diffDateAsDuration.js +1 -1
  142. package/dist/plain/calculate/diffDateTime.d.ts +1 -1
  143. package/dist/plain/calculate/diffDateTime.js +1 -1
  144. package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +1 -1
  145. package/dist/plain/calculate/diffDateTimeAsDuration.js +1 -1
  146. package/dist/plain/calculate/diffTime.d.ts +1 -1
  147. package/dist/plain/calculate/diffTime.js +1 -1
  148. package/dist/plain/calculate/endOfDate.d.ts +8 -3
  149. package/dist/plain/calculate/endOfDate.js +1 -3
  150. package/dist/plain/calculate/endOfDateTime.d.ts +15 -5
  151. package/dist/plain/calculate/endOfDateTime.js +1 -5
  152. package/dist/plain/calculate/endOfTime.d.ts +8 -2
  153. package/dist/plain/calculate/endOfTime.js +1 -2
  154. package/dist/plain/calculate/getLocaleWeekYear.d.ts +16 -9
  155. package/dist/plain/calculate/getLocaleWeekYear.js +9 -9
  156. package/dist/plain/calculate/getWeekOfMonth.d.ts +7 -4
  157. package/dist/plain/calculate/getWeekOfMonth.js +7 -4
  158. package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +13 -6
  159. package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +6 -6
  160. package/dist/plain/calculate/getWeeksInMonth.d.ts +5 -2
  161. package/dist/plain/calculate/getWeeksInMonth.js +5 -2
  162. package/dist/plain/calculate/nextWeekday.d.ts +7 -3
  163. package/dist/plain/calculate/nextWeekday.js +1 -3
  164. package/dist/plain/calculate/previousWeekday.d.ts +7 -3
  165. package/dist/plain/calculate/previousWeekday.js +1 -3
  166. package/dist/plain/calculate/roundDate.d.ts +20 -7
  167. package/dist/plain/calculate/roundDate.js +3 -10
  168. package/dist/plain/calculate/roundDateTime.d.ts +22 -8
  169. package/dist/plain/calculate/roundDateTime.js +3 -11
  170. package/dist/plain/calculate/roundTime.d.ts +20 -4
  171. package/dist/plain/calculate/roundTime.js +3 -7
  172. package/dist/plain/calculate/setDate.d.ts +7 -5
  173. package/dist/plain/calculate/setDate.js +1 -5
  174. package/dist/plain/calculate/setDateTime.d.ts +8 -5
  175. package/dist/plain/calculate/setDateTime.js +1 -5
  176. package/dist/plain/calculate/setTime.d.ts +10 -6
  177. package/dist/plain/calculate/setTime.js +4 -6
  178. package/dist/plain/calculate/startOfDate.d.ts +8 -2
  179. package/dist/plain/calculate/startOfDate.js +1 -2
  180. package/dist/plain/calculate/startOfDateTime.d.ts +15 -2
  181. package/dist/plain/calculate/startOfDateTime.js +1 -2
  182. package/dist/plain/calculate/startOfTime.d.ts +8 -1
  183. package/dist/plain/calculate/startOfTime.js +1 -1
  184. package/dist/plain/calculate/subtractDate.d.ts +7 -4
  185. package/dist/plain/calculate/subtractDate.js +1 -4
  186. package/dist/plain/calculate/subtractDateTime.d.ts +7 -4
  187. package/dist/plain/calculate/subtractDateTime.js +1 -4
  188. package/dist/plain/compare/areDateTimesEqualBy.d.ts +13 -5
  189. package/dist/plain/compare/areDateTimesEqualBy.js +6 -5
  190. package/dist/plain/compare/areDatesEqualBy.d.ts +15 -6
  191. package/dist/plain/compare/areDatesEqualBy.js +8 -6
  192. package/dist/plain/compare/isBetweenDate.d.ts +13 -2
  193. package/dist/plain/compare/isBetweenDate.js +4 -4
  194. package/dist/plain/compare/isBetweenDateTime.d.ts +13 -2
  195. package/dist/plain/compare/isBetweenDateTime.js +4 -4
  196. package/dist/plain/compare/isBetweenTime.d.ts +13 -2
  197. package/dist/plain/compare/isBetweenTime.js +4 -4
  198. package/dist/plain/compare/isRelativeDay.d.ts +1 -1
  199. package/dist/plain/compare/isRelativeDay.js +1 -1
  200. package/dist/plain/compare/isThisUnit.d.ts +1 -1
  201. package/dist/plain/compare/isThisUnit.js +1 -1
  202. package/dist/plain/format/formatCalendar.d.ts +21 -14
  203. package/dist/plain/format/formatCalendar.js +21 -16
  204. package/dist/plain/format/formatDate.js +5 -3
  205. package/dist/plain/format/formatDateRange.js +4 -2
  206. package/dist/plain/format/formatDateTime.js +4 -2
  207. package/dist/plain/format/formatDateTimeRange.js +4 -2
  208. package/dist/plain/format/formatDateTimeToParts.d.ts +15 -4
  209. package/dist/plain/format/formatDateTimeToParts.js +10 -6
  210. package/dist/plain/format/formatDateToParts.d.ts +13 -2
  211. package/dist/plain/format/formatDateToParts.js +8 -4
  212. package/dist/plain/format/formatRelativeDate.d.ts +16 -3
  213. package/dist/plain/format/formatRelativeDate.js +26 -15
  214. package/dist/plain/format/formatRelativeDateTime.d.ts +16 -3
  215. package/dist/plain/format/formatRelativeDateTime.js +8 -5
  216. package/dist/plain/format/formatRelativeTime.d.ts +16 -3
  217. package/dist/plain/format/formatRelativeTime.js +21 -13
  218. package/dist/plain/format/formatTime.js +4 -2
  219. package/dist/plain/interval/intervalDifferenceDate.d.ts +9 -0
  220. package/dist/plain/interval/intervalDifferenceDateTime.d.ts +9 -0
  221. package/dist/plain/interval/intervalDifferenceTime.d.ts +9 -0
  222. package/dist/plain/interval/intervalDivideEquallyDate.d.ts +19 -4
  223. package/dist/plain/interval/intervalDivideEquallyDate.js +3 -4
  224. package/dist/plain/interval/intervalDivideEquallyDateTime.d.ts +19 -4
  225. package/dist/plain/interval/intervalDivideEquallyDateTime.js +3 -4
  226. package/dist/plain/interval/intervalDivideEquallyTime.d.ts +19 -4
  227. package/dist/plain/interval/intervalDivideEquallyTime.js +3 -4
  228. package/dist/plain/interval/intervalFromDurationDate.d.ts +16 -3
  229. package/dist/plain/interval/intervalFromDurationDate.js +1 -3
  230. package/dist/plain/interval/intervalFromDurationDateTime.d.ts +16 -3
  231. package/dist/plain/interval/intervalFromDurationDateTime.js +1 -3
  232. package/dist/plain/interval/intervalFromDurationTime.d.ts +9 -0
  233. package/dist/plain/interval/intervalIntersectionDate.d.ts +9 -0
  234. package/dist/plain/interval/intervalIntersectionDateTime.d.ts +9 -0
  235. package/dist/plain/interval/intervalIntersectionTime.d.ts +9 -0
  236. package/dist/plain/interval/intervalSplitAtDate.d.ts +11 -0
  237. package/dist/plain/interval/intervalSplitAtDate.js +2 -0
  238. package/dist/plain/interval/intervalSplitAtDateTime.d.ts +11 -0
  239. package/dist/plain/interval/intervalSplitAtDateTime.js +2 -0
  240. package/dist/plain/interval/intervalSplitAtTime.d.ts +11 -0
  241. package/dist/plain/interval/intervalSplitAtTime.js +2 -0
  242. package/dist/plain/interval/intervalUnionDate.d.ts +9 -0
  243. package/dist/plain/interval/intervalUnionDateTime.d.ts +9 -0
  244. package/dist/plain/interval/intervalUnionTime.d.ts +9 -0
  245. package/dist/plain/interval/intervalXorAllDate.d.ts +9 -0
  246. package/dist/plain/interval/intervalXorAllDateTime.d.ts +9 -0
  247. package/dist/plain/interval/intervalXorAllTime.d.ts +9 -0
  248. package/dist/plain/interval/intervalXorDate.d.ts +9 -0
  249. package/dist/plain/interval/intervalXorDateTime.d.ts +9 -0
  250. package/dist/plain/interval/intervalXorTime.d.ts +9 -0
  251. package/dist/plain/interval/mergeIntervalsDate.d.ts +9 -0
  252. package/dist/plain/interval/mergeIntervalsDateTime.d.ts +9 -0
  253. package/dist/plain/interval/mergeIntervalsTime.d.ts +9 -0
  254. package/dist/plain/interval/splitIntervalByUnitDate.d.ts +23 -7
  255. package/dist/plain/interval/splitIntervalByUnitDate.js +7 -7
  256. package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +22 -6
  257. package/dist/plain/interval/splitIntervalByUnitDateTime.js +6 -6
  258. package/dist/plain/interval/splitIntervalByUnitTime.d.ts +17 -4
  259. package/dist/plain/interval/splitIntervalByUnitTime.js +1 -4
  260. package/dist/plain/map/mapDatesInRange.d.ts +8 -4
  261. package/dist/plain/map/mapDatesInRange.js +1 -4
  262. package/dist/plain/parse/parseDateTimeWithPattern.d.ts +10 -7
  263. package/dist/plain/parse/parseDateTimeWithPattern.js +10 -7
  264. package/dist/plain/parse/parseDateWithPattern.d.ts +10 -7
  265. package/dist/plain/parse/parseDateWithPattern.js +10 -7
  266. package/dist/plain/parse/parseTimeWithPattern.d.ts +10 -7
  267. package/dist/plain/parse/parseTimeWithPattern.js +10 -7
  268. package/dist/plain/parse/parseUnitFromDate.d.ts +11 -3
  269. package/dist/plain/parse/parseUnitFromDate.js +3 -3
  270. package/dist/plain/parse/parseUnitFromDateTime.d.ts +11 -3
  271. package/dist/plain/parse/parseUnitFromDateTime.js +3 -3
  272. package/dist/plain/parse/parseWeekFromDate.d.ts +10 -6
  273. package/dist/plain/parse/parseWeekFromDate.js +2 -6
  274. package/dist/plain/parse/parseWeekFromDateTime.d.ts +10 -6
  275. package/dist/plain/parse/parseWeekFromDateTime.js +2 -6
  276. package/dist/plain/validate/isValidDateRange.d.ts +19 -4
  277. package/dist/plain/validate/isValidDateRange.js +1 -4
  278. package/dist/plain/validate/isValidDateTimeRange.d.ts +20 -5
  279. package/dist/plain/validate/isValidDateTimeRange.js +2 -5
  280. package/dist/plain/validate/isValidTimeRange.d.ts +20 -5
  281. package/dist/plain/validate/isValidTimeRange.js +2 -5
  282. package/dist/precision/convert/fromExcelSerial.d.ts +10 -4
  283. package/dist/precision/convert/fromExcelSerial.js +4 -5
  284. package/dist/precision/convert/fromNanoseconds.d.ts +1 -1
  285. package/dist/precision/convert/fromNanoseconds.js +1 -1
  286. package/dist/precision/convert/toExcelSerial.d.ts +9 -3
  287. package/dist/precision/convert/toExcelSerial.js +3 -4
  288. package/dist/precision/convert/toNanoseconds.d.ts +11 -6
  289. package/dist/precision/convert/toNanoseconds.js +11 -6
  290. package/dist/precision/validate/isValidInstant.d.ts +12 -3
  291. package/dist/precision/validate/isValidInstant.js +12 -3
  292. package/dist/span/calculate/spanMs.d.ts +10 -4
  293. package/dist/span/calculate/spanMs.js +10 -4
  294. package/dist/span/calculate/spanNs.d.ts +10 -4
  295. package/dist/span/calculate/spanNs.js +10 -4
  296. package/dist/span/validate/isValidSpan.d.ts +8 -3
  297. package/dist/span/validate/isValidSpan.js +8 -3
  298. package/dist/transport/calculate/bestAvailable.d.ts +47 -0
  299. package/dist/transport/calculate/bestAvailable.js +76 -0
  300. package/dist/transport/calculate/crossingTime.d.ts +58 -0
  301. package/dist/transport/calculate/crossingTime.js +76 -0
  302. package/dist/transport/calculate/cutoffAt.d.ts +90 -0
  303. package/dist/transport/calculate/cutoffAt.js +209 -0
  304. package/dist/transport/calculate/cutoffSchedule.d.ts +70 -0
  305. package/dist/transport/calculate/cutoffSchedule.js +71 -0
  306. package/dist/transport/calculate/dwellTime.d.ts +16 -7
  307. package/dist/transport/calculate/dwellTime.js +12 -8
  308. package/dist/transport/calculate/estimateDrift.d.ts +65 -0
  309. package/dist/transport/calculate/estimateDrift.js +75 -0
  310. package/dist/transport/calculate/index.d.ts +8 -0
  311. package/dist/transport/calculate/index.js +8 -0
  312. package/dist/transport/calculate/nextDeparture.d.ts +78 -0
  313. package/dist/transport/calculate/nextDeparture.js +131 -0
  314. package/dist/transport/calculate/punctualityRate.d.ts +42 -0
  315. package/dist/transport/calculate/punctualityRate.js +59 -0
  316. package/dist/transport/calculate/scheduleDelivery.d.ts +150 -0
  317. package/dist/transport/calculate/scheduleDelivery.js +300 -0
  318. package/dist/transport/calculate/transitTime.d.ts +21 -3
  319. package/dist/transport/calculate/transitTime.js +29 -46
  320. package/dist/transport/compare/classifyPunctuality.d.ts +46 -0
  321. package/dist/transport/compare/classifyPunctuality.js +64 -0
  322. package/dist/transport/compare/index.d.ts +4 -0
  323. package/dist/transport/compare/index.js +4 -0
  324. package/dist/transport/compare/isPastCutoff.d.ts +33 -0
  325. package/dist/transport/compare/isPastCutoff.js +48 -0
  326. package/dist/transport/compare/scheduleDeviation.d.ts +37 -0
  327. package/dist/transport/compare/scheduleDeviation.js +53 -0
  328. package/dist/transport/compare/timeToCutoff.d.ts +31 -0
  329. package/dist/transport/compare/timeToCutoff.js +47 -0
  330. package/dist/transport/convert/etaAtZone.d.ts +7 -0
  331. package/dist/transport/convert/etaAtZone.js +9 -4
  332. package/dist/transport/index.d.ts +1 -0
  333. package/dist/transport/index.js +1 -0
  334. package/dist/types/business-calendar.d.ts +19 -14
  335. package/dist/types/calendar-options.d.ts +15 -3
  336. package/dist/types/date-cycle-field.d.ts +5 -0
  337. package/dist/types/date-duration-unit.d.ts +4 -0
  338. package/dist/types/date-time-cycle-field.d.ts +4 -0
  339. package/dist/types/date-time-duration-units.d.ts +4 -0
  340. package/dist/types/date-time-unit.d.ts +4 -0
  341. package/dist/types/date-unit.d.ts +4 -0
  342. package/dist/types/disambiguation.d.ts +8 -0
  343. package/dist/types/duration-relative-to.d.ts +8 -0
  344. package/dist/types/duration-string-options.d.ts +28 -0
  345. package/dist/types/fiscal-calendar.d.ts +1 -1
  346. package/dist/types/fractional-digit.d.ts +5 -0
  347. package/dist/types/free-time-options.d.ts +21 -11
  348. package/dist/types/index.d.ts +2 -1
  349. package/dist/types/index.js +2 -1
  350. package/dist/types/interval.d.ts +8 -1
  351. package/dist/types/offset.d.ts +9 -0
  352. package/dist/types/operating-schedule.d.ts +71 -0
  353. package/dist/types/overflow.d.ts +6 -0
  354. package/dist/types/relative-rounding-method.d.ts +6 -0
  355. package/dist/types/relative-time-options.d.ts +33 -5
  356. package/dist/types/rounding-options.d.ts +27 -0
  357. package/dist/types/time-cycle-field.d.ts +4 -0
  358. package/dist/types/time-duration-unit.d.ts +4 -0
  359. package/dist/types/time-unit.d.ts +4 -0
  360. package/dist/types/transport-timestamps.d.ts +54 -0
  361. package/dist/types/transport-timestamps.js +0 -0
  362. package/dist/unix/calculate/addUnix.d.ts +19 -5
  363. package/dist/unix/calculate/addUnix.js +1 -5
  364. package/dist/unix/calculate/diffUnix.d.ts +13 -3
  365. package/dist/unix/calculate/diffUnix.js +1 -3
  366. package/dist/unix/calculate/diffUnixAsDuration.d.ts +13 -3
  367. package/dist/unix/calculate/diffUnixAsDuration.js +1 -3
  368. package/dist/unix/calculate/endOfQuarterForUnix.d.ts +13 -3
  369. package/dist/unix/calculate/endOfQuarterForUnix.js +1 -3
  370. package/dist/unix/calculate/endOfUnix.d.ts +20 -4
  371. package/dist/unix/calculate/endOfUnix.js +1 -4
  372. package/dist/unix/calculate/isBetweenUnix.d.ts +26 -4
  373. package/dist/unix/calculate/isBetweenUnix.js +4 -6
  374. package/dist/unix/calculate/roundUnix.d.ts +31 -3
  375. package/dist/unix/calculate/roundUnix.js +3 -6
  376. package/dist/unix/calculate/setUnix.d.ts +35 -9
  377. package/dist/unix/calculate/setUnix.js +4 -13
  378. package/dist/unix/calculate/startOfQuarterForUnix.d.ts +13 -3
  379. package/dist/unix/calculate/startOfQuarterForUnix.js +1 -3
  380. package/dist/unix/calculate/startOfUnix.d.ts +20 -4
  381. package/dist/unix/calculate/startOfUnix.js +1 -4
  382. package/dist/unix/calculate/subtractUnix.d.ts +19 -5
  383. package/dist/unix/calculate/subtractUnix.js +1 -5
  384. package/dist/unix/compare/areUnixEqual.d.ts +7 -1
  385. package/dist/unix/compare/areUnixEqual.js +1 -1
  386. package/dist/unix/compare/areUnixEqualBy.d.ts +24 -7
  387. package/dist/unix/compare/areUnixEqualBy.js +13 -9
  388. package/dist/unix/compare/isAfterUnix.d.ts +7 -1
  389. package/dist/unix/compare/isAfterUnix.js +1 -1
  390. package/dist/unix/compare/isBeforeUnix.d.ts +7 -1
  391. package/dist/unix/compare/isBeforeUnix.js +1 -1
  392. package/dist/unix/convert/convertUnixToPlainDate.d.ts +14 -4
  393. package/dist/unix/convert/convertUnixToPlainDate.js +2 -4
  394. package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +14 -4
  395. package/dist/unix/convert/convertUnixToPlainDateTime.js +2 -4
  396. package/dist/unix/convert/convertUnixToPlainTime.d.ts +14 -4
  397. package/dist/unix/convert/convertUnixToPlainTime.js +2 -4
  398. package/dist/unix/convert/convertUnixToUtc.d.ts +9 -4
  399. package/dist/unix/convert/convertUnixToUtc.js +3 -4
  400. package/dist/unix/convert/convertUnixToZoned.d.ts +10 -5
  401. package/dist/unix/convert/convertUnixToZoned.js +4 -5
  402. package/dist/unix/format/formatCalendarUnix.d.ts +27 -19
  403. package/dist/unix/format/formatCalendarUnix.js +4 -5
  404. package/dist/unix/format/formatRelativeUnix.d.ts +54 -5
  405. package/dist/unix/format/formatRelativeUnix.js +3 -5
  406. package/dist/unix/format/formatUnix.d.ts +24 -6
  407. package/dist/unix/format/formatUnix.js +8 -7
  408. package/dist/unix/get/getUnixNow.d.ts +8 -3
  409. package/dist/unix/get/getUnixNow.js +1 -3
  410. package/dist/unix/interval/intervalCountUnix.d.ts +14 -5
  411. package/dist/unix/interval/intervalCountUnix.js +2 -5
  412. package/dist/unix/interval/intervalDifferenceUnix.d.ts +6 -0
  413. package/dist/unix/interval/intervalDivideEquallyUnix.d.ts +18 -4
  414. package/dist/unix/interval/intervalDivideEquallyUnix.js +5 -4
  415. package/dist/unix/interval/intervalFromDurationUnix.d.ts +33 -5
  416. package/dist/unix/interval/intervalFromDurationUnix.js +6 -5
  417. package/dist/unix/interval/intervalIntersectionUnix.d.ts +6 -0
  418. package/dist/unix/interval/intervalLengthUnix.d.ts +16 -6
  419. package/dist/unix/interval/intervalLengthUnix.js +4 -6
  420. package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +13 -3
  421. package/dist/unix/interval/intervalOverlappingDaysUnix.js +1 -3
  422. package/dist/unix/interval/intervalSplitAtUnix.d.ts +8 -0
  423. package/dist/unix/interval/intervalSplitAtUnix.js +2 -0
  424. package/dist/unix/interval/intervalUnionUnix.d.ts +6 -0
  425. package/dist/unix/interval/intervalXorAllUnix.d.ts +6 -0
  426. package/dist/unix/interval/intervalXorUnix.d.ts +6 -0
  427. package/dist/unix/interval/mergeIntervalsUnix.d.ts +6 -0
  428. package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +42 -11
  429. package/dist/unix/interval/splitIntervalByUnitUnix.js +21 -16
  430. package/dist/unix/parse/parseDateFromUnix.d.ts +13 -2
  431. package/dist/unix/parse/parseDateFromUnix.js +1 -2
  432. package/dist/unix/parse/parseDayFromUnix.d.ts +14 -2
  433. package/dist/unix/parse/parseDayFromUnix.js +2 -2
  434. package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +13 -1
  435. package/dist/unix/parse/parseDayOfWeekFromUnix.js +1 -1
  436. package/dist/unix/parse/parseHourFromUnix.d.ts +14 -2
  437. package/dist/unix/parse/parseHourFromUnix.js +2 -2
  438. package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +14 -2
  439. package/dist/unix/parse/parseMicrosecondFromUnix.js +2 -2
  440. package/dist/unix/parse/parseMillisecondFromUnix.d.ts +14 -2
  441. package/dist/unix/parse/parseMillisecondFromUnix.js +2 -2
  442. package/dist/unix/parse/parseMinuteFromUnix.d.ts +14 -2
  443. package/dist/unix/parse/parseMinuteFromUnix.js +2 -2
  444. package/dist/unix/parse/parseMonthFromUnix.d.ts +14 -2
  445. package/dist/unix/parse/parseMonthFromUnix.js +2 -2
  446. package/dist/unix/parse/parseNanosecondFromUnix.d.ts +14 -2
  447. package/dist/unix/parse/parseNanosecondFromUnix.js +2 -2
  448. package/dist/unix/parse/parseSecondFromUnix.d.ts +14 -2
  449. package/dist/unix/parse/parseSecondFromUnix.js +2 -2
  450. package/dist/unix/parse/parseTimeFromUnix.d.ts +13 -2
  451. package/dist/unix/parse/parseTimeFromUnix.js +1 -2
  452. package/dist/unix/parse/parseUnitFromUnix.d.ts +22 -3
  453. package/dist/unix/parse/parseUnitFromUnix.js +2 -3
  454. package/dist/unix/parse/parseWeekFromUnix.d.ts +23 -7
  455. package/dist/unix/parse/parseWeekFromUnix.js +3 -7
  456. package/dist/unix/parse/parseYearFromUnix.d.ts +14 -2
  457. package/dist/unix/parse/parseYearFromUnix.js +2 -2
  458. package/dist/unix/validate/isValidUnixRange.d.ts +20 -4
  459. package/dist/unix/validate/isValidUnixRange.js +1 -4
  460. package/dist/utc/calculate/addUtc.d.ts +7 -4
  461. package/dist/utc/calculate/addUtc.js +1 -4
  462. package/dist/utc/calculate/diffUtc.d.ts +1 -1
  463. package/dist/utc/calculate/diffUtc.js +1 -1
  464. package/dist/utc/calculate/diffUtcAsDuration.d.ts +1 -1
  465. package/dist/utc/calculate/diffUtcAsDuration.js +1 -1
  466. package/dist/utc/calculate/endOfUtc.d.ts +16 -3
  467. package/dist/utc/calculate/endOfUtc.js +2 -3
  468. package/dist/utc/calculate/isBetweenUtc.d.ts +13 -2
  469. package/dist/utc/calculate/isBetweenUtc.js +4 -4
  470. package/dist/utc/calculate/roundUtc.d.ts +26 -9
  471. package/dist/utc/calculate/roundUtc.js +3 -12
  472. package/dist/utc/calculate/setUtc.d.ts +7 -4
  473. package/dist/utc/calculate/setUtc.js +1 -4
  474. package/dist/utc/calculate/startOfUtc.d.ts +15 -2
  475. package/dist/utc/calculate/startOfUtc.js +1 -2
  476. package/dist/utc/calculate/subtractUtc.d.ts +7 -4
  477. package/dist/utc/calculate/subtractUtc.js +1 -4
  478. package/dist/utc/compare/areUtcEqualBy.d.ts +9 -3
  479. package/dist/utc/compare/areUtcEqualBy.js +2 -3
  480. package/dist/utc/convert/convertUtcToPlainDate.d.ts +8 -3
  481. package/dist/utc/convert/convertUtcToPlainDate.js +5 -6
  482. package/dist/utc/convert/convertUtcToPlainDateTime.d.ts +8 -3
  483. package/dist/utc/convert/convertUtcToPlainDateTime.js +5 -6
  484. package/dist/utc/convert/convertUtcToPlainTime.d.ts +8 -3
  485. package/dist/utc/convert/convertUtcToPlainTime.js +5 -6
  486. package/dist/utc/convert/convertUtcToUnix.d.ts +9 -4
  487. package/dist/utc/convert/convertUtcToUnix.js +3 -4
  488. package/dist/utc/convert/convertUtcToZoned.d.ts +1 -1
  489. package/dist/utc/convert/convertUtcToZoned.js +1 -1
  490. package/dist/utc/format/formatCalendarUtc.d.ts +19 -8
  491. package/dist/utc/format/formatCalendarUtc.js +8 -6
  492. package/dist/utc/format/formatHttp.d.ts +1 -1
  493. package/dist/utc/format/formatHttp.js +1 -1
  494. package/dist/utc/format/formatRelativeUtc.d.ts +30 -10
  495. package/dist/utc/format/formatRelativeUtc.js +9 -11
  496. package/dist/utc/format/formatUtc.d.ts +17 -15
  497. package/dist/utc/format/formatUtc.js +8 -8
  498. package/dist/utc/interval/intervalDifferenceUtc.d.ts +6 -0
  499. package/dist/utc/interval/intervalDivideEquallyUtc.d.ts +18 -4
  500. package/dist/utc/interval/intervalDivideEquallyUtc.js +5 -4
  501. package/dist/utc/interval/intervalFromDurationUtc.d.ts +13 -3
  502. package/dist/utc/interval/intervalFromDurationUtc.js +1 -3
  503. package/dist/utc/interval/intervalIntersectionUtc.d.ts +6 -0
  504. package/dist/utc/interval/intervalSplitAtUtc.d.ts +8 -0
  505. package/dist/utc/interval/intervalSplitAtUtc.js +2 -0
  506. package/dist/utc/interval/intervalUnionUtc.d.ts +6 -0
  507. package/dist/utc/interval/intervalXorAllUtc.d.ts +6 -0
  508. package/dist/utc/interval/intervalXorUtc.d.ts +6 -0
  509. package/dist/utc/interval/mergeIntervalsUtc.d.ts +6 -0
  510. package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +19 -6
  511. package/dist/utc/interval/splitIntervalByUnitUtc.js +6 -6
  512. package/dist/utc/parse/parseDateFromUtc.d.ts +7 -3
  513. package/dist/utc/parse/parseDateFromUtc.js +1 -3
  514. package/dist/utc/parse/parseDayFromUtc.d.ts +7 -3
  515. package/dist/utc/parse/parseDayFromUtc.js +1 -3
  516. package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +7 -3
  517. package/dist/utc/parse/parseDayOfWeekFromUtc.js +4 -6
  518. package/dist/utc/parse/parseHourFromUtc.d.ts +7 -3
  519. package/dist/utc/parse/parseHourFromUtc.js +1 -3
  520. package/dist/utc/parse/parseHttp.d.ts +1 -1
  521. package/dist/utc/parse/parseHttp.js +1 -1
  522. package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +7 -3
  523. package/dist/utc/parse/parseMicrosecondFromUtc.js +1 -3
  524. package/dist/utc/parse/parseMillisecondFromUtc.d.ts +7 -3
  525. package/dist/utc/parse/parseMillisecondFromUtc.js +1 -3
  526. package/dist/utc/parse/parseMinuteFromUtc.d.ts +7 -3
  527. package/dist/utc/parse/parseMinuteFromUtc.js +1 -3
  528. package/dist/utc/parse/parseMonthFromUtc.d.ts +7 -3
  529. package/dist/utc/parse/parseMonthFromUtc.js +1 -3
  530. package/dist/utc/parse/parseNanosecondFromUtc.d.ts +7 -3
  531. package/dist/utc/parse/parseNanosecondFromUtc.js +1 -3
  532. package/dist/utc/parse/parseSecondFromUtc.d.ts +7 -3
  533. package/dist/utc/parse/parseSecondFromUtc.js +1 -3
  534. package/dist/utc/parse/parseTimeFromUtc.d.ts +8 -3
  535. package/dist/utc/parse/parseTimeFromUtc.js +5 -6
  536. package/dist/utc/parse/parseUnitFromUtc.d.ts +17 -5
  537. package/dist/utc/parse/parseUnitFromUtc.js +6 -8
  538. package/dist/utc/parse/parseWeekFromUtc.d.ts +18 -10
  539. package/dist/utc/parse/parseWeekFromUtc.js +7 -13
  540. package/dist/utc/parse/parseYearFromUtc.d.ts +7 -3
  541. package/dist/utc/parse/parseYearFromUtc.js +1 -3
  542. package/dist/utc/validate/isValidUtcRange.d.ts +16 -5
  543. package/dist/utc/validate/isValidUtcRange.js +2 -5
  544. package/dist/zoned/calculate/addZoned.d.ts +20 -10
  545. package/dist/zoned/calculate/addZoned.js +6 -13
  546. package/dist/zoned/calculate/cycleZoned.d.ts +33 -8
  547. package/dist/zoned/calculate/cycleZoned.js +1 -8
  548. package/dist/zoned/calculate/diffZoned.d.ts +1 -1
  549. package/dist/zoned/calculate/diffZoned.js +1 -1
  550. package/dist/zoned/calculate/diffZonedAsDuration.d.ts +1 -1
  551. package/dist/zoned/calculate/diffZonedAsDuration.js +1 -1
  552. package/dist/zoned/calculate/endOfQuarterForZoned.d.ts +9 -2
  553. package/dist/zoned/calculate/endOfQuarterForZoned.js +4 -5
  554. package/dist/zoned/calculate/endOfZoned.d.ts +16 -3
  555. package/dist/zoned/calculate/endOfZoned.js +2 -3
  556. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +10 -3
  557. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +5 -6
  558. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +7 -1
  559. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +3 -4
  560. package/dist/zoned/calculate/roundZoned.d.ts +21 -4
  561. package/dist/zoned/calculate/roundZoned.js +3 -7
  562. package/dist/zoned/calculate/setZoned.d.ts +25 -8
  563. package/dist/zoned/calculate/setZoned.js +4 -12
  564. package/dist/zoned/calculate/startOfQuarterForZoned.d.ts +7 -2
  565. package/dist/zoned/calculate/startOfQuarterForZoned.js +3 -5
  566. package/dist/zoned/calculate/startOfZoned.d.ts +15 -3
  567. package/dist/zoned/calculate/startOfZoned.js +1 -3
  568. package/dist/zoned/calculate/subtractZoned.d.ts +20 -10
  569. package/dist/zoned/calculate/subtractZoned.js +6 -13
  570. package/dist/zoned/compare/areZonedEqualBy.d.ts +14 -5
  571. package/dist/zoned/compare/areZonedEqualBy.js +7 -5
  572. package/dist/zoned/compare/isBetweenZoned.d.ts +13 -1
  573. package/dist/zoned/compare/isBetweenZoned.js +4 -3
  574. package/dist/zoned/compare/isInDaylightSaving.d.ts +38 -11
  575. package/dist/zoned/compare/isInDaylightSaving.js +40 -44
  576. package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +18 -5
  577. package/dist/zoned/convert/convertPlainDateTimeToZoned.js +6 -11
  578. package/dist/zoned/convert/convertZonedToUnix.d.ts +9 -4
  579. package/dist/zoned/convert/convertZonedToUnix.js +2 -4
  580. package/dist/zoned/convert/convertZonedToZoned.d.ts +1 -1
  581. package/dist/zoned/convert/convertZonedToZoned.js +1 -1
  582. package/dist/zoned/format/formatCalendarZoned.d.ts +18 -12
  583. package/dist/zoned/format/formatCalendarZoned.js +13 -9
  584. package/dist/zoned/format/formatRelativeZoned.d.ts +41 -12
  585. package/dist/zoned/format/formatRelativeZoned.js +7 -4
  586. package/dist/zoned/format/formatRfc2822.d.ts +2 -2
  587. package/dist/zoned/format/formatRfc2822.js +2 -2
  588. package/dist/zoned/format/formatRfc3339.d.ts +2 -3
  589. package/dist/zoned/format/formatRfc3339.js +2 -3
  590. package/dist/zoned/format/formatTimeZoneName.d.ts +12 -3
  591. package/dist/zoned/format/formatTimeZoneName.js +5 -4
  592. package/dist/zoned/format/formatZonedDateTime.js +2 -1
  593. package/dist/zoned/format/formatZonedRange.js +2 -1
  594. package/dist/zoned/format/formatZonedToParts.d.ts +15 -4
  595. package/dist/zoned/format/formatZonedToParts.js +8 -5
  596. package/dist/zoned/get/getDstTransitions.d.ts +9 -10
  597. package/dist/zoned/get/getDstTransitions.js +12 -3
  598. package/dist/zoned/get/getTimeZoneOffset.d.ts +4 -1
  599. package/dist/zoned/get/getTimeZoneOffset.js +6 -3
  600. package/dist/zoned/get/getZonedNow.d.ts +13 -1
  601. package/dist/zoned/get/getZonedNow.js +12 -3
  602. package/dist/zoned/interval/intervalDifferenceZoned.d.ts +9 -0
  603. package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +22 -4
  604. package/dist/zoned/interval/intervalDivideEquallyZoned.js +6 -4
  605. package/dist/zoned/interval/intervalFromDurationZoned.d.ts +29 -10
  606. package/dist/zoned/interval/intervalFromDurationZoned.js +6 -13
  607. package/dist/zoned/interval/intervalIntersectionZoned.d.ts +9 -0
  608. package/dist/zoned/interval/intervalSplitAtZoned.d.ts +11 -0
  609. package/dist/zoned/interval/intervalSplitAtZoned.js +2 -0
  610. package/dist/zoned/interval/intervalUnionZoned.d.ts +9 -0
  611. package/dist/zoned/interval/intervalXorAllZoned.d.ts +9 -0
  612. package/dist/zoned/interval/intervalXorZoned.d.ts +9 -0
  613. package/dist/zoned/interval/mergeIntervalsZoned.d.ts +9 -0
  614. package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +27 -6
  615. package/dist/zoned/interval/splitIntervalByUnitZoned.js +11 -6
  616. package/dist/zoned/map/mapZonedDatesInRange.d.ts +9 -4
  617. package/dist/zoned/map/mapZonedDatesInRange.js +2 -4
  618. package/dist/zoned/parse/parseRfc2822.d.ts +1 -1
  619. package/dist/zoned/parse/parseRfc2822.js +1 -1
  620. package/dist/zoned/parse/parseUnitFromZoned.d.ts +9 -3
  621. package/dist/zoned/parse/parseUnitFromZoned.js +1 -3
  622. package/dist/zoned/parse/parseWeekFromZoned.d.ts +10 -3
  623. package/dist/zoned/parse/parseWeekFromZoned.js +2 -3
  624. package/dist/zoned/validate/hasDaylightSaving.d.ts +42 -11
  625. package/dist/zoned/validate/hasDaylightSaving.js +47 -31
  626. package/dist/zoned/validate/isValidZonedDateTime.d.ts +13 -0
  627. package/dist/zoned/validate/isValidZonedDateTime.js +14 -1
  628. package/dist/zoned/validate/isValidZonedRange.d.ts +15 -4
  629. package/dist/zoned/validate/isValidZonedRange.js +1 -4
  630. package/package.json +18 -5
  631. package/skills/gmt-arithmetic/SKILL.md +1 -1
  632. package/skills/gmt-basics/SKILL.md +10 -1
  633. package/skills/gmt-integration/SKILL.md +10 -5
  634. package/skills/gmt-timezone/SKILL.md +150 -21
  635. package/dist/internal/resolveReadingTimeZone.d.ts +0 -11
  636. package/dist/internal/resolveReadingTimeZone.js +0 -18
  637. package/dist/types/duration-unit.d.ts +0 -5
  638. /package/dist/types/{duration-unit.js → operating-schedule.js} +0 -0
@@ -4,9 +4,6 @@ import type { DateTimeUnit } from "../../types/index.js";
4
4
  * Round an ISO 8601 datetime string to the specified date-time unit.
5
5
  *
6
6
  * - Returns "" for invalid inputs.
7
- * - Accepts all date and time units: "year", "month", "week", "day", "hour", "minute", "second", "millisecond", "microsecond", "nanosecond".
8
- * - Each unit is accepted in its singular or plural form ("day" or "days"), as Temporal's
9
- * GetTemporalUnitValuedOption accepts both.
10
7
  * - Time units use Temporal.PlainDateTime.round() directly.
11
8
  * - Date units (year, month, week) use manual start-of-unit rounding. Weeks start on Monday.
12
9
  * - For date units the rounding grid is anchored at the unit containing `value`, so `"halfEven"`
@@ -18,17 +15,13 @@ import type { DateTimeUnit } from "../../types/index.js";
18
15
  * that unrepresentable start, the result is "".
19
16
  * - In the last representable year (`+275760`) a value that rounds down to a date unit still
20
17
  * returns that unit's start; only rounding up past `+275760-09-13T23:59:59.999999999` returns "".
21
- * - `roundingIncrement` and `roundingMode` are read as Temporal reads them for every unit: a
22
- * non-integer increment is truncated (`1.5` rounds by 1), an increment below 1 or not finite
23
- * returns "", and a `roundingMode` outside Temporal's nine returns "" (previously a date unit
24
- * floored silently).
25
18
  * - Wraps all Temporal calls in try-catch; returns "" on any error.
26
19
  * - Output precision follows `smallestUnit`: no fractional seconds for "second" and coarser,
27
20
  * 3 digits for "millisecond", 6 for "microsecond" and 9 for "nanosecond", so the result never
28
21
  * hides the precision the unit asked for.
29
22
  *
30
23
  * @param value ISO 8601 datetime string
31
- * @param options Rounding options: smallestUnit, optional roundingIncrement and roundingMode
24
+ * @param options The unit to round to and how to round
32
25
  * @returns Rounded ISO 8601 datetime string, or "" on invalid input
33
26
  *
34
27
  * @example roundDateTime("2024-06-15T12:34:56", { smallestUnit: "year" }) // "2024-01-01T00:00:00"
@@ -44,7 +37,28 @@ import type { DateTimeUnit } from "../../types/index.js";
44
37
  * @example roundDateTime("invalid", { smallestUnit: "year" }) // ""
45
38
  */
46
39
  export declare function roundDateTime(value: string, options: {
40
+ /**
41
+ * The unit to round to, any date or time unit from `"year"` to `"nanosecond"`, singular
42
+ * or plural, as Temporal's GetTemporalUnitValuedOption accepts both. It also sets how
43
+ * many fractional-second digits the result is written with.
44
+ */
47
45
  smallestUnit: Temporal.SmallestUnit<DateTimeUnit>;
46
+ /**
47
+ * How many units make one rounding step. For `"day"` and the time units Temporal
48
+ * requires it to divide the next larger unit evenly and be smaller than it (`15` minutes,
49
+ * not `7` or `60`; a day only by `1`); for `"year"`, `"month"` and `"week"` the steps are
50
+ * counted from the unit that holds `value`. A non-integer is truncated, and a value below 1
51
+ * or not finite returns `""`.
52
+ *
53
+ * @defaultValue `1`, Temporal's default.
54
+ */
48
55
  roundingIncrement?: number;
56
+ /**
57
+ * Which way a value between two steps goes: one of Temporal's nine rounding modes, such as
58
+ * `"floor"`, `"ceil"` or `"halfExpand"` (to the nearer step, a tie going up). Any other value
59
+ * returns `""`.
60
+ *
61
+ * @defaultValue `"halfExpand"`, Temporal's default.
62
+ */
49
63
  roundingMode?: Temporal.RoundingMode;
50
64
  }): string;
@@ -85,9 +85,6 @@ function roundDateUnit(source, smallestUnit, increment, mode) {
85
85
  * Round an ISO 8601 datetime string to the specified date-time unit.
86
86
  *
87
87
  * - Returns "" for invalid inputs.
88
- * - Accepts all date and time units: "year", "month", "week", "day", "hour", "minute", "second", "millisecond", "microsecond", "nanosecond".
89
- * - Each unit is accepted in its singular or plural form ("day" or "days"), as Temporal's
90
- * GetTemporalUnitValuedOption accepts both.
91
88
  * - Time units use Temporal.PlainDateTime.round() directly.
92
89
  * - Date units (year, month, week) use manual start-of-unit rounding. Weeks start on Monday.
93
90
  * - For date units the rounding grid is anchored at the unit containing `value`, so `"halfEven"`
@@ -99,17 +96,13 @@ function roundDateUnit(source, smallestUnit, increment, mode) {
99
96
  * that unrepresentable start, the result is "".
100
97
  * - In the last representable year (`+275760`) a value that rounds down to a date unit still
101
98
  * returns that unit's start; only rounding up past `+275760-09-13T23:59:59.999999999` returns "".
102
- * - `roundingIncrement` and `roundingMode` are read as Temporal reads them for every unit: a
103
- * non-integer increment is truncated (`1.5` rounds by 1), an increment below 1 or not finite
104
- * returns "", and a `roundingMode` outside Temporal's nine returns "" (previously a date unit
105
- * floored silently).
106
99
  * - Wraps all Temporal calls in try-catch; returns "" on any error.
107
100
  * - Output precision follows `smallestUnit`: no fractional seconds for "second" and coarser,
108
101
  * 3 digits for "millisecond", 6 for "microsecond" and 9 for "nanosecond", so the result never
109
102
  * hides the precision the unit asked for.
110
103
  *
111
104
  * @param value ISO 8601 datetime string
112
- * @param options Rounding options: smallestUnit, optional roundingIncrement and roundingMode
105
+ * @param options The unit to round to and how to round
113
106
  * @returns Rounded ISO 8601 datetime string, or "" on invalid input
114
107
  *
115
108
  * @example roundDateTime("2024-06-15T12:34:56", { smallestUnit: "year" }) // "2024-01-01T00:00:00"
@@ -129,9 +122,8 @@ export function roundDateTime(value, options) {
129
122
  if (!isObject(options))
130
123
  return "";
131
124
  const { roundingIncrement, roundingMode } = options;
132
- const smallestUnit = typeof options.smallestUnit === "string"
133
- ? resolveDateTimeUnit(options.smallestUnit)
134
- : options.smallestUnit;
125
+ // One read (GetOption): resolveDateTimeUnit returns a value that is not a string unchanged.
126
+ const smallestUnit = resolveDateTimeUnit(options.smallestUnit);
135
127
  if (!isValidDateTime(value) || !isValidDateTimeUnit(smallestUnit))
136
128
  return "";
137
129
  try {
@@ -3,16 +3,13 @@ import { Temporal } from "@js-temporal/polyfill";
3
3
  * Round an ISO 8601 time string to the specified time unit.
4
4
  *
5
5
  * - Returns "" for invalid inputs.
6
- * - Only time units are accepted: "hour", "minute", "second", "millisecond", "microsecond", "nanosecond".
7
- * - Each unit is accepted in its singular or plural form ("hour" or "hours"), as Temporal's
8
- * GetTemporalUnitValuedOption accepts both.
9
6
  * - Wraps Temporal.PlainTime.round() which throws on invalid options.
10
7
  * - Output precision follows `smallestUnit`: no fractional seconds for "second" and coarser,
11
8
  * 3 digits for "millisecond", 6 for "microsecond" and 9 for "nanosecond", so the result never
12
9
  * hides the precision the unit asked for.
13
10
  *
14
11
  * @param value ISO 8601 time string
15
- * @param options Rounding options: smallestUnit, optional roundingIncrement and roundingMode
12
+ * @param options The unit to round to and how to round
16
13
  * @returns Rounded ISO 8601 time string, or "" on invalid input
17
14
  *
18
15
  * @example roundTime("12:34:56", { smallestUnit: "hour" }) // "13:00:00"
@@ -23,7 +20,26 @@ import { Temporal } from "@js-temporal/polyfill";
23
20
  * @example roundTime("invalid", { smallestUnit: "hour" }) // ""
24
21
  */
25
22
  export declare function roundTime(value: string, options: {
23
+ /**
24
+ * The unit to round to, a time unit from `"hour"` to `"nanosecond"`, singular or plural, as
25
+ * Temporal's GetTemporalUnitValuedOption accepts both. It also sets how many fractional-second
26
+ * digits the result is written with. A date unit returns `""`.
27
+ */
26
28
  smallestUnit: Temporal.SmallestUnit<Temporal.TimeUnit>;
29
+ /**
30
+ * How many units make one rounding step. Temporal requires it to divide the next larger
31
+ * unit evenly and be smaller than it (`15` minutes, not `7` or `60`), and truncates a
32
+ * non-integer; any other value returns `""`.
33
+ *
34
+ * @defaultValue `1`, Temporal's default.
35
+ */
27
36
  roundingIncrement?: number;
37
+ /**
38
+ * Which way a time between two steps goes: one of Temporal's nine rounding modes, such as
39
+ * `"floor"`, `"ceil"` or `"halfExpand"` (to the nearer step, a tie going up). Any other value
40
+ * returns `""`.
41
+ *
42
+ * @defaultValue `"halfExpand"`, Temporal's default.
43
+ */
28
44
  roundingMode?: Temporal.RoundingMode;
29
45
  }): string;
@@ -6,16 +6,13 @@ import { isValidTime, isValidTimeUnit } from "../validate/index.js";
6
6
  * Round an ISO 8601 time string to the specified time unit.
7
7
  *
8
8
  * - Returns "" for invalid inputs.
9
- * - Only time units are accepted: "hour", "minute", "second", "millisecond", "microsecond", "nanosecond".
10
- * - Each unit is accepted in its singular or plural form ("hour" or "hours"), as Temporal's
11
- * GetTemporalUnitValuedOption accepts both.
12
9
  * - Wraps Temporal.PlainTime.round() which throws on invalid options.
13
10
  * - Output precision follows `smallestUnit`: no fractional seconds for "second" and coarser,
14
11
  * 3 digits for "millisecond", 6 for "microsecond" and 9 for "nanosecond", so the result never
15
12
  * hides the precision the unit asked for.
16
13
  *
17
14
  * @param value ISO 8601 time string
18
- * @param options Rounding options: smallestUnit, optional roundingIncrement and roundingMode
15
+ * @param options The unit to round to and how to round
19
16
  * @returns Rounded ISO 8601 time string, or "" on invalid input
20
17
  *
21
18
  * @example roundTime("12:34:56", { smallestUnit: "hour" }) // "13:00:00"
@@ -30,9 +27,8 @@ export function roundTime(value, options) {
30
27
  if (!isObject(options))
31
28
  return "";
32
29
  const { roundingIncrement, roundingMode } = options;
33
- const smallestUnit = typeof options.smallestUnit === "string"
34
- ? resolveDateTimeUnit(options.smallestUnit)
35
- : options.smallestUnit;
30
+ // One read (GetOption): resolveDateTimeUnit returns a value that is not a string unchanged.
31
+ const smallestUnit = resolveDateTimeUnit(options.smallestUnit);
36
32
  if (!isValidTime(value) || !isValidTimeUnit(smallestUnit))
37
33
  return "";
38
34
  try {
@@ -12,13 +12,9 @@ import type { Overflow } from "../../types/index.js";
12
12
  * fields keep their current value. An empty object is a no-op.
13
13
  * - Returns "" for invalid input.
14
14
  *
15
- * `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. setting
16
- * `month: 2` on a date whose `day` is 31: "constrain" clamps to Feb 29/28, "reject" throws
17
- * (resulting in "").
18
- *
19
15
  * @param value ISO PlainDate string
20
16
  * @param fields Partial<Temporal.PlainDateLike> object specifying fields to set
21
- * @param options optional: overflow ("constrain" | "reject")
17
+ * @param options How an out-of-range field value is handled
22
18
  * @returns ISO PlainDate string with fields set, or "" on invalid input
23
19
  *
24
20
  * @example setDate("2024-03-10", { year: 2025 }) // "2025-03-10"
@@ -28,5 +24,11 @@ import type { Overflow } from "../../types/index.js";
28
24
  * @example setDate("invalid", { year: 2025 }) // ""
29
25
  */
30
26
  export declare function setDate(value: string, fields: Omit<Temporal.PlainDateLike, "calendar">, options?: {
27
+ /**
28
+ * What to do when the fields do not form a real date. `"constrain"` clamps to the last valid
29
+ * day, so `month: 2` on the 31st gives Feb 29 or 28; `"reject"` returns `""`.
30
+ *
31
+ * @defaultValue `"constrain"`, Temporal's default.
32
+ */
31
33
  overflow?: Overflow;
32
34
  }): string;
@@ -14,13 +14,9 @@ import { isOptionsArgument } from "../../internal/isObject.js";
14
14
  * fields keep their current value. An empty object is a no-op.
15
15
  * - Returns "" for invalid input.
16
16
  *
17
- * `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. setting
18
- * `month: 2` on a date whose `day` is 31: "constrain" clamps to Feb 29/28, "reject" throws
19
- * (resulting in "").
20
- *
21
17
  * @param value ISO PlainDate string
22
18
  * @param fields Partial<Temporal.PlainDateLike> object specifying fields to set
23
- * @param options optional: overflow ("constrain" | "reject")
19
+ * @param options How an out-of-range field value is handled
24
20
  * @returns ISO PlainDate string with fields set, or "" on invalid input
25
21
  *
26
22
  * @example setDate("2024-03-10", { year: 2025 }) // "2025-03-10"
@@ -11,13 +11,9 @@ import type { Overflow } from "../../types/index.js";
11
11
  * their current value. An empty object is a no-op.
12
12
  * - Returns "" for invalid input.
13
13
  *
14
- * `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. setting
15
- * `month: 2` on a datetime whose `day` is 31: "constrain" clamps to Feb 29/28, "reject" throws
16
- * (resulting in "").
17
- *
18
14
  * @param value ISO PlainDateTime string
19
15
  * @param fields Partial<Temporal.PlainDateTimeLike> object specifying fields to set
20
- * @param options optional: overflow ("constrain" | "reject")
16
+ * @param options How an out-of-range field value is handled
21
17
  * @returns ISO PlainDateTime string with fields set, or "" on invalid input
22
18
  *
23
19
  * @example setDateTime("2024-03-10T12:00:00", { hour: 9 }) // "2024-03-10T09:00:00"
@@ -27,5 +23,12 @@ import type { Overflow } from "../../types/index.js";
27
23
  * @example setDateTime("invalid", { hour: 9 }) // ""
28
24
  */
29
25
  export declare function setDateTime(value: string, fields: Omit<Temporal.PlainDateTimeLike, "calendar">, options?: {
26
+ /**
27
+ * What to do when the fields do not form a real date-time. `"constrain"` clamps each field to
28
+ * its nearest valid value, so `month: 2` on the 31st gives Feb 29 or 28; `"reject"` returns
29
+ * `""`.
30
+ *
31
+ * @defaultValue `"constrain"`, Temporal's default.
32
+ */
30
33
  overflow?: Overflow;
31
34
  }): string;
@@ -13,13 +13,9 @@ import { isOptionsArgument } from "../../internal/isObject.js";
13
13
  * their current value. An empty object is a no-op.
14
14
  * - Returns "" for invalid input.
15
15
  *
16
- * `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. setting
17
- * `month: 2` on a datetime whose `day` is 31: "constrain" clamps to Feb 29/28, "reject" throws
18
- * (resulting in "").
19
- *
20
16
  * @param value ISO PlainDateTime string
21
17
  * @param fields Partial<Temporal.PlainDateTimeLike> object specifying fields to set
22
- * @param options optional: overflow ("constrain" | "reject")
18
+ * @param options How an out-of-range field value is handled
23
19
  * @returns ISO PlainDateTime string with fields set, or "" on invalid input
24
20
  *
25
21
  * @example setDateTime("2024-03-10T12:00:00", { hour: 9 }) // "2024-03-10T09:00:00"
@@ -8,16 +8,14 @@ import type { Overflow } from "../../types/index.js";
8
8
  * `addTime()` calls field-by-field.
9
9
  * - `fields` may set any of `hour`, `minute`, `second`, `millisecond`, `microsecond`, and/or
10
10
  * `nanosecond`; omitted fields keep their current value. An empty object is a no-op.
11
+ * - Unlike `addTime`, which takes no `overflow` because addition always wraps around the clock,
12
+ * `overflow` has an effect here: `.with()` assigns fixed field values rather than adding a
13
+ * delta.
11
14
  * - Returns "" for invalid input.
12
15
  *
13
- * `overflow` ("constrain" (default) | "reject") controls out-of-range field values, e.g.
14
- * `hour: 25`: "constrain" clamps to 23, "reject" throws (resulting in ""). Unlike `addTime`
15
- * (which takes no `overflow`, because addition always wraps around the clock), `overflow` has
16
- * a real effect here because `.with()` assigns fixed field values rather than adding a delta.
17
- *
18
16
  * @param value ISO PlainTime string
19
17
  * @param fields Partial<Temporal.PlainTimeLike> object specifying fields to set
20
- * @param options optional: overflow ("constrain" | "reject")
18
+ * @param options How an out-of-range field value is handled
21
19
  * @returns ISO PlainTime string with fields set, or "" on invalid input
22
20
  *
23
21
  * @example setTime("12:00:00", { hour: 9 }) // "09:00:00"
@@ -27,5 +25,11 @@ import type { Overflow } from "../../types/index.js";
27
25
  * @example setTime("invalid", { hour: 9 }) // ""
28
26
  */
29
27
  export declare function setTime(value: string, fields: Temporal.PlainTimeLike, options?: {
28
+ /**
29
+ * What to do when a field value is out of range. `"constrain"` clamps it to the nearest valid
30
+ * value, so `hour: 25` becomes 23; `"reject"` returns `""`.
31
+ *
32
+ * @defaultValue `"constrain"`, Temporal's default.
33
+ */
30
34
  overflow?: Overflow;
31
35
  }): string;
@@ -10,16 +10,14 @@ import { isOptionsArgument } from "../../internal/isObject.js";
10
10
  * `addTime()` calls field-by-field.
11
11
  * - `fields` may set any of `hour`, `minute`, `second`, `millisecond`, `microsecond`, and/or
12
12
  * `nanosecond`; omitted fields keep their current value. An empty object is a no-op.
13
+ * - Unlike `addTime`, which takes no `overflow` because addition always wraps around the clock,
14
+ * `overflow` has an effect here: `.with()` assigns fixed field values rather than adding a
15
+ * delta.
13
16
  * - Returns "" for invalid input.
14
17
  *
15
- * `overflow` ("constrain" (default) | "reject") controls out-of-range field values, e.g.
16
- * `hour: 25`: "constrain" clamps to 23, "reject" throws (resulting in ""). Unlike `addTime`
17
- * (which takes no `overflow`, because addition always wraps around the clock), `overflow` has
18
- * a real effect here because `.with()` assigns fixed field values rather than adding a delta.
19
- *
20
18
  * @param value ISO PlainTime string
21
19
  * @param fields Partial<Temporal.PlainTimeLike> object specifying fields to set
22
- * @param options optional: overflow ("constrain" | "reject")
20
+ * @param options How an out-of-range field value is handled
23
21
  * @returns ISO PlainTime string with fields set, or "" on invalid input
24
22
  *
25
23
  * @example setTime("12:00:00", { hour: 9 }) // "09:00:00"
@@ -4,12 +4,11 @@ import { Temporal } from "@js-temporal/polyfill";
4
4
  *
5
5
  * - `"day"` returns the date itself: a date is already a whole day, as `endOfDate` treats it.
6
6
  * - `unit` accepts the singular or plural name (`"month"` or `"months"`), as Temporal does.
7
- * - `weekStartsOn` other than `"monday"` or `"sunday"` returns "".
8
7
  * - Returns "" for invalid inputs.
9
8
  *
10
9
  * @param value ISO 8601 date string
11
10
  * @param unit date unit, singular or plural, to specify the unit for the start
12
- * @param optionsArg optional: weekStartsOn ("monday" | "sunday")
11
+ * @param optionsArg How the week is defined
13
12
  * @returns ISO 8601 string representing the start of the specified unit, or "" on invalid input
14
13
  *
15
14
  * @example startOfDate("2024-02-29", "month") // "2024-02-01"
@@ -18,5 +17,12 @@ import { Temporal } from "@js-temporal/polyfill";
18
17
  * @example startOfDate("invalid-date", "month") // ""
19
18
  */
20
19
  export declare function startOfDate(value: string, unit: Temporal.SmallestUnit<Temporal.DateUnit>, optionsArg?: {
20
+ /**
21
+ * The first day of the week, which sets where a `"week"` unit starts. `"monday"` is the ISO
22
+ * 8601 week, Monday to Sunday; `"sunday"` runs Sunday to Saturday. Any other value returns
23
+ * `""`, whatever the unit.
24
+ *
25
+ * @defaultValue `"monday"`
26
+ */
21
27
  weekStartsOn?: "monday" | "sunday";
22
28
  }): string;
@@ -10,12 +10,11 @@ const supported = ["year", "month", "week", "day"];
10
10
  *
11
11
  * - `"day"` returns the date itself: a date is already a whole day, as `endOfDate` treats it.
12
12
  * - `unit` accepts the singular or plural name (`"month"` or `"months"`), as Temporal does.
13
- * - `weekStartsOn` other than `"monday"` or `"sunday"` returns "".
14
13
  * - Returns "" for invalid inputs.
15
14
  *
16
15
  * @param value ISO 8601 date string
17
16
  * @param unit date unit, singular or plural, to specify the unit for the start
18
- * @param optionsArg optional: weekStartsOn ("monday" | "sunday")
17
+ * @param optionsArg How the week is defined
19
18
  * @returns ISO 8601 string representing the start of the specified unit, or "" on invalid input
20
19
  *
21
20
  * @example startOfDate("2024-02-29", "month") // "2024-02-01"
@@ -4,12 +4,11 @@ import type { FractionalDigit } from "../../types/index.js";
4
4
  * Return the start of the specified date-time `unit` for a given ISO 8601 datetime string.
5
5
  *
6
6
  * - `unit` accepts the singular or plural name (`"month"` or `"months"`), as Temporal does.
7
- * - `weekStartsOn` other than `"monday"` or `"sunday"` returns "".
8
7
  * - Returns "" for invalid inputs.
9
8
  *
10
9
  * @param value ISO 8601 datetime string
11
10
  * @param unit date or time unit, singular or plural, to specify the unit for the start
12
- * @param optionsArg optional: weekStartsOn ("monday" | "sunday"), fractionalSecondDigits (number)
11
+ * @param optionsArg How the week is defined and how the result is written
13
12
  * @returns ISO 8601 string representing the start of the specified unit, or "" on invalid input
14
13
  *
15
14
  * @example startOfDateTime("2024-02-29T12:34:56", "month") // "2024-02-01T00:00:00"
@@ -17,6 +16,20 @@ import type { FractionalDigit } from "../../types/index.js";
17
16
  * @example startOfDateTime("invalid-datetime", "month") // ""
18
17
  */
19
18
  export declare function startOfDateTime(value: string, unit: Temporal.SmallestUnit<Temporal.DateTimeUnit>, optionsArg?: {
19
+ /**
20
+ * The first day of the week, which sets where a `"week"` unit starts. `"monday"` is the ISO
21
+ * 8601 week, Monday to Sunday; `"sunday"` runs Sunday to Saturday. Any other value returns
22
+ * `""`, whatever the unit.
23
+ *
24
+ * @defaultValue `"monday"`
25
+ */
20
26
  weekStartsOn?: "monday" | "sunday";
27
+ /**
28
+ * The number of fractional-second digits the result is written with, `0` to `9`, or `"auto"` to
29
+ * drop trailing zeros. Fewer digits than `unit` names truncate, as Temporal's `toString` does.
30
+ *
31
+ * @defaultValue The digits `unit` names: `3` for `"millisecond"`, `6` for `"microsecond"`, `9`
32
+ * for `"nanosecond"` and `0` for any coarser unit.
33
+ */
21
34
  fractionalSecondDigits?: FractionalDigit;
22
35
  }): string;
@@ -9,12 +9,11 @@ import { isOptionsArgument } from "../../internal/isObject.js";
9
9
  * Return the start of the specified date-time `unit` for a given ISO 8601 datetime string.
10
10
  *
11
11
  * - `unit` accepts the singular or plural name (`"month"` or `"months"`), as Temporal does.
12
- * - `weekStartsOn` other than `"monday"` or `"sunday"` returns "".
13
12
  * - Returns "" for invalid inputs.
14
13
  *
15
14
  * @param value ISO 8601 datetime string
16
15
  * @param unit date or time unit, singular or plural, to specify the unit for the start
17
- * @param optionsArg optional: weekStartsOn ("monday" | "sunday"), fractionalSecondDigits (number)
16
+ * @param optionsArg How the week is defined and how the result is written
18
17
  * @returns ISO 8601 string representing the start of the specified unit, or "" on invalid input
19
18
  *
20
19
  * @example startOfDateTime("2024-02-29T12:34:56", "month") // "2024-02-01T00:00:00"
@@ -20,7 +20,7 @@ export type StartOfTimeUnit = Temporal.SmallestUnit<Temporal.TimeUnit | "day">;
20
20
  *
21
21
  * @param value ISO 8601 time string
22
22
  * @param unit StartOfTimeUnit to specify the unit for the start
23
- * @param optionsArg optional: fractionalSecondDigits (number)
23
+ * @param optionsArg How the result is written
24
24
  * @returns ISO 8601 string representing the start of the specified unit, or "" on invalid input
25
25
  *
26
26
  * @example startOfTime("12:34:56", "hour") // "12:00:00"
@@ -29,5 +29,12 @@ export type StartOfTimeUnit = Temporal.SmallestUnit<Temporal.TimeUnit | "day">;
29
29
  * @example startOfTime("invalid", "hour") // ""
30
30
  */
31
31
  export declare function startOfTime(value: string, unit: StartOfTimeUnit, optionsArg?: {
32
+ /**
33
+ * The number of fractional-second digits the result is written with, `0` to `9`, or `"auto"` to
34
+ * drop trailing zeros. Fewer digits than `unit` names truncate, as Temporal's `toString` does.
35
+ *
36
+ * @defaultValue The digits `unit` names: `3` for `"millisecond"`, `6` for `"microsecond"`, `9`
37
+ * for `"nanosecond"` and `0` for any coarser unit.
38
+ */
32
39
  fractionalSecondDigits?: FractionalDigit;
33
40
  }): string;
@@ -25,7 +25,7 @@ const supported = [
25
25
  *
26
26
  * @param value ISO 8601 time string
27
27
  * @param unit StartOfTimeUnit to specify the unit for the start
28
- * @param optionsArg optional: fractionalSecondDigits (number)
28
+ * @param optionsArg How the result is written
29
29
  * @returns ISO 8601 string representing the start of the specified unit, or "" on invalid input
30
30
  *
31
31
  * @example startOfTime("12:34:56", "hour") // "12:00:00"
@@ -10,12 +10,9 @@ import type { DateDurationUnit, Overflow } from "../../types/index.js";
10
10
  * calendar ids); see `isValidCalendarDate`.
11
11
  * - Returns "" for invalid inputs.
12
12
  *
13
- * `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. subtracting
14
- * 1 month from Mar 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in "").
15
- *
16
13
  * @param value ISO PlainDate string, optionally calendar-annotated
17
14
  * @param units Partial<Record<DateDurationUnit, number>> object specifying units to subtract
18
- * @param options optional: overflow ("constrain" | "reject")
15
+ * @param options How an out-of-range result is handled
19
16
  * @returns ISO PlainDate string after subtraction, or "" on invalid input
20
17
  *
21
18
  * @example subtractDate("2024-03-15", { days: 5 }) // "2024-03-10"
@@ -24,5 +21,11 @@ import type { DateDurationUnit, Overflow } from "../../types/index.js";
24
21
  * @example subtractDate("2024-03-25[u-ca=hebrew]", { months: 1 }) // "2024-02-24[u-ca=hebrew]" (15 Adar II 5784 -> 15 Adar I)
25
22
  */
26
23
  export declare function subtractDate(value: string, units: Partial<Record<DateDurationUnit, number>>, options?: {
24
+ /**
25
+ * What to do when the result is not a real date. `"constrain"` clamps it to the last valid day,
26
+ * so Mar 31 - 1 month is Feb 29 or 28; `"reject"` returns `""`.
27
+ *
28
+ * @defaultValue `"constrain"`, Temporal's default.
29
+ */
27
30
  overflow?: Overflow;
28
31
  }): string;
@@ -14,12 +14,9 @@ import { isOptionsArgument } from "../../internal/isObject.js";
14
14
  * calendar ids); see `isValidCalendarDate`.
15
15
  * - Returns "" for invalid inputs.
16
16
  *
17
- * `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. subtracting
18
- * 1 month from Mar 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in "").
19
- *
20
17
  * @param value ISO PlainDate string, optionally calendar-annotated
21
18
  * @param units Partial<Record<DateDurationUnit, number>> object specifying units to subtract
22
- * @param options optional: overflow ("constrain" | "reject")
19
+ * @param options How an out-of-range result is handled
23
20
  * @returns ISO PlainDate string after subtraction, or "" on invalid input
24
21
  *
25
22
  * @example subtractDate("2024-03-15", { days: 5 }) // "2024-03-10"
@@ -5,12 +5,9 @@ import type { DateTimeDurationUnit, Overflow } from "../../types/index.js";
5
5
  * - Validates `value`, `units`, and `amount` before performing the subtract.
6
6
  * - Returns "" for invalid inputs.
7
7
  *
8
- * `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. subtracting
9
- * 1 month from Mar 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in "").
10
- *
11
8
  * @param value ISO PlainDateTime string
12
9
  * @param units Partial<Record<DateTimeDurationUnit, number>> object specifying units to subtract
13
- * @param options optional: overflow ("constrain" | "reject")
10
+ * @param options How an out-of-range result is handled
14
11
  * @returns ISO PlainDateTime string after subtraction, or "" on invalid input
15
12
  *
16
13
  * @example subtractDateTime("2024-03-15T12:00:00", { days: 5 }) // "2024-03-10T12:00:00"
@@ -18,5 +15,11 @@ import type { DateTimeDurationUnit, Overflow } from "../../types/index.js";
18
15
  * @example subtractDateTime("2024-03-31T12:00:00", { months: 1 }, { overflow: "reject" }) // ""
19
16
  */
20
17
  export declare function subtractDateTime(value: string, units: Partial<Record<DateTimeDurationUnit, number>>, options?: {
18
+ /**
19
+ * What to do when the result is not a real date. `"constrain"` clamps it to the last valid day,
20
+ * so Mar 31 - 1 month is Feb 29 or 28; `"reject"` returns `""`.
21
+ *
22
+ * @defaultValue `"constrain"`, Temporal's default.
23
+ */
21
24
  overflow?: Overflow;
22
25
  }): string;
@@ -9,12 +9,9 @@ import { isOptionsArgument } from "../../internal/isObject.js";
9
9
  * - Validates `value`, `units`, and `amount` before performing the subtract.
10
10
  * - Returns "" for invalid inputs.
11
11
  *
12
- * `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. subtracting
13
- * 1 month from Mar 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in "").
14
- *
15
12
  * @param value ISO PlainDateTime string
16
13
  * @param units Partial<Record<DateTimeDurationUnit, number>> object specifying units to subtract
17
- * @param options optional: overflow ("constrain" | "reject")
14
+ * @param options How an out-of-range result is handled
18
15
  * @returns ISO PlainDateTime string after subtraction, or "" on invalid input
19
16
  *
20
17
  * @example subtractDateTime("2024-03-15T12:00:00", { days: 5 }) // "2024-03-10T12:00:00"
@@ -4,18 +4,19 @@ import { Temporal } from "@js-temporal/polyfill";
4
4
  *
5
5
  * - Equality means both values share the same start-of-`unit` boundary, so
6
6
  * `"month"` requires the same month AND year — March 2023 and March 2024 are
7
- * NOT equal by month, matching date-fns's `isSameMonth` and Luxon's
8
- * `dt.hasSame(other, "month")`.
7
+ * NOT equal by month. A calendar month is a year and a month together, as in
8
+ * Temporal's `PlainYearMonth`, not a bare month-of-year number.
9
+ * - Comparison: date-fns's `isSameMonth` and Luxon's `dt.hasSame(other, "month")`
10
+ * give the same answer.
9
11
  * - Supports the full `Temporal.DateUnit | Temporal.TimeUnit` range, down to
10
12
  * `"nanosecond"`.
11
13
  * - `unit` accepts the singular or plural name (`"day"` or `"days"`), as Temporal does.
12
- * - `weekStartsOn` other than `"monday"` or `"sunday"` returns false.
13
14
  * - Returns false for an unsupported unit or invalid input.
14
15
  * - Takes no `fractionalSecondDigits`: equality compares full-precision `unit` boundaries, and output
15
16
  * digits cannot change which bucket a value is in. That ignored option was removed in 1.16.0; to
16
17
  * compare more coarsely, pass a coarser unit (0 digits is `"second"`, 3 is `"millisecond"`).
17
18
  *
18
- * Mapping from date-fns (Decision 5, `context/roadmap/issues/J.md`):
19
+ * Mapping from date-fns:
19
20
  * - `isSameDay(a, b)` → `areDateTimesEqualBy(a, b, "day")`
20
21
  * - `isSameHour(a, b)` → `areDateTimesEqualBy(a, b, "hour")`
21
22
  * - `isSameMinute(a, b)` → `areDateTimesEqualBy(a, b, "minute")`
@@ -26,7 +27,7 @@ import { Temporal } from "@js-temporal/polyfill";
26
27
  * @param value1 first ISO datetime string
27
28
  * @param value2 second ISO datetime string
28
29
  * @param unit date or time unit, singular or plural, to compare by
29
- * @param optionsArg optional: weekStartsOn ("monday" | "sunday")
30
+ * @param optionsArg How the week is defined
30
31
  * @returns true if both datetimes share the same start-of-unit boundary, false on an unsupported unit or invalid input
31
32
  *
32
33
  * @example areDateTimesEqualBy("2024-03-15T10:00:00", "2024-03-15T18:00:00", "day") // true
@@ -38,5 +39,12 @@ import { Temporal } from "@js-temporal/polyfill";
38
39
  * @example areDateTimesEqualBy("invalid", "2024-03-15T10:00:00", "day") // false
39
40
  */
40
41
  export declare function areDateTimesEqualBy(value1: string, value2: string, unit: Temporal.SmallestUnit<Temporal.DateTimeUnit>, optionsArg?: {
42
+ /**
43
+ * The first day of the week, which sets where a `"week"` unit starts. `"monday"` is the ISO
44
+ * 8601 week, Monday to Sunday; `"sunday"` runs Sunday to Saturday. Any other value returns
45
+ * false, whatever the unit.
46
+ *
47
+ * @defaultValue `"monday"`
48
+ */
41
49
  weekStartsOn?: "monday" | "sunday";
42
50
  }): boolean;
@@ -9,18 +9,19 @@ import { isOptionsArgument } from "../../internal/isObject.js";
9
9
  *
10
10
  * - Equality means both values share the same start-of-`unit` boundary, so
11
11
  * `"month"` requires the same month AND year — March 2023 and March 2024 are
12
- * NOT equal by month, matching date-fns's `isSameMonth` and Luxon's
13
- * `dt.hasSame(other, "month")`.
12
+ * NOT equal by month. A calendar month is a year and a month together, as in
13
+ * Temporal's `PlainYearMonth`, not a bare month-of-year number.
14
+ * - Comparison: date-fns's `isSameMonth` and Luxon's `dt.hasSame(other, "month")`
15
+ * give the same answer.
14
16
  * - Supports the full `Temporal.DateUnit | Temporal.TimeUnit` range, down to
15
17
  * `"nanosecond"`.
16
18
  * - `unit` accepts the singular or plural name (`"day"` or `"days"`), as Temporal does.
17
- * - `weekStartsOn` other than `"monday"` or `"sunday"` returns false.
18
19
  * - Returns false for an unsupported unit or invalid input.
19
20
  * - Takes no `fractionalSecondDigits`: equality compares full-precision `unit` boundaries, and output
20
21
  * digits cannot change which bucket a value is in. That ignored option was removed in 1.16.0; to
21
22
  * compare more coarsely, pass a coarser unit (0 digits is `"second"`, 3 is `"millisecond"`).
22
23
  *
23
- * Mapping from date-fns (Decision 5, `context/roadmap/issues/J.md`):
24
+ * Mapping from date-fns:
24
25
  * - `isSameDay(a, b)` → `areDateTimesEqualBy(a, b, "day")`
25
26
  * - `isSameHour(a, b)` → `areDateTimesEqualBy(a, b, "hour")`
26
27
  * - `isSameMinute(a, b)` → `areDateTimesEqualBy(a, b, "minute")`
@@ -31,7 +32,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
31
32
  * @param value1 first ISO datetime string
32
33
  * @param value2 second ISO datetime string
33
34
  * @param unit date or time unit, singular or plural, to compare by
34
- * @param optionsArg optional: weekStartsOn ("monday" | "sunday")
35
+ * @param optionsArg How the week is defined
35
36
  * @returns true if both datetimes share the same start-of-unit boundary, false on an unsupported unit or invalid input
36
37
  *
37
38
  * @example areDateTimesEqualBy("2024-03-15T10:00:00", "2024-03-15T18:00:00", "day") // true