@northguild/gmt 1.16.0 → 1.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (654) hide show
  1. package/README.md +742 -21
  2. package/dist/calendar/calculate/bucketRange.d.ts +3 -3
  3. package/dist/calendar/calculate/bucketRange.js +6 -6
  4. package/dist/calendar/calculate/floorToZone.d.ts +5 -3
  5. package/dist/calendar/calculate/floorToZone.js +6 -5
  6. package/dist/calendar/calculate/getFiscalPeriod.d.ts +21 -8
  7. package/dist/calendar/calculate/getFiscalPeriod.js +9 -8
  8. package/dist/calendar/calculate/getIsoWeekDate.d.ts +10 -5
  9. package/dist/calendar/calculate/getIsoWeekDate.js +1 -5
  10. package/dist/calendar/calculate/getOrdinalDate.d.ts +10 -3
  11. package/dist/calendar/calculate/getOrdinalDate.js +2 -3
  12. package/dist/calendar/calculate/getQuarter.d.ts +21 -9
  13. package/dist/calendar/calculate/getQuarter.js +8 -12
  14. package/dist/calendar/hours/addOperatingTime.d.ts +53 -0
  15. package/dist/calendar/hours/addOperatingTime.js +59 -0
  16. package/dist/calendar/hours/index.d.ts +7 -0
  17. package/dist/calendar/hours/index.js +7 -0
  18. package/dist/calendar/hours/isOpenAt.d.ts +39 -0
  19. package/dist/calendar/hours/isOpenAt.js +44 -0
  20. package/dist/calendar/hours/nextCloseAt.d.ts +49 -0
  21. package/dist/calendar/hours/nextCloseAt.js +51 -0
  22. package/dist/calendar/hours/nextOpenAt.d.ts +45 -0
  23. package/dist/calendar/hours/nextOpenAt.js +47 -0
  24. package/dist/calendar/hours/operatingIntervals.d.ts +43 -0
  25. package/dist/calendar/hours/operatingIntervals.js +52 -0
  26. package/dist/calendar/hours/operatingTimeBetween.d.ts +40 -0
  27. package/dist/calendar/hours/operatingTimeBetween.js +49 -0
  28. package/dist/calendar/hours/recurringWindows.d.ts +61 -0
  29. package/dist/calendar/hours/recurringWindows.js +80 -0
  30. package/dist/calendar/index.d.ts +1 -0
  31. package/dist/calendar/index.js +1 -0
  32. package/dist/duration/calculate/durationAs.d.ts +13 -8
  33. package/dist/duration/calculate/durationAs.js +4 -8
  34. package/dist/duration/compare/compareDurations.d.ts +12 -6
  35. package/dist/duration/compare/compareDurations.js +3 -6
  36. package/dist/duration/format/formatDuration.d.ts +16 -4
  37. package/dist/duration/format/formatDuration.js +4 -5
  38. package/dist/duration/normalize/normalizeDuration.d.ts +39 -14
  39. package/dist/duration/normalize/normalizeDuration.js +6 -15
  40. package/dist/duration/parse/parseDuration.d.ts +21 -3
  41. package/dist/duration/parse/parseDuration.js +1 -3
  42. package/dist/index.d.ts +2 -0
  43. package/dist/index.js +2 -0
  44. package/dist/instant/convert/classifyLocal.d.ts +1 -1
  45. package/dist/instant/convert/classifyLocal.js +1 -1
  46. package/dist/instant/convert/fromOffsetInstant.d.ts +3 -1
  47. package/dist/instant/convert/fromOffsetInstant.js +6 -12
  48. package/dist/instant/convert/resolveLocal.d.ts +12 -7
  49. package/dist/instant/convert/resolveLocal.js +6 -10
  50. package/dist/instant/convert/toOffsetInstant.d.ts +37 -1
  51. package/dist/instant/convert/toOffsetInstant.js +12 -28
  52. package/dist/intermodal/calculate/billingTimeline.d.ts +114 -0
  53. package/dist/intermodal/calculate/billingTimeline.js +168 -0
  54. package/dist/intermodal/calculate/chargeableDays.d.ts +100 -0
  55. package/dist/intermodal/calculate/chargeableDays.js +96 -0
  56. package/dist/intermodal/calculate/demurrageClock.d.ts +102 -0
  57. package/dist/intermodal/calculate/demurrageClock.js +140 -0
  58. package/dist/intermodal/calculate/freeTimeExpiry.d.ts +67 -0
  59. package/dist/intermodal/calculate/freeTimeExpiry.js +82 -0
  60. package/dist/intermodal/calculate/index.d.ts +4 -0
  61. package/dist/intermodal/calculate/index.js +4 -0
  62. package/dist/intermodal/index.d.ts +2 -0
  63. package/dist/intermodal/index.js +3 -0
  64. package/dist/internal/businessCalendar.d.ts +5 -0
  65. package/dist/internal/businessCalendar.js +5 -1
  66. package/dist/internal/cycleFieldValue.d.ts +6 -4
  67. package/dist/internal/cycleFieldValue.js +6 -4
  68. package/dist/internal/daylightTime.d.ts +33 -0
  69. package/dist/internal/daylightTime.js +164 -0
  70. package/dist/internal/durationUntilString.js +4 -3
  71. package/dist/internal/englishCalendarNames.js +1 -2
  72. package/dist/internal/epochNanoseconds.d.ts +2 -0
  73. package/dist/internal/epochNanoseconds.js +2 -0
  74. package/dist/internal/exactDuration.d.ts +37 -0
  75. package/dist/internal/exactDuration.js +64 -0
  76. package/dist/internal/exactMoment.d.ts +72 -0
  77. package/dist/internal/exactMoment.js +114 -0
  78. package/dist/internal/fiscalCalendar.d.ts +4 -3
  79. package/dist/internal/fiscalCalendar.js +4 -3
  80. package/dist/internal/formatCalendarDays.d.ts +2 -2
  81. package/dist/internal/formatRelativeDuration.d.ts +21 -1
  82. package/dist/internal/formatRelativeDuration.js +47 -7
  83. package/dist/internal/freeTimeLedger.d.ts +93 -0
  84. package/dist/internal/freeTimeLedger.js +262 -0
  85. package/dist/internal/index.d.ts +10 -3
  86. package/dist/internal/index.js +10 -3
  87. package/dist/internal/instantFormatOptions.js +2 -1
  88. package/dist/internal/instantNanoseconds.d.ts +75 -9
  89. package/dist/internal/instantNanoseconds.js +192 -11
  90. package/dist/internal/isoStringBody.d.ts +26 -0
  91. package/dist/internal/isoStringBody.js +22 -2
  92. package/dist/internal/joinDateTimeConnector.d.ts +1 -1
  93. package/dist/internal/monthGridWeekRow.d.ts +2 -1
  94. package/dist/internal/monthGridWeekRow.js +2 -1
  95. package/dist/internal/normalizeTimeZone.d.ts +2 -2
  96. package/dist/internal/normalizeTimeZone.js +2 -2
  97. package/dist/internal/operatingSchedule.d.ts +129 -0
  98. package/dist/internal/operatingSchedule.js +668 -0
  99. package/dist/internal/optionOrDefault.d.ts +18 -0
  100. package/dist/internal/optionOrDefault.js +20 -0
  101. package/dist/internal/patternToken.d.ts +2 -2
  102. package/dist/internal/patternToken.js +28 -13
  103. package/dist/internal/plainDateUntil.js +10 -6
  104. package/dist/internal/punctuality.d.ts +38 -0
  105. package/dist/internal/punctuality.js +59 -0
  106. package/dist/internal/readDateTimeFormatOptions.d.ts +30 -0
  107. package/dist/internal/readDateTimeFormatOptions.js +93 -0
  108. package/dist/internal/resolveDurationRelativeTo.d.ts +4 -0
  109. package/dist/internal/resolveDurationRelativeTo.js +11 -1
  110. package/dist/internal/resolveRelativeRounding.d.ts +17 -6
  111. package/dist/internal/resolveRelativeRounding.js +27 -7
  112. package/dist/internal/resolveRelativeUnit.d.ts +30 -0
  113. package/dist/internal/resolveRelativeUnit.js +40 -0
  114. package/dist/internal/splitStep.d.ts +24 -1
  115. package/dist/internal/splitStep.js +34 -2
  116. package/dist/internal/startOrEndOfZoned.js +2 -3
  117. package/dist/internal/temporalCompat/capabilities.d.ts +26 -0
  118. package/dist/internal/temporalCompat/capabilities.js +35 -3
  119. package/dist/internal/temporalCompat/fieldSearch.js +1 -1
  120. package/dist/internal/temporalCompat/index.d.ts +1 -1
  121. package/dist/internal/temporalCompat/index.js +1 -1
  122. package/dist/internal/temporalCompat/repros.d.ts +1 -1
  123. package/dist/internal/temporalCompat/repros.js +157 -0
  124. package/dist/internal/timestampEvents.d.ts +32 -0
  125. package/dist/internal/timestampEvents.js +76 -0
  126. package/dist/internal/utcZonedDateTime.d.ts +5 -2
  127. package/dist/internal/utcZonedDateTime.js +8 -5
  128. package/dist/internal/wallClockAtOffset.d.ts +22 -0
  129. package/dist/internal/wallClockAtOffset.js +26 -0
  130. package/dist/internal/zonedBucket.js +8 -6
  131. package/dist/internal/zonedLocalDates.js +1 -1
  132. package/dist/internal/zonedTransitionSearch.d.ts +27 -0
  133. package/dist/internal/zonedTransitionSearch.js +218 -0
  134. package/dist/internal/zonedWallClock.d.ts +21 -7
  135. package/dist/internal/zonedWallClock.js +87 -18
  136. package/dist/internal/zonedWallClockDifference.js +5 -4
  137. package/dist/internal/zonedWallClockOperations.d.ts +26 -13
  138. package/dist/internal/zonedWallClockOperations.js +87 -34
  139. package/dist/interval/validate/isValidInterval.d.ts +6 -3
  140. package/dist/interval/validate/isValidInterval.js +6 -3
  141. package/dist/plain/calculate/addDate.d.ts +11 -8
  142. package/dist/plain/calculate/addDate.js +5 -8
  143. package/dist/plain/calculate/addDateTime.d.ts +7 -4
  144. package/dist/plain/calculate/addDateTime.js +1 -4
  145. package/dist/plain/calculate/cycleDate.d.ts +16 -7
  146. package/dist/plain/calculate/cycleDate.js +3 -7
  147. package/dist/plain/calculate/cycleDateTime.d.ts +14 -4
  148. package/dist/plain/calculate/cycleDateTime.js +1 -4
  149. package/dist/plain/calculate/cycleTime.d.ts +10 -5
  150. package/dist/plain/calculate/cycleTime.js +3 -5
  151. package/dist/plain/calculate/diffDate.d.ts +1 -1
  152. package/dist/plain/calculate/diffDate.js +1 -1
  153. package/dist/plain/calculate/diffDateAsDuration.d.ts +1 -1
  154. package/dist/plain/calculate/diffDateAsDuration.js +1 -1
  155. package/dist/plain/calculate/diffDateTime.d.ts +1 -1
  156. package/dist/plain/calculate/diffDateTime.js +1 -1
  157. package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +1 -1
  158. package/dist/plain/calculate/diffDateTimeAsDuration.js +1 -1
  159. package/dist/plain/calculate/diffTime.d.ts +1 -1
  160. package/dist/plain/calculate/diffTime.js +1 -1
  161. package/dist/plain/calculate/endOfDate.d.ts +8 -3
  162. package/dist/plain/calculate/endOfDate.js +1 -3
  163. package/dist/plain/calculate/endOfDateTime.d.ts +15 -5
  164. package/dist/plain/calculate/endOfDateTime.js +1 -5
  165. package/dist/plain/calculate/endOfTime.d.ts +8 -2
  166. package/dist/plain/calculate/endOfTime.js +1 -2
  167. package/dist/plain/calculate/getLocaleWeekYear.d.ts +16 -9
  168. package/dist/plain/calculate/getLocaleWeekYear.js +9 -9
  169. package/dist/plain/calculate/getWeekOfMonth.d.ts +7 -4
  170. package/dist/plain/calculate/getWeekOfMonth.js +7 -4
  171. package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +13 -6
  172. package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +6 -6
  173. package/dist/plain/calculate/getWeeksInMonth.d.ts +5 -2
  174. package/dist/plain/calculate/getWeeksInMonth.js +5 -2
  175. package/dist/plain/calculate/nextWeekday.d.ts +7 -3
  176. package/dist/plain/calculate/nextWeekday.js +1 -3
  177. package/dist/plain/calculate/previousWeekday.d.ts +7 -3
  178. package/dist/plain/calculate/previousWeekday.js +1 -3
  179. package/dist/plain/calculate/roundDate.d.ts +20 -7
  180. package/dist/plain/calculate/roundDate.js +3 -10
  181. package/dist/plain/calculate/roundDateTime.d.ts +22 -8
  182. package/dist/plain/calculate/roundDateTime.js +3 -11
  183. package/dist/plain/calculate/roundTime.d.ts +20 -4
  184. package/dist/plain/calculate/roundTime.js +3 -7
  185. package/dist/plain/calculate/setDate.d.ts +7 -5
  186. package/dist/plain/calculate/setDate.js +1 -5
  187. package/dist/plain/calculate/setDateTime.d.ts +8 -5
  188. package/dist/plain/calculate/setDateTime.js +1 -5
  189. package/dist/plain/calculate/setTime.d.ts +10 -6
  190. package/dist/plain/calculate/setTime.js +4 -6
  191. package/dist/plain/calculate/startOfDate.d.ts +8 -2
  192. package/dist/plain/calculate/startOfDate.js +1 -2
  193. package/dist/plain/calculate/startOfDateTime.d.ts +15 -2
  194. package/dist/plain/calculate/startOfDateTime.js +1 -2
  195. package/dist/plain/calculate/startOfTime.d.ts +8 -1
  196. package/dist/plain/calculate/startOfTime.js +1 -1
  197. package/dist/plain/calculate/subtractDate.d.ts +7 -4
  198. package/dist/plain/calculate/subtractDate.js +1 -4
  199. package/dist/plain/calculate/subtractDateTime.d.ts +7 -4
  200. package/dist/plain/calculate/subtractDateTime.js +1 -4
  201. package/dist/plain/compare/areDateTimesEqualBy.d.ts +13 -5
  202. package/dist/plain/compare/areDateTimesEqualBy.js +6 -5
  203. package/dist/plain/compare/areDatesEqualBy.d.ts +15 -6
  204. package/dist/plain/compare/areDatesEqualBy.js +8 -6
  205. package/dist/plain/compare/isBetweenDate.d.ts +13 -2
  206. package/dist/plain/compare/isBetweenDate.js +4 -4
  207. package/dist/plain/compare/isBetweenDateTime.d.ts +13 -2
  208. package/dist/plain/compare/isBetweenDateTime.js +4 -4
  209. package/dist/plain/compare/isBetweenTime.d.ts +13 -2
  210. package/dist/plain/compare/isBetweenTime.js +4 -4
  211. package/dist/plain/compare/isRelativeDay.d.ts +1 -1
  212. package/dist/plain/compare/isRelativeDay.js +1 -1
  213. package/dist/plain/compare/isThisUnit.d.ts +1 -1
  214. package/dist/plain/compare/isThisUnit.js +1 -1
  215. package/dist/plain/format/formatCalendar.d.ts +21 -14
  216. package/dist/plain/format/formatCalendar.js +21 -16
  217. package/dist/plain/format/formatDate.js +5 -3
  218. package/dist/plain/format/formatDateRange.js +4 -2
  219. package/dist/plain/format/formatDateTime.js +4 -2
  220. package/dist/plain/format/formatDateTimeRange.js +4 -2
  221. package/dist/plain/format/formatDateTimeToParts.d.ts +15 -4
  222. package/dist/plain/format/formatDateTimeToParts.js +10 -6
  223. package/dist/plain/format/formatDateToParts.d.ts +13 -2
  224. package/dist/plain/format/formatDateToParts.js +8 -4
  225. package/dist/plain/format/formatRelativeDate.d.ts +16 -3
  226. package/dist/plain/format/formatRelativeDate.js +26 -15
  227. package/dist/plain/format/formatRelativeDateTime.d.ts +16 -3
  228. package/dist/plain/format/formatRelativeDateTime.js +8 -5
  229. package/dist/plain/format/formatRelativeTime.d.ts +16 -3
  230. package/dist/plain/format/formatRelativeTime.js +21 -13
  231. package/dist/plain/format/formatTime.js +4 -2
  232. package/dist/plain/interval/intervalDifferenceDate.d.ts +9 -0
  233. package/dist/plain/interval/intervalDifferenceDateTime.d.ts +9 -0
  234. package/dist/plain/interval/intervalDifferenceTime.d.ts +9 -0
  235. package/dist/plain/interval/intervalDivideEquallyDate.d.ts +19 -4
  236. package/dist/plain/interval/intervalDivideEquallyDate.js +3 -4
  237. package/dist/plain/interval/intervalDivideEquallyDateTime.d.ts +19 -4
  238. package/dist/plain/interval/intervalDivideEquallyDateTime.js +3 -4
  239. package/dist/plain/interval/intervalDivideEquallyTime.d.ts +19 -4
  240. package/dist/plain/interval/intervalDivideEquallyTime.js +3 -4
  241. package/dist/plain/interval/intervalFromDurationDate.d.ts +16 -3
  242. package/dist/plain/interval/intervalFromDurationDate.js +1 -3
  243. package/dist/plain/interval/intervalFromDurationDateTime.d.ts +16 -3
  244. package/dist/plain/interval/intervalFromDurationDateTime.js +1 -3
  245. package/dist/plain/interval/intervalFromDurationTime.d.ts +9 -0
  246. package/dist/plain/interval/intervalIntersectionDate.d.ts +9 -0
  247. package/dist/plain/interval/intervalIntersectionDateTime.d.ts +9 -0
  248. package/dist/plain/interval/intervalIntersectionTime.d.ts +9 -0
  249. package/dist/plain/interval/intervalSplitAtDate.d.ts +11 -0
  250. package/dist/plain/interval/intervalSplitAtDate.js +2 -0
  251. package/dist/plain/interval/intervalSplitAtDateTime.d.ts +11 -0
  252. package/dist/plain/interval/intervalSplitAtDateTime.js +2 -0
  253. package/dist/plain/interval/intervalSplitAtTime.d.ts +11 -0
  254. package/dist/plain/interval/intervalSplitAtTime.js +2 -0
  255. package/dist/plain/interval/intervalUnionDate.d.ts +9 -0
  256. package/dist/plain/interval/intervalUnionDateTime.d.ts +9 -0
  257. package/dist/plain/interval/intervalUnionTime.d.ts +9 -0
  258. package/dist/plain/interval/intervalXorAllDate.d.ts +9 -0
  259. package/dist/plain/interval/intervalXorAllDateTime.d.ts +9 -0
  260. package/dist/plain/interval/intervalXorAllTime.d.ts +9 -0
  261. package/dist/plain/interval/intervalXorDate.d.ts +9 -0
  262. package/dist/plain/interval/intervalXorDateTime.d.ts +9 -0
  263. package/dist/plain/interval/intervalXorTime.d.ts +9 -0
  264. package/dist/plain/interval/mergeIntervalsDate.d.ts +9 -0
  265. package/dist/plain/interval/mergeIntervalsDateTime.d.ts +9 -0
  266. package/dist/plain/interval/mergeIntervalsTime.d.ts +9 -0
  267. package/dist/plain/interval/splitIntervalByUnitDate.d.ts +23 -7
  268. package/dist/plain/interval/splitIntervalByUnitDate.js +7 -7
  269. package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +22 -6
  270. package/dist/plain/interval/splitIntervalByUnitDateTime.js +6 -6
  271. package/dist/plain/interval/splitIntervalByUnitTime.d.ts +17 -4
  272. package/dist/plain/interval/splitIntervalByUnitTime.js +1 -4
  273. package/dist/plain/map/mapDatesInRange.d.ts +8 -4
  274. package/dist/plain/map/mapDatesInRange.js +1 -4
  275. package/dist/plain/parse/parseDateTimeWithPattern.d.ts +10 -7
  276. package/dist/plain/parse/parseDateTimeWithPattern.js +10 -7
  277. package/dist/plain/parse/parseDateWithPattern.d.ts +10 -7
  278. package/dist/plain/parse/parseDateWithPattern.js +10 -7
  279. package/dist/plain/parse/parseTimeWithPattern.d.ts +10 -7
  280. package/dist/plain/parse/parseTimeWithPattern.js +10 -7
  281. package/dist/plain/parse/parseUnitFromDate.d.ts +11 -3
  282. package/dist/plain/parse/parseUnitFromDate.js +3 -3
  283. package/dist/plain/parse/parseUnitFromDateTime.d.ts +11 -3
  284. package/dist/plain/parse/parseUnitFromDateTime.js +3 -3
  285. package/dist/plain/parse/parseWeekFromDate.d.ts +10 -6
  286. package/dist/plain/parse/parseWeekFromDate.js +2 -6
  287. package/dist/plain/parse/parseWeekFromDateTime.d.ts +10 -6
  288. package/dist/plain/parse/parseWeekFromDateTime.js +2 -6
  289. package/dist/plain/validate/isValidDateRange.d.ts +19 -4
  290. package/dist/plain/validate/isValidDateRange.js +1 -4
  291. package/dist/plain/validate/isValidDateTimeRange.d.ts +20 -5
  292. package/dist/plain/validate/isValidDateTimeRange.js +2 -5
  293. package/dist/plain/validate/isValidTimeRange.d.ts +20 -5
  294. package/dist/plain/validate/isValidTimeRange.js +2 -5
  295. package/dist/precision/convert/fromExcelSerial.d.ts +10 -4
  296. package/dist/precision/convert/fromExcelSerial.js +4 -5
  297. package/dist/precision/convert/fromNanoseconds.d.ts +1 -1
  298. package/dist/precision/convert/fromNanoseconds.js +1 -1
  299. package/dist/precision/convert/toExcelSerial.d.ts +9 -3
  300. package/dist/precision/convert/toExcelSerial.js +3 -4
  301. package/dist/precision/convert/toNanoseconds.d.ts +11 -6
  302. package/dist/precision/convert/toNanoseconds.js +11 -6
  303. package/dist/precision/validate/isValidInstant.d.ts +12 -3
  304. package/dist/precision/validate/isValidInstant.js +12 -3
  305. package/dist/span/calculate/spanMs.d.ts +10 -4
  306. package/dist/span/calculate/spanMs.js +10 -4
  307. package/dist/span/calculate/spanNs.d.ts +10 -4
  308. package/dist/span/calculate/spanNs.js +10 -4
  309. package/dist/span/validate/isValidSpan.d.ts +8 -3
  310. package/dist/span/validate/isValidSpan.js +8 -3
  311. package/dist/transport/calculate/bestAvailable.d.ts +47 -0
  312. package/dist/transport/calculate/bestAvailable.js +76 -0
  313. package/dist/transport/calculate/crossingTime.d.ts +58 -0
  314. package/dist/transport/calculate/crossingTime.js +76 -0
  315. package/dist/transport/calculate/cutoffAt.d.ts +90 -0
  316. package/dist/transport/calculate/cutoffAt.js +209 -0
  317. package/dist/transport/calculate/cutoffSchedule.d.ts +70 -0
  318. package/dist/transport/calculate/cutoffSchedule.js +71 -0
  319. package/dist/transport/calculate/dwellTime.d.ts +81 -0
  320. package/dist/transport/calculate/dwellTime.js +130 -0
  321. package/dist/transport/calculate/estimateDrift.d.ts +65 -0
  322. package/dist/transport/calculate/estimateDrift.js +75 -0
  323. package/dist/transport/calculate/index.d.ts +10 -0
  324. package/dist/transport/calculate/index.js +10 -0
  325. package/dist/transport/calculate/nextDeparture.d.ts +78 -0
  326. package/dist/transport/calculate/nextDeparture.js +131 -0
  327. package/dist/transport/calculate/punctualityRate.d.ts +42 -0
  328. package/dist/transport/calculate/punctualityRate.js +59 -0
  329. package/dist/transport/calculate/scheduleDelivery.d.ts +150 -0
  330. package/dist/transport/calculate/scheduleDelivery.js +300 -0
  331. package/dist/transport/calculate/transitTime.d.ts +71 -0
  332. package/dist/transport/calculate/transitTime.js +101 -0
  333. package/dist/transport/compare/classifyPunctuality.d.ts +46 -0
  334. package/dist/transport/compare/classifyPunctuality.js +64 -0
  335. package/dist/transport/compare/index.d.ts +4 -0
  336. package/dist/transport/compare/index.js +4 -0
  337. package/dist/transport/compare/isPastCutoff.d.ts +33 -0
  338. package/dist/transport/compare/isPastCutoff.js +48 -0
  339. package/dist/transport/compare/scheduleDeviation.d.ts +37 -0
  340. package/dist/transport/compare/scheduleDeviation.js +53 -0
  341. package/dist/transport/compare/timeToCutoff.d.ts +31 -0
  342. package/dist/transport/compare/timeToCutoff.js +47 -0
  343. package/dist/transport/convert/etaAtZone.d.ts +43 -0
  344. package/dist/transport/convert/etaAtZone.js +58 -0
  345. package/dist/transport/convert/index.d.ts +1 -0
  346. package/dist/transport/convert/index.js +1 -0
  347. package/dist/transport/index.d.ts +4 -0
  348. package/dist/transport/index.js +5 -0
  349. package/dist/types/business-calendar.d.ts +19 -14
  350. package/dist/types/calendar-options.d.ts +15 -3
  351. package/dist/types/date-cycle-field.d.ts +5 -0
  352. package/dist/types/date-duration-unit.d.ts +4 -0
  353. package/dist/types/date-time-cycle-field.d.ts +4 -0
  354. package/dist/types/date-time-duration-units.d.ts +4 -0
  355. package/dist/types/date-time-unit.d.ts +4 -0
  356. package/dist/types/date-unit.d.ts +4 -0
  357. package/dist/types/disambiguation.d.ts +8 -0
  358. package/dist/types/duration-relative-to.d.ts +8 -0
  359. package/dist/types/duration-string-options.d.ts +28 -0
  360. package/dist/types/fiscal-calendar.d.ts +1 -1
  361. package/dist/types/fractional-digit.d.ts +5 -0
  362. package/dist/types/free-time-options.d.ts +44 -0
  363. package/dist/types/index.d.ts +3 -1
  364. package/dist/types/index.js +3 -1
  365. package/dist/types/interval.d.ts +8 -1
  366. package/dist/types/offset.d.ts +9 -0
  367. package/dist/types/operating-schedule.d.ts +71 -0
  368. package/dist/types/operating-schedule.js +0 -0
  369. package/dist/types/overflow.d.ts +6 -0
  370. package/dist/types/relative-rounding-method.d.ts +6 -0
  371. package/dist/types/relative-time-options.d.ts +33 -5
  372. package/dist/types/rounding-options.d.ts +27 -0
  373. package/dist/types/time-cycle-field.d.ts +4 -0
  374. package/dist/types/time-duration-unit.d.ts +4 -0
  375. package/dist/types/time-unit.d.ts +4 -0
  376. package/dist/types/transport-timestamps.d.ts +54 -0
  377. package/dist/types/transport-timestamps.js +0 -0
  378. package/dist/unix/calculate/addUnix.d.ts +19 -5
  379. package/dist/unix/calculate/addUnix.js +1 -5
  380. package/dist/unix/calculate/diffUnix.d.ts +13 -3
  381. package/dist/unix/calculate/diffUnix.js +1 -3
  382. package/dist/unix/calculate/diffUnixAsDuration.d.ts +13 -3
  383. package/dist/unix/calculate/diffUnixAsDuration.js +1 -3
  384. package/dist/unix/calculate/endOfQuarterForUnix.d.ts +13 -3
  385. package/dist/unix/calculate/endOfQuarterForUnix.js +1 -3
  386. package/dist/unix/calculate/endOfUnix.d.ts +20 -4
  387. package/dist/unix/calculate/endOfUnix.js +1 -4
  388. package/dist/unix/calculate/isBetweenUnix.d.ts +26 -4
  389. package/dist/unix/calculate/isBetweenUnix.js +4 -6
  390. package/dist/unix/calculate/roundUnix.d.ts +31 -3
  391. package/dist/unix/calculate/roundUnix.js +3 -6
  392. package/dist/unix/calculate/setUnix.d.ts +35 -9
  393. package/dist/unix/calculate/setUnix.js +4 -13
  394. package/dist/unix/calculate/startOfQuarterForUnix.d.ts +13 -3
  395. package/dist/unix/calculate/startOfQuarterForUnix.js +1 -3
  396. package/dist/unix/calculate/startOfUnix.d.ts +20 -4
  397. package/dist/unix/calculate/startOfUnix.js +1 -4
  398. package/dist/unix/calculate/subtractUnix.d.ts +19 -5
  399. package/dist/unix/calculate/subtractUnix.js +1 -5
  400. package/dist/unix/compare/areUnixEqual.d.ts +7 -1
  401. package/dist/unix/compare/areUnixEqual.js +1 -1
  402. package/dist/unix/compare/areUnixEqualBy.d.ts +24 -7
  403. package/dist/unix/compare/areUnixEqualBy.js +13 -9
  404. package/dist/unix/compare/isAfterUnix.d.ts +7 -1
  405. package/dist/unix/compare/isAfterUnix.js +1 -1
  406. package/dist/unix/compare/isBeforeUnix.d.ts +7 -1
  407. package/dist/unix/compare/isBeforeUnix.js +1 -1
  408. package/dist/unix/convert/convertUnixToPlainDate.d.ts +14 -4
  409. package/dist/unix/convert/convertUnixToPlainDate.js +2 -4
  410. package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +14 -4
  411. package/dist/unix/convert/convertUnixToPlainDateTime.js +2 -4
  412. package/dist/unix/convert/convertUnixToPlainTime.d.ts +14 -4
  413. package/dist/unix/convert/convertUnixToPlainTime.js +2 -4
  414. package/dist/unix/convert/convertUnixToUtc.d.ts +9 -4
  415. package/dist/unix/convert/convertUnixToUtc.js +3 -4
  416. package/dist/unix/convert/convertUnixToZoned.d.ts +10 -5
  417. package/dist/unix/convert/convertUnixToZoned.js +4 -5
  418. package/dist/unix/format/formatCalendarUnix.d.ts +27 -19
  419. package/dist/unix/format/formatCalendarUnix.js +4 -5
  420. package/dist/unix/format/formatRelativeUnix.d.ts +54 -5
  421. package/dist/unix/format/formatRelativeUnix.js +3 -5
  422. package/dist/unix/format/formatUnix.d.ts +24 -6
  423. package/dist/unix/format/formatUnix.js +8 -7
  424. package/dist/unix/get/getUnixNow.d.ts +8 -3
  425. package/dist/unix/get/getUnixNow.js +1 -3
  426. package/dist/unix/interval/intervalCountUnix.d.ts +14 -5
  427. package/dist/unix/interval/intervalCountUnix.js +2 -5
  428. package/dist/unix/interval/intervalDifferenceUnix.d.ts +6 -0
  429. package/dist/unix/interval/intervalDivideEquallyUnix.d.ts +18 -4
  430. package/dist/unix/interval/intervalDivideEquallyUnix.js +5 -4
  431. package/dist/unix/interval/intervalFromDurationUnix.d.ts +33 -5
  432. package/dist/unix/interval/intervalFromDurationUnix.js +6 -5
  433. package/dist/unix/interval/intervalIntersectionUnix.d.ts +6 -0
  434. package/dist/unix/interval/intervalLengthUnix.d.ts +16 -6
  435. package/dist/unix/interval/intervalLengthUnix.js +4 -6
  436. package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +13 -3
  437. package/dist/unix/interval/intervalOverlappingDaysUnix.js +1 -3
  438. package/dist/unix/interval/intervalSplitAtUnix.d.ts +8 -0
  439. package/dist/unix/interval/intervalSplitAtUnix.js +2 -0
  440. package/dist/unix/interval/intervalUnionUnix.d.ts +6 -0
  441. package/dist/unix/interval/intervalXorAllUnix.d.ts +6 -0
  442. package/dist/unix/interval/intervalXorUnix.d.ts +6 -0
  443. package/dist/unix/interval/mergeIntervalsUnix.d.ts +6 -0
  444. package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +42 -11
  445. package/dist/unix/interval/splitIntervalByUnitUnix.js +21 -16
  446. package/dist/unix/parse/parseDateFromUnix.d.ts +13 -2
  447. package/dist/unix/parse/parseDateFromUnix.js +1 -2
  448. package/dist/unix/parse/parseDayFromUnix.d.ts +14 -2
  449. package/dist/unix/parse/parseDayFromUnix.js +2 -2
  450. package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +13 -1
  451. package/dist/unix/parse/parseDayOfWeekFromUnix.js +1 -1
  452. package/dist/unix/parse/parseHourFromUnix.d.ts +14 -2
  453. package/dist/unix/parse/parseHourFromUnix.js +2 -2
  454. package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +14 -2
  455. package/dist/unix/parse/parseMicrosecondFromUnix.js +2 -2
  456. package/dist/unix/parse/parseMillisecondFromUnix.d.ts +14 -2
  457. package/dist/unix/parse/parseMillisecondFromUnix.js +2 -2
  458. package/dist/unix/parse/parseMinuteFromUnix.d.ts +14 -2
  459. package/dist/unix/parse/parseMinuteFromUnix.js +2 -2
  460. package/dist/unix/parse/parseMonthFromUnix.d.ts +14 -2
  461. package/dist/unix/parse/parseMonthFromUnix.js +2 -2
  462. package/dist/unix/parse/parseNanosecondFromUnix.d.ts +14 -2
  463. package/dist/unix/parse/parseNanosecondFromUnix.js +2 -2
  464. package/dist/unix/parse/parseSecondFromUnix.d.ts +14 -2
  465. package/dist/unix/parse/parseSecondFromUnix.js +2 -2
  466. package/dist/unix/parse/parseTimeFromUnix.d.ts +13 -2
  467. package/dist/unix/parse/parseTimeFromUnix.js +1 -2
  468. package/dist/unix/parse/parseUnitFromUnix.d.ts +22 -3
  469. package/dist/unix/parse/parseUnitFromUnix.js +2 -3
  470. package/dist/unix/parse/parseWeekFromUnix.d.ts +23 -7
  471. package/dist/unix/parse/parseWeekFromUnix.js +3 -7
  472. package/dist/unix/parse/parseYearFromUnix.d.ts +14 -2
  473. package/dist/unix/parse/parseYearFromUnix.js +2 -2
  474. package/dist/unix/validate/isValidUnixRange.d.ts +20 -4
  475. package/dist/unix/validate/isValidUnixRange.js +1 -4
  476. package/dist/utc/calculate/addUtc.d.ts +7 -4
  477. package/dist/utc/calculate/addUtc.js +1 -4
  478. package/dist/utc/calculate/diffUtc.d.ts +1 -1
  479. package/dist/utc/calculate/diffUtc.js +1 -1
  480. package/dist/utc/calculate/diffUtcAsDuration.d.ts +1 -1
  481. package/dist/utc/calculate/diffUtcAsDuration.js +1 -1
  482. package/dist/utc/calculate/endOfUtc.d.ts +16 -3
  483. package/dist/utc/calculate/endOfUtc.js +2 -3
  484. package/dist/utc/calculate/isBetweenUtc.d.ts +13 -2
  485. package/dist/utc/calculate/isBetweenUtc.js +4 -4
  486. package/dist/utc/calculate/roundUtc.d.ts +26 -9
  487. package/dist/utc/calculate/roundUtc.js +3 -12
  488. package/dist/utc/calculate/setUtc.d.ts +7 -4
  489. package/dist/utc/calculate/setUtc.js +1 -4
  490. package/dist/utc/calculate/startOfUtc.d.ts +15 -2
  491. package/dist/utc/calculate/startOfUtc.js +1 -2
  492. package/dist/utc/calculate/subtractUtc.d.ts +7 -4
  493. package/dist/utc/calculate/subtractUtc.js +1 -4
  494. package/dist/utc/compare/areUtcEqualBy.d.ts +9 -3
  495. package/dist/utc/compare/areUtcEqualBy.js +2 -3
  496. package/dist/utc/convert/convertUtcToPlainDate.d.ts +8 -3
  497. package/dist/utc/convert/convertUtcToPlainDate.js +5 -6
  498. package/dist/utc/convert/convertUtcToPlainDateTime.d.ts +8 -3
  499. package/dist/utc/convert/convertUtcToPlainDateTime.js +5 -6
  500. package/dist/utc/convert/convertUtcToPlainTime.d.ts +8 -3
  501. package/dist/utc/convert/convertUtcToPlainTime.js +5 -6
  502. package/dist/utc/convert/convertUtcToUnix.d.ts +9 -4
  503. package/dist/utc/convert/convertUtcToUnix.js +3 -4
  504. package/dist/utc/convert/convertUtcToZoned.d.ts +1 -1
  505. package/dist/utc/convert/convertUtcToZoned.js +1 -1
  506. package/dist/utc/format/formatCalendarUtc.d.ts +19 -8
  507. package/dist/utc/format/formatCalendarUtc.js +8 -6
  508. package/dist/utc/format/formatHttp.d.ts +1 -1
  509. package/dist/utc/format/formatHttp.js +1 -1
  510. package/dist/utc/format/formatRelativeUtc.d.ts +30 -10
  511. package/dist/utc/format/formatRelativeUtc.js +9 -11
  512. package/dist/utc/format/formatUtc.d.ts +17 -15
  513. package/dist/utc/format/formatUtc.js +8 -8
  514. package/dist/utc/interval/intervalDifferenceUtc.d.ts +6 -0
  515. package/dist/utc/interval/intervalDivideEquallyUtc.d.ts +18 -4
  516. package/dist/utc/interval/intervalDivideEquallyUtc.js +5 -4
  517. package/dist/utc/interval/intervalFromDurationUtc.d.ts +13 -3
  518. package/dist/utc/interval/intervalFromDurationUtc.js +1 -3
  519. package/dist/utc/interval/intervalIntersectionUtc.d.ts +6 -0
  520. package/dist/utc/interval/intervalSplitAtUtc.d.ts +8 -0
  521. package/dist/utc/interval/intervalSplitAtUtc.js +2 -0
  522. package/dist/utc/interval/intervalUnionUtc.d.ts +6 -0
  523. package/dist/utc/interval/intervalXorAllUtc.d.ts +6 -0
  524. package/dist/utc/interval/intervalXorUtc.d.ts +6 -0
  525. package/dist/utc/interval/mergeIntervalsUtc.d.ts +6 -0
  526. package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +19 -6
  527. package/dist/utc/interval/splitIntervalByUnitUtc.js +6 -6
  528. package/dist/utc/parse/parseDateFromUtc.d.ts +7 -3
  529. package/dist/utc/parse/parseDateFromUtc.js +1 -3
  530. package/dist/utc/parse/parseDayFromUtc.d.ts +7 -3
  531. package/dist/utc/parse/parseDayFromUtc.js +1 -3
  532. package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +7 -3
  533. package/dist/utc/parse/parseDayOfWeekFromUtc.js +4 -6
  534. package/dist/utc/parse/parseHourFromUtc.d.ts +7 -3
  535. package/dist/utc/parse/parseHourFromUtc.js +1 -3
  536. package/dist/utc/parse/parseHttp.d.ts +1 -1
  537. package/dist/utc/parse/parseHttp.js +1 -1
  538. package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +7 -3
  539. package/dist/utc/parse/parseMicrosecondFromUtc.js +1 -3
  540. package/dist/utc/parse/parseMillisecondFromUtc.d.ts +7 -3
  541. package/dist/utc/parse/parseMillisecondFromUtc.js +1 -3
  542. package/dist/utc/parse/parseMinuteFromUtc.d.ts +7 -3
  543. package/dist/utc/parse/parseMinuteFromUtc.js +1 -3
  544. package/dist/utc/parse/parseMonthFromUtc.d.ts +7 -3
  545. package/dist/utc/parse/parseMonthFromUtc.js +1 -3
  546. package/dist/utc/parse/parseNanosecondFromUtc.d.ts +7 -3
  547. package/dist/utc/parse/parseNanosecondFromUtc.js +1 -3
  548. package/dist/utc/parse/parseSecondFromUtc.d.ts +7 -3
  549. package/dist/utc/parse/parseSecondFromUtc.js +1 -3
  550. package/dist/utc/parse/parseTimeFromUtc.d.ts +8 -3
  551. package/dist/utc/parse/parseTimeFromUtc.js +5 -6
  552. package/dist/utc/parse/parseUnitFromUtc.d.ts +17 -5
  553. package/dist/utc/parse/parseUnitFromUtc.js +6 -8
  554. package/dist/utc/parse/parseWeekFromUtc.d.ts +18 -10
  555. package/dist/utc/parse/parseWeekFromUtc.js +7 -13
  556. package/dist/utc/parse/parseYearFromUtc.d.ts +7 -3
  557. package/dist/utc/parse/parseYearFromUtc.js +1 -3
  558. package/dist/utc/validate/isValidUtcRange.d.ts +16 -5
  559. package/dist/utc/validate/isValidUtcRange.js +2 -5
  560. package/dist/zoned/calculate/addZoned.d.ts +20 -10
  561. package/dist/zoned/calculate/addZoned.js +6 -13
  562. package/dist/zoned/calculate/cycleZoned.d.ts +33 -8
  563. package/dist/zoned/calculate/cycleZoned.js +1 -8
  564. package/dist/zoned/calculate/diffZoned.d.ts +1 -1
  565. package/dist/zoned/calculate/diffZoned.js +1 -1
  566. package/dist/zoned/calculate/diffZonedAsDuration.d.ts +1 -1
  567. package/dist/zoned/calculate/diffZonedAsDuration.js +1 -1
  568. package/dist/zoned/calculate/endOfQuarterForZoned.d.ts +9 -2
  569. package/dist/zoned/calculate/endOfQuarterForZoned.js +4 -5
  570. package/dist/zoned/calculate/endOfZoned.d.ts +16 -3
  571. package/dist/zoned/calculate/endOfZoned.js +2 -3
  572. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +10 -3
  573. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +5 -6
  574. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +7 -1
  575. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +3 -4
  576. package/dist/zoned/calculate/roundZoned.d.ts +21 -4
  577. package/dist/zoned/calculate/roundZoned.js +3 -7
  578. package/dist/zoned/calculate/setZoned.d.ts +25 -8
  579. package/dist/zoned/calculate/setZoned.js +4 -12
  580. package/dist/zoned/calculate/startOfQuarterForZoned.d.ts +7 -2
  581. package/dist/zoned/calculate/startOfQuarterForZoned.js +3 -5
  582. package/dist/zoned/calculate/startOfZoned.d.ts +15 -3
  583. package/dist/zoned/calculate/startOfZoned.js +1 -3
  584. package/dist/zoned/calculate/subtractZoned.d.ts +20 -10
  585. package/dist/zoned/calculate/subtractZoned.js +6 -13
  586. package/dist/zoned/compare/areZonedEqualBy.d.ts +14 -5
  587. package/dist/zoned/compare/areZonedEqualBy.js +7 -5
  588. package/dist/zoned/compare/isBetweenZoned.d.ts +13 -1
  589. package/dist/zoned/compare/isBetweenZoned.js +4 -3
  590. package/dist/zoned/compare/isInDaylightSaving.d.ts +38 -11
  591. package/dist/zoned/compare/isInDaylightSaving.js +40 -44
  592. package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +18 -5
  593. package/dist/zoned/convert/convertPlainDateTimeToZoned.js +6 -11
  594. package/dist/zoned/convert/convertZonedToUnix.d.ts +9 -4
  595. package/dist/zoned/convert/convertZonedToUnix.js +2 -4
  596. package/dist/zoned/convert/convertZonedToZoned.d.ts +1 -1
  597. package/dist/zoned/convert/convertZonedToZoned.js +1 -1
  598. package/dist/zoned/format/formatCalendarZoned.d.ts +18 -12
  599. package/dist/zoned/format/formatCalendarZoned.js +13 -9
  600. package/dist/zoned/format/formatRelativeZoned.d.ts +41 -12
  601. package/dist/zoned/format/formatRelativeZoned.js +7 -4
  602. package/dist/zoned/format/formatRfc2822.d.ts +2 -2
  603. package/dist/zoned/format/formatRfc2822.js +2 -2
  604. package/dist/zoned/format/formatRfc3339.d.ts +2 -3
  605. package/dist/zoned/format/formatRfc3339.js +2 -3
  606. package/dist/zoned/format/formatTimeZoneName.d.ts +12 -3
  607. package/dist/zoned/format/formatTimeZoneName.js +5 -4
  608. package/dist/zoned/format/formatZonedDateTime.js +2 -1
  609. package/dist/zoned/format/formatZonedRange.js +2 -1
  610. package/dist/zoned/format/formatZonedToParts.d.ts +15 -4
  611. package/dist/zoned/format/formatZonedToParts.js +8 -5
  612. package/dist/zoned/get/getDstTransitions.d.ts +9 -10
  613. package/dist/zoned/get/getDstTransitions.js +12 -3
  614. package/dist/zoned/get/getTimeZoneOffset.d.ts +4 -1
  615. package/dist/zoned/get/getTimeZoneOffset.js +6 -3
  616. package/dist/zoned/get/getZonedNow.d.ts +13 -1
  617. package/dist/zoned/get/getZonedNow.js +12 -3
  618. package/dist/zoned/interval/intervalDifferenceZoned.d.ts +9 -0
  619. package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +22 -4
  620. package/dist/zoned/interval/intervalDivideEquallyZoned.js +6 -4
  621. package/dist/zoned/interval/intervalFromDurationZoned.d.ts +29 -10
  622. package/dist/zoned/interval/intervalFromDurationZoned.js +6 -13
  623. package/dist/zoned/interval/intervalIntersectionZoned.d.ts +9 -0
  624. package/dist/zoned/interval/intervalSplitAtZoned.d.ts +11 -0
  625. package/dist/zoned/interval/intervalSplitAtZoned.js +2 -0
  626. package/dist/zoned/interval/intervalUnionZoned.d.ts +9 -0
  627. package/dist/zoned/interval/intervalXorAllZoned.d.ts +9 -0
  628. package/dist/zoned/interval/intervalXorZoned.d.ts +9 -0
  629. package/dist/zoned/interval/mergeIntervalsZoned.d.ts +9 -0
  630. package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +27 -6
  631. package/dist/zoned/interval/splitIntervalByUnitZoned.js +11 -6
  632. package/dist/zoned/map/mapZonedDatesInRange.d.ts +9 -4
  633. package/dist/zoned/map/mapZonedDatesInRange.js +2 -4
  634. package/dist/zoned/parse/parseRfc2822.d.ts +1 -1
  635. package/dist/zoned/parse/parseRfc2822.js +1 -1
  636. package/dist/zoned/parse/parseUnitFromZoned.d.ts +9 -3
  637. package/dist/zoned/parse/parseUnitFromZoned.js +1 -3
  638. package/dist/zoned/parse/parseWeekFromZoned.d.ts +10 -3
  639. package/dist/zoned/parse/parseWeekFromZoned.js +2 -3
  640. package/dist/zoned/validate/hasDaylightSaving.d.ts +42 -11
  641. package/dist/zoned/validate/hasDaylightSaving.js +47 -31
  642. package/dist/zoned/validate/isValidZonedDateTime.d.ts +13 -0
  643. package/dist/zoned/validate/isValidZonedDateTime.js +14 -1
  644. package/dist/zoned/validate/isValidZonedRange.d.ts +15 -4
  645. package/dist/zoned/validate/isValidZonedRange.js +1 -4
  646. package/package.json +53 -5
  647. package/skills/gmt-arithmetic/SKILL.md +1 -1
  648. package/skills/gmt-basics/SKILL.md +10 -1
  649. package/skills/gmt-integration/SKILL.md +10 -5
  650. package/skills/gmt-timezone/SKILL.md +210 -14
  651. package/dist/internal/resolveReadingTimeZone.d.ts +0 -11
  652. package/dist/internal/resolveReadingTimeZone.js +0 -18
  653. package/dist/types/duration-unit.d.ts +0 -5
  654. /package/dist/types/{duration-unit.js → free-time-options.js} +0 -0
@@ -1,6 +1,7 @@
1
1
  import { normalizeDateTime, zonedDateTimeFrom } from "../../internal/index.js";
2
2
  import { instantFormatOptions } from "../../internal/instantFormatOptions.js";
3
3
  import { isValidZonedDateTime } from "../validate/index.js";
4
+ import { readDateTimeFormatOptions } from "../../internal/readDateTimeFormatOptions.js";
4
5
  /**
5
6
  * Format a zoned datetime range using the Temporal Intl.DateTimeFormat formatRange API.
6
7
  *
@@ -61,7 +62,7 @@ export function formatZonedRange(from, to, locale, options) {
61
62
  // an Instant format resolves to (GetDateTimeFormat ~any~, ~all~, ~all~), so
62
63
  // the requested fields and widths are kept. A `timeZone` option is rejected
63
64
  // rather than silently overridden.
64
- const formatOptions = instantFormatOptions(options ?? {}, zdt1.timeZoneId, "all");
65
+ const formatOptions = instantFormatOptions(readDateTimeFormatOptions(options), zdt1.timeZoneId, "all");
65
66
  if (formatOptions === null) {
66
67
  return "";
67
68
  }
@@ -5,8 +5,7 @@ import type { DateTimeFormatOptions } from "../../types/index.js";
5
5
  * - This is GMT's substitute for a token formatter (Luxon `toFormat`, date-fns
6
6
  * `format`). A token pattern hard-codes field order and ships US ordering to
7
7
  * every locale; `formatToParts` gives the caller full control over presentation
8
- * while the *locale* keeps control of order. See Decision 1 in
9
- * `context/roadmap/issues/J.md`.
8
+ * while the *locale* keeps control of order.
10
9
  * - Each part is `{ type, value }` where `type` can be:
11
10
  * `"era"`, `"year"`, `"relatedYear"`, `"yearName"`, `"month"`, `"day"`, `"weekday"`,
12
11
  * `"hour"`, `"minute"`, `"second"`, `"fractionalSecond"`, `"dayPeriod"`,
@@ -24,8 +23,11 @@ import type { DateTimeFormatOptions } from "../../types/index.js";
24
23
  * whitespace normalisation.
25
24
  * - A ZonedDateTime is formatted in its own zone: a `timeZone` option returns
26
25
  * `[]`, as `ZonedDateTime#toLocaleString` throws a TypeError for one.
27
- * - Before the day period, `en-US` has used U+202F NARROW NO-BREAK SPACE since CLDR 42 (ICU 72), not
28
- * an ordinary space; the examples write it as `"\u202f"` so the difference is visible.
26
+ * - The literal before the day period depends on the runtime. CLDR 42 (ICU 72) put U+202F NARROW
27
+ * NO-BREAK SPACE there for `en-US`; Node 22 and 24 return it in the parts, and Node 26 returns
28
+ * an ordinary space (U+0020) instead. Both were checked on those runtimes. The examples show the
29
+ * Node 22 and 24 form, written as `"\u202f"` so the difference is visible. Treat the two
30
+ * characters as equal when you compare parts.
29
31
  * - Returns `[]` for invalid input.
30
32
  * - **Compatibility:** before 1.16.0 a call with no field options returned only the date parts, with
31
33
  * no time zone name. Pass `{ year: "numeric", month: "numeric", day: "numeric" }` to keep that output.
@@ -48,6 +50,15 @@ import type { DateTimeFormatOptions } from "../../types/index.js";
48
50
  * @example formatZonedToParts("2024-02-03T14:30:00-05:00[America/New_York]", "en-US", null as never) // [] (null options, as ECMA-402 rejects them)
49
51
  */
50
52
  export declare function formatZonedToParts(value: string, locale?: string | string[], options?: DateTimeFormatOptions): Array<{
53
+ /**
54
+ * The kind of part, named as ECMA-402 `Intl.DateTimeFormat.prototype.formatToParts` names it: a
55
+ * field such as `"year"`, `"month"` or `"day"`, or `"literal"` for the separator text between
56
+ * fields.
57
+ */
51
58
  type: string;
59
+ /**
60
+ * The text of the part in the requested locale, exactly as the formatter wrote it. Joining every
61
+ * `value` in array order gives the whole formatted text.
62
+ */
52
63
  value: string;
53
64
  }>;
@@ -1,14 +1,14 @@
1
1
  import { isValidZonedDateTime } from "../validate/index.js";
2
2
  import { zonedDateTimeFrom } from "../../internal/index.js";
3
3
  import { instantFormatOptions } from "../../internal/instantFormatOptions.js";
4
+ import { readDateTimeFormatOptions } from "../../internal/readDateTimeFormatOptions.js";
4
5
  /**
5
6
  * Return the locale-formatted parts of a ZonedDateTime.
6
7
  *
7
8
  * - This is GMT's substitute for a token formatter (Luxon `toFormat`, date-fns
8
9
  * `format`). A token pattern hard-codes field order and ships US ordering to
9
10
  * every locale; `formatToParts` gives the caller full control over presentation
10
- * while the *locale* keeps control of order. See Decision 1 in
11
- * `context/roadmap/issues/J.md`.
11
+ * while the *locale* keeps control of order.
12
12
  * - Each part is `{ type, value }` where `type` can be:
13
13
  * `"era"`, `"year"`, `"relatedYear"`, `"yearName"`, `"month"`, `"day"`, `"weekday"`,
14
14
  * `"hour"`, `"minute"`, `"second"`, `"fractionalSecond"`, `"dayPeriod"`,
@@ -26,8 +26,11 @@ import { instantFormatOptions } from "../../internal/instantFormatOptions.js";
26
26
  * whitespace normalisation.
27
27
  * - A ZonedDateTime is formatted in its own zone: a `timeZone` option returns
28
28
  * `[]`, as `ZonedDateTime#toLocaleString` throws a TypeError for one.
29
- * - Before the day period, `en-US` has used U+202F NARROW NO-BREAK SPACE since CLDR 42 (ICU 72), not
30
- * an ordinary space; the examples write it as `"\u202f"` so the difference is visible.
29
+ * - The literal before the day period depends on the runtime. CLDR 42 (ICU 72) put U+202F NARROW
30
+ * NO-BREAK SPACE there for `en-US`; Node 22 and 24 return it in the parts, and Node 26 returns
31
+ * an ordinary space (U+0020) instead. Both were checked on those runtimes. The examples show the
32
+ * Node 22 and 24 form, written as `"\u202f"` so the difference is visible. Treat the two
33
+ * characters as equal when you compare parts.
31
34
  * - Returns `[]` for invalid input.
32
35
  * - **Compatibility:** before 1.16.0 a call with no field options returned only the date parts, with
33
36
  * no time zone name. Pass `{ year: "numeric", month: "numeric", day: "numeric" }` to keep that output.
@@ -63,7 +66,7 @@ export function formatZonedToParts(value, locale, options) {
63
66
  // formatter's timeZone, with the options ZonedDateTime#toLocaleString
64
67
  // resolves to (GetDateTimeFormat ~any~, ~zoned-date-time~, ~all~).
65
68
  const zonedDateTime = zonedDateTimeFrom(value);
66
- const resolved = instantFormatOptions(options ?? {}, zonedDateTime.timeZoneId, "zoned-date-time");
69
+ const resolved = instantFormatOptions(readDateTimeFormatOptions(options), zonedDateTime.timeZoneId, "zoned-date-time");
67
70
  if (resolved === null) {
68
71
  return [];
69
72
  }
@@ -2,14 +2,6 @@
2
2
  * A single DST transition instant: the UTC instant of an offset change plus the
3
3
  * offset in effect immediately before and after it.
4
4
  *
5
- * @remarks Members:
6
- *
7
- * | Member | Type | Description |
8
- * | --- | --- | --- |
9
- * | `instant` | `string` | UTC instant of the offset change, ISO 8601 ending in `Z` (e.g. `2024-03-10T07:00:00Z`). |
10
- * | `offsetBefore` | `string` | UTC offset in effect immediately before the transition (e.g. `-05:00`). |
11
- * | `offsetAfter` | `string` | UTC offset in effect immediately after the transition (e.g. `-04:00`). |
12
- *
13
5
  * @example
14
6
  * import { DstTransition } from "@northguild/gmt/zoned";
15
7
  * const t: DstTransition = {
@@ -19,12 +11,16 @@
19
11
  * };
20
12
  */
21
13
  export interface DstTransition {
14
+ /** The UTC instant of the offset change, ISO 8601 ending in `Z` (e.g. `2024-03-10T07:00:00Z`). */
22
15
  instant: string;
16
+ /** The UTC offset in effect immediately before the transition (e.g. `-05:00`). */
23
17
  offsetBefore: string;
18
+ /** The UTC offset in effect immediately after the transition (e.g. `-04:00`). */
24
19
  offsetAfter: string;
25
20
  }
26
21
  /**
27
- * List every DST transition instant for an IANA timezone within a given year.
22
+ * List every DST transition instant for a time zone (an IANA name or a UTC offset) within a
23
+ * given year.
28
24
  *
29
25
  * - A "transition" is any UTC offset change: a spring-forward gap (nonexistent
30
26
  * local time) or a fall-back overlap (ambiguous local time) — see
@@ -39,8 +35,10 @@ export interface DstTransition {
39
35
  * - Returns `[]` for an invalid timeZone, a non-integer year, or a valid zone
40
36
  * with zero transitions in that year (not an error case), and when the scan
41
37
  * exhausts its internal bound — never a partial list.
38
+ * - A UTC offset such as `"+05:30"` is a valid zone whose offset never changes,
39
+ * so it has no transitions and returns `[]` for every year.
42
40
  *
43
- * @param timeZone IANA timeZone identifier
41
+ * @param timeZone IANA name or UTC offset
44
42
  * @param year calendar year to scan (must be an integer)
45
43
  * @returns array of `{ instant, offsetBefore, offsetAfter }`, in chronological order
46
44
  *
@@ -52,6 +50,7 @@ export interface DstTransition {
52
50
  * @example getDstTransitions("Asia/Singapore", 1982)
53
51
  * // [{ instant: "1981-12-31T16:00:00Z", offsetBefore: "+07:30", offsetAfter: "+08:00" }]
54
52
  * @example getDstTransitions("Asia/Tokyo", 2024) // []
53
+ * @example getDstTransitions("+05:30", 2024) // [] (a fixed offset has no transitions)
55
54
  * @example getDstTransitions("Invalid/Zone", 2024) // []
56
55
  */
57
56
  export declare function getDstTransitions(timeZone: string, year: number): DstTransition[];
@@ -1,8 +1,11 @@
1
1
  import { isValidTimeZone } from "../validate/index.js";
2
2
  import { zonedDateTimeFrom, zonedNextTransition, zonedStartOfDay, } from "../../internal/index.js";
3
3
  const MAX_TRANSITIONS_PER_YEAR = 20;
4
+ /** 368 days: a 366-day year plus a day at each end for the zone's offset. */
5
+ const SEARCH_SPAN_NANOSECONDS = 368n * 86400000000000n;
4
6
  /**
5
- * List every DST transition instant for an IANA timezone within a given year.
7
+ * List every DST transition instant for a time zone (an IANA name or a UTC offset) within a
8
+ * given year.
6
9
  *
7
10
  * - A "transition" is any UTC offset change: a spring-forward gap (nonexistent
8
11
  * local time) or a fall-back overlap (ambiguous local time) — see
@@ -17,8 +20,10 @@ const MAX_TRANSITIONS_PER_YEAR = 20;
17
20
  * - Returns `[]` for an invalid timeZone, a non-integer year, or a valid zone
18
21
  * with zero transitions in that year (not an error case), and when the scan
19
22
  * exhausts its internal bound — never a partial list.
23
+ * - A UTC offset such as `"+05:30"` is a valid zone whose offset never changes,
24
+ * so it has no transitions and returns `[]` for every year.
20
25
  *
21
- * @param timeZone IANA timeZone identifier
26
+ * @param timeZone IANA name or UTC offset
22
27
  * @param year calendar year to scan (must be an integer)
23
28
  * @returns array of `{ instant, offsetBefore, offsetAfter }`, in chronological order
24
29
  *
@@ -30,6 +35,7 @@ const MAX_TRANSITIONS_PER_YEAR = 20;
30
35
  * @example getDstTransitions("Asia/Singapore", 1982)
31
36
  * // [{ instant: "1981-12-31T16:00:00Z", offsetBefore: "+07:30", offsetAfter: "+08:00" }]
32
37
  * @example getDstTransitions("Asia/Tokyo", 2024) // []
38
+ * @example getDstTransitions("+05:30", 2024) // [] (a fixed offset has no transitions)
33
39
  * @example getDstTransitions("Invalid/Zone", 2024) // []
34
40
  */
35
41
  export function getDstTransitions(timeZone, year) {
@@ -40,11 +46,14 @@ export function getDstTransitions(timeZone, year) {
40
46
  // getTimeZoneTransition("next") is strictly after its receiver, so start 1ns before the
41
47
  // year opens to catch a transition landing exactly on local January 1 00:00.
42
48
  let cur = zonedStartOfDay(zonedDateTimeFrom({ year, month: 1, day: 1, timeZone })).subtract({ nanoseconds: 1 });
49
+ // A calendar year is at most 366 days and an offset is under a day, so no search needs to
50
+ // read past this.
51
+ const searchEnd = cur.epochNanoseconds + SEARCH_SPAN_NANOSECONDS;
43
52
  const transitions = [];
44
53
  // `<=`: up to MAX in-year transitions are pushed, plus one more lookup to observe the scan
45
54
  // leaving the year.
46
55
  for (let i = 0; i <= MAX_TRANSITIONS_PER_YEAR; i++) {
47
- const next = zonedNextTransition(cur);
56
+ const next = zonedNextTransition(cur, searchEnd);
48
57
  if (!next || next.year > year) {
49
58
  return transitions;
50
59
  }
@@ -14,8 +14,11 @@
14
14
  * - The instant is ISO 8601 extended format before any annotation (`<date>T<time>`, then `Z` or
15
15
  * `±HH:MM[:SS[.fraction]]`): basic format, a `t` or space separator, a lower-case `z` and an
16
16
  * hour-only offset return "".
17
+ * - Only the instant is read from `instant`, as `isValidInstant` describes it: a bracketed zone
18
+ * in it is not validated, and an offset written to the minute that is that zone's sub-minute
19
+ * offset rounded (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives.
17
20
  *
18
- * @param timeZone IANA timeZone identifier
21
+ * @param timeZone IANA name or UTC offset
19
22
  * @param instant ISO 8601 instant string (e.g. "2024-07-15T12:00:00Z")
20
23
  * @returns offset string (e.g. "-04:00"), or "" on invalid input
21
24
  *
@@ -1,4 +1,4 @@
1
- import { Temporal } from "@js-temporal/polyfill";
1
+ import { instantFrom } from "../../internal/instantNanoseconds.js";
2
2
  import { hasInstantShape } from "../../internal/isoStringBody.js";
3
3
  import { instantLeapSecond } from "../../regex/index.js";
4
4
  import { isValidTimeZone } from "../validate/index.js";
@@ -18,8 +18,11 @@ import { isValidTimeZone } from "../validate/index.js";
18
18
  * - The instant is ISO 8601 extended format before any annotation (`<date>T<time>`, then `Z` or
19
19
  * `±HH:MM[:SS[.fraction]]`): basic format, a `t` or space separator, a lower-case `z` and an
20
20
  * hour-only offset return "".
21
+ * - Only the instant is read from `instant`, as `isValidInstant` describes it: a bracketed zone
22
+ * in it is not validated, and an offset written to the minute that is that zone's sub-minute
23
+ * offset rounded (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives.
21
24
  *
22
- * @param timeZone IANA timeZone identifier
25
+ * @param timeZone IANA name or UTC offset
23
26
  * @param instant ISO 8601 instant string (e.g. "2024-07-15T12:00:00Z")
24
27
  * @returns offset string (e.g. "-04:00"), or "" on invalid input
25
28
  *
@@ -42,7 +45,7 @@ export function getTimeZoneOffset(timeZone, instant) {
42
45
  return "";
43
46
  }
44
47
  try {
45
- return Temporal.Instant.from(instant).toZonedDateTimeISO(timeZone).offset;
48
+ return instantFrom(instant).toZonedDateTimeISO(timeZone).offset;
46
49
  }
47
50
  catch {
48
51
  return "";
@@ -4,14 +4,26 @@ import { Temporal } from "@js-temporal/polyfill";
4
4
  *
5
5
  * - Uses Temporal.Now.zonedDateTimeISO to get the current time.
6
6
  * - Validation is performed on the timezone.
7
+ * - `smallestUnit` is the only option read. Any other key on `optionsArg` is ignored, so the
8
+ * string always carries the offset and the bracketed time zone, and smaller units are always
9
+ * truncated.
7
10
  *
8
11
  * @param ianaTimezone IANA timeZone identifier
9
- * @param optionsArg optional: smallestUnit ("second" | "millisecond" | "microsecond" | "nanosecond")
12
+ * @param optionsArg optional setting for the precision of the output string
10
13
  * @returns zoned ISO 8601 datetime string or "" on invalid input
11
14
  *
12
15
  * @example getZonedNow("America/New_York") // "2024-02-29T09:30:45.123-05:00[America/New_York]"
16
+ * @example getZonedNow("America/New_York", { smallestUnit: "second" }) // "2024-02-29T09:30:45-05:00[America/New_York]"
13
17
  * @example getZonedNow("Invalid/Zone") // ""
18
+ * @example getZonedNow("America/New_York", { smallestUnit: "fortnight" as never }) // "" (not a unit from minute to nanosecond)
14
19
  */
15
20
  export declare function getZonedNow(ianaTimezone: string, optionsArg?: {
21
+ /**
22
+ * The smallest unit written in the output string, from `"minute"` to `"nanosecond"`, singular
23
+ * or plural. Anything smaller is truncated, as Temporal's `toString` does with its `"trunc"`
24
+ * rounding mode.
25
+ *
26
+ * @defaultValue `"millisecond"`
27
+ */
16
28
  smallestUnit?: Temporal.ZonedDateTimeToStringOptions["smallestUnit"];
17
29
  }): string;
@@ -1,27 +1,36 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { isValidTimeZone } from "../validate/index.js";
3
3
  import { isOptionsArgument } from "../../internal/isObject.js";
4
+ import { optionOrDefault } from "../../internal/optionOrDefault.js";
4
5
  /**
5
6
  * Return the current zoned datetime for the specified IANA timeZone.
6
7
  *
7
8
  * - Uses Temporal.Now.zonedDateTimeISO to get the current time.
8
9
  * - Validation is performed on the timezone.
10
+ * - `smallestUnit` is the only option read. Any other key on `optionsArg` is ignored, so the
11
+ * string always carries the offset and the bracketed time zone, and smaller units are always
12
+ * truncated.
9
13
  *
10
14
  * @param ianaTimezone IANA timeZone identifier
11
- * @param optionsArg optional: smallestUnit ("second" | "millisecond" | "microsecond" | "nanosecond")
15
+ * @param optionsArg optional setting for the precision of the output string
12
16
  * @returns zoned ISO 8601 datetime string or "" on invalid input
13
17
  *
14
18
  * @example getZonedNow("America/New_York") // "2024-02-29T09:30:45.123-05:00[America/New_York]"
19
+ * @example getZonedNow("America/New_York", { smallestUnit: "second" }) // "2024-02-29T09:30:45-05:00[America/New_York]"
15
20
  * @example getZonedNow("Invalid/Zone") // ""
21
+ * @example getZonedNow("America/New_York", { smallestUnit: "fortnight" as never }) // "" (not a unit from minute to nanosecond)
16
22
  */
17
23
  export function getZonedNow(ianaTimezone, optionsArg) {
18
24
  try {
19
25
  if (!isOptionsArgument(optionsArg)) {
20
26
  return "";
21
27
  }
28
+ // ECMA-402 GetOption (the Temporal specification defines the same operation): the option is
29
+ // read once, and a value of undefined is absent, so the default applies.
30
+ // Only smallestUnit is read: any other key on the caller's object (roundingMode, offset,
31
+ // timeZoneName, calendarName, fractionalSecondDigits) never reaches Temporal's toString.
22
32
  const options = {
23
- smallestUnit: "millisecond",
24
- ...optionsArg,
33
+ smallestUnit: optionOrDefault(optionsArg?.smallestUnit, "millisecond"),
25
34
  };
26
35
  if (!isValidTimeZone(ianaTimezone)) {
27
36
  return "";
@@ -39,6 +39,15 @@
39
39
  * @example intervalDifferenceZoned("invalid", "2024-12-31T17:00:00+00:00[UTC]", "2024-06-01T12:00:00+00:00[UTC]", "2024-07-01T13:00:00+00:00[UTC]") // []
40
40
  */
41
41
  export declare function intervalDifferenceZoned(aStart: string, aEnd: string, bStart: string, bEnd: string): Array<{
42
+ /**
43
+ * The instant the interval begins at, as a zoned ISO 8601 string with offset and bracketed time
44
+ * zone. It keeps a calendar annotation such as `[u-ca=hebrew]` when the inputs carry one.
45
+ */
42
46
  start: string;
47
+ /**
48
+ * The first instant after the interval, in the same format as `start`. It is exclusive: the
49
+ * interval holds everything from `start` up to but not including this value. It is always later
50
+ * than `start`.
51
+ */
43
52
  end: string;
44
53
  }>;
@@ -7,9 +7,13 @@
7
7
  * - Each boundary is `start + round((end - start) · i / n)` in integer epoch nanoseconds (real
8
8
  * elapsed time, exact at any span length), so a spring-forward day split in half lands exactly
9
9
  * on the DST transition's real midpoint rather than the local-clock midpoint.
10
+ * - When `n` is larger than the number of nanoseconds in the interval, some pieces are empty (their
11
+ * `start` equals their `end`): the result always has exactly `n` pieces.
10
12
  * - `n === 1` returns the original interval unchanged, as a single-element array.
11
13
  * - A zero-length interval (`start === end`) returns `n` identical zero-length sub-intervals, each
12
14
  * an empty `[start, start)` that holds no instant.
15
+ * - `start` and `end` may name different time zones. The first `start` and every inner boundary
16
+ * are written in `start`'s zone; the last `end` is the `end` argument, in its own zone.
13
17
  * - Returns `[]` when `n` is not a positive integer, or on invalid input (unparseable
14
18
  * start/end, `start > end`, leap-second strings).
15
19
  * - Accepts RFC 9557 calendar-annotated zoned strings (as produced by `convertZonedToCalendar`) as
@@ -19,14 +23,12 @@
19
23
  * unreadable as a set. A mismatch returns `[]`.
20
24
  * - Output boundaries are re-derived in the resolved calendar via `formatZonedInCalendar`, never
21
25
  * copied from an input string (E7's D7-zoned).
22
- * - `options.maxPieces` (positive safe integer, default `1_000_000`) bounds the output: when `n`
23
- * exceeds it, or exceeds the longest possible array (2^32 - 1), the function returns `[]`
24
- * before building any piece. An invalid `maxPieces` also returns `[]`.
26
+ * - An `n` over `options.maxPieces` returns `[]` before any piece is built.
25
27
  *
26
28
  * @param start ISO 8601 zoned datetime string for the interval start
27
29
  * @param end ISO 8601 zoned datetime string for the interval end
28
30
  * @param n number of equal sub-intervals to produce (positive integer)
29
- * @param options optional: `maxPieces` (positive safe integer, default `1_000_000`)
31
+ * @param options optional limit on the size of the output
30
32
  * @returns array of `n` `{ start, end }` records, or `[]` on invalid input
31
33
  *
32
34
  * @example intervalDivideEquallyZoned("2024-03-09T12:00:00-05:00[America/New_York]", "2024-03-11T12:00:00-04:00[America/New_York]", 2) // [{ start: "2024-03-09T12:00:00-05:00[America/New_York]", end: "2024-03-10T12:30:00-04:00[America/New_York]" }, { start: "2024-03-10T12:30:00-04:00[America/New_York]", end: "2024-03-11T12:00:00-04:00[America/New_York]" }] (47 real hours split in half)
@@ -37,8 +39,24 @@
37
39
  * @example intervalDivideEquallyZoned("2024-01-01T00:00:00+00:00[UTC]", "2024-01-04T00:00:00+00:00[UTC]", 3, { maxPieces: 3 }) // [{ start: "2024-01-01T00:00:00+00:00[UTC]", end: "2024-01-02T00:00:00+00:00[UTC]" }, { start: "2024-01-02T00:00:00+00:00[UTC]", end: "2024-01-03T00:00:00+00:00[UTC]" }, { start: "2024-01-03T00:00:00+00:00[UTC]", end: "2024-01-04T00:00:00+00:00[UTC]" }]
38
40
  */
39
41
  export declare function intervalDivideEquallyZoned(start: string, end: string, n: number, options?: {
42
+ /**
43
+ * The most records the result may hold. A result that would hold more, or more than the longest
44
+ * possible array (2^32 - 1 elements), returns `[]` and none is built. A value that is not a
45
+ * positive safe integer also returns `[]`.
46
+ *
47
+ * @defaultValue `1_000_000`
48
+ */
40
49
  maxPieces?: number;
41
50
  }): Array<{
51
+ /**
52
+ * The instant the interval begins at, as a zoned ISO 8601 string with offset and bracketed time
53
+ * zone. It keeps a calendar annotation such as `[u-ca=hebrew]` when the inputs carry one.
54
+ */
42
55
  start: string;
56
+ /**
57
+ * The first instant after the interval, in the same format as `start`. It is exclusive: the
58
+ * interval holds everything from `start` up to but not including this value. It can equal
59
+ * `start`, which makes the interval empty.
60
+ */
43
61
  end: string;
44
62
  }>;
@@ -13,9 +13,13 @@ import { exceedsPieceLimit, resolveMaxPieces } from "../../internal/maxPieces.js
13
13
  * - Each boundary is `start + round((end - start) · i / n)` in integer epoch nanoseconds (real
14
14
  * elapsed time, exact at any span length), so a spring-forward day split in half lands exactly
15
15
  * on the DST transition's real midpoint rather than the local-clock midpoint.
16
+ * - When `n` is larger than the number of nanoseconds in the interval, some pieces are empty (their
17
+ * `start` equals their `end`): the result always has exactly `n` pieces.
16
18
  * - `n === 1` returns the original interval unchanged, as a single-element array.
17
19
  * - A zero-length interval (`start === end`) returns `n` identical zero-length sub-intervals, each
18
20
  * an empty `[start, start)` that holds no instant.
21
+ * - `start` and `end` may name different time zones. The first `start` and every inner boundary
22
+ * are written in `start`'s zone; the last `end` is the `end` argument, in its own zone.
19
23
  * - Returns `[]` when `n` is not a positive integer, or on invalid input (unparseable
20
24
  * start/end, `start > end`, leap-second strings).
21
25
  * - Accepts RFC 9557 calendar-annotated zoned strings (as produced by `convertZonedToCalendar`) as
@@ -25,14 +29,12 @@ import { exceedsPieceLimit, resolveMaxPieces } from "../../internal/maxPieces.js
25
29
  * unreadable as a set. A mismatch returns `[]`.
26
30
  * - Output boundaries are re-derived in the resolved calendar via `formatZonedInCalendar`, never
27
31
  * copied from an input string (E7's D7-zoned).
28
- * - `options.maxPieces` (positive safe integer, default `1_000_000`) bounds the output: when `n`
29
- * exceeds it, or exceeds the longest possible array (2^32 - 1), the function returns `[]`
30
- * before building any piece. An invalid `maxPieces` also returns `[]`.
32
+ * - An `n` over `options.maxPieces` returns `[]` before any piece is built.
31
33
  *
32
34
  * @param start ISO 8601 zoned datetime string for the interval start
33
35
  * @param end ISO 8601 zoned datetime string for the interval end
34
36
  * @param n number of equal sub-intervals to produce (positive integer)
35
- * @param options optional: `maxPieces` (positive safe integer, default `1_000_000`)
37
+ * @param options optional limit on the size of the output
36
38
  * @returns array of `n` `{ start, end }` records, or `[]` on invalid input
37
39
  *
38
40
  * @example intervalDivideEquallyZoned("2024-03-09T12:00:00-05:00[America/New_York]", "2024-03-11T12:00:00-04:00[America/New_York]", 2) // [{ start: "2024-03-09T12:00:00-05:00[America/New_York]", end: "2024-03-10T12:30:00-04:00[America/New_York]" }, { start: "2024-03-10T12:30:00-04:00[America/New_York]", end: "2024-03-11T12:00:00-04:00[America/New_York]" }] (47 real hours split in half)
@@ -8,13 +8,9 @@ import type { Disambiguation, Overflow } from "../../types/index.js";
8
8
  * resolve against `value` itself — no separate `relativeTo` is needed.
9
9
  * - Follows Temporal's AddZonedDateTime: the date portion of the duration (years, months, weeks,
10
10
  * days) moves the wall-clock date, then the time portion (hours and smaller) is added (subtracted
11
- * for `anchor: "end"`) in exact time. `disambiguation` ("compatible" (default), "earlier",
12
- * "later", or "reject" (returns null)) applies ONLY to the intermediate wall-clock date-time after
13
- * the date portion, exactly as Temporal's GetEpochNanosecondsFor resolves it: in a fall-back
14
- * (DST-end) overlap "compatible" and "earlier" take the earlier instant and "later" the later
15
- * one; in a spring-forward (DST-start) gap "compatible" and "later" move the wall clock forward by
16
- * the gap length and "earlier" back by it; "reject" returns null for both. It never re-resolves
17
- * the exact-time result, so a time-only duration ignores it.
11
+ * for `anchor: "end"`) in exact time. `disambiguation` applies ONLY to the intermediate
12
+ * wall-clock date-time after the date portion, exactly as Temporal's GetEpochNanosecondsFor
13
+ * resolves it. It never re-resolves the exact-time result.
18
14
  * - Compatibility: before 1.16.0 a date portion landing in a spring-forward gap was always moved
19
15
  * forward, whatever `disambiguation` said. Pass "compatible" (or omit it) to keep that result.
20
16
  * - Compatibility: before 1.16.0 a non-"compatible" `disambiguation` re-resolved the final wall
@@ -25,8 +21,6 @@ import type { Disambiguation, Overflow } from "../../types/index.js";
25
21
  * from a plain date-time, which has no UTC offset for it to act on.
26
22
  * - A negative `duration` (e.g. `"-P1D"`) can invert the computed span; returns null when that
27
23
  * happens, mirroring `intervalIntersectionZoned`'s `start > end` rejection.
28
- * - `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. adding 1 month
29
- * to Jan 31: "constrain" clamps to Feb 29/28, "reject" returns null.
30
24
  * - Accepts a RFC 9557 calendar-annotated zoned string (as produced by `convertZonedToCalendar`) as
31
25
  * well as a bare ISO one — E7 (issue #152). Calendar units in `duration` resolve against that
32
26
  * calendar, and both returned endpoints are re-derived in it via `formatZonedInCalendar`. There
@@ -37,7 +31,7 @@ import type { Disambiguation, Overflow } from "../../types/index.js";
37
31
  * @param value ISO 8601 zoned datetime string, optionally calendar-annotated
38
32
  * @param duration ISO 8601 duration string
39
33
  * @param anchor "start" | "end" — which endpoint `value` represents
40
- * @param options optional: disambiguation ("compatible" | "earlier" | "later" | "reject"), overflow ("constrain" | "reject")
34
+ * @param options optional settings for resolving a DST gap or overlap and an out-of-range date
41
35
  * @returns `{ start, end }` with the constructed span, or null on invalid input
42
36
  *
43
37
  * @example intervalFromDurationZoned("2024-01-01T00:00:00+00:00[UTC]", "P1D", "start") // { start: "2024-01-01T00:00:00+00:00[UTC]", end: "2024-01-02T00:00:00+00:00[UTC]" }
@@ -51,9 +45,34 @@ import type { Disambiguation, Overflow } from "../../types/index.js";
51
45
  * @example intervalFromDurationZoned("invalid", "P1D", "start") // null
52
46
  */
53
47
  export declare function intervalFromDurationZoned(value: string, duration: string, anchor: "start" | "end", options?: {
48
+ /**
49
+ * How the intermediate wall-clock date-time, reached after the date portion of the duration is
50
+ * applied, resolves when it falls in a DST gap or overlap. In a fall-back overlap
51
+ * `"compatible"` and `"earlier"` take the earlier instant and `"later"` the later one; in a
52
+ * spring-forward gap `"compatible"` and `"later"` move the wall clock forward by the gap length
53
+ * and `"earlier"` back by it. `"reject"` returns `null` for both, and a time-only duration
54
+ * ignores the option.
55
+ *
56
+ * @defaultValue `"compatible"`, Temporal's default.
57
+ */
54
58
  disambiguation?: Disambiguation;
59
+ /**
60
+ * What happens when the result names a day its month does not have, such as adding 1 month to
61
+ * 31 January. `"constrain"` clamps to the last valid day; `"reject"` returns `null`.
62
+ *
63
+ * @defaultValue `"constrain"`, Temporal's default.
64
+ */
55
65
  overflow?: Overflow;
56
66
  }): {
67
+ /**
68
+ * The instant the interval begins at, as a zoned ISO 8601 string with offset and bracketed time
69
+ * zone. It keeps a calendar annotation such as `[u-ca=hebrew]` when the inputs carry one.
70
+ */
57
71
  start: string;
72
+ /**
73
+ * The first instant after the interval, in the same format as `start`. It is exclusive: the
74
+ * interval holds everything from `start` up to but not including this value. It can equal
75
+ * `start`, which makes the interval empty.
76
+ */
58
77
  end: string;
59
78
  } | null;
@@ -3,6 +3,7 @@ import { isValidDuration } from "../../duration/validate/index.js";
3
3
  import { addToZonedDisambiguated, calendarSystemOfZonedValue, formatZonedInCalendar, parseCalendarZonedValue, resolveOverflow, } from "../../internal/index.js";
4
4
  import { isValidCalendarZonedDateTime } from "../validate/index.js";
5
5
  import { isOptionsArgument } from "../../internal/isObject.js";
6
+ import { optionOrDefault } from "../../internal/optionOrDefault.js";
6
7
  /**
7
8
  * Construct a zoned interval from a single point plus an ISO 8601 duration, anchored at either end.
8
9
  *
@@ -12,13 +13,9 @@ import { isOptionsArgument } from "../../internal/isObject.js";
12
13
  * resolve against `value` itself — no separate `relativeTo` is needed.
13
14
  * - Follows Temporal's AddZonedDateTime: the date portion of the duration (years, months, weeks,
14
15
  * days) moves the wall-clock date, then the time portion (hours and smaller) is added (subtracted
15
- * for `anchor: "end"`) in exact time. `disambiguation` ("compatible" (default), "earlier",
16
- * "later", or "reject" (returns null)) applies ONLY to the intermediate wall-clock date-time after
17
- * the date portion, exactly as Temporal's GetEpochNanosecondsFor resolves it: in a fall-back
18
- * (DST-end) overlap "compatible" and "earlier" take the earlier instant and "later" the later
19
- * one; in a spring-forward (DST-start) gap "compatible" and "later" move the wall clock forward by
20
- * the gap length and "earlier" back by it; "reject" returns null for both. It never re-resolves
21
- * the exact-time result, so a time-only duration ignores it.
16
+ * for `anchor: "end"`) in exact time. `disambiguation` applies ONLY to the intermediate
17
+ * wall-clock date-time after the date portion, exactly as Temporal's GetEpochNanosecondsFor
18
+ * resolves it. It never re-resolves the exact-time result.
22
19
  * - Compatibility: before 1.16.0 a date portion landing in a spring-forward gap was always moved
23
20
  * forward, whatever `disambiguation` said. Pass "compatible" (or omit it) to keep that result.
24
21
  * - Compatibility: before 1.16.0 a non-"compatible" `disambiguation` re-resolved the final wall
@@ -29,8 +26,6 @@ import { isOptionsArgument } from "../../internal/isObject.js";
29
26
  * from a plain date-time, which has no UTC offset for it to act on.
30
27
  * - A negative `duration` (e.g. `"-P1D"`) can invert the computed span; returns null when that
31
28
  * happens, mirroring `intervalIntersectionZoned`'s `start > end` rejection.
32
- * - `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. adding 1 month
33
- * to Jan 31: "constrain" clamps to Feb 29/28, "reject" returns null.
34
29
  * - Accepts a RFC 9557 calendar-annotated zoned string (as produced by `convertZonedToCalendar`) as
35
30
  * well as a bare ISO one — E7 (issue #152). Calendar units in `duration` resolve against that
36
31
  * calendar, and both returned endpoints are re-derived in it via `formatZonedInCalendar`. There
@@ -41,7 +36,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
41
36
  * @param value ISO 8601 zoned datetime string, optionally calendar-annotated
42
37
  * @param duration ISO 8601 duration string
43
38
  * @param anchor "start" | "end" — which endpoint `value` represents
44
- * @param options optional: disambiguation ("compatible" | "earlier" | "later" | "reject"), overflow ("constrain" | "reject")
39
+ * @param options optional settings for resolving a DST gap or overlap and an out-of-range date
45
40
  * @returns `{ start, end }` with the constructed span, or null on invalid input
46
41
  *
47
42
  * @example intervalFromDurationZoned("2024-01-01T00:00:00+00:00[UTC]", "P1D", "start") // { start: "2024-01-01T00:00:00+00:00[UTC]", end: "2024-01-02T00:00:00+00:00[UTC]" }
@@ -68,9 +63,7 @@ export function intervalFromDurationZoned(value, duration, anchor, options) {
68
63
  if (anchor !== "start" && anchor !== "end") {
69
64
  return null;
70
65
  }
71
- const disambiguation = options?.disambiguation === undefined
72
- ? "compatible"
73
- : options.disambiguation;
66
+ const disambiguation = optionOrDefault(options?.disambiguation, "compatible");
74
67
  const overflow = resolveOverflow(options?.overflow);
75
68
  try {
76
69
  const calendar = calendarSystemOfZonedValue(value);
@@ -37,6 +37,15 @@
37
37
  * @example intervalIntersectionZoned("invalid", "2024-06-30T23:59:59+00:00[UTC]", "2024-04-01T00:00:00+00:00[UTC]", "2024-12-31T23:59:59+00:00[UTC]") // null
38
38
  */
39
39
  export declare function intervalIntersectionZoned(aStart: string, aEnd: string, bStart: string, bEnd: string): {
40
+ /**
41
+ * The instant the interval begins at, as a zoned ISO 8601 string with offset and bracketed time
42
+ * zone. It keeps a calendar annotation such as `[u-ca=hebrew]` when the inputs carry one.
43
+ */
40
44
  start: string;
45
+ /**
46
+ * The first instant after the interval, in the same format as `start`. It is exclusive: the
47
+ * interval holds everything from `start` up to but not including this value. It can equal
48
+ * `start`, which makes the interval empty.
49
+ */
41
50
  end: string;
42
51
  } | null;
@@ -13,6 +13,8 @@
13
13
  * each record's `end` is the next record's `start` and belongs only to that next record, so the
14
14
  * pieces share no instant and together cover `[start, end)` exactly once.
15
15
  * - Returns `[{ start, end }]` (the whole interval, unsplit) when no valid in-range point remains.
16
+ * - A piece's `end` equals its `start` only when the interval itself is zero-length (`start`
17
+ * equal to `end`): the result is then that one empty piece, whatever the points.
16
18
  * - Returns `[]` when `points` is not an array, when any element is not a valid ISO
17
19
  * ZonedDateTime string, or on invalid input (unparseable start/end, `start > end`,
18
20
  * leap-second strings).
@@ -34,6 +36,15 @@
34
36
  * @example intervalSplitAtZoned("invalid", "2024-01-10T00:00:00+00:00[UTC]", ["2024-01-05T00:00:00+00:00[UTC]"]) // []
35
37
  */
36
38
  export declare function intervalSplitAtZoned(start: string, end: string, points: string[]): Array<{
39
+ /**
40
+ * The instant the interval begins at, as a zoned ISO 8601 string with offset and bracketed time
41
+ * zone. It keeps a calendar annotation such as `[u-ca=hebrew]` when the inputs carry one.
42
+ */
37
43
  start: string;
44
+ /**
45
+ * The first instant after the interval, in the same format as `start`. It is exclusive: the
46
+ * interval holds everything from `start` up to but not including this value. It can equal
47
+ * `start`, which makes the interval empty.
48
+ */
38
49
  end: string;
39
50
  }>;
@@ -17,6 +17,8 @@ import { isValidCalendarZonedInterval } from "./validate/index.js";
17
17
  * each record's `end` is the next record's `start` and belongs only to that next record, so the
18
18
  * pieces share no instant and together cover `[start, end)` exactly once.
19
19
  * - Returns `[{ start, end }]` (the whole interval, unsplit) when no valid in-range point remains.
20
+ * - A piece's `end` equals its `start` only when the interval itself is zero-length (`start`
21
+ * equal to `end`): the result is then that one empty piece, whatever the points.
20
22
  * - Returns `[]` when `points` is not an array, when any element is not a valid ISO
21
23
  * ZonedDateTime string, or on invalid input (unparseable start/end, `start > end`,
22
24
  * leap-second strings).
@@ -39,6 +39,15 @@
39
39
  * @example intervalUnionZoned("invalid", "2024-06-30T23:59:59+00:00[UTC]", "2024-04-01T00:00:00+00:00[UTC]", "2024-12-31T23:59:59+00:00[UTC]") // null
40
40
  */
41
41
  export declare function intervalUnionZoned(aStart: string, aEnd: string, bStart: string, bEnd: string): {
42
+ /**
43
+ * The instant the interval begins at, as a zoned ISO 8601 string with offset and bracketed time
44
+ * zone. It keeps a calendar annotation such as `[u-ca=hebrew]` when the inputs carry one.
45
+ */
42
46
  start: string;
47
+ /**
48
+ * The first instant after the interval, in the same format as `start`. It is exclusive: the
49
+ * interval holds everything from `start` up to but not including this value. It is always later
50
+ * than `start`.
51
+ */
43
52
  end: string;
44
53
  } | null;