@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
@@ -5,12 +5,11 @@ import type { FractionalDigit } from "../../types/index.js";
5
5
  *
6
6
  * - Converts to ZonedDateTime, sets to start of unit, converts back to Instant.
7
7
  * - Supports: "year", "month", "week", "day", "hour", "minute", "second", "millisecond", "microsecond", "nanosecond", each also in its plural form (`"days"`), as Temporal accepts.
8
- * - `weekStartsOn` other than `"monday"` or `"sunday"` returns "".
9
8
  * - Returns "" for invalid input.
10
9
  *
11
10
  * @param value ISO UTC datetime string
12
11
  * @param unit date or time unit, singular or plural, to specify the start
13
- * @param options optional: weekStartsOn ("monday" | "sunday"), fractionalSecondDigits (number)
12
+ * @param options Where a week starts, and the precision of the result
14
13
  * @returns UTC Instant string representing the start of the unit, or "" on invalid input
15
14
  *
16
15
  * @example startOfUtc("2024-03-15T14:30:45Z", "year") // "2024-01-01T00:00:00Z"
@@ -19,6 +18,20 @@ import type { FractionalDigit } from "../../types/index.js";
19
18
  * @example startOfUtc("invalid", "year") // ""
20
19
  */
21
20
  export declare function startOfUtc(value: string, unit: Temporal.SmallestUnit<Temporal.DateTimeUnit>, options?: {
21
+ /**
22
+ * The first day of the week, which sets where a `"week"` unit starts. `"monday"` is the ISO
23
+ * 8601 week, Monday to Sunday; `"sunday"` runs Sunday to Saturday. Any other value returns
24
+ * `""`, whatever the unit.
25
+ *
26
+ * @defaultValue `"monday"`
27
+ */
22
28
  weekStartsOn?: "monday" | "sunday";
29
+ /**
30
+ * The number of fractional-second digits the result is written with, `0` to `9`, or `"auto"` to
31
+ * drop trailing zeros. Fewer digits than `unit` names truncate, as Temporal's `toString` does.
32
+ *
33
+ * @defaultValue The digits `unit` names: `3` for `"millisecond"`, `6` for `"microsecond"`, `9`
34
+ * for `"nanosecond"` and `0` for any coarser unit.
35
+ */
23
36
  fractionalSecondDigits?: FractionalDigit;
24
37
  }): string;
@@ -5,12 +5,11 @@ import { isOptionsArgument } from "../../internal/isObject.js";
5
5
  *
6
6
  * - Converts to ZonedDateTime, sets to start of unit, converts back to Instant.
7
7
  * - Supports: "year", "month", "week", "day", "hour", "minute", "second", "millisecond", "microsecond", "nanosecond", each also in its plural form (`"days"`), as Temporal accepts.
8
- * - `weekStartsOn` other than `"monday"` or `"sunday"` returns "".
9
8
  * - Returns "" for invalid input.
10
9
  *
11
10
  * @param value ISO UTC datetime string
12
11
  * @param unit date or time unit, singular or plural, to specify the start
13
- * @param options optional: weekStartsOn ("monday" | "sunday"), fractionalSecondDigits (number)
12
+ * @param options Where a week starts, and the precision of the result
14
13
  * @returns UTC Instant string representing the start of the unit, or "" on invalid input
15
14
  *
16
15
  * @example startOfUtc("2024-03-15T14:30:45Z", "year") // "2024-01-01T00:00:00Z"
@@ -6,12 +6,9 @@ import type { DateTimeDurationUnit, Overflow } from "../../types/index.js";
6
6
  * - Validates duration units and values.
7
7
  * - Returns "" for invalid input.
8
8
  *
9
- * `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. subtracting
10
- * 1 month from Mar 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in "").
11
- *
12
9
  * @param value ISO UTC datetime string (e.g. "2024-03-10T12:00:00Z")
13
10
  * @param units Partial<Record<DateTimeDurationUnit, number>> object specifying units to subtract
14
- * @param options optional: overflow ("constrain" | "reject")
11
+ * @param options How an out-of-range result is handled
15
12
  * @returns UTC Instant string after subtraction, or "" on invalid input
16
13
  *
17
14
  * @example subtractUtc("2024-03-15T12:00:00Z", { days: 5 }) // "2024-03-10T12:00:00Z"
@@ -19,5 +16,11 @@ import type { DateTimeDurationUnit, Overflow } from "../../types/index.js";
19
16
  * @example subtractUtc("invalid", { days: 5 }) // ""
20
17
  */
21
18
  export declare function subtractUtc(value: string, units: Partial<Record<DateTimeDurationUnit, number>>, options?: {
19
+ /**
20
+ * What to do when the result is not a real date. `"constrain"` clamps it to the last valid day,
21
+ * so Mar 31 − 1 month is Feb 29/28 (TC39 Temporal); `"reject"` returns `""`.
22
+ *
23
+ * @defaultValue `"constrain"`, Temporal's default.
24
+ */
22
25
  overflow?: Overflow;
23
26
  }): string;
@@ -11,12 +11,9 @@ import { isOptionsArgument } from "../../internal/isObject.js";
11
11
  * - Validates duration units and values.
12
12
  * - Returns "" for invalid input.
13
13
  *
14
- * `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. subtracting
15
- * 1 month from Mar 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in "").
16
- *
17
14
  * @param value ISO UTC datetime string (e.g. "2024-03-10T12:00:00Z")
18
15
  * @param units Partial<Record<DateTimeDurationUnit, number>> object specifying units to subtract
19
- * @param options optional: overflow ("constrain" | "reject")
16
+ * @param options How an out-of-range result is handled
20
17
  * @returns UTC Instant string after subtraction, or "" on invalid input
21
18
  *
22
19
  * @example subtractUtc("2024-03-15T12:00:00Z", { days: 5 }) // "2024-03-10T12:00:00Z"
@@ -7,13 +7,12 @@ import { Temporal } from "@js-temporal/polyfill";
7
7
  * unambiguous).
8
8
  * - `"month"` requires the same month AND year, matching `areDateTimesEqualBy`.
9
9
  * - `unit` accepts the singular or plural name (`"day"` or `"days"`), as Temporal does.
10
- * - `weekStartsOn` other than `"monday"` or `"sunday"` returns false.
11
10
  * - Returns false for an unsupported unit or invalid input.
12
11
  * - Takes no `fractionalSecondDigits`: equality compares full-precision `unit` boundaries, and output
13
12
  * digits cannot change which bucket a value is in. That ignored option was removed in 1.16.0; to
14
13
  * compare more coarsely, pass a coarser unit (0 digits is `"second"`, 3 is `"millisecond"`).
15
14
  *
16
- * Mapping from date-fns (Decision 5, `context/roadmap/issues/J.md`):
15
+ * Mapping from date-fns:
17
16
  * - `isSameDay(a, b)` → `areUtcEqualBy(a, b, "day")`
18
17
  * - `isSameMonth(a, b)` → `areUtcEqualBy(a, b, "month")`
19
18
  * - `isSameYear(a, b)` → `areUtcEqualBy(a, b, "year")`
@@ -21,7 +20,7 @@ import { Temporal } from "@js-temporal/polyfill";
21
20
  * @param value1 first UTC ISO datetime string
22
21
  * @param value2 second UTC ISO datetime string
23
22
  * @param unit date or time unit, singular or plural, to compare by
24
- * @param options optional: weekStartsOn ("monday" | "sunday")
23
+ * @param options Where a week starts
25
24
  * @returns true if both values share the same start-of-unit boundary, false on an unsupported unit or invalid input
26
25
  *
27
26
  * @example areUtcEqualBy("2024-03-15T02:00:00Z", "2024-03-15T22:00:00Z", "day") // true
@@ -31,5 +30,12 @@ import { Temporal } from "@js-temporal/polyfill";
31
30
  * @example areUtcEqualBy("invalid", "2024-03-15T02:00:00Z", "day") // false
32
31
  */
33
32
  export declare function areUtcEqualBy(value1: string, value2: string, unit: Temporal.SmallestUnit<Temporal.DateTimeUnit>, options?: {
33
+ /**
34
+ * The first day of the week, which sets where a `"week"` unit starts. `"monday"` is the ISO
35
+ * 8601 week, Monday to Sunday; `"sunday"` runs Sunday to Saturday. Any other value returns
36
+ * false, whatever the unit.
37
+ *
38
+ * @defaultValue `"monday"`
39
+ */
34
40
  weekStartsOn?: "monday" | "sunday";
35
41
  }): boolean;
@@ -13,13 +13,12 @@ import { isOptionsArgument } from "../../internal/isObject.js";
13
13
  * unambiguous).
14
14
  * - `"month"` requires the same month AND year, matching `areDateTimesEqualBy`.
15
15
  * - `unit` accepts the singular or plural name (`"day"` or `"days"`), as Temporal does.
16
- * - `weekStartsOn` other than `"monday"` or `"sunday"` returns false.
17
16
  * - Returns false for an unsupported unit or invalid input.
18
17
  * - Takes no `fractionalSecondDigits`: equality compares full-precision `unit` boundaries, and output
19
18
  * digits cannot change which bucket a value is in. That ignored option was removed in 1.16.0; to
20
19
  * compare more coarsely, pass a coarser unit (0 digits is `"second"`, 3 is `"millisecond"`).
21
20
  *
22
- * Mapping from date-fns (Decision 5, `context/roadmap/issues/J.md`):
21
+ * Mapping from date-fns:
23
22
  * - `isSameDay(a, b)` → `areUtcEqualBy(a, b, "day")`
24
23
  * - `isSameMonth(a, b)` → `areUtcEqualBy(a, b, "month")`
25
24
  * - `isSameYear(a, b)` → `areUtcEqualBy(a, b, "year")`
@@ -27,7 +26,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
27
26
  * @param value1 first UTC ISO datetime string
28
27
  * @param value2 second UTC ISO datetime string
29
28
  * @param unit date or time unit, singular or plural, to compare by
30
- * @param options optional: weekStartsOn ("monday" | "sunday")
29
+ * @param options Where a week starts
31
30
  * @returns true if both values share the same start-of-unit boundary, false on an unsupported unit or invalid input
32
31
  *
33
32
  * @example areUtcEqualBy("2024-03-15T02:00:00Z", "2024-03-15T22:00:00Z", "day") // true
@@ -1,12 +1,11 @@
1
1
  /**
2
2
  * Convert a UTC datetime string to a plain date string in the format "YYYY-MM-DD".
3
3
  *
4
- * - Converts to specified timezone before extracting date.
5
- * - Defaults to UTC if no timezone specified.
4
+ * - Converts to the `timeZone` option's zone before extracting the date.
6
5
  * - Returns "" for invalid input.
7
6
  *
8
7
  * @param value UTC datetime string (e.g., "2024-02-29T00:00:00Z")
9
- * @param options optional: timeZone (IANA)
8
+ * @param options The time zone the value is read in
10
9
  * @returns plain date string in "YYYY-MM-DD" format or "" on invalid input
11
10
  *
12
11
  * @example convertUtcToPlainDate("2024-02-29T00:00:00Z") // "2024-02-29"
@@ -14,5 +13,11 @@
14
13
  * @example convertUtcToPlainDate("invalid") // ""
15
14
  */
16
15
  export declare function convertUtcToPlainDate(value: string, options?: {
16
+ /**
17
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
18
+ * the system time zone. An unknown zone returns `""`.
19
+ *
20
+ * @defaultValue `"UTC"`
21
+ */
17
22
  timeZone?: string;
18
23
  }): string;
@@ -1,17 +1,16 @@
1
1
  // fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
- import { isValidTimeZone } from "../../zoned/index.js";
3
+ import { normalizeTimeZone } from "../../internal/normalizeTimeZone.js";
4
4
  import { isValidUtc } from "../validate/index.js";
5
5
  import { isOptionsArgument } from "../../internal/isObject.js";
6
6
  /**
7
7
  * Convert a UTC datetime string to a plain date string in the format "YYYY-MM-DD".
8
8
  *
9
- * - Converts to specified timezone before extracting date.
10
- * - Defaults to UTC if no timezone specified.
9
+ * - Converts to the `timeZone` option's zone before extracting the date.
11
10
  * - Returns "" for invalid input.
12
11
  *
13
12
  * @param value UTC datetime string (e.g., "2024-02-29T00:00:00Z")
14
- * @param options optional: timeZone (IANA)
13
+ * @param options The time zone the value is read in
15
14
  * @returns plain date string in "YYYY-MM-DD" format or "" on invalid input
16
15
  *
17
16
  * @example convertUtcToPlainDate("2024-02-29T00:00:00Z") // "2024-02-29"
@@ -23,8 +22,8 @@ export function convertUtcToPlainDate(value, options) {
23
22
  if (!isOptionsArgument(options)) {
24
23
  return "";
25
24
  }
26
- const { timeZone = "UTC" } = options ?? {};
27
- if (!isValidTimeZone(timeZone))
25
+ const timeZone = normalizeTimeZone(options?.timeZone);
26
+ if (timeZone === "")
28
27
  return "";
29
28
  if (!isValidUtc(value))
30
29
  return "";
@@ -1,12 +1,11 @@
1
1
  /**
2
2
  * Convert a UTC datetime string to a plain datetime string in the format "YYYY-MM-DDTHH:mm:ss".
3
3
  *
4
- * - Converts to specified timezone before extracting datetime.
5
- * - Defaults to UTC if no timezone specified.
4
+ * - Converts to the `timeZone` option's zone before extracting the datetime.
6
5
  * - Returns "" for invalid input.
7
6
  *
8
7
  * @param value UTC datetime string (e.g., "2024-02-29T00:00:00Z")
9
- * @param options optional: timeZone (IANA)
8
+ * @param options The time zone the value is read in
10
9
  * @returns plain datetime string in "YYYY-MM-DDTHH:mm:ss" format or "" on invalid input
11
10
  *
12
11
  * @example convertUtcToPlainDateTime("2024-02-29T00:00:00Z") // "2024-02-29T00:00:00"
@@ -14,5 +13,11 @@
14
13
  * @example convertUtcToPlainDateTime("invalid") // ""
15
14
  */
16
15
  export declare function convertUtcToPlainDateTime(value: string, options?: {
16
+ /**
17
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
18
+ * the system time zone. An unknown zone returns `""`.
19
+ *
20
+ * @defaultValue `"UTC"`
21
+ */
17
22
  timeZone?: string;
18
23
  }): string;
@@ -1,17 +1,16 @@
1
1
  // fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
- import { isValidTimeZone } from "../../zoned/index.js";
3
+ import { normalizeTimeZone } from "../../internal/normalizeTimeZone.js";
4
4
  import { isValidUtc } from "../validate/index.js";
5
5
  import { isOptionsArgument } from "../../internal/isObject.js";
6
6
  /**
7
7
  * Convert a UTC datetime string to a plain datetime string in the format "YYYY-MM-DDTHH:mm:ss".
8
8
  *
9
- * - Converts to specified timezone before extracting datetime.
10
- * - Defaults to UTC if no timezone specified.
9
+ * - Converts to the `timeZone` option's zone before extracting the datetime.
11
10
  * - Returns "" for invalid input.
12
11
  *
13
12
  * @param value UTC datetime string (e.g., "2024-02-29T00:00:00Z")
14
- * @param options optional: timeZone (IANA)
13
+ * @param options The time zone the value is read in
15
14
  * @returns plain datetime string in "YYYY-MM-DDTHH:mm:ss" format or "" on invalid input
16
15
  *
17
16
  * @example convertUtcToPlainDateTime("2024-02-29T00:00:00Z") // "2024-02-29T00:00:00"
@@ -23,8 +22,8 @@ export function convertUtcToPlainDateTime(value, options) {
23
22
  if (!isOptionsArgument(options)) {
24
23
  return "";
25
24
  }
26
- const { timeZone = "UTC" } = options ?? {};
27
- if (!isValidTimeZone(timeZone))
25
+ const timeZone = normalizeTimeZone(options?.timeZone);
26
+ if (timeZone === "")
28
27
  return "";
29
28
  if (!isValidUtc(value))
30
29
  return "";
@@ -1,12 +1,11 @@
1
1
  /**
2
2
  * Convert a UTC datetime string to a plain time string in the format "HH:mm:ss".
3
3
  *
4
- * - Converts to specified timezone before extracting time.
5
- * - Defaults to UTC if no timezone specified.
4
+ * - Converts to the `timeZone` option's zone before extracting the time.
6
5
  * - Returns "" for invalid input.
7
6
  *
8
7
  * @param value UTC datetime string (e.g., "2024-02-29T00:00:00Z")
9
- * @param options optional: timeZone (IANA)
8
+ * @param options The time zone the value is read in
10
9
  * @returns plain time string in "HH:mm:ss" format or "" on invalid input
11
10
  *
12
11
  * @example convertUtcToPlainTime("2024-02-29T00:00:00Z") // "00:00:00"
@@ -14,5 +13,11 @@
14
13
  * @example convertUtcToPlainTime("invalid") // ""
15
14
  */
16
15
  export declare function convertUtcToPlainTime(value: string, options?: {
16
+ /**
17
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
18
+ * the system time zone. An unknown zone returns `""`.
19
+ *
20
+ * @defaultValue `"UTC"`
21
+ */
17
22
  timeZone?: string;
18
23
  }): string;
@@ -1,17 +1,16 @@
1
1
  // fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
- import { isValidTimeZone } from "../../zoned/index.js";
3
+ import { normalizeTimeZone } from "../../internal/normalizeTimeZone.js";
4
4
  import { isValidUtc } from "../validate/index.js";
5
5
  import { isOptionsArgument } from "../../internal/isObject.js";
6
6
  /**
7
7
  * Convert a UTC datetime string to a plain time string in the format "HH:mm:ss".
8
8
  *
9
- * - Converts to specified timezone before extracting time.
10
- * - Defaults to UTC if no timezone specified.
9
+ * - Converts to the `timeZone` option's zone before extracting the time.
11
10
  * - Returns "" for invalid input.
12
11
  *
13
12
  * @param value UTC datetime string (e.g., "2024-02-29T00:00:00Z")
14
- * @param options optional: timeZone (IANA)
13
+ * @param options The time zone the value is read in
15
14
  * @returns plain time string in "HH:mm:ss" format or "" on invalid input
16
15
  *
17
16
  * @example convertUtcToPlainTime("2024-02-29T00:00:00Z") // "00:00:00"
@@ -23,8 +22,8 @@ export function convertUtcToPlainTime(value, options) {
23
22
  if (!isOptionsArgument(options)) {
24
23
  return "";
25
24
  }
26
- const { timeZone = "UTC" } = options ?? {};
27
- if (!isValidTimeZone(timeZone))
25
+ const timeZone = normalizeTimeZone(options?.timeZone);
26
+ if (timeZone === "")
28
27
  return "";
29
28
  if (!isValidUtc(value))
30
29
  return "";
@@ -4,13 +4,12 @@ import type { UnixUnit } from "../../unix/validate/isValidUnixUnit.js";
4
4
  *
5
5
  * - Uses Temporal.Instant.from to parse.
6
6
  * - Seconds floor toward −∞, so `"1969-12-31T23:59:59.5Z"` is second `-1` (POSIX `time_t`).
7
- * - `options.epochUnit` is `"seconds"` or `"milliseconds"` (singular accepted), default
8
- * `"milliseconds"`. An explicit `undefined` is the same as omitted; a non-object `options` (such
9
- * as a bare `"seconds"` string) returns null.
7
+ * - `options` must be an object or omitted: a non-object value (such as a bare `"seconds"` string)
8
+ * returns null.
10
9
  * - Returns null for invalid input.
11
10
  *
12
11
  * @param value UTC Instant string
13
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds")
12
+ * @param options The unit of the returned epoch value
14
13
  * @returns epoch number or null on invalid
15
14
  *
16
15
  * @example convertUtcToUnix("2024-02-29T00:00:00Z") // 1709164800000
@@ -20,5 +19,11 @@ import type { UnixUnit } from "../../unix/validate/isValidUnixUnit.js";
20
19
  * @example convertUtcToUnix("invalid") // null
21
20
  */
22
21
  export declare function convertUtcToUnix(value: string, options?: {
22
+ /**
23
+ * The unit the epoch value is returned in: `"seconds"` or `"milliseconds"`, singular or plural.
24
+ * An explicit `undefined` is the same as omitted; any other value returns `null`.
25
+ *
26
+ * @defaultValue `"milliseconds"`
27
+ */
23
28
  epochUnit?: UnixUnit;
24
29
  }): number | null;
@@ -6,13 +6,12 @@ import { isValidUtc } from "../validate/index.js";
6
6
  *
7
7
  * - Uses Temporal.Instant.from to parse.
8
8
  * - Seconds floor toward −∞, so `"1969-12-31T23:59:59.5Z"` is second `-1` (POSIX `time_t`).
9
- * - `options.epochUnit` is `"seconds"` or `"milliseconds"` (singular accepted), default
10
- * `"milliseconds"`. An explicit `undefined` is the same as omitted; a non-object `options` (such
11
- * as a bare `"seconds"` string) returns null.
9
+ * - `options` must be an object or omitted: a non-object value (such as a bare `"seconds"` string)
10
+ * returns null.
12
11
  * - Returns null for invalid input.
13
12
  *
14
13
  * @param value UTC Instant string
15
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds")
14
+ * @param options The unit of the returned epoch value
16
15
  * @returns epoch number or null on invalid
17
16
  *
18
17
  * @example convertUtcToUnix("2024-02-29T00:00:00Z") // 1709164800000
@@ -6,7 +6,7 @@
6
6
  * - Returns "" for invalid input.
7
7
  *
8
8
  * @param value UTC Instant string
9
- * @param timeZone IANA timeZone identifier
9
+ * @param timeZone IANA name or UTC offset
10
10
  * @returns zoned ISO 8601 string or "" on invalid
11
11
  *
12
12
  * @example convertUtcToZoned("2024-02-29T00:00:00Z", "America/New_York") // "2024-02-28T19:00:00-05:00[America/New_York]"
@@ -9,7 +9,7 @@ import { isValidUtc } from "../validate/index.js";
9
9
  * - Returns "" for invalid input.
10
10
  *
11
11
  * @param value UTC Instant string
12
- * @param timeZone IANA timeZone identifier
12
+ * @param timeZone IANA name or UTC offset
13
13
  * @returns zoned ISO 8601 string or "" on invalid
14
14
  *
15
15
  * @example convertUtcToZoned("2024-02-29T00:00:00Z", "America/New_York") // "2024-02-28T19:00:00-05:00[America/New_York]"
@@ -1,27 +1,38 @@
1
1
  import type { CalendarOptions } from "../../types/index.js";
2
+ /**
3
+ * Options for `formatCalendarUtc`: the instant the day label is measured from, the time zone the
4
+ * days and the clock time are read in, and the width of the time-of-day half.
5
+ */
2
6
  export interface FormatCalendarUtcOptions extends CalendarOptions {
3
7
  /**
4
- * IANA timezone used for both the calendar-day comparison and the
5
- * rendered clock time. Omitted is `"UTC"`, `"local"` is the system zone,
6
- * and an unknown zone makes the result `""` (ECMA-402 throws RangeError).
8
+ * The time zone used for both the calendar-day comparison and the rendered clock time: an IANA
9
+ * name, a UTC offset, or `"local"` for the system time zone. An unknown zone returns `""`, as
10
+ * ECMA-402 throws RangeError for it.
11
+ *
12
+ * @defaultValue `"UTC"`
7
13
  */
8
14
  timeZone?: string;
9
- /** `Intl.DateTimeFormatOptions` `timeStyle` for the time-of-day half. */
10
- timeStyle?: "short" | "medium" | "full";
15
+ /**
16
+ * The length of the time-of-day part, as the `timeStyle` of `Intl.DateTimeFormat`. `"short"`
17
+ * writes hours and minutes, `"medium"` adds seconds, `"long"` adds the short time zone name
18
+ * ("EDT") and `"full"` the long one ("Eastern Daylight Time"). Any other value returns `""`.
19
+ *
20
+ * @defaultValue `"short"`
21
+ */
22
+ timeStyle?: "short" | "medium" | "long" | "full";
11
23
  }
12
24
  /**
13
25
  * Format a UTC ISO string as a relative day label plus time-of-day, e.g.
14
26
  * "Tomorrow at 2:30 PM" — the UTC counterpart of `formatCalendar`. See that
15
27
  * function's JSDoc for the day-label/threshold/connector design; this
16
- * variant compares calendar days and renders the clock time in `timeZone`
17
- * (default `"UTC"`).
28
+ * variant compares calendar days and renders the clock time in `timeZone`.
18
29
  *
19
30
  * - `options` must be an object or omitted: `null` returns `""`, as Temporal's GetOptionsObject
20
31
  * rejects it.
21
32
  *
22
33
  * @param value UTC ISO string to format
23
34
  * @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
24
- * @param options optional: { reference, timeZone (default "UTC"; "local" is the system zone; an unknown zone returns ""), timeStyle }
35
+ * @param options The reference instant, the time zone and the time style
25
36
  * @returns the formatted calendar string, or "" on invalid input
26
37
  *
27
38
  * @example formatCalendarUtc("2026-03-16T18:30:00Z", "en-US", { timeZone: "America/New_York", reference: "2026-03-15T13:00:00Z" }) // "tomorrow at 2:30 PM"
@@ -3,19 +3,19 @@ import { formatCalendarInstants } from "../../internal/formatCalendarDays.js";
3
3
  import { normalizeTimeZone } from "../../internal/normalizeTimeZone.js";
4
4
  import { toInstantFromUtc, toReferenceInstantFromUtc, } from "../../internal/toInstantFromUtc.js";
5
5
  import { isValidUtc } from "../validate/index.js";
6
+ import { optionOrDefault } from "../../internal/optionOrDefault.js";
6
7
  /**
7
8
  * Format a UTC ISO string as a relative day label plus time-of-day, e.g.
8
9
  * "Tomorrow at 2:30 PM" — the UTC counterpart of `formatCalendar`. See that
9
10
  * function's JSDoc for the day-label/threshold/connector design; this
10
- * variant compares calendar days and renders the clock time in `timeZone`
11
- * (default `"UTC"`).
11
+ * variant compares calendar days and renders the clock time in `timeZone`.
12
12
  *
13
13
  * - `options` must be an object or omitted: `null` returns `""`, as Temporal's GetOptionsObject
14
14
  * rejects it.
15
15
  *
16
16
  * @param value UTC ISO string to format
17
17
  * @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
18
- * @param options optional: { reference, timeZone (default "UTC"; "local" is the system zone; an unknown zone returns ""), timeStyle }
18
+ * @param options The reference instant, the time zone and the time style
19
19
  * @returns the formatted calendar string, or "" on invalid input
20
20
  *
21
21
  * @example formatCalendarUtc("2026-03-16T18:30:00Z", "en-US", { timeZone: "America/New_York", reference: "2026-03-15T13:00:00Z" }) // "tomorrow at 2:30 PM"
@@ -36,16 +36,18 @@ export function formatCalendarUtc(value, locale, options = {}) {
36
36
  const timeZone = normalizeTimeZone(options.timeZone);
37
37
  if (!timeZone)
38
38
  return "";
39
- if (options.reference !== undefined && !isValidUtc(options.reference))
39
+ // Each option is read once (GetOption).
40
+ const referenceOption = options.reference;
41
+ if (referenceOption !== undefined && !isValidUtc(referenceOption))
40
42
  return "";
41
43
  const target = toInstantFromUtc(value);
42
44
  if (target === null)
43
45
  return "";
44
- const reference = toReferenceInstantFromUtc(options.reference);
46
+ const reference = toReferenceInstantFromUtc(referenceOption);
45
47
  if (reference === null)
46
48
  return "";
47
49
  try {
48
- return formatCalendarInstants(target, reference, timeZone, locale, options.timeStyle === undefined ? "short" : options.timeStyle);
50
+ return formatCalendarInstants(target, reference, timeZone, locale, optionOrDefault(options.timeStyle, "short"));
49
51
  }
50
52
  catch {
51
53
  return "";
@@ -5,7 +5,7 @@
5
5
  * - **Fixed grammar, not a display format.** RFC 9110 mandates English
6
6
  * weekday/month abbreviations and a literal `GMT` suffix regardless of
7
7
  * caller locale — there is no locale-appropriate alternative ordering to
8
- * lose (see roadmap `issues/J.md` Decision 1 / J13).
8
+ * lose.
9
9
  * - Always `GMT`; HTTP-date carries no offset variation to preserve.
10
10
  * - Fractional seconds in `value` are truncated — IMF-fixdate has no
11
11
  * sub-second field.
@@ -8,7 +8,7 @@ import { isValidUtc } from "../validate/index.js";
8
8
  * - **Fixed grammar, not a display format.** RFC 9110 mandates English
9
9
  * weekday/month abbreviations and a literal `GMT` suffix regardless of
10
10
  * caller locale — there is no locale-appropriate alternative ordering to
11
- * lose (see roadmap `issues/J.md` Decision 1 / J13).
11
+ * lose.
12
12
  * - Always `GMT`; HTTP-date carries no offset variation to preserve.
13
13
  * - Fractional seconds in `value` are truncated — IMF-fixdate has no
14
14
  * sub-second field.
@@ -1,28 +1,48 @@
1
1
  import type { RelativeTimeFormatOptions, RelativeUnit } from "../../types/index.js";
2
+ /**
3
+ * Options for `formatRelativeUtc`: the instant the distance is measured from, the unit it is shown
4
+ * in, how it rounds, and the wording `Intl.RelativeTimeFormat` uses.
5
+ */
2
6
  export interface FormatRelativeUtcOptions extends RelativeTimeFormatOptions {
3
- largestUnit?: RelativeUnit;
7
+ /**
8
+ * The unit the distance is written in, whatever its size: `"second"`, `"minute"`, `"hour"`,
9
+ * `"day"`, `"week"`, `"month"` or `"year"`, singular or plural. Any other value returns `""`.
10
+ * Omitted, the unit is picked from the distance: second under a minute, minute under an hour,
11
+ * hour under a day, day under 7 days, week under 28, month under 365 and year beyond.
12
+ *
13
+ * @defaultValue None. The unit is picked from the distance.
14
+ */
15
+ largestUnit?: RelativeUnit | `${RelativeUnit}s`;
16
+ /**
17
+ * The instant the distance is measured from, as a UTC ISO string. Any other value returns `""`.
18
+ *
19
+ * @defaultValue The current instant.
20
+ */
4
21
  reference?: string;
22
+ /**
23
+ * The time zone that anchors a calendar unit (week, month or year): an IANA name, a UTC offset,
24
+ * or `"local"` for the system time zone. An unknown zone returns `""` whatever the unit, as
25
+ * ECMA-402 throws RangeError for it.
26
+ *
27
+ * @defaultValue `"UTC"`
28
+ */
5
29
  timeZone?: string;
6
30
  }
7
31
  /**
8
32
  * Format the relative time between a UTC ISO string and a reference instant.
9
33
  *
10
- * - Auto-picks the display unit based on the distance, unless `largestUnit` forces one: second
11
- * under a minute, minute under an hour, hour under a day, then `formatRelativeDate`'s thresholds —
12
- * day under 7 days, week under 28, month under 365, year beyond — so a 3-year distance reads
13
- * "3 years ago".
34
+ * - Picks the display unit from the distance, using `formatRelativeDate`'s day thresholds past a
35
+ * day, so a 3-year distance reads "3 years ago".
14
36
  * - **Compatibility:** before 1.16.0 week, month and year were never auto-picked ("1,096 days ago").
15
37
  * Pass `largestUnit: "day"` to keep a day count.
16
- * - `roundingMethod` controls how the distance rounds to the display unit.
17
- * - `timeZone` anchors a calendar unit (week, month or year, auto-picked or forced). Omitted, it is
18
- * `"UTC"`; pass `"local"` for the system time zone. An unknown zone returns `""` whatever the unit
19
- * (ECMA-402 throws RangeError for it).
38
+ * - `largestUnit` is one of the seven units from `"second"` to `"year"`, singular or plural. Any
39
+ * other value returns `""`.
20
40
  * - `options` must be an object or omitted: `null` returns `""`, as Temporal's GetOptionsObject
21
41
  * rejects it.
22
42
  *
23
43
  * @param value UTC ISO string to format
24
44
  * @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
25
- * @param options optional: { style, numeric, largestUnit, roundingMethod, reference, timeZone }
45
+ * @param options The reference instant, the display unit, rounding, wording and time zone
26
46
  * @returns the formatted relative-time string, or "" on invalid input
27
47
  *
28
48
  * @example formatRelativeUtc("2026-01-15T14:30:45Z", "en-US", { reference: "2026-04-15T14:30:45Z" }) // "3 months ago"
@@ -7,22 +7,18 @@ import { isValidUtc } from "../validate/index.js";
7
7
  /**
8
8
  * Format the relative time between a UTC ISO string and a reference instant.
9
9
  *
10
- * - Auto-picks the display unit based on the distance, unless `largestUnit` forces one: second
11
- * under a minute, minute under an hour, hour under a day, then `formatRelativeDate`'s thresholds —
12
- * day under 7 days, week under 28, month under 365, year beyond — so a 3-year distance reads
13
- * "3 years ago".
10
+ * - Picks the display unit from the distance, using `formatRelativeDate`'s day thresholds past a
11
+ * day, so a 3-year distance reads "3 years ago".
14
12
  * - **Compatibility:** before 1.16.0 week, month and year were never auto-picked ("1,096 days ago").
15
13
  * Pass `largestUnit: "day"` to keep a day count.
16
- * - `roundingMethod` controls how the distance rounds to the display unit.
17
- * - `timeZone` anchors a calendar unit (week, month or year, auto-picked or forced). Omitted, it is
18
- * `"UTC"`; pass `"local"` for the system time zone. An unknown zone returns `""` whatever the unit
19
- * (ECMA-402 throws RangeError for it).
14
+ * - `largestUnit` is one of the seven units from `"second"` to `"year"`, singular or plural. Any
15
+ * other value returns `""`.
20
16
  * - `options` must be an object or omitted: `null` returns `""`, as Temporal's GetOptionsObject
21
17
  * rejects it.
22
18
  *
23
19
  * @param value UTC ISO string to format
24
20
  * @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
25
- * @param options optional: { style, numeric, largestUnit, roundingMethod, reference, timeZone }
21
+ * @param options The reference instant, the display unit, rounding, wording and time zone
26
22
  * @returns the formatted relative-time string, or "" on invalid input
27
23
  *
28
24
  * @example formatRelativeUtc("2026-01-15T14:30:45Z", "en-US", { reference: "2026-04-15T14:30:45Z" }) // "3 months ago"
@@ -43,12 +39,14 @@ export function formatRelativeUtc(value, locale, options = {}) {
43
39
  const tz = normalizeTimeZone(options.timeZone);
44
40
  if (!tz)
45
41
  return "";
46
- if (options.reference !== undefined && !isValidUtc(options.reference))
42
+ // Each option is read once (GetOption).
43
+ const referenceOption = options.reference;
44
+ if (referenceOption !== undefined && !isValidUtc(referenceOption))
47
45
  return "";
48
46
  const target = toInstantFromUtc(value);
49
47
  if (target === null)
50
48
  return "";
51
- const reference = toReferenceInstantFromUtc(options.reference);
49
+ const reference = toReferenceInstantFromUtc(referenceOption);
52
50
  if (reference === null)
53
51
  return "";
54
52
  try {