@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
@@ -4,15 +4,12 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
4
4
  *
5
5
  * - Uses Temporal.Instant.compare for comparison.
6
6
  * - Returns false if start > end or inputs are invalid.
7
- * - Use options.inclusiveStart/inclusiveEnd to control boundaries.
8
7
  * - Each value is a safe integer or a digit string (`"1705000000000"`); anything else returns false.
9
- * - `timeZone` is only validated (the comparison is on exact instants): omitted is UTC, `"local"`
10
- * the system zone, and an unknown zone returns false.
11
8
  *
12
9
  * @param value Unix epoch to check: a safe integer, or a string of optionally negative ASCII digits
13
10
  * @param start Unix epoch for range start, in the same form and unit
14
11
  * @param end Unix epoch for range end, in the same form and unit
15
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds"), timeZone (IANA, or "local" for the system zone; default "UTC" — only validated, the comparison is on exact instants), inclusiveStart (boolean), inclusiveEnd (boolean)
12
+ * @param options optional: how the epochs are read and whether each end of the range is included
16
13
  * @returns boolean indicating whether value is between start and end
17
14
  *
18
15
  * @example isBetweenUnix(1705000000000, 1704000000000, 1706000000000) // true
@@ -22,8 +19,33 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
22
19
  * @example isBetweenUnix(1705000000000, 1704000000000, 1706000000000, { timeZone: "Mars/Olympus" }) // false (unknown zone)
23
20
  */
24
21
  export declare function isBetweenUnix(value: number | string, start: number | string, end: number | string, options?: {
22
+ /**
23
+ * The unit the epoch values are counted in: `"seconds"` or `"milliseconds"`, singular or
24
+ * plural. Any other value returns `false`.
25
+ *
26
+ * @defaultValue `"milliseconds"`
27
+ */
25
28
  epochUnit?: UnixUnit;
29
+ /**
30
+ * A time zone that is validated only: the comparison is on exact instants, so the zone never
31
+ * changes the result. It is an IANA name, a UTC offset, or `"local"` for the system time zone.
32
+ * An unknown zone returns `false`.
33
+ *
34
+ * @defaultValue `"UTC"`
35
+ */
26
36
  timeZone?: string;
37
+ /**
38
+ * Whether `value` equal to `start` counts as inside the range. `false` requires it to be after
39
+ * `start`.
40
+ *
41
+ * @defaultValue `true`
42
+ */
27
43
  inclusiveStart?: boolean;
44
+ /**
45
+ * Whether `value` equal to `end` counts as inside the range. `false` requires it to be before
46
+ * `end`.
47
+ *
48
+ * @defaultValue `true`
49
+ */
28
50
  inclusiveEnd?: boolean;
29
51
  }): boolean;
@@ -3,20 +3,18 @@ import { Temporal } from "@js-temporal/polyfill";
3
3
  import { normalizeTimeZone } from "../../internal/normalizeTimeZone.js";
4
4
  import { resolveUnixEpochUnit, unixEpochToInstant, } from "../../internal/unixEpochValue.js";
5
5
  import { isOptionsArgument } from "../../internal/isObject.js";
6
+ import { optionOrDefault } from "../../internal/optionOrDefault.js";
6
7
  /**
7
8
  * Return true when the Unix timestamp is between start and end (inclusive by default).
8
9
  *
9
10
  * - Uses Temporal.Instant.compare for comparison.
10
11
  * - Returns false if start > end or inputs are invalid.
11
- * - Use options.inclusiveStart/inclusiveEnd to control boundaries.
12
12
  * - Each value is a safe integer or a digit string (`"1705000000000"`); anything else returns false.
13
- * - `timeZone` is only validated (the comparison is on exact instants): omitted is UTC, `"local"`
14
- * the system zone, and an unknown zone returns false.
15
13
  *
16
14
  * @param value Unix epoch to check: a safe integer, or a string of optionally negative ASCII digits
17
15
  * @param start Unix epoch for range start, in the same form and unit
18
16
  * @param end Unix epoch for range end, in the same form and unit
19
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds"), timeZone (IANA, or "local" for the system zone; default "UTC" — only validated, the comparison is on exact instants), inclusiveStart (boolean), inclusiveEnd (boolean)
17
+ * @param options optional: how the epochs are read and whether each end of the range is included
20
18
  * @returns boolean indicating whether value is between start and end
21
19
  *
22
20
  * @example isBetweenUnix(1705000000000, 1704000000000, 1706000000000) // true
@@ -36,8 +34,8 @@ export function isBetweenUnix(value, start, end, options) {
36
34
  // reading of it gives `false`: ECMA-402 reads a boolean option through ToBoolean (null → false),
37
35
  // and the house rule rejects an invalid member outright — neither yields `true`. So `null`
38
36
  // behaves here exactly as `0` and `""` already do.
39
- const inclusiveStart = options?.inclusiveStart === undefined ? true : options.inclusiveStart;
40
- const inclusiveEnd = options?.inclusiveEnd === undefined ? true : options.inclusiveEnd;
37
+ const inclusiveStart = optionOrDefault(options?.inclusiveStart, true);
38
+ const inclusiveEnd = optionOrDefault(options?.inclusiveEnd, true);
41
39
  if (!timeZone || epochUnit === null)
42
40
  return false;
43
41
  const instant = unixEpochToInstant(value, epochUnit);
@@ -14,12 +14,10 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
14
14
  * 1727532300000 (03:50+13:45) truncated to the hour gives 1727532900000, 15 minutes later.
15
15
  * Use `floorToZone` for a boundary that never exceeds the instant.
16
16
  * - `value` is a safe integer or a digit string (`"1706661000000"`); anything else returns null.
17
- * - An omitted `timeZone` is UTC; pass `"local"` for the system time zone. An unknown zone returns
18
- * null.
19
17
  * - Returns null for invalid input.
20
18
  *
21
19
  * @param value Unix epoch: a safe integer, or a string of optionally negative ASCII digits
22
- * @param options Rounding options: smallestUnit, optional roundingIncrement, roundingMode, epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds"), timeZone (IANA, or "local" for the system zone; default "UTC")
20
+ * @param options rounding settings: the unit to round to, how to round, and how `value` is read
23
21
  * @returns Rounded Unix epoch number, or null on invalid input
24
22
  *
25
23
  * @example roundUnix(1706661000000, { smallestUnit: "hour", timeZone: "UTC" }) // 1706662800000 (00:30 is a tie; halfExpand rounds up)
@@ -33,9 +31,39 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
33
31
  * @example roundUnix(NaN, { smallestUnit: "hour" }) // null
34
32
  */
35
33
  export declare function roundUnix(value: number | string, options: {
34
+ /**
35
+ * The unit to round to, from `"day"` down to `"nanosecond"`, singular or plural. A larger unit
36
+ * returns `null`, as `Temporal.ZonedDateTime.prototype.round` accepts none above `"day"`.
37
+ */
36
38
  smallestUnit: Temporal.SmallestUnit<"day" | "hour" | "minute" | "second" | "millisecond" | "microsecond" | "nanosecond">;
39
+ /**
40
+ * The number of `smallestUnit` steps to round to, such as `15` with `"minute"` for quarter
41
+ * hours. It must divide the next larger unit evenly and be smaller than it, and must be `1` for
42
+ * `"day"`; any other value returns `null`. A non-integer is truncated first, as Temporal does.
43
+ *
44
+ * @defaultValue `1`, Temporal's default.
45
+ */
37
46
  roundingIncrement?: number;
47
+ /**
48
+ * The step a value between two steps is rounded to. `"halfExpand"` picks the nearer step and
49
+ * sends a tie to the later one; `"floor"` and `"trunc"` pick the earlier step, `"ceil"` and
50
+ * `"expand"` the later, and the other `"half…"` modes differ only in how a tie breaks.
51
+ *
52
+ * @defaultValue `"halfExpand"`, Temporal's default.
53
+ */
38
54
  roundingMode?: Temporal.RoundingMode;
55
+ /**
56
+ * The unit the epoch values are counted in: `"seconds"` or `"milliseconds"`, singular or
57
+ * plural. Any other value returns `null`. The result is in the same unit.
58
+ *
59
+ * @defaultValue `"milliseconds"`
60
+ */
39
61
  epochUnit?: UnixUnit;
62
+ /**
63
+ * The time zone the wall clock is rounded in: an IANA name, a UTC offset, or `"local"` for the
64
+ * system time zone. An unknown zone returns `null`.
65
+ *
66
+ * @defaultValue `"UTC"`
67
+ */
40
68
  timeZone?: string;
41
69
  }): number | null;
@@ -28,12 +28,10 @@ function isZonedRoundingUnit(unit) {
28
28
  * 1727532300000 (03:50+13:45) truncated to the hour gives 1727532900000, 15 minutes later.
29
29
  * Use `floorToZone` for a boundary that never exceeds the instant.
30
30
  * - `value` is a safe integer or a digit string (`"1706661000000"`); anything else returns null.
31
- * - An omitted `timeZone` is UTC; pass `"local"` for the system time zone. An unknown zone returns
32
- * null.
33
31
  * - Returns null for invalid input.
34
32
  *
35
33
  * @param value Unix epoch: a safe integer, or a string of optionally negative ASCII digits
36
- * @param options Rounding options: smallestUnit, optional roundingIncrement, roundingMode, epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds"), timeZone (IANA, or "local" for the system zone; default "UTC")
34
+ * @param options rounding settings: the unit to round to, how to round, and how `value` is read
37
35
  * @returns Rounded Unix epoch number, or null on invalid input
38
36
  *
39
37
  * @example roundUnix(1706661000000, { smallestUnit: "hour", timeZone: "UTC" }) // 1706662800000 (00:30 is a tie; halfExpand rounds up)
@@ -53,9 +51,8 @@ export function roundUnix(value, options) {
53
51
  const { roundingIncrement, roundingMode } = options;
54
52
  const epochUnit = resolveUnixEpochUnit(options.epochUnit);
55
53
  const timeZone = normalizeTimeZone(options.timeZone);
56
- const smallestUnit = typeof options.smallestUnit === "string"
57
- ? resolveDateTimeUnit(options.smallestUnit)
58
- : options.smallestUnit;
54
+ // One read (GetOption): resolveDateTimeUnit returns a value that is not a string unchanged.
55
+ const smallestUnit = resolveDateTimeUnit(options.smallestUnit);
59
56
  if (!timeZone || epochUnit === null || !isValidDateTimeUnit(smallestUnit)) {
60
57
  return null;
61
58
  }
@@ -12,20 +12,12 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
12
12
  * - `fields` may set any of `year`, `month`, `monthCode`, `day`, `hour`, `minute`, `second`,
13
13
  * `millisecond`, `microsecond`, `nanosecond`, `era`, and/or `eraYear`; omitted fields keep
14
14
  * their current value. An empty object is a no-op.
15
- * - `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. setting
16
- * `month: 2` on a value whose `day` is 31: "constrain" clamps to Feb 29/28, "reject" throws
17
- * (resulting in null).
18
15
  * - `value` is a safe integer or a digit string (`"1710072000000"`); anything else returns null.
19
- * - An omitted `timeZone` is UTC; pass `"local"` for the system time zone.
20
- * - `offset` defaults to `"prefer"`, as `Temporal.ZonedDateTime.prototype.with`: the source's
21
- * offset is kept while it is still valid for the new wall-clock time, so a repeated hour stays on
22
- * the same side of a fall-back. Pass `offset: "ignore"` to re-resolve the wall clock with
23
- * `disambiguation`.
24
16
  * - Returns null for invalid input.
25
17
  *
26
18
  * @param value Unix epoch: a safe integer, or a string of optionally negative ASCII digits
27
19
  * @param fields Partial<Temporal.ZonedDateTimeLike> object (excluding calendar/timeZone/offset) specifying fields to set
28
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds"), timeZone (IANA, or "local" for the system zone; default "UTC"; an unknown zone returns null), overflow ("constrain" | "reject"), disambiguation ("compatible" | "earlier" | "later" | "reject"), offset ("prefer" | "use" | "ignore" | "reject", default "prefer")
20
+ * @param options optional: how `value` is read, and how an out-of-range field or a skipped or repeated wall-clock time is resolved
29
21
  * @returns Unix epoch number with fields set, or null on invalid input
30
22
  *
31
23
  * @example setUnix(1710072000000, { hour: 9 }, { timeZone: "UTC" }) // 1710061200000 (2024-03-10T09:00:00Z)
@@ -36,9 +28,43 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
36
28
  * @example setUnix(NaN, { hour: 9 }) // null
37
29
  */
38
30
  export declare function setUnix(value: number | string, fields: Omit<Temporal.ZonedDateTimeLike, "calendar" | "timeZone" | "offset">, options?: {
31
+ /**
32
+ * The unit the epoch values are counted in: `"seconds"` or `"milliseconds"`, singular or
33
+ * plural. Any other value returns `null`. The result is in the same unit.
34
+ *
35
+ * @defaultValue `"milliseconds"`
36
+ */
39
37
  epochUnit?: UnixUnit;
38
+ /**
39
+ * The time zone the fields are set in: an IANA name, a UTC offset, or `"local"` for the system
40
+ * time zone. An unknown zone returns `null`.
41
+ *
42
+ * @defaultValue `"UTC"`
43
+ */
40
44
  timeZone?: string;
45
+ /**
46
+ * How an out-of-range field is handled, such as `month: 2` on a value whose day is 31.
47
+ * `"constrain"` clamps to the nearest valid value, and `"reject"` returns `null`.
48
+ *
49
+ * @defaultValue `"constrain"`, Temporal's default.
50
+ */
41
51
  overflow?: Overflow;
52
+ /**
53
+ * How a wall-clock time that a zone transition skips or repeats is resolved, once `offset` does
54
+ * not settle it. `"compatible"` takes the later time in a gap and the earlier of a repeat,
55
+ * `"earlier"` and `"later"` take that side, and `"reject"` returns `null`.
56
+ *
57
+ * @defaultValue `"compatible"`, Temporal's default.
58
+ */
42
59
  disambiguation?: Disambiguation;
60
+ /**
61
+ * How the source's UTC offset is weighed against the new wall-clock time, as in
62
+ * `Temporal.ZonedDateTime.prototype.with`. `"prefer"` keeps it while it is still valid, so a
63
+ * repeated hour stays on the same side of a fall-back, and `"use"` keeps it always. `"ignore"`
64
+ * re-resolves the wall clock with `disambiguation`, and `"reject"` returns `null` when the
65
+ * offset is no longer valid.
66
+ *
67
+ * @defaultValue `"prefer"`, Temporal's default.
68
+ */
43
69
  offset?: Offset;
44
70
  }): number | null;
@@ -2,6 +2,7 @@ import { resolveOverflow, withZonedFields } from "../../internal/index.js";
2
2
  import { normalizeTimeZone } from "../../internal/normalizeTimeZone.js";
3
3
  import { resolveUnixEpochUnit, toUnixEpoch, unixEpochToInstant, } from "../../internal/unixEpochValue.js";
4
4
  import { isOptionsArgument } from "../../internal/isObject.js";
5
+ import { optionOrDefault } from "../../internal/optionOrDefault.js";
5
6
  /**
6
7
  * Return a Unix epoch value with the given `fields` set on `value`, interpreted in `timeZone`.
7
8
  *
@@ -13,20 +14,12 @@ import { isOptionsArgument } from "../../internal/isObject.js";
13
14
  * - `fields` may set any of `year`, `month`, `monthCode`, `day`, `hour`, `minute`, `second`,
14
15
  * `millisecond`, `microsecond`, `nanosecond`, `era`, and/or `eraYear`; omitted fields keep
15
16
  * their current value. An empty object is a no-op.
16
- * - `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. setting
17
- * `month: 2` on a value whose `day` is 31: "constrain" clamps to Feb 29/28, "reject" throws
18
- * (resulting in null).
19
17
  * - `value` is a safe integer or a digit string (`"1710072000000"`); anything else returns null.
20
- * - An omitted `timeZone` is UTC; pass `"local"` for the system time zone.
21
- * - `offset` defaults to `"prefer"`, as `Temporal.ZonedDateTime.prototype.with`: the source's
22
- * offset is kept while it is still valid for the new wall-clock time, so a repeated hour stays on
23
- * the same side of a fall-back. Pass `offset: "ignore"` to re-resolve the wall clock with
24
- * `disambiguation`.
25
18
  * - Returns null for invalid input.
26
19
  *
27
20
  * @param value Unix epoch: a safe integer, or a string of optionally negative ASCII digits
28
21
  * @param fields Partial<Temporal.ZonedDateTimeLike> object (excluding calendar/timeZone/offset) specifying fields to set
29
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds"), timeZone (IANA, or "local" for the system zone; default "UTC"; an unknown zone returns null), overflow ("constrain" | "reject"), disambiguation ("compatible" | "earlier" | "later" | "reject"), offset ("prefer" | "use" | "ignore" | "reject", default "prefer")
22
+ * @param options optional: how `value` is read, and how an out-of-range field or a skipped or repeated wall-clock time is resolved
30
23
  * @returns Unix epoch number with fields set, or null on invalid input
31
24
  *
32
25
  * @example setUnix(1710072000000, { hour: 9 }, { timeZone: "UTC" }) // 1710061200000 (2024-03-10T09:00:00Z)
@@ -49,11 +42,9 @@ export function setUnix(value, fields, options) {
49
42
  if (instant === null)
50
43
  return null;
51
44
  const overflow = resolveOverflow(options?.overflow);
52
- const disambiguation = options?.disambiguation === undefined
53
- ? "compatible"
54
- : options.disambiguation;
45
+ const disambiguation = optionOrDefault(options?.disambiguation, "compatible");
55
46
  // Temporal ZonedDateTime.prototype.with: GetTemporalOffsetOption(options, "prefer").
56
- const offset = options?.offset === undefined ? "prefer" : options.offset;
47
+ const offset = optionOrDefault(options?.offset, "prefer");
57
48
  try {
58
49
  const zoned = instant.toZonedDateTimeISO(timeZone);
59
50
  // Temporal.ZonedDateTime.prototype.with() throws on an empty fields object ("no supported
@@ -9,11 +9,9 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
9
9
  * takes neither. Those ignored options were removed in 1.16.0.
10
10
  * - Returns null for invalid input.
11
11
  * - `value` is a safe integer or a digit string (`"1706659200000"`); anything else returns null.
12
- * - An omitted `timeZone` is UTC; pass `"local"` for the system time zone. An unknown zone returns
13
- * null.
14
12
  *
15
13
  * @param value Unix epoch: a safe integer, or a string of optionally negative ASCII digits
16
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds"), timeZone (IANA, or "local" for the system zone; default "UTC")
14
+ * @param options optional: how `value` is read and the zone the quarter is found in
17
15
  * @returns Unix epoch number representing the start of the quarter, or null on invalid input
18
16
  *
19
17
  * @example startOfQuarterForUnix(1706659200000, { timeZone: "UTC" }) // 1704067200000
@@ -23,6 +21,18 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
23
21
  * @example startOfQuarterForUnix(NaN) // null
24
22
  */
25
23
  export declare function startOfQuarterForUnix(value: number | string, options?: {
24
+ /**
25
+ * The unit the epoch values are counted in: `"seconds"` or `"milliseconds"`, singular or
26
+ * plural. Any other value returns `null`. The result is in the same unit.
27
+ *
28
+ * @defaultValue `"milliseconds"`
29
+ */
26
30
  epochUnit?: UnixUnit;
31
+ /**
32
+ * The time zone the unit boundaries are found in: an IANA name, a UTC offset, or `"local"` for
33
+ * the system time zone. An unknown zone returns `null`.
34
+ *
35
+ * @defaultValue `"UTC"`
36
+ */
27
37
  timeZone?: string;
28
38
  }): number | null;
@@ -10,11 +10,9 @@ import { isOptionsArgument } from "../../internal/isObject.js";
10
10
  * takes neither. Those ignored options were removed in 1.16.0.
11
11
  * - Returns null for invalid input.
12
12
  * - `value` is a safe integer or a digit string (`"1706659200000"`); anything else returns null.
13
- * - An omitted `timeZone` is UTC; pass `"local"` for the system time zone. An unknown zone returns
14
- * null.
15
13
  *
16
14
  * @param value Unix epoch: a safe integer, or a string of optionally negative ASCII digits
17
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds"), timeZone (IANA, or "local" for the system zone; default "UTC")
15
+ * @param options optional: how `value` is read and the zone the quarter is found in
18
16
  * @returns Unix epoch number representing the start of the quarter, or null on invalid input
19
17
  *
20
18
  * @example startOfQuarterForUnix(1706659200000, { timeZone: "UTC" }) // 1704067200000
@@ -8,15 +8,12 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
8
8
  * - Returns the real start of the local `unit` containing `value` in `timeZone` — the same bucket `floorToZone` uses — so the result is never after `value`: the second pass of a repeated fall-back hour starts at its own 1am, and `Pacific/Chatham`'s 15-minute spring-forward hour starts at 03:45.
9
9
  * - Takes no `disambiguation` or `offset`: a boundary is always a real instant, as TC39's `startOfDay()`
10
10
  * takes neither. Those ignored options were removed in 1.16.0.
11
- * - `weekStartsOn` other than `"monday"` or `"sunday"` returns null, for every unit.
12
11
  * - Returns null for invalid input.
13
12
  * - `value` is a safe integer or a digit string (`"1706659200000"`); anything else returns null.
14
- * - An omitted `timeZone` is UTC; pass `"local"` for the system time zone. An unknown zone returns
15
- * null.
16
13
  *
17
14
  * @param value Unix epoch: a safe integer, or a string of optionally negative ASCII digits
18
15
  * @param unit Temporal.DateUnit | Temporal.TimeUnit to specify the start
19
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds"), timeZone (IANA, or "local" for the system zone; default "UTC"), weekStartsOn ("monday" | "sunday")
16
+ * @param options optional: how `value` is read, the zone the unit is found in and the first day of the week
20
17
  * @returns Unix epoch number representing the start of the unit, or null on invalid input
21
18
  *
22
19
  * @example startOfUnix(1706659200000, "year", { timeZone: "UTC" }) // 1704067200000
@@ -29,7 +26,26 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
29
26
  * @example startOfUnix(NaN, "day") // null
30
27
  */
31
28
  export declare function startOfUnix(value: number | string, unit: Temporal.DateTimeUnit | Temporal.PluralUnit<Temporal.DateTimeUnit>, options?: {
29
+ /**
30
+ * The unit the epoch values are counted in: `"seconds"` or `"milliseconds"`, singular or
31
+ * plural. Any other value returns `null`. The result is in the same unit.
32
+ *
33
+ * @defaultValue `"milliseconds"`
34
+ */
32
35
  epochUnit?: UnixUnit;
36
+ /**
37
+ * The time zone the unit boundaries are found in: an IANA name, a UTC offset, or `"local"` for
38
+ * the system time zone. An unknown zone returns `null`.
39
+ *
40
+ * @defaultValue `"UTC"`
41
+ */
33
42
  timeZone?: string;
43
+ /**
44
+ * The first day of the week, which sets where a `"week"` unit starts. `"monday"` is the ISO
45
+ * 8601 week, Monday to Sunday; `"sunday"` runs Sunday to Saturday. Any other value returns
46
+ * null, whatever the unit.
47
+ *
48
+ * @defaultValue `"monday"`
49
+ */
34
50
  weekStartsOn?: "monday" | "sunday";
35
51
  }): number | null;
@@ -10,15 +10,12 @@ import { isOptionsArgument } from "../../internal/isObject.js";
10
10
  * - Returns the real start of the local `unit` containing `value` in `timeZone` — the same bucket `floorToZone` uses — so the result is never after `value`: the second pass of a repeated fall-back hour starts at its own 1am, and `Pacific/Chatham`'s 15-minute spring-forward hour starts at 03:45.
11
11
  * - Takes no `disambiguation` or `offset`: a boundary is always a real instant, as TC39's `startOfDay()`
12
12
  * takes neither. Those ignored options were removed in 1.16.0.
13
- * - `weekStartsOn` other than `"monday"` or `"sunday"` returns null, for every unit.
14
13
  * - Returns null for invalid input.
15
14
  * - `value` is a safe integer or a digit string (`"1706659200000"`); anything else returns null.
16
- * - An omitted `timeZone` is UTC; pass `"local"` for the system time zone. An unknown zone returns
17
- * null.
18
15
  *
19
16
  * @param value Unix epoch: a safe integer, or a string of optionally negative ASCII digits
20
17
  * @param unit Temporal.DateUnit | Temporal.TimeUnit to specify the start
21
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds"), timeZone (IANA, or "local" for the system zone; default "UTC"), weekStartsOn ("monday" | "sunday")
18
+ * @param options optional: how `value` is read, the zone the unit is found in and the first day of the week
22
19
  * @returns Unix epoch number representing the start of the unit, or null on invalid input
23
20
  *
24
21
  * @example startOfUnix(1706659200000, "year", { timeZone: "UTC" }) // 1704067200000
@@ -6,15 +6,11 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
6
6
  * - Converts to ZonedDateTime, subtracts the duration, then converts back to epoch.
7
7
  * - Validates duration units and values.
8
8
  * - `value` is a safe integer or a digit string (`"1706659200000"`); anything else returns null.
9
- * - An omitted `timeZone` is UTC; pass `"local"` for the system time zone.
10
9
  * - Returns null for invalid input.
11
10
  *
12
- * `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. subtracting
13
- * 1 month from Mar 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in null).
14
- *
15
11
  * @param value Unix epoch: a safe integer, or a string of optionally negative ASCII digits
16
12
  * @param units Partial<Record<DateTimeDurationUnit, number>> object specifying units to subtract
17
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds"), timeZone (IANA, or "local" for the system zone; default "UTC"; an unknown zone returns null), overflow ("constrain" | "reject")
13
+ * @param options optional: how `value` is read and how an out-of-range result day is handled
18
14
  * @returns Unix epoch number after subtraction, or null on invalid input
19
15
  *
20
16
  * @example subtractUnix(1706745600000, { days: 1 }) // 1706659200000
@@ -25,7 +21,25 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
25
21
  * @example subtractUnix(1706659200000, { days: 1 }, { timeZone: "Mars/Olympus" }) // null (unknown zone)
26
22
  */
27
23
  export declare function subtractUnix(value: number | string, units: Partial<Record<DateTimeDurationUnit, number>>, options?: {
24
+ /**
25
+ * The unit the epoch values are counted in: `"seconds"` or `"milliseconds"`, singular or
26
+ * plural. Any other value returns `null`. The result is in the same unit.
27
+ *
28
+ * @defaultValue `"milliseconds"`
29
+ */
28
30
  epochUnit?: UnixUnit;
31
+ /**
32
+ * The time zone the calendar arithmetic runs in: an IANA name, a UTC offset, or `"local"` for
33
+ * the system time zone. An unknown zone returns `null`.
34
+ *
35
+ * @defaultValue `"UTC"`
36
+ */
29
37
  timeZone?: string;
38
+ /**
39
+ * How a result day that does not exist in its month is handled, such as March 31 minus one
40
+ * month. `"constrain"` clamps to the last valid day, and `"reject"` returns `null`.
41
+ *
42
+ * @defaultValue `"constrain"`, Temporal's default.
43
+ */
30
44
  overflow?: Overflow;
31
45
  }): number | null;
@@ -9,15 +9,11 @@ import { isOptionsArgument } from "../../internal/isObject.js";
9
9
  * - Converts to ZonedDateTime, subtracts the duration, then converts back to epoch.
10
10
  * - Validates duration units and values.
11
11
  * - `value` is a safe integer or a digit string (`"1706659200000"`); anything else returns null.
12
- * - An omitted `timeZone` is UTC; pass `"local"` for the system time zone.
13
12
  * - Returns null for invalid input.
14
13
  *
15
- * `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. subtracting
16
- * 1 month from Mar 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in null).
17
- *
18
14
  * @param value Unix epoch: a safe integer, or a string of optionally negative ASCII digits
19
15
  * @param units Partial<Record<DateTimeDurationUnit, number>> object specifying units to subtract
20
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds"), timeZone (IANA, or "local" for the system zone; default "UTC"; an unknown zone returns null), overflow ("constrain" | "reject")
16
+ * @param options optional: how `value` is read and how an out-of-range result day is handled
21
17
  * @returns Unix epoch number after subtraction, or null on invalid input
22
18
  *
23
19
  * @example subtractUnix(1706745600000, { days: 1 }) // 1706659200000
@@ -9,7 +9,7 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
9
9
  *
10
10
  * @param value1 first unix epoch: a safe integer or a digit string
11
11
  * @param value2 second unix epoch, in the same unit
12
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds")
12
+ * @param options optional: how both epochs are read
13
13
  * @returns `true` if `value1` and `value2` are equal, otherwise `false`
14
14
  *
15
15
  * @example areUnixEqual(1706659200, 1706659200) // true
@@ -21,5 +21,11 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
21
21
  * @example areUnixEqual("1706659200.0", 1706659200) // false (not a digit string)
22
22
  */
23
23
  export declare function areUnixEqual(value1: number | string, value2: number | string, options?: {
24
+ /**
25
+ * The unit the epoch values are counted in: `"seconds"` or `"milliseconds"`, singular or
26
+ * plural. Any other value returns `false`.
27
+ *
28
+ * @defaultValue `"milliseconds"`
29
+ */
24
30
  epochUnit?: UnixUnit;
25
31
  }): boolean;
@@ -10,7 +10,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
10
10
  *
11
11
  * @param value1 first unix epoch: a safe integer or a digit string
12
12
  * @param value2 second unix epoch, in the same unit
13
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds")
13
+ * @param options optional: how both epochs are read
14
14
  * @returns `true` if `value1` and `value2` are equal, otherwise `false`
15
15
  *
16
16
  * @example areUnixEqual(1706659200, 1706659200) // true
@@ -3,19 +3,17 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
3
3
  /**
4
4
  * Compare two Unix epoch values for equality at a given unit.
5
5
  *
6
- * - Both values are resolved to the start of `unit` in `options.timeZone`
7
- * (default: `"UTC"`) before comparison, so `"day"` compares
8
- * calendar days in that zone, not raw epoch buckets.
6
+ * - Both values are resolved to the start of `unit` in `options.timeZone` before comparison,
7
+ * so `"day"` compares calendar days in that zone, not raw epoch buckets.
9
8
  * - The start of `unit` is the real local bucket (see `startOfUnix`), so two epochs are equal
10
9
  * only when they fall in the same bucket — including one a zone transition shortened, like
11
10
  * `Pacific/Chatham`'s 15-minute 03:00 hour on its 2024 spring-forward.
12
11
  * - `"month"` requires the same month AND year, matching `areDateTimesEqualBy`.
13
12
  * - Each value is a safe integer or a string of optionally negative ASCII digits; `unit` may be
14
- * singular or plural. An omitted `timeZone` is UTC; `"local"` is the system zone.
15
- * - `weekStartsOn` other than `"monday"` or `"sunday"` returns false.
13
+ * singular or plural.
16
14
  * - Returns false for an unsupported unit (including `"quarter"`) or invalid input.
17
15
  *
18
- * Mapping from date-fns (Decision 5, `context/roadmap/issues/J.md`):
16
+ * Mapping from date-fns:
19
17
  * - `isSameDay(a, b)` → `areUnixEqualBy(a, b, "day")`
20
18
  * - `isSameMonth(a, b)` → `areUnixEqualBy(a, b, "month")`
21
19
  * - `isSameYear(a, b)` → `areUnixEqualBy(a, b, "year")`
@@ -23,7 +21,7 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
23
21
  * @param value1 first Unix epoch: a safe integer or a digit string
24
22
  * @param value2 second Unix epoch, in the same unit
25
23
  * @param unit Temporal.DateUnit | Temporal.TimeUnit to compare by
26
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds"), timeZone (IANA, or "local" for the system zone; default "UTC"), weekStartsOn ("monday" | "sunday")
24
+ * @param options optional: how both epochs are read, the zone the unit is found in and the first day of the week
27
25
  * @returns true if both values share the same start-of-unit boundary, false on an unsupported unit or invalid input
28
26
  *
29
27
  * @example areUnixEqualBy(1710498000000, 1710503000000, "day", { timeZone: "UTC" }) // true (both fall on 2024-03-15 in UTC)
@@ -32,7 +30,26 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
32
30
  * @example areUnixEqualBy(Number.NaN, 1710498000000, "day") // false
33
31
  */
34
32
  export declare function areUnixEqualBy(value1: number | string, value2: number | string, unit: Temporal.DateTimeUnit | Temporal.PluralUnit<Temporal.DateTimeUnit>, options?: {
33
+ /**
34
+ * The unit the epoch values are counted in: `"seconds"` or `"milliseconds"`, singular or
35
+ * plural. Any other value returns `false`.
36
+ *
37
+ * @defaultValue `"milliseconds"`
38
+ */
35
39
  epochUnit?: UnixUnit;
40
+ /**
41
+ * The time zone the unit boundaries are found in: an IANA name, a UTC offset, or `"local"` for
42
+ * the system time zone. An unknown zone returns `false`.
43
+ *
44
+ * @defaultValue `"UTC"`
45
+ */
36
46
  timeZone?: string;
47
+ /**
48
+ * The first day of the week, which sets where a `"week"` unit starts. `"monday"` is the ISO
49
+ * 8601 week, Monday to Sunday; `"sunday"` runs Sunday to Saturday. Any other value returns
50
+ * false, whatever the unit.
51
+ *
52
+ * @defaultValue `"monday"`
53
+ */
37
54
  weekStartsOn?: "monday" | "sunday";
38
55
  }): boolean;
@@ -3,19 +3,17 @@ import { isOptionsArgument } from "../../internal/isObject.js";
3
3
  /**
4
4
  * Compare two Unix epoch values for equality at a given unit.
5
5
  *
6
- * - Both values are resolved to the start of `unit` in `options.timeZone`
7
- * (default: `"UTC"`) before comparison, so `"day"` compares
8
- * calendar days in that zone, not raw epoch buckets.
6
+ * - Both values are resolved to the start of `unit` in `options.timeZone` before comparison,
7
+ * so `"day"` compares calendar days in that zone, not raw epoch buckets.
9
8
  * - The start of `unit` is the real local bucket (see `startOfUnix`), so two epochs are equal
10
9
  * only when they fall in the same bucket — including one a zone transition shortened, like
11
10
  * `Pacific/Chatham`'s 15-minute 03:00 hour on its 2024 spring-forward.
12
11
  * - `"month"` requires the same month AND year, matching `areDateTimesEqualBy`.
13
12
  * - Each value is a safe integer or a string of optionally negative ASCII digits; `unit` may be
14
- * singular or plural. An omitted `timeZone` is UTC; `"local"` is the system zone.
15
- * - `weekStartsOn` other than `"monday"` or `"sunday"` returns false.
13
+ * singular or plural.
16
14
  * - Returns false for an unsupported unit (including `"quarter"`) or invalid input.
17
15
  *
18
- * Mapping from date-fns (Decision 5, `context/roadmap/issues/J.md`):
16
+ * Mapping from date-fns:
19
17
  * - `isSameDay(a, b)` → `areUnixEqualBy(a, b, "day")`
20
18
  * - `isSameMonth(a, b)` → `areUnixEqualBy(a, b, "month")`
21
19
  * - `isSameYear(a, b)` → `areUnixEqualBy(a, b, "year")`
@@ -23,7 +21,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
23
21
  * @param value1 first Unix epoch: a safe integer or a digit string
24
22
  * @param value2 second Unix epoch, in the same unit
25
23
  * @param unit Temporal.DateUnit | Temporal.TimeUnit to compare by
26
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds"), timeZone (IANA, or "local" for the system zone; default "UTC"), weekStartsOn ("monday" | "sunday")
24
+ * @param options optional: how both epochs are read, the zone the unit is found in and the first day of the week
27
25
  * @returns true if both values share the same start-of-unit boundary, false on an unsupported unit or invalid input
28
26
  *
29
27
  * @example areUnixEqualBy(1710498000000, 1710503000000, "day", { timeZone: "UTC" }) // true (both fall on 2024-03-15 in UTC)
@@ -36,8 +34,14 @@ export function areUnixEqualBy(value1, value2, unit, options) {
36
34
  return false;
37
35
  }
38
36
  try {
39
- const start1 = startOfUnix(value1, unit, options);
40
- const start2 = startOfUnix(value2, unit, options);
37
+ // Each option is read once (GetOption); both values are then measured with the same ones.
38
+ const read = {
39
+ epochUnit: options?.epochUnit,
40
+ timeZone: options?.timeZone,
41
+ weekStartsOn: options?.weekStartsOn,
42
+ };
43
+ const start1 = startOfUnix(value1, unit, read);
44
+ const start2 = startOfUnix(value2, unit, read);
41
45
  return start1 !== null && start1 === start2;
42
46
  }
43
47
  catch {
@@ -9,7 +9,7 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
9
9
  *
10
10
  * @param value1 first unix epoch: a safe integer or a digit string
11
11
  * @param value2 second unix epoch, in the same unit
12
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds")
12
+ * @param options optional: how both epochs are read
13
13
  * @returns `true` if `value1` is after `value2`, otherwise `false`
14
14
  *
15
15
  * @example isAfterUnix(1706659200, 1704067200) // true
@@ -19,5 +19,11 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
19
19
  * @example isAfterUnix(" 1706659200", 1704067200) // false (a padded string is not an epoch)
20
20
  */
21
21
  export declare function isAfterUnix(value1: number | string, value2: number | string, options?: {
22
+ /**
23
+ * The unit the epoch values are counted in: `"seconds"` or `"milliseconds"`, singular or
24
+ * plural. Any other value returns `false`.
25
+ *
26
+ * @defaultValue `"milliseconds"`
27
+ */
22
28
  epochUnit?: UnixUnit;
23
29
  }): boolean;