@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
@@ -0,0 +1,48 @@
1
+ import { Temporal } from "@js-temporal/polyfill";
2
+ import { instantFrom } from "../../internal/index.js";
3
+ import { isValidInstant } from "../../precision/validate/isValidInstant.js";
4
+ /**
5
+ * Report whether a cut-off has passed.
6
+ *
7
+ * The window to meet a cut-off is half-open, `[…, cutoff)`: at the cut-off instant itself it
8
+ * has closed, so `now` equal to `cutoff` is past. This matches the half-open rule GMT's
9
+ * intervals follow, and `timeToCutoff`, which is `PT0S` there.
10
+ *
11
+ * - Both arguments are exact: an instant (`Z`/offset) or a zoned string, as `cutoffAt`
12
+ * returns one. They are compared as instants, so the zone each is written in does not
13
+ * matter, and the two passes of a repeated hour are told apart by their offsets.
14
+ * - **The offset fixes the instant; a bracketed zone only resolves a rounded one.** An offset
15
+ * written to the minute that is the bracketed zone's sub-minute offset rounded
16
+ * (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
17
+ * `Temporal.ZonedDateTime.from` reads it, so a cut-off `cutoffAt` wrote is the instant it
18
+ * computed, except a wall time repeated inside a sub-minute offset change, which reads as
19
+ * its first pass (see `isValidInstant`). Otherwise the bracket is not checked: a zone that does not exist, or that
20
+ * disagrees with the offset, changes nothing.
21
+ * - `now` is the caller's: GMT does not read the clock here, so the answer is reproducible.
22
+ * - Returns `false` on invalid input, including `cutoffAt`'s `""` sentinel — which reads as
23
+ * "not past". Check the cut-off is not `""` before trusting a `false`.
24
+ *
25
+ * @param now ISO 8601 instant or zoned datetime string of the moment asked about
26
+ * @param cutoff ISO 8601 instant or zoned datetime string of the cut-off
27
+ * @returns true when now is at or after the cut-off, false otherwise or on invalid input
28
+ *
29
+ * @example isPastCutoff("2024-06-12T16:00:00Z", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // true
30
+ * @example isPastCutoff("2024-06-12T14:00:00Z", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // false
31
+ * @example isPastCutoff("2024-06-12T15:00:00Z", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // true (at the cut-off, the window has closed)
32
+ * @example isPastCutoff("2024-11-03T01:30:00-05:00[America/New_York]", "2024-11-03T01:30:00-04:00[America/New_York]") // true (the second 01:30 is an hour after the first)
33
+ * @example isPastCutoff("2024-06-12T16:00:00", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // false (a zoneless now is not a moment)
34
+ * @example isPastCutoff("2024-06-12T16:00:00Z", "") // false
35
+ */
36
+ export function isPastCutoff(now, cutoff) {
37
+ try {
38
+ if (!isValidInstant(now) || !isValidInstant(cutoff)) {
39
+ return false;
40
+ }
41
+ return Temporal.Instant.compare(instantFrom(now), instantFrom(cutoff)) >= 0;
42
+ }
43
+ catch {
44
+ // Never throws (Core Rule 3): a hostile
45
+ // argument is invalid input, not an exception.
46
+ return false;
47
+ }
48
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Measure how far an actual time is from its plan: positive when late, negative when early.
3
+ *
4
+ * Every mode publishes a plan and records what happened, and measures the gap the same way. This
5
+ * is that gap; `classifyPunctuality` judges it against a tolerance.
6
+ *
7
+ * - **Exact elapsed time**, as an ISO 8601 duration with hours as the largest unit, so the value
8
+ * never depends on a calendar or a wall clock. A delay across a fall-back night is `PT1H`,
9
+ * never the `PT0S` a wall-clock subtraction reads; across a spring-forward it is `PT1H`, never
10
+ * `PT2H`. Two days late is `PT48H`, not `P2D`.
11
+ * - **Signed:** `actual` after `planned` is positive (late), before it negative (`"-PT5M"`,
12
+ * early), and equal is `"PT0S"`.
13
+ * - Both arguments are exact: an instant (`Z`/offset) or a zoned string. The zone each is written
14
+ * in does not matter. To show a schedule's local time, use `etaAtZone`.
15
+ * - **The offset fixes the instant; a bracketed zone only resolves a rounded one.** Temporal
16
+ * writes a zone's offset rounded to the minute, so an offset written to the minute that is the
17
+ * bracketed zone's sub-minute offset rounded (`-00:45[Africa/Monrovia]`, for −00:44:30) names
18
+ * the instant the zone gives, as `Temporal.ZonedDateTime.from` reads it. A zoned string GMT
19
+ * wrote is therefore measured from the instant it was written for, except a wall time
20
+ * repeated inside a sub-minute offset change, which reads as its first pass
21
+ * (for example `1952-10-15T23:59:59-11:20[Pacific/Niue]`; see `isValidInstant`). Otherwise the bracket is
22
+ * not checked: a zone that does not exist, or that disagrees with the offset, changes nothing.
23
+ * - Returns `""` on invalid input, including a zoneless wall time, which is not a moment.
24
+ *
25
+ * @param planned ISO 8601 instant or zoned datetime string of the planned time
26
+ * @param actual ISO 8601 instant or zoned datetime string of the actual (or compared) time
27
+ * @returns ISO 8601 duration from planned to actual, negative when early, or "" on invalid input
28
+ *
29
+ * @example scheduleDeviation("2024-06-15T10:00:00Z", "2024-06-15T10:14:00Z") // "PT14M"
30
+ * @example scheduleDeviation("2024-06-15T10:00:00Z", "2024-06-15T09:55:00Z") // "-PT5M" (five minutes early)
31
+ * @example scheduleDeviation("2024-06-15T10:00:00Z", "2024-06-15T10:00:00Z") // "PT0S"
32
+ * @example scheduleDeviation("2024-06-15T10:00:00Z", "2024-06-17T11:30:00Z") // "PT49H30M" (hours, never days)
33
+ * @example scheduleDeviation("2024-11-03T01:30:00-04:00[America/New_York]", "2024-11-03T01:30:00-05:00[America/New_York]") // "PT1H" (the same wall time, one hour later across the fall-back)
34
+ * @example scheduleDeviation("2024-06-15T10:00:00Z", "2024-06-15T12:14:00+02:00[Europe/Amsterdam]") // "PT14M" (the zone it is written in does not matter)
35
+ * @example scheduleDeviation("2024-06-15T10:00:00", "2024-06-15T10:14:00Z") // "" (a zoneless plan is not a moment)
36
+ */
37
+ export declare function scheduleDeviation(planned: string, actual: string): string;
@@ -0,0 +1,53 @@
1
+ import { instantFrom } from "../../internal/index.js";
2
+ import { isValidInstant } from "../../precision/validate/isValidInstant.js";
3
+ /**
4
+ * Measure how far an actual time is from its plan: positive when late, negative when early.
5
+ *
6
+ * Every mode publishes a plan and records what happened, and measures the gap the same way. This
7
+ * is that gap; `classifyPunctuality` judges it against a tolerance.
8
+ *
9
+ * - **Exact elapsed time**, as an ISO 8601 duration with hours as the largest unit, so the value
10
+ * never depends on a calendar or a wall clock. A delay across a fall-back night is `PT1H`,
11
+ * never the `PT0S` a wall-clock subtraction reads; across a spring-forward it is `PT1H`, never
12
+ * `PT2H`. Two days late is `PT48H`, not `P2D`.
13
+ * - **Signed:** `actual` after `planned` is positive (late), before it negative (`"-PT5M"`,
14
+ * early), and equal is `"PT0S"`.
15
+ * - Both arguments are exact: an instant (`Z`/offset) or a zoned string. The zone each is written
16
+ * in does not matter. To show a schedule's local time, use `etaAtZone`.
17
+ * - **The offset fixes the instant; a bracketed zone only resolves a rounded one.** Temporal
18
+ * writes a zone's offset rounded to the minute, so an offset written to the minute that is the
19
+ * bracketed zone's sub-minute offset rounded (`-00:45[Africa/Monrovia]`, for −00:44:30) names
20
+ * the instant the zone gives, as `Temporal.ZonedDateTime.from` reads it. A zoned string GMT
21
+ * wrote is therefore measured from the instant it was written for, except a wall time
22
+ * repeated inside a sub-minute offset change, which reads as its first pass
23
+ * (for example `1952-10-15T23:59:59-11:20[Pacific/Niue]`; see `isValidInstant`). Otherwise the bracket is
24
+ * not checked: a zone that does not exist, or that disagrees with the offset, changes nothing.
25
+ * - Returns `""` on invalid input, including a zoneless wall time, which is not a moment.
26
+ *
27
+ * @param planned ISO 8601 instant or zoned datetime string of the planned time
28
+ * @param actual ISO 8601 instant or zoned datetime string of the actual (or compared) time
29
+ * @returns ISO 8601 duration from planned to actual, negative when early, or "" on invalid input
30
+ *
31
+ * @example scheduleDeviation("2024-06-15T10:00:00Z", "2024-06-15T10:14:00Z") // "PT14M"
32
+ * @example scheduleDeviation("2024-06-15T10:00:00Z", "2024-06-15T09:55:00Z") // "-PT5M" (five minutes early)
33
+ * @example scheduleDeviation("2024-06-15T10:00:00Z", "2024-06-15T10:00:00Z") // "PT0S"
34
+ * @example scheduleDeviation("2024-06-15T10:00:00Z", "2024-06-17T11:30:00Z") // "PT49H30M" (hours, never days)
35
+ * @example scheduleDeviation("2024-11-03T01:30:00-04:00[America/New_York]", "2024-11-03T01:30:00-05:00[America/New_York]") // "PT1H" (the same wall time, one hour later across the fall-back)
36
+ * @example scheduleDeviation("2024-06-15T10:00:00Z", "2024-06-15T12:14:00+02:00[Europe/Amsterdam]") // "PT14M" (the zone it is written in does not matter)
37
+ * @example scheduleDeviation("2024-06-15T10:00:00", "2024-06-15T10:14:00Z") // "" (a zoneless plan is not a moment)
38
+ */
39
+ export function scheduleDeviation(planned, actual) {
40
+ try {
41
+ if (!isValidInstant(planned) || !isValidInstant(actual)) {
42
+ return "";
43
+ }
44
+ return instantFrom(planned)
45
+ .until(instantFrom(actual), { largestUnit: "hours" })
46
+ .toString();
47
+ }
48
+ catch {
49
+ // Never throws (Core Rule 3): a hostile
50
+ // argument is invalid input, not an exception.
51
+ return "";
52
+ }
53
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Measure the time left until a cut-off, negative once it has passed.
3
+ *
4
+ * - Exact elapsed time as an ISO 8601 duration with hours as the largest unit, so the value
5
+ * never depends on a calendar: across a fall-back night, 17:00 to 17:00 the next day is
6
+ * `PT25H`. It is `PT0S` at the cut-off itself, where `isPastCutoff` turns `true`.
7
+ * - Negative (`"-PT1H"`) once `now` is after the cut-off: how late it is.
8
+ * - Both arguments are exact: an instant (`Z`/offset) or a zoned string, as `cutoffAt`
9
+ * returns one. The zone each is written in does not matter.
10
+ * - **The offset fixes the instant; a bracketed zone only resolves a rounded one.** An offset
11
+ * written to the minute that is the bracketed zone's sub-minute offset rounded
12
+ * (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
13
+ * `Temporal.ZonedDateTime.from` reads it, so a cut-off `cutoffAt` wrote is the instant it
14
+ * computed, except a wall time repeated inside a sub-minute offset change, which reads as
15
+ * its first pass (see `isValidInstant`). Otherwise the bracket is not checked: a zone that does not exist, or that
16
+ * disagrees with the offset, changes nothing.
17
+ * - `now` is the caller's: GMT does not read the clock here.
18
+ * - Returns `""` on invalid input, including `cutoffAt`'s `""` sentinel.
19
+ *
20
+ * @param now ISO 8601 instant or zoned datetime string of the moment asked about
21
+ * @param cutoff ISO 8601 instant or zoned datetime string of the cut-off
22
+ * @returns ISO 8601 duration from now to the cut-off, negative after it, or "" on invalid input
23
+ *
24
+ * @example timeToCutoff("2024-06-10T15:00:00Z", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // "PT48H"
25
+ * @example timeToCutoff("2024-06-12T13:30:00Z", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // "PT1H30M"
26
+ * @example timeToCutoff("2024-06-12T16:00:00Z", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // "-PT1H" (an hour past the cut-off)
27
+ * @example timeToCutoff("2024-06-12T15:00:00Z", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // "PT0S"
28
+ * @example timeToCutoff("2024-11-02T17:00:00-04:00[America/New_York]", "2024-11-03T17:00:00-05:00[America/New_York]") // "PT25H" (across the fall-back)
29
+ * @example timeToCutoff("2024-06-12T16:00:00Z", "") // ""
30
+ */
31
+ export declare function timeToCutoff(now: string, cutoff: string): string;
@@ -0,0 +1,47 @@
1
+ import { instantFrom } from "../../internal/index.js";
2
+ import { isValidInstant } from "../../precision/validate/isValidInstant.js";
3
+ /**
4
+ * Measure the time left until a cut-off, negative once it has passed.
5
+ *
6
+ * - Exact elapsed time as an ISO 8601 duration with hours as the largest unit, so the value
7
+ * never depends on a calendar: across a fall-back night, 17:00 to 17:00 the next day is
8
+ * `PT25H`. It is `PT0S` at the cut-off itself, where `isPastCutoff` turns `true`.
9
+ * - Negative (`"-PT1H"`) once `now` is after the cut-off: how late it is.
10
+ * - Both arguments are exact: an instant (`Z`/offset) or a zoned string, as `cutoffAt`
11
+ * returns one. The zone each is written in does not matter.
12
+ * - **The offset fixes the instant; a bracketed zone only resolves a rounded one.** An offset
13
+ * written to the minute that is the bracketed zone's sub-minute offset rounded
14
+ * (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
15
+ * `Temporal.ZonedDateTime.from` reads it, so a cut-off `cutoffAt` wrote is the instant it
16
+ * computed, except a wall time repeated inside a sub-minute offset change, which reads as
17
+ * its first pass (see `isValidInstant`). Otherwise the bracket is not checked: a zone that does not exist, or that
18
+ * disagrees with the offset, changes nothing.
19
+ * - `now` is the caller's: GMT does not read the clock here.
20
+ * - Returns `""` on invalid input, including `cutoffAt`'s `""` sentinel.
21
+ *
22
+ * @param now ISO 8601 instant or zoned datetime string of the moment asked about
23
+ * @param cutoff ISO 8601 instant or zoned datetime string of the cut-off
24
+ * @returns ISO 8601 duration from now to the cut-off, negative after it, or "" on invalid input
25
+ *
26
+ * @example timeToCutoff("2024-06-10T15:00:00Z", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // "PT48H"
27
+ * @example timeToCutoff("2024-06-12T13:30:00Z", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // "PT1H30M"
28
+ * @example timeToCutoff("2024-06-12T16:00:00Z", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // "-PT1H" (an hour past the cut-off)
29
+ * @example timeToCutoff("2024-06-12T15:00:00Z", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // "PT0S"
30
+ * @example timeToCutoff("2024-11-02T17:00:00-04:00[America/New_York]", "2024-11-03T17:00:00-05:00[America/New_York]") // "PT25H" (across the fall-back)
31
+ * @example timeToCutoff("2024-06-12T16:00:00Z", "") // ""
32
+ */
33
+ export function timeToCutoff(now, cutoff) {
34
+ try {
35
+ if (!isValidInstant(now) || !isValidInstant(cutoff)) {
36
+ return "";
37
+ }
38
+ return instantFrom(now)
39
+ .until(instantFrom(cutoff), { largestUnit: "hours" })
40
+ .toString();
41
+ }
42
+ catch {
43
+ // Never throws (Core Rule 3): a hostile
44
+ // argument is invalid input, not an exception.
45
+ return "";
46
+ }
47
+ }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Render an arrival instant as local time in the zone where it will be read.
3
+ *
4
+ * Schedules are computed in UTC and displayed where the cargo lands. The zone is the caller's
5
+ * fact: GMT does not resolve a port, airport, terminal or station code to a timezone, and
6
+ * takes an IANA identifier instead (see the parked registries note in the epic's painpoints).
7
+ *
8
+ * - `arrivalUtc` is any instant `isValidInstant` accepts — `Z`, an offset, or an offset with a
9
+ * bracketed zone. Only the instant is read; a bracketed zone in the input is not the zone the
10
+ * result is rendered in, `targetZone` is.
11
+ * - **The offset fixes the instant; a bracketed zone only resolves a rounded one.** An offset
12
+ * written to the minute that is the bracketed zone's sub-minute offset rounded
13
+ * (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
14
+ * `Temporal.ZonedDateTime.from` reads it, so rendering this function's own result again gives
15
+ * the same moment, except a wall time repeated inside a sub-minute offset change, which
16
+ * reads as its first pass (see `isValidInstant`). A zone that does not exist, or that disagrees with the offset, is not
17
+ * checked and changes nothing.
18
+ * - **No disambiguation arises.** The input is a moment, and a moment has exactly one wall
19
+ * time in any zone, so the `disambiguation` vocabulary of `resolveLocal` does not apply here.
20
+ * On a fall-back night two moments an hour apart print the same wall time with different
21
+ * offsets, and the offset in the result is what tells them apart; on a spring-forward night
22
+ * the skipped hour simply never appears. That is also why the result carries its offset and
23
+ * zone rather than a bare wall time.
24
+ * - Returns a zoned ISO 8601 string, `Temporal.ZonedDateTime.prototype.toString()`'s form:
25
+ * wall time, offset, bracketed zone.
26
+ * - `targetZone` is whatever `isValidTimeZone` accepts, which is what Temporal accepts: an IANA
27
+ * identifier, or a fixed offset such as `"+09:00"`, which renders with the offset as its zone.
28
+ * A fixed offset is a legitimate rendering choice for a ship's log (MAR-18); it is not a place.
29
+ * - Returns `""` when the instant or the zone is invalid.
30
+ *
31
+ * @param arrivalUtc ISO 8601 instant string of the arrival
32
+ * @param targetZone IANA timeZone identifier of the place the arrival is read in
33
+ * @returns zoned ISO 8601 string of the local arrival, or "" on invalid input
34
+ *
35
+ * @example etaAtZone("2024-06-15T12:30:00Z", "Asia/Tokyo") // "2024-06-15T21:30:00+09:00[Asia/Tokyo]"
36
+ * @example etaAtZone("2024-06-15T12:30:00Z", "America/Los_Angeles") // "2024-06-15T05:30:00-07:00[America/Los_Angeles]"
37
+ * @example etaAtZone("2024-06-15T12:30:00+02:00", "Pacific/Apia") // "2024-06-15T23:30:00+13:00[Pacific/Apia]" (the offset fixes the instant; the zone renders it)
38
+ * @example etaAtZone("2024-11-03T05:30:00Z", "America/New_York") // "2024-11-03T01:30:00-04:00[America/New_York]" (the first 01:30 of the fall-back night)
39
+ * @example etaAtZone("2024-11-03T06:30:00Z", "America/New_York") // "2024-11-03T01:30:00-05:00[America/New_York]" (the second; the offset tells them apart)
40
+ * @example etaAtZone("2024-06-15T12:30:00", "Asia/Tokyo") // "" (no offset designator: not a moment)
41
+ * @example etaAtZone("2024-06-15T12:30:00Z", "Asia/Tokio") // ""
42
+ */
43
+ export declare function etaAtZone(arrivalUtc: string, targetZone: string): string;
@@ -0,0 +1,58 @@
1
+ import { instantFrom } from "../../internal/index.js";
2
+ import { isValidInstant } from "../../precision/validate/isValidInstant.js";
3
+ import { isValidTimeZone } from "../../zoned/validate/isValidTimeZone.js";
4
+ /**
5
+ * Render an arrival instant as local time in the zone where it will be read.
6
+ *
7
+ * Schedules are computed in UTC and displayed where the cargo lands. The zone is the caller's
8
+ * fact: GMT does not resolve a port, airport, terminal or station code to a timezone, and
9
+ * takes an IANA identifier instead (see the parked registries note in the epic's painpoints).
10
+ *
11
+ * - `arrivalUtc` is any instant `isValidInstant` accepts — `Z`, an offset, or an offset with a
12
+ * bracketed zone. Only the instant is read; a bracketed zone in the input is not the zone the
13
+ * result is rendered in, `targetZone` is.
14
+ * - **The offset fixes the instant; a bracketed zone only resolves a rounded one.** An offset
15
+ * written to the minute that is the bracketed zone's sub-minute offset rounded
16
+ * (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
17
+ * `Temporal.ZonedDateTime.from` reads it, so rendering this function's own result again gives
18
+ * the same moment, except a wall time repeated inside a sub-minute offset change, which
19
+ * reads as its first pass (see `isValidInstant`). A zone that does not exist, or that disagrees with the offset, is not
20
+ * checked and changes nothing.
21
+ * - **No disambiguation arises.** The input is a moment, and a moment has exactly one wall
22
+ * time in any zone, so the `disambiguation` vocabulary of `resolveLocal` does not apply here.
23
+ * On a fall-back night two moments an hour apart print the same wall time with different
24
+ * offsets, and the offset in the result is what tells them apart; on a spring-forward night
25
+ * the skipped hour simply never appears. That is also why the result carries its offset and
26
+ * zone rather than a bare wall time.
27
+ * - Returns a zoned ISO 8601 string, `Temporal.ZonedDateTime.prototype.toString()`'s form:
28
+ * wall time, offset, bracketed zone.
29
+ * - `targetZone` is whatever `isValidTimeZone` accepts, which is what Temporal accepts: an IANA
30
+ * identifier, or a fixed offset such as `"+09:00"`, which renders with the offset as its zone.
31
+ * A fixed offset is a legitimate rendering choice for a ship's log (MAR-18); it is not a place.
32
+ * - Returns `""` when the instant or the zone is invalid.
33
+ *
34
+ * @param arrivalUtc ISO 8601 instant string of the arrival
35
+ * @param targetZone IANA timeZone identifier of the place the arrival is read in
36
+ * @returns zoned ISO 8601 string of the local arrival, or "" on invalid input
37
+ *
38
+ * @example etaAtZone("2024-06-15T12:30:00Z", "Asia/Tokyo") // "2024-06-15T21:30:00+09:00[Asia/Tokyo]"
39
+ * @example etaAtZone("2024-06-15T12:30:00Z", "America/Los_Angeles") // "2024-06-15T05:30:00-07:00[America/Los_Angeles]"
40
+ * @example etaAtZone("2024-06-15T12:30:00+02:00", "Pacific/Apia") // "2024-06-15T23:30:00+13:00[Pacific/Apia]" (the offset fixes the instant; the zone renders it)
41
+ * @example etaAtZone("2024-11-03T05:30:00Z", "America/New_York") // "2024-11-03T01:30:00-04:00[America/New_York]" (the first 01:30 of the fall-back night)
42
+ * @example etaAtZone("2024-11-03T06:30:00Z", "America/New_York") // "2024-11-03T01:30:00-05:00[America/New_York]" (the second; the offset tells them apart)
43
+ * @example etaAtZone("2024-06-15T12:30:00", "Asia/Tokyo") // "" (no offset designator: not a moment)
44
+ * @example etaAtZone("2024-06-15T12:30:00Z", "Asia/Tokio") // ""
45
+ */
46
+ export function etaAtZone(arrivalUtc, targetZone) {
47
+ try {
48
+ if (!isValidInstant(arrivalUtc) || !isValidTimeZone(targetZone)) {
49
+ return "";
50
+ }
51
+ return instantFrom(arrivalUtc).toZonedDateTimeISO(targetZone).toString();
52
+ }
53
+ catch {
54
+ // Never throws (Core Rule 3): a hostile
55
+ // argument is invalid input, not an exception.
56
+ return "";
57
+ }
58
+ }
@@ -0,0 +1 @@
1
+ export * from "./etaAtZone.js";
@@ -0,0 +1 @@
1
+ export * from "./etaAtZone.js";
@@ -0,0 +1,4 @@
1
+ export * from "@js-temporal/polyfill";
2
+ export * from "./calculate/index.js";
3
+ export * from "./compare/index.js";
4
+ export * from "./convert/index.js";
@@ -0,0 +1,5 @@
1
+ // Re-export the Temporal polyfill (`Temporal`, `Intl`, `toTemporalInstant`) so every namespace subpath offers it
2
+ export * from "@js-temporal/polyfill";
3
+ export * from "./calculate/index.js";
4
+ export * from "./compare/index.js";
5
+ export * from "./convert/index.js";
@@ -2,26 +2,31 @@
2
2
  * A jurisdiction's working week: which weekdays are weekend, which dates are holidays, and
3
3
  * which locality the answer is for.
4
4
  *
5
- * - `weekend` is ISO weekday numbers, 1 (Monday) through 7 (Sunday). It is explicit because
6
- * Saturday–Sunday is not universal: much of the Middle East is Friday–Saturday (`[5, 6]`),
7
- * and some markets keep a one-day weekend (`[7]`). `[]` means no weekly closure at all.
8
- * Duplicates are ignored; all seven days being weekend leaves no business day and is invalid.
9
- * - `holidays` is ISO PlainDate strings (`"2024-07-04"`), never datetimes. Order does not
10
- * matter and duplicates are ignored. GMT bundles no holiday table — holiday data is
11
- * jurisdictional, changes annually and sometimes with days of notice, so the caller supplies
12
- * it. No exchange or currency calendar ships either; an opt-in data subpath for them is
13
- * planned, not published.
14
- * - `timeZone` is an IANA identifier recording which locality the calendar describes. The
15
- * business-day functions never read it: they take and return local dates, so the answer is
16
- * the same whatever it says. It is what a caller holding an *instant* needs, to reduce that
17
- * instant to a local date first — with `floorToZone` or `getZonedDateTimeFields` — before
18
- * asking a business-day question.
5
+ * GMT bundles no holiday table — holiday data is jurisdictional, changes annually and sometimes
6
+ * with days of notice, so the caller supplies it. No exchange or currency calendar ships either;
7
+ * an opt-in data subpath for them is planned, not published.
19
8
  *
20
9
  * Narrow a candidate with `isValidBusinessCalendar`. Compose two jurisdictions' calendars with
21
10
  * `mergeCalendars`.
22
11
  */
23
12
  export type BusinessCalendar = {
13
+ /**
14
+ * The ISO weekday numbers closed every week, 1 (Monday) through 7 (Sunday). It is explicit
15
+ * because Saturday–Sunday is not universal: much of the Middle East is Friday–Saturday
16
+ * (`[5, 6]`), and some markets keep a one-day weekend (`[7]`). `[]` means no weekly closure,
17
+ * duplicates are ignored, and all seven days leave no business day and are invalid.
18
+ */
24
19
  weekend: number[];
20
+ /**
21
+ * The dates closed in addition to the weekend, as ISO PlainDate strings (`"2024-07-04"`), never
22
+ * datetimes. Order does not matter and duplicates are ignored.
23
+ */
25
24
  holidays: string[];
25
+ /**
26
+ * The time zone recording which locality the calendar describes, an IANA name or a UTC offset. It
27
+ * must be a valid zone, but the business-day functions never use it: they take and return local
28
+ * dates, so the answer is the same whatever it says. A caller holding an instant uses it to
29
+ * reduce that instant to a local date first, with `floorToZone` or `getZonedDateTimeFields`.
30
+ */
26
31
  timeZone: string;
27
32
  };
@@ -4,8 +4,20 @@
4
4
  * add domain-specific fields like `timeZone` or `epochUnit`.
5
5
  */
6
6
  export interface CalendarOptions {
7
- /** Anchor point for the relative day comparison. */
7
+ /**
8
+ * The moment the day label is measured from, as an ISO string in the same form as the value
9
+ * being formatted. A value on the same calendar day reads "today", one on the next day
10
+ * "tomorrow".
11
+ *
12
+ * @defaultValue The current date and time.
13
+ */
8
14
  reference?: 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
  }
@@ -1 +1,6 @@
1
+ /**
2
+ * A date field `cycleDate`, `cycleDateTime` and `cycleZoned` can step and wrap: `"year"`,
3
+ * `"month"` or `"day"`. Narrower than `DateUnit` on purpose: `"week"` is a unit, not a field a
4
+ * date can be set to with Temporal's `with()`.
5
+ */
1
6
  export type DateCycleField = "year" | "month" | "day";
@@ -1,2 +1,6 @@
1
1
  import type { Temporal } from "@js-temporal/polyfill";
2
+ /**
3
+ * A date field of an ISO 8601 duration, in the plural: `"years"`, `"months"`, `"weeks"` or
4
+ * `"days"`. It names the unit an amount of dates is given in or a date difference is measured in.
5
+ */
2
6
  export type DateDurationUnit = keyof Pick<Temporal.DurationLike, "years" | "months" | "weeks" | "days">;
@@ -1,3 +1,7 @@
1
1
  import type { DateCycleField } from "./date-cycle-field.js";
2
2
  import type { TimeCycleField } from "./time-cycle-field.js";
3
+ /**
4
+ * A date or time field `cycleDateTime` and `cycleZoned` can step and wrap: any `DateCycleField`
5
+ * or `TimeCycleField`.
6
+ */
3
7
  export type DateTimeCycleField = DateCycleField | TimeCycleField;
@@ -1,2 +1,6 @@
1
1
  import type { Temporal } from "@js-temporal/polyfill";
2
+ /**
3
+ * Any field of an ISO 8601 duration, in the plural, from `"years"` down to `"nanoseconds"`. It
4
+ * names the unit an amount of time is given in or a difference is measured in.
5
+ */
2
6
  export type DateTimeDurationUnit = keyof Temporal.DurationLike;
@@ -1,2 +1,6 @@
1
1
  import type { Temporal } from "@js-temporal/polyfill";
2
+ /**
3
+ * A date or time unit in the singular, from `"year"` down to `"nanosecond"`, as Temporal's
4
+ * rounding and difference options name units.
5
+ */
2
6
  export type DateTimeUnit = Temporal.TimeUnit | Temporal.DateUnit;
@@ -1,2 +1,6 @@
1
1
  import type { Temporal } from "@js-temporal/polyfill";
2
+ /**
3
+ * A date unit in the singular: `"year"`, `"month"`, `"week"` or `"day"`, as Temporal's rounding
4
+ * and difference options name units.
5
+ */
2
6
  export type DateUnit = Temporal.DateUnit;
@@ -1,2 +1,10 @@
1
1
  import type { Temporal } from "@js-temporal/polyfill";
2
+ /**
3
+ * How a local wall time that a time zone's clock shows twice or never is resolved to an instant,
4
+ * as Temporal's `disambiguation` option (`Temporal.ZonedDateTime.from(item, { disambiguation })`).
5
+ *
6
+ * `"compatible"` takes the earlier instant of a repeated time and moves a skipped time forward by
7
+ * the length of the gap. `"earlier"` and `"later"` take that side in both cases, and `"reject"`
8
+ * accepts neither.
9
+ */
2
10
  export type Disambiguation = Temporal.ToInstantOptions["disambiguation"];
@@ -1,2 +1,10 @@
1
1
  import type { Temporal } from "@js-temporal/polyfill";
2
+ /**
3
+ * The anchor a calendar-unit duration operation is measured from, as Temporal's `relativeTo`
4
+ * option takes it (`Duration.prototype.round`, `Duration.prototype.total`, `Duration.compare`).
5
+ *
6
+ * Years, months and weeks have no fixed length, so any operation touching them needs a starting
7
+ * point; an operation on days and time units alone does not. A string is an ISO 8601 date or
8
+ * date-time, or a zoned date-time with its time zone annotation.
9
+ */
2
10
  export type DurationRelativeTo = Temporal.PlainDateTime | Temporal.ZonedDateTime | Temporal.PlainDateTimeLike | Temporal.ZonedDateTimeLike | string;
@@ -1,6 +1,34 @@
1
1
  import type { Temporal } from "@js-temporal/polyfill";
2
+ /**
3
+ * Precision options for the ISO 8601 duration string a `diff*AsDuration` function writes, passed
4
+ * to `Temporal.Duration.prototype.toString()`.
5
+ *
6
+ * They are kept apart from `RoundingOptions`, and two of them carry a `toString` prefix, because
7
+ * both sets have a smallest unit and a rounding mode with different Temporal types: one rounds
8
+ * the difference, the other the text written from it.
9
+ */
2
10
  export type DurationStringOptions = {
11
+ /**
12
+ * The smallest unit written in the string: `"second"`, `"millisecond"`, `"microsecond"` or
13
+ * `"nanosecond"`. It sets how many fractional-second digits appear and takes precedence over
14
+ * `fractionalSecondDigits`. `"minute"` is refused, as `Temporal.Duration` refuses it.
15
+ *
16
+ * @defaultValue None. The precision comes from `fractionalSecondDigits`.
17
+ */
3
18
  toStringSmallestUnit?: Temporal.ToStringPrecisionOptions["smallestUnit"];
19
+ /**
20
+ * The number of fractional-second digits written: `0` to `9` writes exactly that many, and
21
+ * `"auto"` writes as many as the duration needs, with no trailing zeros. It has no effect when
22
+ * `toStringSmallestUnit` is given.
23
+ *
24
+ * @defaultValue `"auto"`, Temporal's default.
25
+ */
4
26
  fractionalSecondDigits?: Temporal.ToStringPrecisionOptions["fractionalSecondDigits"];
27
+ /**
28
+ * How the duration is rounded when the precision asked for drops digits. `"trunc"` cuts them
29
+ * off; `"halfExpand"` rounds to the nearest value, a half going away from zero.
30
+ *
31
+ * @defaultValue `"trunc"`, Temporal's default.
32
+ */
5
33
  toStringRoundingMode?: Temporal.ToStringPrecisionOptions["roundingMode"];
6
34
  };
@@ -11,7 +11,7 @@
11
11
  export type FiscalPattern = "4-5-4" | "4-4-5" | "5-4-4";
12
12
  /** Caller-supplied 52/53-week fiscal calendar. GMT bundles none. */
13
13
  export interface FiscalCalendar {
14
- /** Weeks per period within each quarter. */
14
+ /** The weeks per period within each quarter. */
15
15
  pattern: FiscalPattern;
16
16
  /**
17
17
  * The year-end rule, stated as one ISO date: fiscal years end on this date's **weekday**,
@@ -1 +1,6 @@
1
+ /**
2
+ * How many fractional-second digits an ISO string is written with, as Temporal's
3
+ * `fractionalSecondDigits` option of `toString()`. `0` to `9` writes exactly that many digits,
4
+ * and `"auto"` writes as many as the value needs, with no trailing zeros.
5
+ */
1
6
  export type FractionalDigit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | "auto";
@@ -0,0 +1,44 @@
1
+ import type { BusinessCalendar } from "./business-calendar.js";
2
+ /**
3
+ * How days are counted: every local calendar day, or only the terminal's working days. Used for
4
+ * free time (`basis`) and, separately, for the days charged after it (`chargeBasis`), because
5
+ * published tariffs commonly count the two differently.
6
+ */
7
+ export type FreeTimeBasis = "calendar" | "working";
8
+ /**
9
+ * Whether the day of the triggering event is free day one (`"eventDay"`), or free time starts
10
+ * on the following counted day (`"nextDay"`). The two conventions differ by one full day of
11
+ * charges, so no function defaults it.
12
+ */
13
+ export type FreeTimeFirstDay = "eventDay" | "nextDay";
14
+ /**
15
+ * The tariff terms a free-time count needs. Free time is set by carrier, lane, trade and service
16
+ * contract, never by port, so every term is a parameter and no counting term has a default.
17
+ */
18
+ export type FreeTimeOptions = {
19
+ /**
20
+ * Which days use up free time. `"calendar"` counts every local day, so a weekend burns two free
21
+ * days while the terminal is shut; `"working"` counts only the days `calendar` marks as
22
+ * working, and the clock does not run on weekends or holidays.
23
+ */
24
+ basis: FreeTimeBasis;
25
+ /**
26
+ * The time zone of the terminal, depot or yard whose local midnight ends a day: an IANA name or a
27
+ * UTC offset. GMT does not resolve a port or terminal code to a zone. A UTC offset such as
28
+ * `"+02:00"` observes no DST.
29
+ */
30
+ timeZone: string;
31
+ /**
32
+ * Where free time starts. `"eventDay"` makes the day of the event that starts the clock free
33
+ * day one; `"nextDay"` starts free time on the following counted day.
34
+ */
35
+ firstDay: FreeTimeFirstDay;
36
+ /**
37
+ * The terminal's working week and holidays. It is required when a counting basis is
38
+ * `"working"` and not read otherwise. Its own `timeZone` is not used: `timeZone` above is the
39
+ * counting zone.
40
+ *
41
+ * @defaultValue None. A `"working"` basis without it is invalid input.
42
+ */
43
+ calendar?: BusinessCalendar;
44
+ };
@@ -11,12 +11,13 @@ export * from "./datetime-format-options.js";
11
11
  export * from "./disambiguation.js";
12
12
  export * from "./duration-relative-to.js";
13
13
  export * from "./duration-string-options.js";
14
- export * from "./duration-unit.js";
15
14
  export * from "./fiscal-calendar.js";
16
15
  export * from "./fractional-digit.js";
16
+ export * from "./free-time-options.js";
17
17
  export * from "./interval.js";
18
18
  export * from "./now-unit.js";
19
19
  export * from "./offset.js";
20
+ export * from "./operating-schedule.js";
20
21
  export * from "./overflow.js";
21
22
  export * from "./relative-date-time-unit.js";
22
23
  export * from "./relative-date-unit.js";
@@ -29,6 +30,7 @@ export * from "./rounding-options.js";
29
30
  export * from "./time-cycle-field.js";
30
31
  export * from "./time-duration-unit.js";
31
32
  export * from "./time-unit.js";
33
+ export * from "./transport-timestamps.js";
32
34
  export * from "./unix-now-unit.js";
33
35
  export * from "./utc-now-unit.js";
34
36
  export * from "./zone-bucket-unit.js";