@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
@@ -14,20 +14,13 @@ import type { Disambiguation, Offset, Overflow } from "../../types/index.js";
14
14
  * their current value. An empty object is a no-op. `calendar`, `timeZone`, and `offset` are
15
15
  * deliberately excluded from `fields` — this function only sets date/time components, never
16
16
  * the zone or calendar identity, and `offset` is controlled separately via `options.offset`.
17
- * - `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. setting
18
- * `month: 2` on a value whose `day` is 31: "constrain" clamps to Feb 29/28, "reject" throws
19
- * (resulting in "").
20
- * - `offset` defaults to `"prefer"`, as Temporal's `ZonedDateTime#with` does: when the source's
21
- * offset is still valid for the new wall time (a repeated fall-back hour), it is kept and
22
- * `disambiguation` is not consulted; pass `offset: "ignore"` to re-resolve the wall time through
23
- * `disambiguation` instead. In a gap the source offset cannot hold, so `disambiguation` applies.
24
17
  * - **Compatibility:** before 1.16.0 `offset` defaulted to `"ignore"`. Pass `{ offset: "ignore" }`
25
18
  * to keep that resolution.
26
19
  * - Returns "" for invalid input.
27
20
  *
28
21
  * @param value zoned ISO 8601 datetime string
29
22
  * @param fields Partial<Temporal.ZonedDateTimeLike> object (excluding calendar/timeZone/offset) specifying fields to set
30
- * @param options optional: overflow ("constrain" | "reject"), disambiguation ("compatible" | "earlier" | "later" | "reject"), offset ("prefer" | "use" | "ignore" | "reject", default "prefer")
23
+ * @param options optional settings for resolving an out-of-range date and the new wall-clock time
31
24
  * @returns zoned ISO 8601 string with fields set, or "" on invalid input
32
25
  *
33
26
  * @example setZoned("2024-03-10T12:00:00-04:00[America/New_York]", { hour: 9 }) // "2024-03-10T09:00:00-04:00[America/New_York]"
@@ -39,7 +32,31 @@ import type { Disambiguation, Offset, Overflow } from "../../types/index.js";
39
32
  * @example setZoned("invalid", { hour: 9 }) // ""
40
33
  */
41
34
  export declare function setZoned(value: string, fields: Omit<Temporal.ZonedDateTimeLike, "calendar" | "timeZone" | "offset">, options?: {
35
+ /**
36
+ * What happens when the result names a day its month does not have, such as setting `month: 2`
37
+ * on 31 January. `"constrain"` clamps to the last valid day; `"reject"` returns `""`.
38
+ *
39
+ * @defaultValue `"constrain"`, Temporal's default.
40
+ */
42
41
  overflow?: Overflow;
42
+ /**
43
+ * How the new wall-clock time resolves when it falls in a DST gap or overlap and `offset` does
44
+ * not settle it. In a fall-back overlap `"compatible"` and `"earlier"` take the earlier instant
45
+ * and `"later"` the later one; in a spring-forward gap `"compatible"` and `"later"` move the
46
+ * wall clock forward by the gap length and `"earlier"` back by it. `"reject"` returns `""` for
47
+ * both.
48
+ *
49
+ * @defaultValue `"compatible"`, Temporal's default.
50
+ */
43
51
  disambiguation?: Disambiguation;
52
+ /**
53
+ * How the source's UTC offset is treated at the new wall-clock time, as in Temporal's
54
+ * `ZonedDateTime#with`. `"prefer"` keeps it while it is still valid there (a repeated fall-back
55
+ * hour) and otherwise resolves through `disambiguation`; `"ignore"` always resolves through
56
+ * `disambiguation`. `"use"` keeps the offset even when that moves the wall clock, and
57
+ * `"reject"` returns `""` when the offset is not valid for the new wall time.
58
+ *
59
+ * @defaultValue `"prefer"`, Temporal's default.
60
+ */
44
61
  offset?: Offset;
45
62
  }): string;
@@ -2,6 +2,7 @@ import { Temporal } from "@js-temporal/polyfill";
2
2
  import { resolveOverflow, withZonedFields, zonedDateTimeFrom, } from "../../internal/index.js";
3
3
  import { isValidZonedDateTime } from "../validate/index.js";
4
4
  import { isOptionsArgument } from "../../internal/isObject.js";
5
+ import { optionOrDefault } from "../../internal/optionOrDefault.js";
5
6
  /**
6
7
  * Return a zoned ISO 8601 datetime string with the given `fields` set on `value`.
7
8
  *
@@ -16,20 +17,13 @@ import { isOptionsArgument } from "../../internal/isObject.js";
16
17
  * their current value. An empty object is a no-op. `calendar`, `timeZone`, and `offset` are
17
18
  * deliberately excluded from `fields` — this function only sets date/time components, never
18
19
  * the zone or calendar identity, and `offset` is controlled separately via `options.offset`.
19
- * - `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. setting
20
- * `month: 2` on a value whose `day` is 31: "constrain" clamps to Feb 29/28, "reject" throws
21
- * (resulting in "").
22
- * - `offset` defaults to `"prefer"`, as Temporal's `ZonedDateTime#with` does: when the source's
23
- * offset is still valid for the new wall time (a repeated fall-back hour), it is kept and
24
- * `disambiguation` is not consulted; pass `offset: "ignore"` to re-resolve the wall time through
25
- * `disambiguation` instead. In a gap the source offset cannot hold, so `disambiguation` applies.
26
20
  * - **Compatibility:** before 1.16.0 `offset` defaulted to `"ignore"`. Pass `{ offset: "ignore" }`
27
21
  * to keep that resolution.
28
22
  * - Returns "" for invalid input.
29
23
  *
30
24
  * @param value zoned ISO 8601 datetime string
31
25
  * @param fields Partial<Temporal.ZonedDateTimeLike> object (excluding calendar/timeZone/offset) specifying fields to set
32
- * @param options optional: overflow ("constrain" | "reject"), disambiguation ("compatible" | "earlier" | "later" | "reject"), offset ("prefer" | "use" | "ignore" | "reject", default "prefer")
26
+ * @param options optional settings for resolving an out-of-range date and the new wall-clock time
33
27
  * @returns zoned ISO 8601 string with fields set, or "" on invalid input
34
28
  *
35
29
  * @example setZoned("2024-03-10T12:00:00-04:00[America/New_York]", { hour: 9 }) // "2024-03-10T09:00:00-04:00[America/New_York]"
@@ -48,11 +42,9 @@ export function setZoned(value, fields, options) {
48
42
  if (!isValidZonedDateTime(value))
49
43
  return "";
50
44
  const overflow = resolveOverflow(options?.overflow);
51
- const disambiguation = options?.disambiguation === undefined
52
- ? "compatible"
53
- : options.disambiguation;
45
+ const disambiguation = optionOrDefault(options?.disambiguation, "compatible");
54
46
  // Temporal ZonedDateTime#with's own default: keep the source offset while it is still valid.
55
- const offset = options?.offset === undefined ? "prefer" : options.offset;
47
+ const offset = optionOrDefault(options?.offset, "prefer");
56
48
  try {
57
49
  const zoned = zonedDateTimeFrom(value);
58
50
  // Temporal.ZonedDateTime.prototype.with() throws on an empty fields object ("no supported
@@ -4,11 +4,10 @@ import type { FractionalDigit } from "../../types/index.js";
4
4
  *
5
5
  * - Calculates which quarter (1-4) the date falls into and returns the first instant of that quarter, with every field below the day reset — milliseconds, microseconds and nanoseconds included.
6
6
  * - Returns the real start of the local quarter in `value`'s own zone (see `floorToZone`), so the result is never after `value`: a skipped first midnight starts at the quarter's first real instant, and a repeated one (`Africa/Tunis`, 1978-10-01) at its first pass.
7
- * - `fractionalSecondDigits` controls how many fractional seconds are included in the output: 0 (default — no fractional seconds), 3 (milliseconds), 6 (microseconds), or 9 (nanoseconds).
8
7
  * - Validation is performed on the input.
9
8
  *
10
9
  * @param value ISO ZonedDateTime string
11
- * @param optionsArg optional: fractionalSecondDigits (0 | 3 | 6 | 9, default 0)
10
+ * @param optionsArg optional setting for the precision of the output string
12
11
  * @returns ISO ZonedDateTime string for the start of the quarter, or "" on invalid input
13
12
  *
14
13
  * @example startOfQuarterForZoned("2024-02-15T14:30:00+00:00[UTC]") // "2024-01-01T00:00:00+00:00[UTC]"
@@ -18,5 +17,11 @@ import type { FractionalDigit } from "../../types/index.js";
18
17
  * @example startOfQuarterForZoned("invalid") // ""
19
18
  */
20
19
  export declare function startOfQuarterForZoned(value: string, optionsArg?: {
20
+ /**
21
+ * The number of fractional-second digits the result is written with, `0` to `9`, or `"auto"` to
22
+ * drop trailing zeros. A start has no sub-second part, so any digits written are zeros.
23
+ *
24
+ * @defaultValue `0`
25
+ */
21
26
  fractionalSecondDigits?: FractionalDigit;
22
27
  }): string;
@@ -1,16 +1,16 @@
1
1
  import { zonedDateTimeFrom, zonedUnitStart } from "../../internal/index.js";
2
2
  import { isValidZonedDateTime } 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 start of the quarter for a given zoned ISO datetime.
6
7
  *
7
8
  * - Calculates which quarter (1-4) the date falls into and returns the first instant of that quarter, with every field below the day reset — milliseconds, microseconds and nanoseconds included.
8
9
  * - Returns the real start of the local quarter in `value`'s own zone (see `floorToZone`), so the result is never after `value`: a skipped first midnight starts at the quarter's first real instant, and a repeated one (`Africa/Tunis`, 1978-10-01) at its first pass.
9
- * - `fractionalSecondDigits` controls how many fractional seconds are included in the output: 0 (default — no fractional seconds), 3 (milliseconds), 6 (microseconds), or 9 (nanoseconds).
10
10
  * - Validation is performed on the input.
11
11
  *
12
12
  * @param value ISO ZonedDateTime string
13
- * @param optionsArg optional: fractionalSecondDigits (0 | 3 | 6 | 9, default 0)
13
+ * @param optionsArg optional setting for the precision of the output string
14
14
  * @returns ISO ZonedDateTime string for the start of the quarter, or "" on invalid input
15
15
  *
16
16
  * @example startOfQuarterForZoned("2024-02-15T14:30:00+00:00[UTC]") // "2024-01-01T00:00:00+00:00[UTC]"
@@ -27,9 +27,7 @@ export function startOfQuarterForZoned(value, optionsArg) {
27
27
  if (!isValidZonedDateTime(value)) {
28
28
  return "";
29
29
  }
30
- const fractionalSecondDigits = optionsArg?.fractionalSecondDigits === undefined
31
- ? 0
32
- : optionsArg.fractionalSecondDigits;
30
+ const fractionalSecondDigits = optionOrDefault(optionsArg?.fractionalSecondDigits, 0);
33
31
  try {
34
32
  const start = zonedUnitStart(zonedDateTimeFrom(value), "quarter");
35
33
  return start ? start.toString({ fractionalSecondDigits }) : "";
@@ -4,18 +4,16 @@ import type { DateTimeUnit, FractionalDigit } from "../../types/index.js";
4
4
  * Return the start of the specified date-time `unit` for a given zoned ISO 8601 datetime string.
5
5
  *
6
6
  * - Supports: "year", "month", "week", "day", "hour", "minute", "second", "millisecond", "microsecond", "nanosecond", each also in its plural form (`"days"`), as Temporal accepts.
7
- * - `weekStartsOn` other than `"monday"` or `"sunday"` returns "".
8
7
  * - Returns the real start of the local `unit` containing `value` in its own zone — the same bucket `floorToZone` uses — so the result is never after `value`. A local hour `Pacific/Chatham`'s spring-forward leaves only 15 minutes long starts at 03:45, the second pass of New York's repeated fall-back hour starts at its own 01:00 (−05:00), and a day whose midnight was skipped starts at its first real instant.
9
8
  * - A transition that reopens the previous local date makes that stretch its own bucket. `America/Goose_Bay` fell back at 00:01 on 7 November 2010, re-entering 6 November for 59 minutes, so `2010-11-06T23:30:00-04:00` has a day that starts at 23:01 — consistent with `floorToZone`, `bucketRange` and `intervalCountZoned`.
10
9
  * - A midnight repeated on the same date stays one day: `America/Havana`'s 2024-11-03 starts at its first 00:00 (−04:00) and runs 25 hours, matching Temporal's `startOfDay()`.
11
10
  * - Takes no `disambiguation` or `offset`: a boundary is always a real instant, as TC39's `startOfDay()`
12
11
  * takes neither. Those ignored options were removed in 1.16.0.
13
- * - `fractionalSecondDigits` defaults to 3, 6 or 9 for "millisecond", "microsecond" or "nanosecond", and 0 otherwise.
14
12
  * - Returns "" for invalid input.
15
13
  *
16
14
  * @param value zoned ISO 8601 datetime string
17
15
  * @param unit date or time unit, singular or plural, to specify the unit for the start
18
- * @param options optional: weekStartsOn ("monday" | "sunday"), fractionalSecondDigits (number)
16
+ * @param optionsArg optional settings for the week's first day and the precision of the output string
19
17
  * @returns zoned ISO 8601 string representing the start of the specified unit, or "" on invalid input
20
18
  *
21
19
  * @example startOfZoned("2024-02-29T12:34:56+00:00[UTC]", "month") // "2024-02-01T00:00:00+00:00[UTC]"
@@ -26,6 +24,20 @@ import type { DateTimeUnit, FractionalDigit } from "../../types/index.js";
26
24
  * @example startOfZoned("2024-11-03T00:30:00-05:00[America/Havana]", "day") // "2024-11-03T00:00:00-04:00[America/Havana]" (midnight repeated on the same date: one 25-hour day)
27
25
  */
28
26
  export declare function startOfZoned(value: string, unit: Temporal.SmallestUnit<DateTimeUnit>, optionsArg?: {
27
+ /**
28
+ * The first day of the week, which sets where a `"week"` unit starts. `"monday"` is the ISO
29
+ * 8601 week, Monday to Sunday; `"sunday"` runs Sunday to Saturday. Any other value returns
30
+ * `""`, whatever the unit.
31
+ *
32
+ * @defaultValue `"monday"`
33
+ */
29
34
  weekStartsOn?: "monday" | "sunday";
35
+ /**
36
+ * The number of fractional-second digits the result is written with, `0` to `9`, or `"auto"` to
37
+ * drop trailing zeros. Fewer digits than `unit` names truncate, as Temporal's `toString` does.
38
+ *
39
+ * @defaultValue The digits `unit` names: `3` for `"millisecond"`, `6` for `"microsecond"`, `9`
40
+ * for `"nanosecond"` and `0` for any coarser unit.
41
+ */
30
42
  fractionalSecondDigits?: FractionalDigit;
31
43
  }): string;
@@ -4,18 +4,16 @@ import { isOptionsArgument } from "../../internal/isObject.js";
4
4
  * Return the start of the specified date-time `unit` for a given zoned ISO 8601 datetime string.
5
5
  *
6
6
  * - Supports: "year", "month", "week", "day", "hour", "minute", "second", "millisecond", "microsecond", "nanosecond", each also in its plural form (`"days"`), as Temporal accepts.
7
- * - `weekStartsOn` other than `"monday"` or `"sunday"` returns "".
8
7
  * - Returns the real start of the local `unit` containing `value` in its own zone — the same bucket `floorToZone` uses — so the result is never after `value`. A local hour `Pacific/Chatham`'s spring-forward leaves only 15 minutes long starts at 03:45, the second pass of New York's repeated fall-back hour starts at its own 01:00 (−05:00), and a day whose midnight was skipped starts at its first real instant.
9
8
  * - A transition that reopens the previous local date makes that stretch its own bucket. `America/Goose_Bay` fell back at 00:01 on 7 November 2010, re-entering 6 November for 59 minutes, so `2010-11-06T23:30:00-04:00` has a day that starts at 23:01 — consistent with `floorToZone`, `bucketRange` and `intervalCountZoned`.
10
9
  * - A midnight repeated on the same date stays one day: `America/Havana`'s 2024-11-03 starts at its first 00:00 (−04:00) and runs 25 hours, matching Temporal's `startOfDay()`.
11
10
  * - Takes no `disambiguation` or `offset`: a boundary is always a real instant, as TC39's `startOfDay()`
12
11
  * takes neither. Those ignored options were removed in 1.16.0.
13
- * - `fractionalSecondDigits` defaults to 3, 6 or 9 for "millisecond", "microsecond" or "nanosecond", and 0 otherwise.
14
12
  * - Returns "" for invalid input.
15
13
  *
16
14
  * @param value zoned ISO 8601 datetime string
17
15
  * @param unit date or time unit, singular or plural, to specify the unit for the start
18
- * @param options optional: weekStartsOn ("monday" | "sunday"), fractionalSecondDigits (number)
16
+ * @param optionsArg optional settings for the week's first day and the precision of the output string
19
17
  * @returns zoned ISO 8601 string representing the start of the specified unit, or "" on invalid input
20
18
  *
21
19
  * @example startOfZoned("2024-02-29T12:34:56+00:00[UTC]", "month") // "2024-02-01T00:00:00+00:00[UTC]"
@@ -13,13 +13,9 @@ import type { DateTimeDurationUnit, Disambiguation, Overflow } from "../../types
13
13
  * annotation after the zone, canonical calendar ids); see `isValidCalendarZonedDateTime`.
14
14
  * - Follows Temporal's AddZonedDateTime: the date portion of the duration (years, months, weeks,
15
15
  * days) moves the wall-clock date, then the time portion (hours and smaller) is subtracted in exact
16
- * time. `disambiguation` ("compatible" (default), "earlier", "later", or "reject" (returns
17
- * "")) applies ONLY to the intermediate wall-clock date-time after the date portion, exactly as
18
- * Temporal's GetEpochNanosecondsFor resolves it: in a fall-back (DST-end) overlap "compatible"
19
- * and "earlier" take the earlier instant and "later" the later one; in a spring-forward
20
- * (DST-start) gap "compatible" and "later" move the wall clock forward by the gap length and
21
- * "earlier" back by it; "reject" returns "" for both. It never re-resolves the exact-time
22
- * result, so a time-only duration ignores it.
16
+ * time. `disambiguation` applies ONLY to the intermediate wall-clock date-time after the date
17
+ * portion, exactly as Temporal's GetEpochNanosecondsFor resolves it. It never re-resolves the
18
+ * exact-time result.
23
19
  * - Compatibility: before 1.16.0 a date portion landing in a spring-forward gap was always moved
24
20
  * forward, whatever `disambiguation` said, so "earlier" matched "compatible" and "reject" did not
25
21
  * fail. Pass "compatible" (or omit it) to keep the forward result.
@@ -31,13 +27,11 @@ import type { DateTimeDurationUnit, Disambiguation, Overflow } from "../../types
31
27
  * - There is no `offset` option (removed in 1.16.0): the intermediate wall clock is resolved from
32
28
  * a plain date-time, which has no UTC offset for it to act on (Temporal
33
29
  * `PlainDateTime#toZonedDateTime` reads only `disambiguation`).
34
- * - `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. subtracting
35
- * 1 month from Mar 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in "").
36
30
  * - Returns "" for invalid input.
37
31
  *
38
32
  * @param value ISO 8601 zoned datetime string, optionally calendar-annotated
39
33
  * @param units Partial<Record<DateTimeDurationUnit, number>> object specifying units to subtract
40
- * @param optionsArg optional: disambiguation ("compatible" | "earlier" | "later" | "reject"), overflow ("constrain" | "reject")
34
+ * @param optionsArg optional settings for resolving a DST gap or overlap and an out-of-range date
41
35
  * @returns zoned ISO 8601 string on success, or "" on invalid input
42
36
  *
43
37
  * @example subtractZoned("2024-03-10T12:00:00-04:00[America/New_York]", { days: 5 }) // "2024-03-05T12:00:00-05:00[America/New_York]"
@@ -54,6 +48,22 @@ import type { DateTimeDurationUnit, Disambiguation, Overflow } from "../../types
54
48
  * @example subtractZoned("2024-03-10T14:30:00-04:00[u-ca=hebrew][America/New_York]", { days: 1 }) // "" (calendar before zone is not RFC 9557)
55
49
  */
56
50
  export declare function subtractZoned(value: string, units: Partial<Record<DateTimeDurationUnit, number>>, optionsArg?: {
51
+ /**
52
+ * How the intermediate wall-clock date-time, reached after the date portion of the duration is
53
+ * applied, resolves when it falls in a DST gap or overlap. In a fall-back overlap
54
+ * `"compatible"` and `"earlier"` take the earlier instant and `"later"` the later one; in a
55
+ * spring-forward gap `"compatible"` and `"later"` move the wall clock forward by the gap length
56
+ * and `"earlier"` back by it. `"reject"` returns `""` for both, and a time-only duration
57
+ * ignores the option.
58
+ *
59
+ * @defaultValue `"compatible"`, Temporal's default.
60
+ */
57
61
  disambiguation?: Disambiguation;
62
+ /**
63
+ * What happens when the result names a day its month does not have, such as subtracting 1 month
64
+ * from 31 March. `"constrain"` clamps to the last valid day; `"reject"` returns `""`.
65
+ *
66
+ * @defaultValue `"constrain"`, Temporal's default.
67
+ */
58
68
  overflow?: Overflow;
59
69
  }): string;
@@ -3,6 +3,7 @@ import { addToZonedDisambiguated, calendarSystemOfZonedValue, formatZonedInCalen
3
3
  import { isValidDateTimeDurationUnit } from "../../plain/validate/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
  * Subtract a temporal amount from a zoned ISO 8601 datetime string and return a zoned ISO 8601 string.
8
9
  *
@@ -17,13 +18,9 @@ import { isOptionsArgument } from "../../internal/isObject.js";
17
18
  * annotation after the zone, canonical calendar ids); see `isValidCalendarZonedDateTime`.
18
19
  * - Follows Temporal's AddZonedDateTime: the date portion of the duration (years, months, weeks,
19
20
  * days) moves the wall-clock date, then the time portion (hours and smaller) is subtracted in exact
20
- * time. `disambiguation` ("compatible" (default), "earlier", "later", or "reject" (returns
21
- * "")) applies ONLY to the intermediate wall-clock date-time after the date portion, exactly as
22
- * Temporal's GetEpochNanosecondsFor resolves it: in a fall-back (DST-end) overlap "compatible"
23
- * and "earlier" take the earlier instant and "later" the later one; in a spring-forward
24
- * (DST-start) gap "compatible" and "later" move the wall clock forward by the gap length and
25
- * "earlier" back by it; "reject" returns "" for both. It never re-resolves the exact-time
26
- * result, so a time-only duration ignores it.
21
+ * time. `disambiguation` applies ONLY to the intermediate wall-clock date-time after the date
22
+ * portion, exactly as Temporal's GetEpochNanosecondsFor resolves it. It never re-resolves the
23
+ * exact-time result.
27
24
  * - Compatibility: before 1.16.0 a date portion landing in a spring-forward gap was always moved
28
25
  * forward, whatever `disambiguation` said, so "earlier" matched "compatible" and "reject" did not
29
26
  * fail. Pass "compatible" (or omit it) to keep the forward result.
@@ -35,13 +32,11 @@ import { isOptionsArgument } from "../../internal/isObject.js";
35
32
  * - There is no `offset` option (removed in 1.16.0): the intermediate wall clock is resolved from
36
33
  * a plain date-time, which has no UTC offset for it to act on (Temporal
37
34
  * `PlainDateTime#toZonedDateTime` reads only `disambiguation`).
38
- * - `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. subtracting
39
- * 1 month from Mar 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in "").
40
35
  * - Returns "" for invalid input.
41
36
  *
42
37
  * @param value ISO 8601 zoned datetime string, optionally calendar-annotated
43
38
  * @param units Partial<Record<DateTimeDurationUnit, number>> object specifying units to subtract
44
- * @param optionsArg optional: disambiguation ("compatible" | "earlier" | "later" | "reject"), overflow ("constrain" | "reject")
39
+ * @param optionsArg optional settings for resolving a DST gap or overlap and an out-of-range date
45
40
  * @returns zoned ISO 8601 string on success, or "" on invalid input
46
41
  *
47
42
  * @example subtractZoned("2024-03-10T12:00:00-04:00[America/New_York]", { days: 5 }) // "2024-03-05T12:00:00-05:00[America/New_York]"
@@ -70,9 +65,7 @@ export function subtractZoned(value, units, optionsArg) {
70
65
  if (!validZonedDateTime || !validUnits || !validAmounts) {
71
66
  return "";
72
67
  }
73
- const disambiguation = optionsArg?.disambiguation === undefined
74
- ? "compatible"
75
- : optionsArg.disambiguation;
68
+ const disambiguation = optionOrDefault(optionsArg?.disambiguation, "compatible");
76
69
  const overflow = resolveOverflow(optionsArg?.overflow);
77
70
  try {
78
71
  const calendar = calendarSystemOfZonedValue(value);
@@ -6,8 +6,11 @@ import type { DateTimeUnit } from "../../types/index.js";
6
6
  * - Equality is measured on each value's own local wall-clock fields (its own
7
7
  * time zone), not on the underlying instant or time zone identifier — the
8
8
  * same instant can be "the same day" in one zone and a different day in
9
- * another, and this function answers per each value's own zone, the way
10
- * Luxon's `dt.hasSame(other, unit)` does for zoned `DateTime`s.
9
+ * another, and this function answers per each value's own zone, because a
10
+ * `Temporal.ZonedDateTime` reads its calendar and clock fields in its own
11
+ * time zone.
12
+ * - Comparison: Luxon's `dt.hasSame(other, unit)` also compares the two values'
13
+ * local times.
11
14
  * - Each value's start-of-unit is its real local bucket (see `startOfZoned`), so a bucket a
12
15
  * zone transition shortened is still its own unit: in `Pacific/Chatham` on its 2024
13
16
  * spring-forward, 03:50 and 04:05 are different hours, because the 03:00 hour lasted only
@@ -18,10 +21,9 @@ import type { DateTimeUnit } from "../../types/index.js";
18
21
  * compared by their buckets' local labels, since their instants never line up.
19
22
  * - `"month"` requires the same month AND year, matching `areDateTimesEqualBy`.
20
23
  * - `unit` accepts the singular or plural name (`"day"` or `"days"`), as Temporal does.
21
- * - `weekStartsOn` other than `"monday"` or `"sunday"` returns false.
22
24
  * - Returns false for an unsupported unit or invalid input.
23
25
  *
24
- * Mapping from date-fns (Decision 5, `context/roadmap/issues/J.md`):
26
+ * Mapping from date-fns:
25
27
  * - `isSameDay(a, b)` → `areZonedEqualBy(a, b, "day")`
26
28
  * - `isSameMonth(a, b)` → `areZonedEqualBy(a, b, "month")`
27
29
  * - `isSameYear(a, b)` → `areZonedEqualBy(a, b, "year")`
@@ -29,7 +31,7 @@ import type { DateTimeUnit } from "../../types/index.js";
29
31
  * @param value1 first zoned ISO datetime string
30
32
  * @param value2 second zoned ISO datetime string
31
33
  * @param unit date or time unit, singular or plural, to compare by
32
- * @param optionsArg optional: weekStartsOn ("monday" | "sunday")
34
+ * @param optionsArg optional setting for the week's first day
33
35
  * @returns true if both values share the same local start-of-unit boundary, false on an unsupported unit or invalid input
34
36
  *
35
37
  * @example areZonedEqualBy("2024-03-15T10:00:00-04:00[America/New_York]", "2024-03-15T20:00:00+01:00[Europe/Berlin]", "day") // true (both are local March 15 in their own zone)
@@ -39,5 +41,12 @@ import type { DateTimeUnit } from "../../types/index.js";
39
41
  * @example areZonedEqualBy("invalid", "2024-03-15T10:00:00-04:00[America/New_York]", "day") // false
40
42
  */
41
43
  export declare function areZonedEqualBy(value1: string, value2: string, unit: Temporal.SmallestUnit<DateTimeUnit>, optionsArg?: {
44
+ /**
45
+ * The first day of the week, which sets where a `"week"` unit starts. `"monday"` is the ISO
46
+ * 8601 week, Monday to Sunday; `"sunday"` runs Sunday to Saturday. Any other value returns
47
+ * false, whatever the unit.
48
+ *
49
+ * @defaultValue `"monday"`
50
+ */
42
51
  weekStartsOn?: "monday" | "sunday";
43
52
  }): boolean;
@@ -12,8 +12,11 @@ import { isOptionsArgument } from "../../internal/isObject.js";
12
12
  * - Equality is measured on each value's own local wall-clock fields (its own
13
13
  * time zone), not on the underlying instant or time zone identifier — the
14
14
  * same instant can be "the same day" in one zone and a different day in
15
- * another, and this function answers per each value's own zone, the way
16
- * Luxon's `dt.hasSame(other, unit)` does for zoned `DateTime`s.
15
+ * another, and this function answers per each value's own zone, because a
16
+ * `Temporal.ZonedDateTime` reads its calendar and clock fields in its own
17
+ * time zone.
18
+ * - Comparison: Luxon's `dt.hasSame(other, unit)` also compares the two values'
19
+ * local times.
17
20
  * - Each value's start-of-unit is its real local bucket (see `startOfZoned`), so a bucket a
18
21
  * zone transition shortened is still its own unit: in `Pacific/Chatham` on its 2024
19
22
  * spring-forward, 03:50 and 04:05 are different hours, because the 03:00 hour lasted only
@@ -24,10 +27,9 @@ import { isOptionsArgument } from "../../internal/isObject.js";
24
27
  * compared by their buckets' local labels, since their instants never line up.
25
28
  * - `"month"` requires the same month AND year, matching `areDateTimesEqualBy`.
26
29
  * - `unit` accepts the singular or plural name (`"day"` or `"days"`), as Temporal does.
27
- * - `weekStartsOn` other than `"monday"` or `"sunday"` returns false.
28
30
  * - Returns false for an unsupported unit or invalid input.
29
31
  *
30
- * Mapping from date-fns (Decision 5, `context/roadmap/issues/J.md`):
32
+ * Mapping from date-fns:
31
33
  * - `isSameDay(a, b)` → `areZonedEqualBy(a, b, "day")`
32
34
  * - `isSameMonth(a, b)` → `areZonedEqualBy(a, b, "month")`
33
35
  * - `isSameYear(a, b)` → `areZonedEqualBy(a, b, "year")`
@@ -35,7 +37,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
35
37
  * @param value1 first zoned ISO datetime string
36
38
  * @param value2 second zoned ISO datetime string
37
39
  * @param unit date or time unit, singular or plural, to compare by
38
- * @param optionsArg optional: weekStartsOn ("monday" | "sunday")
40
+ * @param optionsArg optional setting for the week's first day
39
41
  * @returns true if both values share the same local start-of-unit boundary, false on an unsupported unit or invalid input
40
42
  *
41
43
  * @example areZonedEqualBy("2024-03-15T10:00:00-04:00[America/New_York]", "2024-03-15T20:00:00+01:00[Europe/Berlin]", "day") // true (both are local March 15 in their own zone)
@@ -7,13 +7,25 @@
7
7
  * @param zoned ISO ZonedDateTime string to check
8
8
  * @param start ISO ZonedDateTime string for the start of the range
9
9
  * @param end ISO ZonedDateTime string for the end of the range
10
- * @param options optional: inclusiveStart (boolean), inclusiveEnd (boolean)
10
+ * @param options optional settings for whether each end of the range is included
11
11
  * @returns boolean indicating whether zoned is between start and end
12
12
  *
13
13
  * @example isBetweenZoned("2024-02-29T12:00:00+00:00[UTC]", "2024-02-29T11:00:00+00:00[UTC]", "2024-02-29T13:00:00+00:00[UTC]") // true
14
14
  * @example isBetweenZoned("invalid", "2024-02-29T11:00:00+00:00[UTC]", "2024-02-29T13:00:00+00:00[UTC]") // false
15
15
  */
16
16
  export declare function isBetweenZoned(zoned: string, start: string, end: string, options?: {
17
+ /**
18
+ * Whether `zoned` at the same instant as `start` counts as inside the range. `false` requires
19
+ * it to be after `start`.
20
+ *
21
+ * @defaultValue `true`
22
+ */
17
23
  inclusiveStart?: boolean;
24
+ /**
25
+ * Whether `zoned` at the same instant as `end` counts as inside the range. `false` requires it
26
+ * to be before `end`.
27
+ *
28
+ * @defaultValue `true`
29
+ */
18
30
  inclusiveEnd?: boolean;
19
31
  }): boolean;
@@ -3,6 +3,7 @@ import { Temporal } from "@js-temporal/polyfill";
3
3
  import { isValidZonedDateTime } from "../validate/index.js";
4
4
  import { zonedDateTimeFrom } from "../../internal/index.js";
5
5
  import { isOptionsArgument } from "../../internal/isObject.js";
6
+ import { optionOrDefault } from "../../internal/optionOrDefault.js";
6
7
  /**
7
8
  * Return true when `zoned` is between `start` and `end` (inclusive by default).
8
9
  *
@@ -12,7 +13,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
12
13
  * @param zoned ISO ZonedDateTime string to check
13
14
  * @param start ISO ZonedDateTime string for the start of the range
14
15
  * @param end ISO ZonedDateTime string for the end of the range
15
- * @param options optional: inclusiveStart (boolean), inclusiveEnd (boolean)
16
+ * @param options optional settings for whether each end of the range is included
16
17
  * @returns boolean indicating whether zoned is between start and end
17
18
  *
18
19
  * @example isBetweenZoned("2024-02-29T12:00:00+00:00[UTC]", "2024-02-29T11:00:00+00:00[UTC]", "2024-02-29T13:00:00+00:00[UTC]") // true
@@ -27,8 +28,8 @@ export function isBetweenZoned(zoned, start, end, options) {
27
28
  // reading of it gives `false`: ECMA-402 reads a boolean option through ToBoolean (null → false),
28
29
  // and the house rule rejects an invalid member outright — neither yields `true`. So `null`
29
30
  // behaves here exactly as `0` and `""` already do.
30
- const inclusiveStart = options?.inclusiveStart === undefined ? true : options.inclusiveStart;
31
- const inclusiveEnd = options?.inclusiveEnd === undefined ? true : options.inclusiveEnd;
31
+ const inclusiveStart = optionOrDefault(options?.inclusiveStart, true);
32
+ const inclusiveEnd = optionOrDefault(options?.inclusiveEnd, true);
32
33
  if (!isValidZonedDateTime(zoned) ||
33
34
  !isValidZonedDateTime(start) ||
34
35
  !isValidZonedDateTime(end)) {
@@ -1,17 +1,38 @@
1
1
  /**
2
2
  * Check whether a zoned value's instant falls within daylight saving time.
3
3
  *
4
- * - The third DST-related function in the roadmap, and distinct from the
5
- * other two — see docs/dst-disambiguation.md for the full four-way split:
6
- * `hasDaylightSaving(timeZone)` asks whether a zone observes DST *at all*
7
- * (zone-level, no instant); `listDstTransitions(timeZone, year)` asks
8
- * *where* a zone's transitions fall (enumerates instants);
9
- * `isInDaylightSaving(value)` asks whether *this particular instant* is
10
- * currently in DST. `disambiguation`/`offset` (Group C) are a fourth,
11
- * orthogonal concern: what to do when construction lands on an ambiguous
12
- * or nonexistent instant.
13
- * - Returns false for invalid input, and false for a zone that doesn't
14
- * observe DST at all.
4
+ * - The rule is GMT's own definition, not the tz database's daylight flag. No JavaScript API
5
+ * exposes that flag, and it cannot be worked out from offsets.
6
+ * - The rule: daylight time runs from a forward change of the zone's clocks to the backward
7
+ * change that undoes it. A backward change undoes the most recent forward change of the same
8
+ * size not yet undone, if it comes less than 365 days after it. The instant is in daylight
9
+ * time when it is at or after such a forward change and before its backward change.
10
+ * - Read from the zone's offset changes in the runtime's time zone data
11
+ * (`getTimeZoneTransition`); GMT holds no zone data. The answer changes only at a clock
12
+ * change, and the answer for a past instant can change when the runtime's data learns that a
13
+ * zone stopped changing its clocks.
14
+ * - A forward change never undone, or undone 365 days or more later, is a change of standard
15
+ * time: `Europe/Istanbul` is on standard time from its last advance in March 2016.
16
+ * - The higher of two alternating offsets is the daylight one, as in the tz database's rearguard
17
+ * form. Its main form reverses `Europe/Dublin` (winter is its daylight time, a negative save)
18
+ * and `Africa/Casablanca` (the Ramadan weeks are); here Dublin's summer and Casablanca's
19
+ * months at `+01:00` are daylight time.
20
+ * - Read as standard time, because the offsets do not show otherwise:
21
+ * - the last summer before a zone kept its daylight offset for good (the tz database dates
22
+ * Istanbul's switch 2016-09-07, with no clock change);
23
+ * - a daylight period held 365 days or longer (`America/Santiago` 2014 to 2016);
24
+ * - a daylight period that began, ended or was interrupted by a move of standard time, so the
25
+ * clocks went back by another amount or not at all (`America/Kentucky/Monticello` 2000), or
26
+ * the offset changed part-way through and the rest, or all, of the period is not paired
27
+ * (`Asia/Tomsk` 2002, `Asia/Jerusalem` 1948);
28
+ * - a daylight period whose end is past the last instant Temporal can represent.
29
+ * - Read as daylight time: a move of standard time reversed by the same amount less than 365
30
+ * days later (`America/Metlakatla` 2018 to 2019).
31
+ * - The other DST functions answer other questions: `hasDaylightSaving(timeZone, { at })` whether
32
+ * a zone observes DST at an instant, `getDstTransitions(timeZone, year)` where its offset
33
+ * changes fall, and `classifyLocal` whether a wall time is ambiguous. See
34
+ * docs/dst-disambiguation.md.
35
+ * - Returns false for invalid input, and for a zone with a fixed offset.
15
36
  *
16
37
  * @param value zoned ISO 8601 datetime string
17
38
  * @returns true if the instant is in daylight saving time, false otherwise or on invalid input
@@ -20,6 +41,12 @@
20
41
  * @example isInDaylightSaving("2024-01-15T12:00:00-05:00[America/New_York]") // false
21
42
  * @example isInDaylightSaving("2024-01-15T12:00:00+11:00[Australia/Sydney]") // true (southern-hemisphere summer)
22
43
  * @example isInDaylightSaving("2024-07-15T12:00:00+09:00[Asia/Tokyo]") // false (Asia/Tokyo has no DST)
44
+ * @example isInDaylightSaving("2015-07-01T12:00:00+03:00[Europe/Istanbul]") // true (undone 2015-11-08)
45
+ * @example isInDaylightSaving("2016-07-01T12:00:00+03:00[Europe/Istanbul]") // false (the March 2016 advance was never undone)
46
+ * @example isInDaylightSaving("2016-12-01T12:00:00+03:00[Europe/Istanbul]") // false (permanent +03:00)
47
+ * @example isInDaylightSaving("2019-07-15T12:00:00+01:00[Europe/Dublin]") // true
48
+ * @example isInDaylightSaving("2019-12-01T12:00:00+01:00[Africa/Casablanca]") // true (put back 2020-04-19)
49
+ * @example isInDaylightSaving("2019-07-15T12:00:00+00:00[UTC]") // false
23
50
  * @example isInDaylightSaving("invalid") // false
24
51
  */
25
52
  export declare function isInDaylightSaving(value: string): boolean;