@northguild/gmt 1.16.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 (654) hide show
  1. package/README.md +742 -21
  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/index.d.ts +2 -0
  43. package/dist/index.js +2 -0
  44. package/dist/instant/convert/classifyLocal.d.ts +1 -1
  45. package/dist/instant/convert/classifyLocal.js +1 -1
  46. package/dist/instant/convert/fromOffsetInstant.d.ts +3 -1
  47. package/dist/instant/convert/fromOffsetInstant.js +6 -12
  48. package/dist/instant/convert/resolveLocal.d.ts +12 -7
  49. package/dist/instant/convert/resolveLocal.js +6 -10
  50. package/dist/instant/convert/toOffsetInstant.d.ts +37 -1
  51. package/dist/instant/convert/toOffsetInstant.js +12 -28
  52. package/dist/intermodal/calculate/billingTimeline.d.ts +114 -0
  53. package/dist/intermodal/calculate/billingTimeline.js +168 -0
  54. package/dist/intermodal/calculate/chargeableDays.d.ts +100 -0
  55. package/dist/intermodal/calculate/chargeableDays.js +96 -0
  56. package/dist/intermodal/calculate/demurrageClock.d.ts +102 -0
  57. package/dist/intermodal/calculate/demurrageClock.js +140 -0
  58. package/dist/intermodal/calculate/freeTimeExpiry.d.ts +67 -0
  59. package/dist/intermodal/calculate/freeTimeExpiry.js +82 -0
  60. package/dist/intermodal/calculate/index.d.ts +4 -0
  61. package/dist/intermodal/calculate/index.js +4 -0
  62. package/dist/intermodal/index.d.ts +2 -0
  63. package/dist/intermodal/index.js +3 -0
  64. package/dist/internal/businessCalendar.d.ts +5 -0
  65. package/dist/internal/businessCalendar.js +5 -1
  66. package/dist/internal/cycleFieldValue.d.ts +6 -4
  67. package/dist/internal/cycleFieldValue.js +6 -4
  68. package/dist/internal/daylightTime.d.ts +33 -0
  69. package/dist/internal/daylightTime.js +164 -0
  70. package/dist/internal/durationUntilString.js +4 -3
  71. package/dist/internal/englishCalendarNames.js +1 -2
  72. package/dist/internal/epochNanoseconds.d.ts +2 -0
  73. package/dist/internal/epochNanoseconds.js +2 -0
  74. package/dist/internal/exactDuration.d.ts +37 -0
  75. package/dist/internal/exactDuration.js +64 -0
  76. package/dist/internal/exactMoment.d.ts +72 -0
  77. package/dist/internal/exactMoment.js +114 -0
  78. package/dist/internal/fiscalCalendar.d.ts +4 -3
  79. package/dist/internal/fiscalCalendar.js +4 -3
  80. package/dist/internal/formatCalendarDays.d.ts +2 -2
  81. package/dist/internal/formatRelativeDuration.d.ts +21 -1
  82. package/dist/internal/formatRelativeDuration.js +47 -7
  83. package/dist/internal/freeTimeLedger.d.ts +93 -0
  84. package/dist/internal/freeTimeLedger.js +262 -0
  85. package/dist/internal/index.d.ts +10 -3
  86. package/dist/internal/index.js +10 -3
  87. package/dist/internal/instantFormatOptions.js +2 -1
  88. package/dist/internal/instantNanoseconds.d.ts +75 -9
  89. package/dist/internal/instantNanoseconds.js +192 -11
  90. package/dist/internal/isoStringBody.d.ts +26 -0
  91. package/dist/internal/isoStringBody.js +22 -2
  92. package/dist/internal/joinDateTimeConnector.d.ts +1 -1
  93. package/dist/internal/monthGridWeekRow.d.ts +2 -1
  94. package/dist/internal/monthGridWeekRow.js +2 -1
  95. package/dist/internal/normalizeTimeZone.d.ts +2 -2
  96. package/dist/internal/normalizeTimeZone.js +2 -2
  97. package/dist/internal/operatingSchedule.d.ts +129 -0
  98. package/dist/internal/operatingSchedule.js +668 -0
  99. package/dist/internal/optionOrDefault.d.ts +18 -0
  100. package/dist/internal/optionOrDefault.js +20 -0
  101. package/dist/internal/patternToken.d.ts +2 -2
  102. package/dist/internal/patternToken.js +28 -13
  103. package/dist/internal/plainDateUntil.js +10 -6
  104. package/dist/internal/punctuality.d.ts +38 -0
  105. package/dist/internal/punctuality.js +59 -0
  106. package/dist/internal/readDateTimeFormatOptions.d.ts +30 -0
  107. package/dist/internal/readDateTimeFormatOptions.js +93 -0
  108. package/dist/internal/resolveDurationRelativeTo.d.ts +4 -0
  109. package/dist/internal/resolveDurationRelativeTo.js +11 -1
  110. package/dist/internal/resolveRelativeRounding.d.ts +17 -6
  111. package/dist/internal/resolveRelativeRounding.js +27 -7
  112. package/dist/internal/resolveRelativeUnit.d.ts +30 -0
  113. package/dist/internal/resolveRelativeUnit.js +40 -0
  114. package/dist/internal/splitStep.d.ts +24 -1
  115. package/dist/internal/splitStep.js +34 -2
  116. package/dist/internal/startOrEndOfZoned.js +2 -3
  117. package/dist/internal/temporalCompat/capabilities.d.ts +26 -0
  118. package/dist/internal/temporalCompat/capabilities.js +35 -3
  119. package/dist/internal/temporalCompat/fieldSearch.js +1 -1
  120. package/dist/internal/temporalCompat/index.d.ts +1 -1
  121. package/dist/internal/temporalCompat/index.js +1 -1
  122. package/dist/internal/temporalCompat/repros.d.ts +1 -1
  123. package/dist/internal/temporalCompat/repros.js +157 -0
  124. package/dist/internal/timestampEvents.d.ts +32 -0
  125. package/dist/internal/timestampEvents.js +76 -0
  126. package/dist/internal/utcZonedDateTime.d.ts +5 -2
  127. package/dist/internal/utcZonedDateTime.js +8 -5
  128. package/dist/internal/wallClockAtOffset.d.ts +22 -0
  129. package/dist/internal/wallClockAtOffset.js +26 -0
  130. package/dist/internal/zonedBucket.js +8 -6
  131. package/dist/internal/zonedLocalDates.js +1 -1
  132. package/dist/internal/zonedTransitionSearch.d.ts +27 -0
  133. package/dist/internal/zonedTransitionSearch.js +218 -0
  134. package/dist/internal/zonedWallClock.d.ts +21 -7
  135. package/dist/internal/zonedWallClock.js +87 -18
  136. package/dist/internal/zonedWallClockDifference.js +5 -4
  137. package/dist/internal/zonedWallClockOperations.d.ts +26 -13
  138. package/dist/internal/zonedWallClockOperations.js +87 -34
  139. package/dist/interval/validate/isValidInterval.d.ts +6 -3
  140. package/dist/interval/validate/isValidInterval.js +6 -3
  141. package/dist/plain/calculate/addDate.d.ts +11 -8
  142. package/dist/plain/calculate/addDate.js +5 -8
  143. package/dist/plain/calculate/addDateTime.d.ts +7 -4
  144. package/dist/plain/calculate/addDateTime.js +1 -4
  145. package/dist/plain/calculate/cycleDate.d.ts +16 -7
  146. package/dist/plain/calculate/cycleDate.js +3 -7
  147. package/dist/plain/calculate/cycleDateTime.d.ts +14 -4
  148. package/dist/plain/calculate/cycleDateTime.js +1 -4
  149. package/dist/plain/calculate/cycleTime.d.ts +10 -5
  150. package/dist/plain/calculate/cycleTime.js +3 -5
  151. package/dist/plain/calculate/diffDate.d.ts +1 -1
  152. package/dist/plain/calculate/diffDate.js +1 -1
  153. package/dist/plain/calculate/diffDateAsDuration.d.ts +1 -1
  154. package/dist/plain/calculate/diffDateAsDuration.js +1 -1
  155. package/dist/plain/calculate/diffDateTime.d.ts +1 -1
  156. package/dist/plain/calculate/diffDateTime.js +1 -1
  157. package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +1 -1
  158. package/dist/plain/calculate/diffDateTimeAsDuration.js +1 -1
  159. package/dist/plain/calculate/diffTime.d.ts +1 -1
  160. package/dist/plain/calculate/diffTime.js +1 -1
  161. package/dist/plain/calculate/endOfDate.d.ts +8 -3
  162. package/dist/plain/calculate/endOfDate.js +1 -3
  163. package/dist/plain/calculate/endOfDateTime.d.ts +15 -5
  164. package/dist/plain/calculate/endOfDateTime.js +1 -5
  165. package/dist/plain/calculate/endOfTime.d.ts +8 -2
  166. package/dist/plain/calculate/endOfTime.js +1 -2
  167. package/dist/plain/calculate/getLocaleWeekYear.d.ts +16 -9
  168. package/dist/plain/calculate/getLocaleWeekYear.js +9 -9
  169. package/dist/plain/calculate/getWeekOfMonth.d.ts +7 -4
  170. package/dist/plain/calculate/getWeekOfMonth.js +7 -4
  171. package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +13 -6
  172. package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +6 -6
  173. package/dist/plain/calculate/getWeeksInMonth.d.ts +5 -2
  174. package/dist/plain/calculate/getWeeksInMonth.js +5 -2
  175. package/dist/plain/calculate/nextWeekday.d.ts +7 -3
  176. package/dist/plain/calculate/nextWeekday.js +1 -3
  177. package/dist/plain/calculate/previousWeekday.d.ts +7 -3
  178. package/dist/plain/calculate/previousWeekday.js +1 -3
  179. package/dist/plain/calculate/roundDate.d.ts +20 -7
  180. package/dist/plain/calculate/roundDate.js +3 -10
  181. package/dist/plain/calculate/roundDateTime.d.ts +22 -8
  182. package/dist/plain/calculate/roundDateTime.js +3 -11
  183. package/dist/plain/calculate/roundTime.d.ts +20 -4
  184. package/dist/plain/calculate/roundTime.js +3 -7
  185. package/dist/plain/calculate/setDate.d.ts +7 -5
  186. package/dist/plain/calculate/setDate.js +1 -5
  187. package/dist/plain/calculate/setDateTime.d.ts +8 -5
  188. package/dist/plain/calculate/setDateTime.js +1 -5
  189. package/dist/plain/calculate/setTime.d.ts +10 -6
  190. package/dist/plain/calculate/setTime.js +4 -6
  191. package/dist/plain/calculate/startOfDate.d.ts +8 -2
  192. package/dist/plain/calculate/startOfDate.js +1 -2
  193. package/dist/plain/calculate/startOfDateTime.d.ts +15 -2
  194. package/dist/plain/calculate/startOfDateTime.js +1 -2
  195. package/dist/plain/calculate/startOfTime.d.ts +8 -1
  196. package/dist/plain/calculate/startOfTime.js +1 -1
  197. package/dist/plain/calculate/subtractDate.d.ts +7 -4
  198. package/dist/plain/calculate/subtractDate.js +1 -4
  199. package/dist/plain/calculate/subtractDateTime.d.ts +7 -4
  200. package/dist/plain/calculate/subtractDateTime.js +1 -4
  201. package/dist/plain/compare/areDateTimesEqualBy.d.ts +13 -5
  202. package/dist/plain/compare/areDateTimesEqualBy.js +6 -5
  203. package/dist/plain/compare/areDatesEqualBy.d.ts +15 -6
  204. package/dist/plain/compare/areDatesEqualBy.js +8 -6
  205. package/dist/plain/compare/isBetweenDate.d.ts +13 -2
  206. package/dist/plain/compare/isBetweenDate.js +4 -4
  207. package/dist/plain/compare/isBetweenDateTime.d.ts +13 -2
  208. package/dist/plain/compare/isBetweenDateTime.js +4 -4
  209. package/dist/plain/compare/isBetweenTime.d.ts +13 -2
  210. package/dist/plain/compare/isBetweenTime.js +4 -4
  211. package/dist/plain/compare/isRelativeDay.d.ts +1 -1
  212. package/dist/plain/compare/isRelativeDay.js +1 -1
  213. package/dist/plain/compare/isThisUnit.d.ts +1 -1
  214. package/dist/plain/compare/isThisUnit.js +1 -1
  215. package/dist/plain/format/formatCalendar.d.ts +21 -14
  216. package/dist/plain/format/formatCalendar.js +21 -16
  217. package/dist/plain/format/formatDate.js +5 -3
  218. package/dist/plain/format/formatDateRange.js +4 -2
  219. package/dist/plain/format/formatDateTime.js +4 -2
  220. package/dist/plain/format/formatDateTimeRange.js +4 -2
  221. package/dist/plain/format/formatDateTimeToParts.d.ts +15 -4
  222. package/dist/plain/format/formatDateTimeToParts.js +10 -6
  223. package/dist/plain/format/formatDateToParts.d.ts +13 -2
  224. package/dist/plain/format/formatDateToParts.js +8 -4
  225. package/dist/plain/format/formatRelativeDate.d.ts +16 -3
  226. package/dist/plain/format/formatRelativeDate.js +26 -15
  227. package/dist/plain/format/formatRelativeDateTime.d.ts +16 -3
  228. package/dist/plain/format/formatRelativeDateTime.js +8 -5
  229. package/dist/plain/format/formatRelativeTime.d.ts +16 -3
  230. package/dist/plain/format/formatRelativeTime.js +21 -13
  231. package/dist/plain/format/formatTime.js +4 -2
  232. package/dist/plain/interval/intervalDifferenceDate.d.ts +9 -0
  233. package/dist/plain/interval/intervalDifferenceDateTime.d.ts +9 -0
  234. package/dist/plain/interval/intervalDifferenceTime.d.ts +9 -0
  235. package/dist/plain/interval/intervalDivideEquallyDate.d.ts +19 -4
  236. package/dist/plain/interval/intervalDivideEquallyDate.js +3 -4
  237. package/dist/plain/interval/intervalDivideEquallyDateTime.d.ts +19 -4
  238. package/dist/plain/interval/intervalDivideEquallyDateTime.js +3 -4
  239. package/dist/plain/interval/intervalDivideEquallyTime.d.ts +19 -4
  240. package/dist/plain/interval/intervalDivideEquallyTime.js +3 -4
  241. package/dist/plain/interval/intervalFromDurationDate.d.ts +16 -3
  242. package/dist/plain/interval/intervalFromDurationDate.js +1 -3
  243. package/dist/plain/interval/intervalFromDurationDateTime.d.ts +16 -3
  244. package/dist/plain/interval/intervalFromDurationDateTime.js +1 -3
  245. package/dist/plain/interval/intervalFromDurationTime.d.ts +9 -0
  246. package/dist/plain/interval/intervalIntersectionDate.d.ts +9 -0
  247. package/dist/plain/interval/intervalIntersectionDateTime.d.ts +9 -0
  248. package/dist/plain/interval/intervalIntersectionTime.d.ts +9 -0
  249. package/dist/plain/interval/intervalSplitAtDate.d.ts +11 -0
  250. package/dist/plain/interval/intervalSplitAtDate.js +2 -0
  251. package/dist/plain/interval/intervalSplitAtDateTime.d.ts +11 -0
  252. package/dist/plain/interval/intervalSplitAtDateTime.js +2 -0
  253. package/dist/plain/interval/intervalSplitAtTime.d.ts +11 -0
  254. package/dist/plain/interval/intervalSplitAtTime.js +2 -0
  255. package/dist/plain/interval/intervalUnionDate.d.ts +9 -0
  256. package/dist/plain/interval/intervalUnionDateTime.d.ts +9 -0
  257. package/dist/plain/interval/intervalUnionTime.d.ts +9 -0
  258. package/dist/plain/interval/intervalXorAllDate.d.ts +9 -0
  259. package/dist/plain/interval/intervalXorAllDateTime.d.ts +9 -0
  260. package/dist/plain/interval/intervalXorAllTime.d.ts +9 -0
  261. package/dist/plain/interval/intervalXorDate.d.ts +9 -0
  262. package/dist/plain/interval/intervalXorDateTime.d.ts +9 -0
  263. package/dist/plain/interval/intervalXorTime.d.ts +9 -0
  264. package/dist/plain/interval/mergeIntervalsDate.d.ts +9 -0
  265. package/dist/plain/interval/mergeIntervalsDateTime.d.ts +9 -0
  266. package/dist/plain/interval/mergeIntervalsTime.d.ts +9 -0
  267. package/dist/plain/interval/splitIntervalByUnitDate.d.ts +23 -7
  268. package/dist/plain/interval/splitIntervalByUnitDate.js +7 -7
  269. package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +22 -6
  270. package/dist/plain/interval/splitIntervalByUnitDateTime.js +6 -6
  271. package/dist/plain/interval/splitIntervalByUnitTime.d.ts +17 -4
  272. package/dist/plain/interval/splitIntervalByUnitTime.js +1 -4
  273. package/dist/plain/map/mapDatesInRange.d.ts +8 -4
  274. package/dist/plain/map/mapDatesInRange.js +1 -4
  275. package/dist/plain/parse/parseDateTimeWithPattern.d.ts +10 -7
  276. package/dist/plain/parse/parseDateTimeWithPattern.js +10 -7
  277. package/dist/plain/parse/parseDateWithPattern.d.ts +10 -7
  278. package/dist/plain/parse/parseDateWithPattern.js +10 -7
  279. package/dist/plain/parse/parseTimeWithPattern.d.ts +10 -7
  280. package/dist/plain/parse/parseTimeWithPattern.js +10 -7
  281. package/dist/plain/parse/parseUnitFromDate.d.ts +11 -3
  282. package/dist/plain/parse/parseUnitFromDate.js +3 -3
  283. package/dist/plain/parse/parseUnitFromDateTime.d.ts +11 -3
  284. package/dist/plain/parse/parseUnitFromDateTime.js +3 -3
  285. package/dist/plain/parse/parseWeekFromDate.d.ts +10 -6
  286. package/dist/plain/parse/parseWeekFromDate.js +2 -6
  287. package/dist/plain/parse/parseWeekFromDateTime.d.ts +10 -6
  288. package/dist/plain/parse/parseWeekFromDateTime.js +2 -6
  289. package/dist/plain/validate/isValidDateRange.d.ts +19 -4
  290. package/dist/plain/validate/isValidDateRange.js +1 -4
  291. package/dist/plain/validate/isValidDateTimeRange.d.ts +20 -5
  292. package/dist/plain/validate/isValidDateTimeRange.js +2 -5
  293. package/dist/plain/validate/isValidTimeRange.d.ts +20 -5
  294. package/dist/plain/validate/isValidTimeRange.js +2 -5
  295. package/dist/precision/convert/fromExcelSerial.d.ts +10 -4
  296. package/dist/precision/convert/fromExcelSerial.js +4 -5
  297. package/dist/precision/convert/fromNanoseconds.d.ts +1 -1
  298. package/dist/precision/convert/fromNanoseconds.js +1 -1
  299. package/dist/precision/convert/toExcelSerial.d.ts +9 -3
  300. package/dist/precision/convert/toExcelSerial.js +3 -4
  301. package/dist/precision/convert/toNanoseconds.d.ts +11 -6
  302. package/dist/precision/convert/toNanoseconds.js +11 -6
  303. package/dist/precision/validate/isValidInstant.d.ts +12 -3
  304. package/dist/precision/validate/isValidInstant.js +12 -3
  305. package/dist/span/calculate/spanMs.d.ts +10 -4
  306. package/dist/span/calculate/spanMs.js +10 -4
  307. package/dist/span/calculate/spanNs.d.ts +10 -4
  308. package/dist/span/calculate/spanNs.js +10 -4
  309. package/dist/span/validate/isValidSpan.d.ts +8 -3
  310. package/dist/span/validate/isValidSpan.js +8 -3
  311. package/dist/transport/calculate/bestAvailable.d.ts +47 -0
  312. package/dist/transport/calculate/bestAvailable.js +76 -0
  313. package/dist/transport/calculate/crossingTime.d.ts +58 -0
  314. package/dist/transport/calculate/crossingTime.js +76 -0
  315. package/dist/transport/calculate/cutoffAt.d.ts +90 -0
  316. package/dist/transport/calculate/cutoffAt.js +209 -0
  317. package/dist/transport/calculate/cutoffSchedule.d.ts +70 -0
  318. package/dist/transport/calculate/cutoffSchedule.js +71 -0
  319. package/dist/transport/calculate/dwellTime.d.ts +81 -0
  320. package/dist/transport/calculate/dwellTime.js +130 -0
  321. package/dist/transport/calculate/estimateDrift.d.ts +65 -0
  322. package/dist/transport/calculate/estimateDrift.js +75 -0
  323. package/dist/transport/calculate/index.d.ts +10 -0
  324. package/dist/transport/calculate/index.js +10 -0
  325. package/dist/transport/calculate/nextDeparture.d.ts +78 -0
  326. package/dist/transport/calculate/nextDeparture.js +131 -0
  327. package/dist/transport/calculate/punctualityRate.d.ts +42 -0
  328. package/dist/transport/calculate/punctualityRate.js +59 -0
  329. package/dist/transport/calculate/scheduleDelivery.d.ts +150 -0
  330. package/dist/transport/calculate/scheduleDelivery.js +300 -0
  331. package/dist/transport/calculate/transitTime.d.ts +71 -0
  332. package/dist/transport/calculate/transitTime.js +101 -0
  333. package/dist/transport/compare/classifyPunctuality.d.ts +46 -0
  334. package/dist/transport/compare/classifyPunctuality.js +64 -0
  335. package/dist/transport/compare/index.d.ts +4 -0
  336. package/dist/transport/compare/index.js +4 -0
  337. package/dist/transport/compare/isPastCutoff.d.ts +33 -0
  338. package/dist/transport/compare/isPastCutoff.js +48 -0
  339. package/dist/transport/compare/scheduleDeviation.d.ts +37 -0
  340. package/dist/transport/compare/scheduleDeviation.js +53 -0
  341. package/dist/transport/compare/timeToCutoff.d.ts +31 -0
  342. package/dist/transport/compare/timeToCutoff.js +47 -0
  343. package/dist/transport/convert/etaAtZone.d.ts +43 -0
  344. package/dist/transport/convert/etaAtZone.js +58 -0
  345. package/dist/transport/convert/index.d.ts +1 -0
  346. package/dist/transport/convert/index.js +1 -0
  347. package/dist/transport/index.d.ts +4 -0
  348. package/dist/transport/index.js +5 -0
  349. package/dist/types/business-calendar.d.ts +19 -14
  350. package/dist/types/calendar-options.d.ts +15 -3
  351. package/dist/types/date-cycle-field.d.ts +5 -0
  352. package/dist/types/date-duration-unit.d.ts +4 -0
  353. package/dist/types/date-time-cycle-field.d.ts +4 -0
  354. package/dist/types/date-time-duration-units.d.ts +4 -0
  355. package/dist/types/date-time-unit.d.ts +4 -0
  356. package/dist/types/date-unit.d.ts +4 -0
  357. package/dist/types/disambiguation.d.ts +8 -0
  358. package/dist/types/duration-relative-to.d.ts +8 -0
  359. package/dist/types/duration-string-options.d.ts +28 -0
  360. package/dist/types/fiscal-calendar.d.ts +1 -1
  361. package/dist/types/fractional-digit.d.ts +5 -0
  362. package/dist/types/free-time-options.d.ts +44 -0
  363. package/dist/types/index.d.ts +3 -1
  364. package/dist/types/index.js +3 -1
  365. package/dist/types/interval.d.ts +8 -1
  366. package/dist/types/offset.d.ts +9 -0
  367. package/dist/types/operating-schedule.d.ts +71 -0
  368. package/dist/types/operating-schedule.js +0 -0
  369. package/dist/types/overflow.d.ts +6 -0
  370. package/dist/types/relative-rounding-method.d.ts +6 -0
  371. package/dist/types/relative-time-options.d.ts +33 -5
  372. package/dist/types/rounding-options.d.ts +27 -0
  373. package/dist/types/time-cycle-field.d.ts +4 -0
  374. package/dist/types/time-duration-unit.d.ts +4 -0
  375. package/dist/types/time-unit.d.ts +4 -0
  376. package/dist/types/transport-timestamps.d.ts +54 -0
  377. package/dist/types/transport-timestamps.js +0 -0
  378. package/dist/unix/calculate/addUnix.d.ts +19 -5
  379. package/dist/unix/calculate/addUnix.js +1 -5
  380. package/dist/unix/calculate/diffUnix.d.ts +13 -3
  381. package/dist/unix/calculate/diffUnix.js +1 -3
  382. package/dist/unix/calculate/diffUnixAsDuration.d.ts +13 -3
  383. package/dist/unix/calculate/diffUnixAsDuration.js +1 -3
  384. package/dist/unix/calculate/endOfQuarterForUnix.d.ts +13 -3
  385. package/dist/unix/calculate/endOfQuarterForUnix.js +1 -3
  386. package/dist/unix/calculate/endOfUnix.d.ts +20 -4
  387. package/dist/unix/calculate/endOfUnix.js +1 -4
  388. package/dist/unix/calculate/isBetweenUnix.d.ts +26 -4
  389. package/dist/unix/calculate/isBetweenUnix.js +4 -6
  390. package/dist/unix/calculate/roundUnix.d.ts +31 -3
  391. package/dist/unix/calculate/roundUnix.js +3 -6
  392. package/dist/unix/calculate/setUnix.d.ts +35 -9
  393. package/dist/unix/calculate/setUnix.js +4 -13
  394. package/dist/unix/calculate/startOfQuarterForUnix.d.ts +13 -3
  395. package/dist/unix/calculate/startOfQuarterForUnix.js +1 -3
  396. package/dist/unix/calculate/startOfUnix.d.ts +20 -4
  397. package/dist/unix/calculate/startOfUnix.js +1 -4
  398. package/dist/unix/calculate/subtractUnix.d.ts +19 -5
  399. package/dist/unix/calculate/subtractUnix.js +1 -5
  400. package/dist/unix/compare/areUnixEqual.d.ts +7 -1
  401. package/dist/unix/compare/areUnixEqual.js +1 -1
  402. package/dist/unix/compare/areUnixEqualBy.d.ts +24 -7
  403. package/dist/unix/compare/areUnixEqualBy.js +13 -9
  404. package/dist/unix/compare/isAfterUnix.d.ts +7 -1
  405. package/dist/unix/compare/isAfterUnix.js +1 -1
  406. package/dist/unix/compare/isBeforeUnix.d.ts +7 -1
  407. package/dist/unix/compare/isBeforeUnix.js +1 -1
  408. package/dist/unix/convert/convertUnixToPlainDate.d.ts +14 -4
  409. package/dist/unix/convert/convertUnixToPlainDate.js +2 -4
  410. package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +14 -4
  411. package/dist/unix/convert/convertUnixToPlainDateTime.js +2 -4
  412. package/dist/unix/convert/convertUnixToPlainTime.d.ts +14 -4
  413. package/dist/unix/convert/convertUnixToPlainTime.js +2 -4
  414. package/dist/unix/convert/convertUnixToUtc.d.ts +9 -4
  415. package/dist/unix/convert/convertUnixToUtc.js +3 -4
  416. package/dist/unix/convert/convertUnixToZoned.d.ts +10 -5
  417. package/dist/unix/convert/convertUnixToZoned.js +4 -5
  418. package/dist/unix/format/formatCalendarUnix.d.ts +27 -19
  419. package/dist/unix/format/formatCalendarUnix.js +4 -5
  420. package/dist/unix/format/formatRelativeUnix.d.ts +54 -5
  421. package/dist/unix/format/formatRelativeUnix.js +3 -5
  422. package/dist/unix/format/formatUnix.d.ts +24 -6
  423. package/dist/unix/format/formatUnix.js +8 -7
  424. package/dist/unix/get/getUnixNow.d.ts +8 -3
  425. package/dist/unix/get/getUnixNow.js +1 -3
  426. package/dist/unix/interval/intervalCountUnix.d.ts +14 -5
  427. package/dist/unix/interval/intervalCountUnix.js +2 -5
  428. package/dist/unix/interval/intervalDifferenceUnix.d.ts +6 -0
  429. package/dist/unix/interval/intervalDivideEquallyUnix.d.ts +18 -4
  430. package/dist/unix/interval/intervalDivideEquallyUnix.js +5 -4
  431. package/dist/unix/interval/intervalFromDurationUnix.d.ts +33 -5
  432. package/dist/unix/interval/intervalFromDurationUnix.js +6 -5
  433. package/dist/unix/interval/intervalIntersectionUnix.d.ts +6 -0
  434. package/dist/unix/interval/intervalLengthUnix.d.ts +16 -6
  435. package/dist/unix/interval/intervalLengthUnix.js +4 -6
  436. package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +13 -3
  437. package/dist/unix/interval/intervalOverlappingDaysUnix.js +1 -3
  438. package/dist/unix/interval/intervalSplitAtUnix.d.ts +8 -0
  439. package/dist/unix/interval/intervalSplitAtUnix.js +2 -0
  440. package/dist/unix/interval/intervalUnionUnix.d.ts +6 -0
  441. package/dist/unix/interval/intervalXorAllUnix.d.ts +6 -0
  442. package/dist/unix/interval/intervalXorUnix.d.ts +6 -0
  443. package/dist/unix/interval/mergeIntervalsUnix.d.ts +6 -0
  444. package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +42 -11
  445. package/dist/unix/interval/splitIntervalByUnitUnix.js +21 -16
  446. package/dist/unix/parse/parseDateFromUnix.d.ts +13 -2
  447. package/dist/unix/parse/parseDateFromUnix.js +1 -2
  448. package/dist/unix/parse/parseDayFromUnix.d.ts +14 -2
  449. package/dist/unix/parse/parseDayFromUnix.js +2 -2
  450. package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +13 -1
  451. package/dist/unix/parse/parseDayOfWeekFromUnix.js +1 -1
  452. package/dist/unix/parse/parseHourFromUnix.d.ts +14 -2
  453. package/dist/unix/parse/parseHourFromUnix.js +2 -2
  454. package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +14 -2
  455. package/dist/unix/parse/parseMicrosecondFromUnix.js +2 -2
  456. package/dist/unix/parse/parseMillisecondFromUnix.d.ts +14 -2
  457. package/dist/unix/parse/parseMillisecondFromUnix.js +2 -2
  458. package/dist/unix/parse/parseMinuteFromUnix.d.ts +14 -2
  459. package/dist/unix/parse/parseMinuteFromUnix.js +2 -2
  460. package/dist/unix/parse/parseMonthFromUnix.d.ts +14 -2
  461. package/dist/unix/parse/parseMonthFromUnix.js +2 -2
  462. package/dist/unix/parse/parseNanosecondFromUnix.d.ts +14 -2
  463. package/dist/unix/parse/parseNanosecondFromUnix.js +2 -2
  464. package/dist/unix/parse/parseSecondFromUnix.d.ts +14 -2
  465. package/dist/unix/parse/parseSecondFromUnix.js +2 -2
  466. package/dist/unix/parse/parseTimeFromUnix.d.ts +13 -2
  467. package/dist/unix/parse/parseTimeFromUnix.js +1 -2
  468. package/dist/unix/parse/parseUnitFromUnix.d.ts +22 -3
  469. package/dist/unix/parse/parseUnitFromUnix.js +2 -3
  470. package/dist/unix/parse/parseWeekFromUnix.d.ts +23 -7
  471. package/dist/unix/parse/parseWeekFromUnix.js +3 -7
  472. package/dist/unix/parse/parseYearFromUnix.d.ts +14 -2
  473. package/dist/unix/parse/parseYearFromUnix.js +2 -2
  474. package/dist/unix/validate/isValidUnixRange.d.ts +20 -4
  475. package/dist/unix/validate/isValidUnixRange.js +1 -4
  476. package/dist/utc/calculate/addUtc.d.ts +7 -4
  477. package/dist/utc/calculate/addUtc.js +1 -4
  478. package/dist/utc/calculate/diffUtc.d.ts +1 -1
  479. package/dist/utc/calculate/diffUtc.js +1 -1
  480. package/dist/utc/calculate/diffUtcAsDuration.d.ts +1 -1
  481. package/dist/utc/calculate/diffUtcAsDuration.js +1 -1
  482. package/dist/utc/calculate/endOfUtc.d.ts +16 -3
  483. package/dist/utc/calculate/endOfUtc.js +2 -3
  484. package/dist/utc/calculate/isBetweenUtc.d.ts +13 -2
  485. package/dist/utc/calculate/isBetweenUtc.js +4 -4
  486. package/dist/utc/calculate/roundUtc.d.ts +26 -9
  487. package/dist/utc/calculate/roundUtc.js +3 -12
  488. package/dist/utc/calculate/setUtc.d.ts +7 -4
  489. package/dist/utc/calculate/setUtc.js +1 -4
  490. package/dist/utc/calculate/startOfUtc.d.ts +15 -2
  491. package/dist/utc/calculate/startOfUtc.js +1 -2
  492. package/dist/utc/calculate/subtractUtc.d.ts +7 -4
  493. package/dist/utc/calculate/subtractUtc.js +1 -4
  494. package/dist/utc/compare/areUtcEqualBy.d.ts +9 -3
  495. package/dist/utc/compare/areUtcEqualBy.js +2 -3
  496. package/dist/utc/convert/convertUtcToPlainDate.d.ts +8 -3
  497. package/dist/utc/convert/convertUtcToPlainDate.js +5 -6
  498. package/dist/utc/convert/convertUtcToPlainDateTime.d.ts +8 -3
  499. package/dist/utc/convert/convertUtcToPlainDateTime.js +5 -6
  500. package/dist/utc/convert/convertUtcToPlainTime.d.ts +8 -3
  501. package/dist/utc/convert/convertUtcToPlainTime.js +5 -6
  502. package/dist/utc/convert/convertUtcToUnix.d.ts +9 -4
  503. package/dist/utc/convert/convertUtcToUnix.js +3 -4
  504. package/dist/utc/convert/convertUtcToZoned.d.ts +1 -1
  505. package/dist/utc/convert/convertUtcToZoned.js +1 -1
  506. package/dist/utc/format/formatCalendarUtc.d.ts +19 -8
  507. package/dist/utc/format/formatCalendarUtc.js +8 -6
  508. package/dist/utc/format/formatHttp.d.ts +1 -1
  509. package/dist/utc/format/formatHttp.js +1 -1
  510. package/dist/utc/format/formatRelativeUtc.d.ts +30 -10
  511. package/dist/utc/format/formatRelativeUtc.js +9 -11
  512. package/dist/utc/format/formatUtc.d.ts +17 -15
  513. package/dist/utc/format/formatUtc.js +8 -8
  514. package/dist/utc/interval/intervalDifferenceUtc.d.ts +6 -0
  515. package/dist/utc/interval/intervalDivideEquallyUtc.d.ts +18 -4
  516. package/dist/utc/interval/intervalDivideEquallyUtc.js +5 -4
  517. package/dist/utc/interval/intervalFromDurationUtc.d.ts +13 -3
  518. package/dist/utc/interval/intervalFromDurationUtc.js +1 -3
  519. package/dist/utc/interval/intervalIntersectionUtc.d.ts +6 -0
  520. package/dist/utc/interval/intervalSplitAtUtc.d.ts +8 -0
  521. package/dist/utc/interval/intervalSplitAtUtc.js +2 -0
  522. package/dist/utc/interval/intervalUnionUtc.d.ts +6 -0
  523. package/dist/utc/interval/intervalXorAllUtc.d.ts +6 -0
  524. package/dist/utc/interval/intervalXorUtc.d.ts +6 -0
  525. package/dist/utc/interval/mergeIntervalsUtc.d.ts +6 -0
  526. package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +19 -6
  527. package/dist/utc/interval/splitIntervalByUnitUtc.js +6 -6
  528. package/dist/utc/parse/parseDateFromUtc.d.ts +7 -3
  529. package/dist/utc/parse/parseDateFromUtc.js +1 -3
  530. package/dist/utc/parse/parseDayFromUtc.d.ts +7 -3
  531. package/dist/utc/parse/parseDayFromUtc.js +1 -3
  532. package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +7 -3
  533. package/dist/utc/parse/parseDayOfWeekFromUtc.js +4 -6
  534. package/dist/utc/parse/parseHourFromUtc.d.ts +7 -3
  535. package/dist/utc/parse/parseHourFromUtc.js +1 -3
  536. package/dist/utc/parse/parseHttp.d.ts +1 -1
  537. package/dist/utc/parse/parseHttp.js +1 -1
  538. package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +7 -3
  539. package/dist/utc/parse/parseMicrosecondFromUtc.js +1 -3
  540. package/dist/utc/parse/parseMillisecondFromUtc.d.ts +7 -3
  541. package/dist/utc/parse/parseMillisecondFromUtc.js +1 -3
  542. package/dist/utc/parse/parseMinuteFromUtc.d.ts +7 -3
  543. package/dist/utc/parse/parseMinuteFromUtc.js +1 -3
  544. package/dist/utc/parse/parseMonthFromUtc.d.ts +7 -3
  545. package/dist/utc/parse/parseMonthFromUtc.js +1 -3
  546. package/dist/utc/parse/parseNanosecondFromUtc.d.ts +7 -3
  547. package/dist/utc/parse/parseNanosecondFromUtc.js +1 -3
  548. package/dist/utc/parse/parseSecondFromUtc.d.ts +7 -3
  549. package/dist/utc/parse/parseSecondFromUtc.js +1 -3
  550. package/dist/utc/parse/parseTimeFromUtc.d.ts +8 -3
  551. package/dist/utc/parse/parseTimeFromUtc.js +5 -6
  552. package/dist/utc/parse/parseUnitFromUtc.d.ts +17 -5
  553. package/dist/utc/parse/parseUnitFromUtc.js +6 -8
  554. package/dist/utc/parse/parseWeekFromUtc.d.ts +18 -10
  555. package/dist/utc/parse/parseWeekFromUtc.js +7 -13
  556. package/dist/utc/parse/parseYearFromUtc.d.ts +7 -3
  557. package/dist/utc/parse/parseYearFromUtc.js +1 -3
  558. package/dist/utc/validate/isValidUtcRange.d.ts +16 -5
  559. package/dist/utc/validate/isValidUtcRange.js +2 -5
  560. package/dist/zoned/calculate/addZoned.d.ts +20 -10
  561. package/dist/zoned/calculate/addZoned.js +6 -13
  562. package/dist/zoned/calculate/cycleZoned.d.ts +33 -8
  563. package/dist/zoned/calculate/cycleZoned.js +1 -8
  564. package/dist/zoned/calculate/diffZoned.d.ts +1 -1
  565. package/dist/zoned/calculate/diffZoned.js +1 -1
  566. package/dist/zoned/calculate/diffZonedAsDuration.d.ts +1 -1
  567. package/dist/zoned/calculate/diffZonedAsDuration.js +1 -1
  568. package/dist/zoned/calculate/endOfQuarterForZoned.d.ts +9 -2
  569. package/dist/zoned/calculate/endOfQuarterForZoned.js +4 -5
  570. package/dist/zoned/calculate/endOfZoned.d.ts +16 -3
  571. package/dist/zoned/calculate/endOfZoned.js +2 -3
  572. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +10 -3
  573. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +5 -6
  574. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +7 -1
  575. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +3 -4
  576. package/dist/zoned/calculate/roundZoned.d.ts +21 -4
  577. package/dist/zoned/calculate/roundZoned.js +3 -7
  578. package/dist/zoned/calculate/setZoned.d.ts +25 -8
  579. package/dist/zoned/calculate/setZoned.js +4 -12
  580. package/dist/zoned/calculate/startOfQuarterForZoned.d.ts +7 -2
  581. package/dist/zoned/calculate/startOfQuarterForZoned.js +3 -5
  582. package/dist/zoned/calculate/startOfZoned.d.ts +15 -3
  583. package/dist/zoned/calculate/startOfZoned.js +1 -3
  584. package/dist/zoned/calculate/subtractZoned.d.ts +20 -10
  585. package/dist/zoned/calculate/subtractZoned.js +6 -13
  586. package/dist/zoned/compare/areZonedEqualBy.d.ts +14 -5
  587. package/dist/zoned/compare/areZonedEqualBy.js +7 -5
  588. package/dist/zoned/compare/isBetweenZoned.d.ts +13 -1
  589. package/dist/zoned/compare/isBetweenZoned.js +4 -3
  590. package/dist/zoned/compare/isInDaylightSaving.d.ts +38 -11
  591. package/dist/zoned/compare/isInDaylightSaving.js +40 -44
  592. package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +18 -5
  593. package/dist/zoned/convert/convertPlainDateTimeToZoned.js +6 -11
  594. package/dist/zoned/convert/convertZonedToUnix.d.ts +9 -4
  595. package/dist/zoned/convert/convertZonedToUnix.js +2 -4
  596. package/dist/zoned/convert/convertZonedToZoned.d.ts +1 -1
  597. package/dist/zoned/convert/convertZonedToZoned.js +1 -1
  598. package/dist/zoned/format/formatCalendarZoned.d.ts +18 -12
  599. package/dist/zoned/format/formatCalendarZoned.js +13 -9
  600. package/dist/zoned/format/formatRelativeZoned.d.ts +41 -12
  601. package/dist/zoned/format/formatRelativeZoned.js +7 -4
  602. package/dist/zoned/format/formatRfc2822.d.ts +2 -2
  603. package/dist/zoned/format/formatRfc2822.js +2 -2
  604. package/dist/zoned/format/formatRfc3339.d.ts +2 -3
  605. package/dist/zoned/format/formatRfc3339.js +2 -3
  606. package/dist/zoned/format/formatTimeZoneName.d.ts +12 -3
  607. package/dist/zoned/format/formatTimeZoneName.js +5 -4
  608. package/dist/zoned/format/formatZonedDateTime.js +2 -1
  609. package/dist/zoned/format/formatZonedRange.js +2 -1
  610. package/dist/zoned/format/formatZonedToParts.d.ts +15 -4
  611. package/dist/zoned/format/formatZonedToParts.js +8 -5
  612. package/dist/zoned/get/getDstTransitions.d.ts +9 -10
  613. package/dist/zoned/get/getDstTransitions.js +12 -3
  614. package/dist/zoned/get/getTimeZoneOffset.d.ts +4 -1
  615. package/dist/zoned/get/getTimeZoneOffset.js +6 -3
  616. package/dist/zoned/get/getZonedNow.d.ts +13 -1
  617. package/dist/zoned/get/getZonedNow.js +12 -3
  618. package/dist/zoned/interval/intervalDifferenceZoned.d.ts +9 -0
  619. package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +22 -4
  620. package/dist/zoned/interval/intervalDivideEquallyZoned.js +6 -4
  621. package/dist/zoned/interval/intervalFromDurationZoned.d.ts +29 -10
  622. package/dist/zoned/interval/intervalFromDurationZoned.js +6 -13
  623. package/dist/zoned/interval/intervalIntersectionZoned.d.ts +9 -0
  624. package/dist/zoned/interval/intervalSplitAtZoned.d.ts +11 -0
  625. package/dist/zoned/interval/intervalSplitAtZoned.js +2 -0
  626. package/dist/zoned/interval/intervalUnionZoned.d.ts +9 -0
  627. package/dist/zoned/interval/intervalXorAllZoned.d.ts +9 -0
  628. package/dist/zoned/interval/intervalXorZoned.d.ts +9 -0
  629. package/dist/zoned/interval/mergeIntervalsZoned.d.ts +9 -0
  630. package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +27 -6
  631. package/dist/zoned/interval/splitIntervalByUnitZoned.js +11 -6
  632. package/dist/zoned/map/mapZonedDatesInRange.d.ts +9 -4
  633. package/dist/zoned/map/mapZonedDatesInRange.js +2 -4
  634. package/dist/zoned/parse/parseRfc2822.d.ts +1 -1
  635. package/dist/zoned/parse/parseRfc2822.js +1 -1
  636. package/dist/zoned/parse/parseUnitFromZoned.d.ts +9 -3
  637. package/dist/zoned/parse/parseUnitFromZoned.js +1 -3
  638. package/dist/zoned/parse/parseWeekFromZoned.d.ts +10 -3
  639. package/dist/zoned/parse/parseWeekFromZoned.js +2 -3
  640. package/dist/zoned/validate/hasDaylightSaving.d.ts +42 -11
  641. package/dist/zoned/validate/hasDaylightSaving.js +47 -31
  642. package/dist/zoned/validate/isValidZonedDateTime.d.ts +13 -0
  643. package/dist/zoned/validate/isValidZonedDateTime.js +14 -1
  644. package/dist/zoned/validate/isValidZonedRange.d.ts +15 -4
  645. package/dist/zoned/validate/isValidZonedRange.js +1 -4
  646. package/package.json +53 -5
  647. package/skills/gmt-arithmetic/SKILL.md +1 -1
  648. package/skills/gmt-basics/SKILL.md +10 -1
  649. package/skills/gmt-integration/SKILL.md +10 -5
  650. package/skills/gmt-timezone/SKILL.md +210 -14
  651. package/dist/internal/resolveReadingTimeZone.d.ts +0 -11
  652. package/dist/internal/resolveReadingTimeZone.js +0 -18
  653. package/dist/types/duration-unit.d.ts +0 -5
  654. /package/dist/types/{duration-unit.js → free-time-options.js} +0 -0
@@ -1,7 +1,9 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { MAX_EPOCH_NANOSECONDS } from "./epochNanoseconds.js";
3
- import { calendarDateAdd, isCalendarArithmeticCompatNeeded, } from "./temporalCompat/index.js";
4
- import { epochNanosecondsFor, interpretISODateTimeOffset, isBeforePolyfillTransitionSearch, isNamedTimeZone, isNearRangeEdge, isValidEpoch, MAX_TRANSITIONS_BEFORE_MAXIMUM, missedNextTransition, missedPreviousTransition, NEXT_TRANSITION_HORIZON_NANOSECONDS, startOfDayEpochNanoseconds, timeZoneIdOf, utcOffsetStringNanoseconds, } from "./zonedWallClock.js";
3
+ import { calendarDateAdd, isCalendarArithmeticCompatNeeded, isTransitionSearchCompatNeeded, } from "./temporalCompat/index.js";
4
+ import { nextTransitionAfter, previousTransitionBefore, } from "./zonedTransitionSearch.js";
5
+ import { epochNanosecondsFor, interpretISODateTimeOffset, isNamedTimeZone, isNearRangeEdge, isValidEpoch, MAX_TRANSITIONS_BEFORE_MAXIMUM, missedNextTransition, missedPreviousTransition, needsOwnDayBoundsSearch, needsOwnStartOfDaySearch, NEXT_TRANSITION_HORIZON_NANOSECONDS, startOfDayEpochNanoseconds, timeZoneIdOf, utcOffsetStringNanoseconds, } from "./zonedWallClock.js";
6
+ import { optionOrDefault } from "./optionOrDefault.js";
5
7
  /*
6
8
  * Polyfill-first wrappers for the Temporal operations that resolve a wall clock or a start of day
7
9
  * inside `@js-temporal/polyfill` 0.5.1, and so inherit its range-limit defects. See the note at the
@@ -19,6 +21,11 @@ import { epochNanosecondsFor, interpretISODateTimeOffset, isBeforePolyfillTransi
19
21
  * so the transition and start-of-day wrappers check for it first, and only for a named zone and an
20
22
  * instant or local date before that floor (`needsOwnStartOfDay`); everything later goes straight to
21
23
  * the polyfill. Retired with the `zoned.E` canary group.
24
+ *
25
+ * Defect 5 (two changes inside one 14-day search step are skipped, or stall the search for ever;
26
+ * temporalCompat D13) cannot be tried and recovered either. While its probe fails, the transition
27
+ * wrappers run GMT's own search (`zonedTransitionSearch.ts`) and the start-of-day wrappers GMT's
28
+ * own `GetStartOfDay`, for every named zone.
22
29
  */
23
30
  const NANOSECONDS_PER_HOUR = 3_600_000_000_000;
24
31
  const DISAMBIGUATION_PROBE = new Temporal.PlainDateTime(2000, 1, 1);
@@ -37,11 +44,17 @@ function isAtRangeEdge(timeZone, date) {
37
44
  }
38
45
  /**
39
46
  * True when the polyfill's `GetStartOfDay` may return a valid-looking wrong value for this date (or
40
- * this zoned value's date) because a transition skipping its midnight lies before the polyfill's
41
- * 1847-01-01 transition search floor (defect 3).
47
+ * this zoned value's date): a transition skipping its midnight lies before the polyfill's
48
+ * 1847-01-01 transition search floor (defect 3), or the polyfill's search can skip or stall on two
49
+ * changes in one step (defect 5, while the D13 probe fails).
42
50
  */
43
51
  function needsOwnStartOfDay(timeZone, value) {
44
- return isNamedTimeZone(timeZone) && isBeforePolyfillTransitionSearch(value);
52
+ return isNamedTimeZone(timeZone) && needsOwnStartOfDaySearch(timeZone, value);
53
+ }
54
+ /** `needsOwnStartOfDay` for a measure that also reads the next day's start. */
55
+ function needsOwnDayBounds(zoned) {
56
+ return (isNamedTimeZone(zoned.timeZoneId) &&
57
+ needsOwnDayBoundsSearch(zoned.timeZoneId, zoned));
45
58
  }
46
59
  function inZoneOf(epochNanoseconds, zoned) {
47
60
  return new Temporal.ZonedDateTime(epochNanoseconds, zoned.timeZoneId, zoned.calendarId);
@@ -73,8 +86,6 @@ function plainDateFromOwnStartOfDay(date, timeZone) {
73
86
  }
74
87
  /** A PlainDate's start of day before the polyfill's transition search floor, or null. */
75
88
  function plainDateBeforeTransitionSearch(date, timeZoneLike) {
76
- if (!isBeforePolyfillTransitionSearch(date))
77
- return null;
78
89
  let timeZone;
79
90
  try {
80
91
  timeZone = timeZoneIdOf(timeZoneLike);
@@ -82,7 +93,7 @@ function plainDateBeforeTransitionSearch(date, timeZoneLike) {
82
93
  catch {
83
94
  return null;
84
95
  }
85
- return isNamedTimeZone(timeZone)
96
+ return needsOwnStartOfDay(timeZone, date)
86
97
  ? plainDateFromOwnStartOfDay(date, timeZone)
87
98
  : null;
88
99
  }
@@ -194,7 +205,7 @@ function hoursInDayFromOwnStartOfDay(zoned) {
194
205
  * @returns hours from this day's start to the next day's start; throws where TC39 Temporal throws
195
206
  */
196
207
  export function zonedHoursInDay(zoned) {
197
- if (needsOwnStartOfDay(zoned.timeZoneId, zoned)) {
208
+ if (needsOwnDayBounds(zoned)) {
198
209
  return hoursInDayFromOwnStartOfDay(zoned);
199
210
  }
200
211
  try {
@@ -228,19 +239,13 @@ function earliestTransitionBeforeMaximum(zoned) {
228
239
  }
229
240
  return earliest;
230
241
  }
231
- /**
232
- * `ZonedDateTime#getTimeZoneTransition("next")`, correct at the range limits and before 1847.
233
- *
234
- * - Before 1847-01-01 the polyfill never searches (defect 3), so a named zone whose offset there
235
- * differs from its offset at 1847-01-01 has its transition found by bisection first.
236
- * - The polyfill's forward scan gives up once a two-week step would pass the maximum instant, so a
237
- * `null` within its three-year horizon of the maximum is re-checked by walking back from the
238
- * maximum with `getTimeZoneTransition("previous")`, which scans correctly there.
239
- *
240
- * @param zoned the instant to search after (exclusive)
241
- * @returns the next transition, or null when there is none before the maximum instant
242
- */
243
- export function zonedNextTransition(zoned) {
242
+ /** `transition` unless it is null or lies outside the caller's limit. */
243
+ function withinLimit(transition, isInside) {
244
+ return transition !== null && isInside(transition.epochNanoseconds)
245
+ ? transition
246
+ : null;
247
+ }
248
+ function polyfillNextTransition(zoned) {
244
249
  if (isNamedTimeZone(zoned.timeZoneId)) {
245
250
  const missed = missedNextTransition(zoned.timeZoneId, zoned.epochNanoseconds);
246
251
  if (missed !== null) {
@@ -257,15 +262,34 @@ export function zonedNextTransition(zoned) {
257
262
  return earliestTransitionBeforeMaximum(zoned);
258
263
  }
259
264
  /**
260
- * `ZonedDateTime#getTimeZoneTransition("previous")`, correct before 1847.
265
+ * `ZonedDateTime#getTimeZoneTransition("next")`: TC39 `GetNamedTimeZoneNextTransition`, the first
266
+ * offset change strictly after `zoned`.
261
267
  *
262
- * The polyfill stops looking at 1847-01-01 (defect 3), so when it finds nothing in a named zone the
263
- * span from the minimum instant to the floor is checked by comparing offsets and bisecting.
268
+ * - While the D13 probe fails (two changes inside one of the polyfill's 14-day search steps are
269
+ * skipped, or stall it for ever), a named zone is searched by GMT's own bounded search
270
+ * (`zonedTransitionSearch.ts`) and the polyfill's search is never called.
271
+ * - Otherwise the polyfill answers, corrected before 1847 (defect 3: it never searches there, so
272
+ * the change is found by bisection first) and within its three-year horizon of the maximum
273
+ * instant (defect 2: its forward scan gives up once a step would pass the maximum, so a `null`
274
+ * is re-checked by walking back from the maximum).
264
275
  *
265
- * @param zoned the instant to search before (exclusive)
266
- * @returns the previous transition, or null when there is none
276
+ * @param zoned the instant to search after (exclusive)
277
+ * @param until optional: the last instant to search, in epoch nanoseconds (inclusive). A caller
278
+ * that needs only changes up to there passes it so the search reads no further
279
+ * @returns the next transition, or null when there is none up to `until` or, without it, none
280
+ * that Temporal reports
267
281
  */
268
- export function zonedPreviousTransition(zoned) {
282
+ export function zonedNextTransition(zoned, until) {
283
+ if (isNamedTimeZone(zoned.timeZoneId) && isTransitionSearchCompatNeeded()) {
284
+ const found = nextTransitionAfter(zoned.timeZoneId, zoned.epochNanoseconds, until);
285
+ return found === null ? null : inZoneOf(found, zoned);
286
+ }
287
+ const next = polyfillNextTransition(zoned);
288
+ return until === undefined
289
+ ? next
290
+ : withinLimit(next, (epochNanoseconds) => epochNanoseconds <= until);
291
+ }
292
+ function polyfillPreviousTransition(zoned) {
269
293
  const previous = zoned.getTimeZoneTransition("previous");
270
294
  if (previous !== null || !isNamedTimeZone(zoned.timeZoneId)) {
271
295
  return previous;
@@ -273,6 +297,31 @@ export function zonedPreviousTransition(zoned) {
273
297
  const missed = missedPreviousTransition(zoned.timeZoneId, zoned.epochNanoseconds);
274
298
  return missed === null ? null : inZoneOf(missed, zoned);
275
299
  }
300
+ /**
301
+ * `ZonedDateTime#getTimeZoneTransition("previous")`: TC39 `GetNamedTimeZonePreviousTransition`,
302
+ * the last offset change strictly before `zoned`.
303
+ *
304
+ * - While the D13 probe fails, a named zone is searched by GMT's own bounded search and the
305
+ * polyfill's search is never called (see `zonedNextTransition`).
306
+ * - Otherwise the polyfill answers, corrected before 1847 (defect 3): when it finds nothing in a
307
+ * named zone, the span from the minimum instant to its floor is checked by comparing offsets
308
+ * and bisecting.
309
+ *
310
+ * @param zoned the instant to search before (exclusive)
311
+ * @param since optional: where the search stops, in epoch nanoseconds (exclusive). A caller that
312
+ * needs only changes after there passes it so the search reads no further back
313
+ * @returns the previous transition, or null when there is none after `since` or, without it, none
314
+ */
315
+ export function zonedPreviousTransition(zoned, since) {
316
+ if (isNamedTimeZone(zoned.timeZoneId) && isTransitionSearchCompatNeeded()) {
317
+ const found = previousTransitionBefore(zoned.timeZoneId, zoned.epochNanoseconds, since);
318
+ return found === null ? null : inZoneOf(found, zoned);
319
+ }
320
+ const previous = polyfillPreviousTransition(zoned);
321
+ return since === undefined
322
+ ? previous
323
+ : withinLimit(previous, (epochNanoseconds) => epochNanoseconds > since);
324
+ }
276
325
  // ---------------------------------------------------------------------------------------------
277
326
  // add / subtract
278
327
  // ---------------------------------------------------------------------------------------------
@@ -403,6 +452,7 @@ export function subtractFromZoned(zoned, duration, options) {
403
452
  * "later"/"compatible" forward (DisambiguatePossibleEpochNanoseconds); "reject" throws for both.
404
453
  * - The time portion is then added in exact time and is never re-resolved.
405
454
  * - With no date portion, the whole duration is exact time and `disambiguation` never applies.
455
+ * - Each option is converted to a string once, as Temporal GetOption converts it.
406
456
  *
407
457
  * @param zoned the starting value
408
458
  * @param duration the duration to add or subtract
@@ -411,7 +461,13 @@ export function subtractFromZoned(zoned, duration, options) {
411
461
  * @returns the result; throws where TC39 Temporal throws, or when "reject" meets a gap or overlap
412
462
  */
413
463
  export function addToZonedDisambiguated(zoned, duration, sign, options) {
414
- const { overflow, disambiguation } = options;
464
+ // Temporal GetOption converts each option once (ToString). The steps below check an option and
465
+ // then use it, some more than once, so both are converted here and every step sees the same
466
+ // string: an option given as an object cannot answer the check one way and the use another.
467
+ const overflow = options.overflow === undefined
468
+ ? undefined
469
+ : `${options.overflow}`;
470
+ const disambiguation = `${options.disambiguation}`;
415
471
  // Validates `disambiguation` even when no wall clock is resolved below.
416
472
  DISAMBIGUATION_PROBE.toZonedDateTime("UTC", { disambiguation });
417
473
  const parsed = Temporal.Duration.from(duration);
@@ -443,9 +499,7 @@ function withAtEdge(zoned, fields, options) {
443
499
  if (!isAtRangeEdge(zoned.timeZoneId, wall.toPlainDate())) {
444
500
  return null;
445
501
  }
446
- const epoch = interpretISODateTimeOffset(zoned.timeZoneId, wall, offset, options?.disambiguation === undefined
447
- ? "compatible"
448
- : options.disambiguation, options?.offset === undefined ? "prefer" : options.offset, false);
502
+ const epoch = interpretISODateTimeOffset(zoned.timeZoneId, wall, offset, optionOrDefault(options?.disambiguation, "compatible"), optionOrDefault(options?.offset, "prefer"), false);
449
503
  return inZoneOf(epoch, zoned);
450
504
  }
451
505
  /**
@@ -538,8 +592,7 @@ function roundAtEdge(zoned, roundTo) {
538
592
  * @returns the rounded value; throws where TC39 Temporal throws
539
593
  */
540
594
  export function roundZonedDateTime(zoned, roundTo) {
541
- if (isDayUnit(roundTo.smallestUnit) &&
542
- needsOwnStartOfDay(zoned.timeZoneId, zoned)) {
595
+ if (isDayUnit(roundTo.smallestUnit) && needsOwnDayBounds(zoned)) {
543
596
  // Validates the options exactly as ZonedDateTime#round does, throwing where it throws.
544
597
  zoned.toPlainDateTime().round(roundTo);
545
598
  return roundToDayFromOwnStartOfDay(zoned, zoned.toPlainDate(), roundTo.roundingMode ?? "halfExpand");
@@ -4,9 +4,12 @@ import type { Interval } from "../../types/index.js";
4
4
  *
5
5
  * - True when `start` and `end` are ISO 8601 instant strings (offset required, no leap second)
6
6
  * and `start` is not after `end`.
7
- * - Annotations are read as `Temporal.Instant.from` reads them: a bracketed zone, a calendar
8
- * annotation (`[u-ca=hebrew]`, critical or not) and an elective unknown annotation
9
- * (`[foo=bar]`) are ignored; an unknown critical annotation (`[!foo=bar]`) is rejected.
7
+ * - A calendar annotation (`[u-ca=hebrew]`, critical or not) and an elective unknown annotation
8
+ * (`[foo=bar]`) are ignored, as `Temporal.Instant.from` ignores them; an unknown critical
9
+ * annotation (`[!foo=bar]`) is rejected. A bracketed zone is not validated. It is read for
10
+ * one thing: an offset written to the minute that is the zone's sub-minute offset rounded
11
+ * (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
12
+ * `Temporal.ZonedDateTime.from` reads it.
10
13
  * - Compares instants, not text: `{ start: "2024-01-01T10:00:00+01:00", end: "2024-01-01T09:30:00Z" }`
11
14
  * is valid even though it sorts backwards as a string.
12
15
  * - `start === end` is valid — an empty interval.
@@ -4,9 +4,12 @@ import { parseIntervalNanoseconds } from "../../internal/index.js";
4
4
  *
5
5
  * - True when `start` and `end` are ISO 8601 instant strings (offset required, no leap second)
6
6
  * and `start` is not after `end`.
7
- * - Annotations are read as `Temporal.Instant.from` reads them: a bracketed zone, a calendar
8
- * annotation (`[u-ca=hebrew]`, critical or not) and an elective unknown annotation
9
- * (`[foo=bar]`) are ignored; an unknown critical annotation (`[!foo=bar]`) is rejected.
7
+ * - A calendar annotation (`[u-ca=hebrew]`, critical or not) and an elective unknown annotation
8
+ * (`[foo=bar]`) are ignored, as `Temporal.Instant.from` ignores them; an unknown critical
9
+ * annotation (`[!foo=bar]`) is rejected. A bracketed zone is not validated. It is read for
10
+ * one thing: an offset written to the minute that is the zone's sub-minute offset rounded
11
+ * (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
12
+ * `Temporal.ZonedDateTime.from` reads it.
10
13
  * - Compares instants, not text: `{ start: "2024-01-01T10:00:00+01:00", end: "2024-01-01T09:30:00Z" }`
11
14
  * is valid even though it sorts backwards as a string.
12
15
  * - `start === end` is valid — an empty interval.
@@ -10,18 +10,15 @@ import type { DateDurationUnit, Overflow } from "../../types/index.js";
10
10
  * string is the `"iso8601"` calendar and returns a bare ISO string.
11
11
  * - Compatibility: since 1.16.0 calendar strings are RFC 9557 (ISO digits, `[u-ca=<id>]`, canonical
12
12
  * calendar ids); see `isValidCalendarDate`.
13
+ * - Whether `overflow: "reject"` returns "" is calendar-dependent: adding 1 year from Hebrew
14
+ * Adar I (a leap-only month) does not (Temporal remaps to the non-leap year's Adar instead of
15
+ * rejecting), while adding 1 month from the Ethiopic 30-day 12th month into the 5/6-day
16
+ * Pagumen does.
13
17
  * - Returns "" for invalid inputs.
14
18
  *
15
- * `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. adding 1 month
16
- * to Jan 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in ""). Whether `reject`
17
- * actually throws is calendar-dependent: adding 1 year from Hebrew Adar I (a leap-only month)
18
- * does NOT throw even with `overflow: "reject"` (Temporal remaps to the non-leap year's Adar
19
- * instead of rejecting), while adding 1 month from the Ethiopic 30-day 12th month into the
20
- * 5/6-day Pagumen DOES throw.
21
- *
22
19
  * @param value ISO PlainDate string, optionally calendar-annotated
23
20
  * @param units Partial<Record<DateDurationUnit, number>> object specifying units to add
24
- * @param options optional: overflow ("constrain" | "reject")
21
+ * @param options How an out-of-range result is handled
25
22
  * @returns ISO PlainDate string after addition, or "" on invalid input
26
23
  *
27
24
  * @example addDate("2024-03-10", { days: 5 }) // "2024-03-15"
@@ -32,5 +29,11 @@ import type { DateDurationUnit, Overflow } from "../../types/index.js";
32
29
  * @example addDate("2024-10-03[u-ca=japanese;era=reiwa]", { days: 1 }) // "" (not RFC 9557)
33
30
  */
34
31
  export declare function addDate(value: string, units: Partial<Record<DateDurationUnit, number>>, options?: {
32
+ /**
33
+ * What to do when the result is not a real date. `"constrain"` clamps it to the last valid day,
34
+ * so Jan 31 + 1 month is Feb 29 or 28; `"reject"` returns `""`.
35
+ *
36
+ * @defaultValue `"constrain"`, Temporal's default.
37
+ */
35
38
  overflow?: Overflow;
36
39
  }): string;
@@ -13,18 +13,15 @@ import { isOptionsArgument } from "../../internal/isObject.js";
13
13
  * string is the `"iso8601"` calendar and returns a bare ISO string.
14
14
  * - Compatibility: since 1.16.0 calendar strings are RFC 9557 (ISO digits, `[u-ca=<id>]`, canonical
15
15
  * calendar ids); see `isValidCalendarDate`.
16
+ * - Whether `overflow: "reject"` returns "" is calendar-dependent: adding 1 year from Hebrew
17
+ * Adar I (a leap-only month) does not (Temporal remaps to the non-leap year's Adar instead of
18
+ * rejecting), while adding 1 month from the Ethiopic 30-day 12th month into the 5/6-day
19
+ * Pagumen does.
16
20
  * - Returns "" for invalid inputs.
17
21
  *
18
- * `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. adding 1 month
19
- * to Jan 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in ""). Whether `reject`
20
- * actually throws is calendar-dependent: adding 1 year from Hebrew Adar I (a leap-only month)
21
- * does NOT throw even with `overflow: "reject"` (Temporal remaps to the non-leap year's Adar
22
- * instead of rejecting), while adding 1 month from the Ethiopic 30-day 12th month into the
23
- * 5/6-day Pagumen DOES throw.
24
- *
25
22
  * @param value ISO PlainDate string, optionally calendar-annotated
26
23
  * @param units Partial<Record<DateDurationUnit, number>> object specifying units to add
27
- * @param options optional: overflow ("constrain" | "reject")
24
+ * @param options How an out-of-range result is handled
28
25
  * @returns ISO PlainDate string after addition, or "" on invalid input
29
26
  *
30
27
  * @example addDate("2024-03-10", { days: 5 }) // "2024-03-15"
@@ -5,12 +5,9 @@ import type { DateTimeDurationUnit, Overflow } from "../../types/index.js";
5
5
  * - Validates `value`, `units`, and `amount` before performing the add.
6
6
  * - Returns "" for invalid inputs.
7
7
  *
8
- * `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. adding 1 month
9
- * to Jan 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 add
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 addition, or "" on invalid input
15
12
  *
16
13
  * @example addDateTime("2024-03-10T12:00:00", { days: 5 }) // "2024-03-15T12:00:00"
@@ -18,5 +15,11 @@ import type { DateTimeDurationUnit, Overflow } from "../../types/index.js";
18
15
  * @example addDateTime("2024-01-31T12:00:00", { months: 1 }, { overflow: "reject" }) // ""
19
16
  */
20
17
  export declare function addDateTime(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 Jan 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 add.
10
10
  * - Returns "" for invalid inputs.
11
11
  *
12
- * `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. adding 1 month
13
- * to Jan 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 add
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 addition, or "" on invalid input
19
16
  *
20
17
  * @example addDateTime("2024-03-10T12:00:00", { days: 5 }) // "2024-03-15T12:00:00"
@@ -8,24 +8,20 @@ import type { DateCycleField, Overflow } from "../../types/index.js";
8
8
  * overflow into January of the *next* year. Reach for `addDate` when you want calendar
9
9
  * arithmetic; reach for `cycleDate` when a single field (e.g. a datepicker segment) must stay
10
10
  * isolated from the others.
11
- * - `year` has no upper/lower wrap — cycling it is plain addition (or rounding, see below).
11
+ * - `year` has no upper/lower wrap — cycling it is plain addition (or a step to a multiple, with
12
+ * `round`): `2022` by `+5` with `round: true` lands on `2025`, the next multiple of 5.
12
13
  * `month` wraps `1–12`. `day` wraps `1`–the **current** month's day count, so cycling `day`
13
14
  * never changes `month`.
14
15
  * - Cycling `month` or `year` can still shift `day` via `overflow` — e.g. cycling `month` from a
15
16
  * 31st into a shorter month clamps under the default `"constrain"` (or returns `""` under
16
17
  * `"reject"`) exactly the way `setDate`'s own `.with()` call does; this is the same clamping
17
18
  * `addDate`'s Jan 31 + 1 month case produces, not new behavior.
18
- * - `options.round` does **not** round to the nearest increment — it steps to the *next* multiple
19
- * of `amount` in the direction of its sign (ceiling for positive, floor for negative), matching
20
- * `@internationalized/date`'s `CycleOptions.round`. E.g. cycling `year` `2022` by `+5` with
21
- * `round: true` lands on `2025` (the next multiple of 5 above 2022), not `2020` (the nearest
22
- * multiple).
23
19
  * - Returns "" for an invalid `value`, an invalid `field`, or an `amount` that is not a finite number.
24
20
  *
25
21
  * @param value ISO PlainDate string
26
22
  * @param field the field to cycle: "year" | "month" | "day"
27
23
  * @param amount signed amount to cycle by
28
- * @param options optional: round (boolean, default false), overflow ("constrain" | "reject")
24
+ * @param options How the field is stepped and an out-of-range day is handled
29
25
  * @returns ISO PlainDate string with `field` cycled, or "" on invalid input
30
26
  *
31
27
  * @example cycleDate("2024-06-15", "month", 1) // "2024-07-15"
@@ -39,6 +35,19 @@ import type { DateCycleField, Overflow } from "../../types/index.js";
39
35
  * @example cycleDate("invalid", "month", 1) // ""
40
36
  */
41
37
  export declare function cycleDate(value: string, field: DateCycleField, amount: number, options?: {
38
+ /**
39
+ * Whether to step to a multiple of `amount` instead of adding it. `true` moves to the next
40
+ * multiple in the direction of the sign of `amount` (the ceiling for a positive amount, the
41
+ * floor for a negative one), not to the nearest one; `false` adds `amount`.
42
+ *
43
+ * @defaultValue `false`
44
+ */
42
45
  round?: boolean;
46
+ /**
47
+ * What to do when the cycled `month` or `year` leaves `day` past the end of its month.
48
+ * `"constrain"` clamps `day` to the last day of that month; `"reject"` returns `""`.
49
+ *
50
+ * @defaultValue `"constrain"`, Temporal's default.
51
+ */
43
52
  overflow?: Overflow;
44
53
  }): string;
@@ -12,24 +12,20 @@ import { isOptionsArgument } from "../../internal/isObject.js";
12
12
  * overflow into January of the *next* year. Reach for `addDate` when you want calendar
13
13
  * arithmetic; reach for `cycleDate` when a single field (e.g. a datepicker segment) must stay
14
14
  * isolated from the others.
15
- * - `year` has no upper/lower wrap — cycling it is plain addition (or rounding, see below).
15
+ * - `year` has no upper/lower wrap — cycling it is plain addition (or a step to a multiple, with
16
+ * `round`): `2022` by `+5` with `round: true` lands on `2025`, the next multiple of 5.
16
17
  * `month` wraps `1–12`. `day` wraps `1`–the **current** month's day count, so cycling `day`
17
18
  * never changes `month`.
18
19
  * - Cycling `month` or `year` can still shift `day` via `overflow` — e.g. cycling `month` from a
19
20
  * 31st into a shorter month clamps under the default `"constrain"` (or returns `""` under
20
21
  * `"reject"`) exactly the way `setDate`'s own `.with()` call does; this is the same clamping
21
22
  * `addDate`'s Jan 31 + 1 month case produces, not new behavior.
22
- * - `options.round` does **not** round to the nearest increment — it steps to the *next* multiple
23
- * of `amount` in the direction of its sign (ceiling for positive, floor for negative), matching
24
- * `@internationalized/date`'s `CycleOptions.round`. E.g. cycling `year` `2022` by `+5` with
25
- * `round: true` lands on `2025` (the next multiple of 5 above 2022), not `2020` (the nearest
26
- * multiple).
27
23
  * - Returns "" for an invalid `value`, an invalid `field`, or an `amount` that is not a finite number.
28
24
  *
29
25
  * @param value ISO PlainDate string
30
26
  * @param field the field to cycle: "year" | "month" | "day"
31
27
  * @param amount signed amount to cycle by
32
- * @param options optional: round (boolean, default false), overflow ("constrain" | "reject")
28
+ * @param options How the field is stepped and an out-of-range day is handled
33
29
  * @returns ISO PlainDate string with `field` cycled, or "" on invalid input
34
30
  *
35
31
  * @example cycleDate("2024-06-15", "month", 1) // "2024-07-15"
@@ -14,15 +14,12 @@ import type { DateTimeCycleField, Overflow } from "../../types/index.js";
14
14
  * why).
15
15
  * - Cycling `month` or `year` can still shift `day` via `overflow`, exactly as `setDateTime`'s
16
16
  * `.with()` call does.
17
- * - `options.round` steps to the *next* multiple of `amount` in the direction of its sign
18
- * (ceiling for positive, floor for negative) — not the nearest one. See `cycleDate`/`cycleTime`'s
19
- * docs for worked examples.
20
17
  * - Returns "" for an invalid `value`, an invalid `field`, or an `amount` that is not a finite number.
21
18
  *
22
19
  * @param value ISO PlainDateTime string
23
20
  * @param field the field to cycle: "year" | "month" | "day" | "hour" | "minute" | "second" | "millisecond" | "microsecond" | "nanosecond"
24
21
  * @param amount signed amount to cycle by
25
- * @param options optional: round (boolean, default false), overflow ("constrain" | "reject")
22
+ * @param options How the field is stepped and an out-of-range day is handled
26
23
  * @returns ISO PlainDateTime string with `field` cycled, or "" on invalid input
27
24
  *
28
25
  * @example cycleDateTime("2024-06-15T09:30:00", "hour", 1) // "2024-06-15T10:30:00"
@@ -33,6 +30,19 @@ import type { DateTimeCycleField, Overflow } from "../../types/index.js";
33
30
  * @example cycleDateTime("invalid", "hour", 1) // ""
34
31
  */
35
32
  export declare function cycleDateTime(value: string, field: DateTimeCycleField, amount: number, options?: {
33
+ /**
34
+ * Whether to step to a multiple of `amount` instead of adding it. `true` moves to the next
35
+ * multiple in the direction of the sign of `amount` (the ceiling for a positive amount, the
36
+ * floor for a negative one), not to the nearest one; `false` adds `amount`.
37
+ *
38
+ * @defaultValue `false`
39
+ */
36
40
  round?: boolean;
41
+ /**
42
+ * What to do when the cycled `month` or `year` leaves `day` past the end of its month.
43
+ * `"constrain"` clamps `day` to the last day of that month; `"reject"` returns `""`.
44
+ *
45
+ * @defaultValue `"constrain"`, Temporal's default.
46
+ */
37
47
  overflow?: Overflow;
38
48
  }): string;
@@ -18,15 +18,12 @@ import { isOptionsArgument } from "../../internal/isObject.js";
18
18
  * why).
19
19
  * - Cycling `month` or `year` can still shift `day` via `overflow`, exactly as `setDateTime`'s
20
20
  * `.with()` call does.
21
- * - `options.round` steps to the *next* multiple of `amount` in the direction of its sign
22
- * (ceiling for positive, floor for negative) — not the nearest one. See `cycleDate`/`cycleTime`'s
23
- * docs for worked examples.
24
21
  * - Returns "" for an invalid `value`, an invalid `field`, or an `amount` that is not a finite number.
25
22
  *
26
23
  * @param value ISO PlainDateTime string
27
24
  * @param field the field to cycle: "year" | "month" | "day" | "hour" | "minute" | "second" | "millisecond" | "microsecond" | "nanosecond"
28
25
  * @param amount signed amount to cycle by
29
- * @param options optional: round (boolean, default false), overflow ("constrain" | "reject")
26
+ * @param options How the field is stepped and an out-of-range day is handled
30
27
  * @returns ISO PlainDateTime string with `field` cycled, or "" on invalid input
31
28
  *
32
29
  * @example cycleDateTime("2024-06-15T09:30:00", "hour", 1) // "2024-06-15T10:30:00"
@@ -9,10 +9,8 @@ import type { TimeCycleField } from "../../types/index.js";
9
9
  * is no ISO representation for "this hour, but staying AM" to round-trip through GMT's string
10
10
  * contract.
11
11
  * - `minute`/`second` wrap `0–59`; `millisecond`/`microsecond`/`nanosecond` wrap `0–999`.
12
- * - `options.round` does **not** round to the nearest increment — it steps to the *next* multiple
13
- * of `amount` in the direction of its sign (ceiling for positive, floor for negative), matching
14
- * `@internationalized/date`'s `CycleOptions.round`. E.g. cycling minute `22` by `+15` with
15
- * `round: true` lands on `30` (the next multiple of 15 above 22), not `15` (the nearest one).
12
+ * - With `round: true`, minute `22` by `+15` lands on `30`, the next multiple of 15 above 22, not
13
+ * on `15`, the nearest one.
16
14
  * - There is no `overflow` option (removed in 1.16.0): time fields don't share bounds the way `day`
17
15
  * shares a month with `month`/`year`, so the wrapped value is always already valid and there is
18
16
  * nothing to constrain or reject.
@@ -21,7 +19,7 @@ import type { TimeCycleField } from "../../types/index.js";
21
19
  * @param value ISO PlainTime string
22
20
  * @param field the field to cycle: "hour" | "minute" | "second" | "millisecond" | "microsecond" | "nanosecond"
23
21
  * @param amount signed amount to cycle by
24
- * @param options optional: round (boolean, default false)
22
+ * @param options How the field is stepped
25
23
  * @returns ISO PlainTime string with `field` cycled, or "" on invalid input
26
24
  *
27
25
  * @example cycleTime("09:30:00", "hour", 1) // "10:30:00"
@@ -32,5 +30,12 @@ import type { TimeCycleField } from "../../types/index.js";
32
30
  * @example cycleTime("invalid", "hour", 1) // ""
33
31
  */
34
32
  export declare function cycleTime(value: string, field: TimeCycleField, amount: number, options?: {
33
+ /**
34
+ * Whether to step to a multiple of `amount` instead of adding it. `true` moves to the next
35
+ * multiple in the direction of the sign of `amount` (the ceiling for a positive amount, the
36
+ * floor for a negative one), not to the nearest one; `false` adds `amount`.
37
+ *
38
+ * @defaultValue `false`
39
+ */
35
40
  round?: boolean;
36
41
  }): string;
@@ -13,10 +13,8 @@ import { isOptionsArgument } from "../../internal/isObject.js";
13
13
  * is no ISO representation for "this hour, but staying AM" to round-trip through GMT's string
14
14
  * contract.
15
15
  * - `minute`/`second` wrap `0–59`; `millisecond`/`microsecond`/`nanosecond` wrap `0–999`.
16
- * - `options.round` does **not** round to the nearest increment — it steps to the *next* multiple
17
- * of `amount` in the direction of its sign (ceiling for positive, floor for negative), matching
18
- * `@internationalized/date`'s `CycleOptions.round`. E.g. cycling minute `22` by `+15` with
19
- * `round: true` lands on `30` (the next multiple of 15 above 22), not `15` (the nearest one).
16
+ * - With `round: true`, minute `22` by `+15` lands on `30`, the next multiple of 15 above 22, not
17
+ * on `15`, the nearest one.
20
18
  * - There is no `overflow` option (removed in 1.16.0): time fields don't share bounds the way `day`
21
19
  * shares a month with `month`/`year`, so the wrapped value is always already valid and there is
22
20
  * nothing to constrain or reject.
@@ -25,7 +23,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
25
23
  * @param value ISO PlainTime string
26
24
  * @param field the field to cycle: "hour" | "minute" | "second" | "millisecond" | "microsecond" | "nanosecond"
27
25
  * @param amount signed amount to cycle by
28
- * @param options optional: round (boolean, default false)
26
+ * @param options How the field is stepped
29
27
  * @returns ISO PlainTime string with `field` cycled, or "" on invalid input
30
28
  *
31
29
  * @example cycleTime("09:30:00", "hour", 1) // "10:30:00"
@@ -34,7 +34,7 @@ import type { DateDurationUnit, RoundingOptions } from "../../types/index.js";
34
34
  * @param date2 ISO PlainDate string for the end, optionally calendar-annotated
35
35
  * @param unitArg date unit or units to measure the difference, singular or plural (`"day"` or
36
36
  * `"days"`); a record result keeps the plural keys
37
- * @param options optional: smallestUnit, roundingIncrement, roundingMode (Temporal.DifferenceOptions rounding controls); a non-object value (such as `null`) is invalid
37
+ * @param options optional: how the difference is rounded; a non-object value (such as `null`) is invalid
38
38
  * @returns numeric difference in the requested unit, or null on invalid input
39
39
  *
40
40
  * @example diffDate("2024-03-10", "2024-03-15", "days") // 5
@@ -38,7 +38,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
38
38
  * @param date2 ISO PlainDate string for the end, optionally calendar-annotated
39
39
  * @param unitArg date unit or units to measure the difference, singular or plural (`"day"` or
40
40
  * `"days"`); a record result keeps the plural keys
41
- * @param options optional: smallestUnit, roundingIncrement, roundingMode (Temporal.DifferenceOptions rounding controls); a non-object value (such as `null`) is invalid
41
+ * @param options optional: how the difference is rounded; a non-object value (such as `null`) is invalid
42
42
  * @returns numeric difference in the requested unit, or null on invalid input
43
43
  *
44
44
  * @example diffDate("2024-03-10", "2024-03-15", "days") // 5
@@ -27,7 +27,7 @@ import type { DateDurationUnit, DurationStringOptions, RoundingOptions } from ".
27
27
  * @param date1 ISO PlainDate string for the start, optionally calendar-annotated
28
28
  * @param date2 ISO PlainDate string for the end, optionally calendar-annotated
29
29
  * @param unit date unit, singular or plural (`"day"` or `"days"`), to use as the duration's largestUnit
30
- * @param options optional: smallestUnit, roundingIncrement, roundingMode (.until() rounding); toStringSmallestUnit, fractionalSecondDigits, toStringRoundingMode (.toString() precision); a non-object value (such as `null`) is invalid
30
+ * @param options optional: how the difference is rounded and how the string is rendered; a non-object value (such as `null`) is invalid
31
31
  * @returns ISO 8601 duration string, or "" on invalid input
32
32
  *
33
33
  * @example diffDateAsDuration("2024-03-10", "2024-04-05", "days") // "P26D"
@@ -29,7 +29,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
29
29
  * @param date1 ISO PlainDate string for the start, optionally calendar-annotated
30
30
  * @param date2 ISO PlainDate string for the end, optionally calendar-annotated
31
31
  * @param unit date unit, singular or plural (`"day"` or `"days"`), to use as the duration's largestUnit
32
- * @param options optional: smallestUnit, roundingIncrement, roundingMode (.until() rounding); toStringSmallestUnit, fractionalSecondDigits, toStringRoundingMode (.toString() precision); a non-object value (such as `null`) is invalid
32
+ * @param options optional: how the difference is rounded and how the string is rendered; a non-object value (such as `null`) is invalid
33
33
  * @returns ISO 8601 duration string, or "" on invalid input
34
34
  *
35
35
  * @example diffDateAsDuration("2024-03-10", "2024-04-05", "days") // "P26D"
@@ -27,7 +27,7 @@ import type { DateTimeDurationUnit, RoundingOptions } from "../../types/index.js
27
27
  * @param dateTime1 ISO PlainDateTime string for the start
28
28
  * @param dateTime2 ISO PlainDateTime string for the end
29
29
  * @param units DateTimeDurationUnit | DateTimeDurationUnit[] to measure the difference
30
- * @param options optional: smallestUnit, roundingIncrement, roundingMode (Temporal.DifferenceOptions rounding controls); a non-object value (such as `null`) is invalid
30
+ * @param options optional: how the difference is rounded; a non-object value (such as `null`) is invalid
31
31
  * @returns numeric difference in the requested unit, or null on invalid input
32
32
  *
33
33
  * @example diffDateTime("2024-03-10T12:00:00", "2024-03-15T12:00:00", "days") // 5
@@ -33,7 +33,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
33
33
  * @param dateTime1 ISO PlainDateTime string for the start
34
34
  * @param dateTime2 ISO PlainDateTime string for the end
35
35
  * @param units DateTimeDurationUnit | DateTimeDurationUnit[] to measure the difference
36
- * @param options optional: smallestUnit, roundingIncrement, roundingMode (Temporal.DifferenceOptions rounding controls); a non-object value (such as `null`) is invalid
36
+ * @param options optional: how the difference is rounded; a non-object value (such as `null`) is invalid
37
37
  * @returns numeric difference in the requested unit, or null on invalid input
38
38
  *
39
39
  * @example diffDateTime("2024-03-10T12:00:00", "2024-03-15T12:00:00", "days") // 5
@@ -21,7 +21,7 @@ import type { DateTimeDurationUnit, DurationStringOptions, RoundingOptions } fro
21
21
  * @param dateTime1 ISO PlainDateTime string for the start
22
22
  * @param dateTime2 ISO PlainDateTime string for the end
23
23
  * @param unit DateTimeDurationUnit to use as the duration's largestUnit
24
- * @param options optional: smallestUnit, roundingIncrement, roundingMode (.until() rounding); toStringSmallestUnit, fractionalSecondDigits, toStringRoundingMode (.toString() precision); a non-object value (such as `null`) is invalid
24
+ * @param options optional: how the difference is rounded and how the string is rendered; a non-object value (such as `null`) is invalid
25
25
  * @returns ISO 8601 duration string, or "" on invalid input
26
26
  *
27
27
  * @example diffDateTimeAsDuration("2024-03-10T00:00:00", "2024-03-11T02:00:00", "days") // "P1DT2H"