@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
@@ -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` is after `value2`, otherwise `false`
15
15
  *
16
16
  * @example isAfterUnix(1706659200, 1704067200) // true
@@ -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 before `value2`, otherwise `false`
14
14
  *
15
15
  * @example isBeforeUnix(1704067200, 1706659200) // true
@@ -20,5 +20,11 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
20
20
  * @example isBeforeUnix("-1", "0") // true (digit strings)
21
21
  */
22
22
  export declare function isBeforeUnix(value1: number | string, value2: number | string, options?: {
23
+ /**
24
+ * The unit the epoch values are counted in: `"seconds"` or `"milliseconds"`, singular or
25
+ * plural. Any other value returns `false`.
26
+ *
27
+ * @defaultValue `"milliseconds"`
28
+ */
23
29
  epochUnit?: UnixUnit;
24
30
  }): 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` is before `value2`, otherwise `false`
15
15
  *
16
16
  * @example isBeforeUnix(1704067200, 1706659200) // true
@@ -2,15 +2,13 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
2
2
  /**
3
3
  * Convert a Unix timestamp to a plain date string in the format "YYYY-MM-DD".
4
4
  *
5
- * - Converts to PlainDate in `timeZone`: omitted is UTC, `"local"` is the system zone, and an
6
- * unknown zone returns "".
5
+ * - Converts to PlainDate in `timeZone`.
7
6
  * - `unix` is a safe integer or a string of optionally negative ASCII digits; anything else returns
8
7
  * "".
9
- * - Validates epoch unit ("seconds" | "milliseconds", singular accepted).
10
8
  * - Returns "" for invalid input.
11
9
  *
12
10
  * @param unix Unix epoch: a safe integer or a digit string
13
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds"), timeZone (IANA, or "local" for the system zone; default "UTC")
11
+ * @param options optional: how `unix` is read and the zone its wall clock is read in
14
12
  * @returns plain date string in "YYYY-MM-DD" format or "" on invalid input
15
13
  *
16
14
  * @example convertUnixToPlainDate(1709164800000, { timeZone: "UTC" }) // "2024-02-29"
@@ -22,6 +20,18 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
22
20
  * @example convertUnixToPlainDate(NaN) // ""
23
21
  */
24
22
  export declare function convertUnixToPlainDate(unix: number | string, options?: {
23
+ /**
24
+ * The unit the epoch values are counted in: `"seconds"` or `"milliseconds"`, singular or
25
+ * plural. Any other value returns `""`.
26
+ *
27
+ * @defaultValue `"milliseconds"`
28
+ */
25
29
  epochUnit?: UnixUnit;
30
+ /**
31
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
32
+ * the system time zone. An unknown zone returns `""`.
33
+ *
34
+ * @defaultValue `"UTC"`
35
+ */
26
36
  timeZone?: string;
27
37
  }): string;
@@ -5,15 +5,13 @@ import { isOptionsArgument } from "../../internal/isObject.js";
5
5
  /**
6
6
  * Convert a Unix timestamp to a plain date string in the format "YYYY-MM-DD".
7
7
  *
8
- * - Converts to PlainDate in `timeZone`: omitted is UTC, `"local"` is the system zone, and an
9
- * unknown zone returns "".
8
+ * - Converts to PlainDate in `timeZone`.
10
9
  * - `unix` is a safe integer or a string of optionally negative ASCII digits; anything else returns
11
10
  * "".
12
- * - Validates epoch unit ("seconds" | "milliseconds", singular accepted).
13
11
  * - Returns "" for invalid input.
14
12
  *
15
13
  * @param unix Unix epoch: a safe integer or a digit string
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 `unix` is read and the zone its wall clock is read in
17
15
  * @returns plain date string in "YYYY-MM-DD" format or "" on invalid input
18
16
  *
19
17
  * @example convertUnixToPlainDate(1709164800000, { timeZone: "UTC" }) // "2024-02-29"
@@ -2,15 +2,13 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
2
2
  /**
3
3
  * Convert a Unix timestamp to a plain datetime string in the format "YYYY-MM-DDTHH:mm:ss".
4
4
  *
5
- * - Converts to PlainDateTime in `timeZone`: omitted is UTC, `"local"` is the system zone, and an
6
- * unknown zone returns "".
5
+ * - Converts to PlainDateTime in `timeZone`.
7
6
  * - `unix` is a safe integer or a string of optionally negative ASCII digits; anything else returns
8
7
  * "".
9
- * - Validates epoch unit ("seconds" | "milliseconds", singular accepted).
10
8
  * - Returns "" for invalid input.
11
9
  *
12
10
  * @param unix Unix epoch: a safe integer or a digit string
13
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds"), timeZone (IANA, or "local" for the system zone; default "UTC")
11
+ * @param options optional: how `unix` is read and the zone its wall clock is read in
14
12
  * @returns plain datetime string in "YYYY-MM-DDTHH:mm:ss" format or "" on invalid input
15
13
  *
16
14
  * @example convertUnixToPlainDateTime(1709164800000, { timeZone: "UTC" }) // "2024-02-29T00:00:00"
@@ -20,6 +18,18 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
20
18
  * @example convertUnixToPlainDateTime(NaN) // ""
21
19
  */
22
20
  export declare function convertUnixToPlainDateTime(unix: number | string, options?: {
21
+ /**
22
+ * The unit the epoch values are counted in: `"seconds"` or `"milliseconds"`, singular or
23
+ * plural. Any other value returns `""`.
24
+ *
25
+ * @defaultValue `"milliseconds"`
26
+ */
23
27
  epochUnit?: UnixUnit;
28
+ /**
29
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
30
+ * the system time zone. An unknown zone returns `""`.
31
+ *
32
+ * @defaultValue `"UTC"`
33
+ */
24
34
  timeZone?: string;
25
35
  }): string;
@@ -5,15 +5,13 @@ import { isOptionsArgument } from "../../internal/isObject.js";
5
5
  /**
6
6
  * Convert a Unix timestamp to a plain datetime string in the format "YYYY-MM-DDTHH:mm:ss".
7
7
  *
8
- * - Converts to PlainDateTime in `timeZone`: omitted is UTC, `"local"` is the system zone, and an
9
- * unknown zone returns "".
8
+ * - Converts to PlainDateTime in `timeZone`.
10
9
  * - `unix` is a safe integer or a string of optionally negative ASCII digits; anything else returns
11
10
  * "".
12
- * - Validates epoch unit ("seconds" | "milliseconds", singular accepted).
13
11
  * - Returns "" for invalid input.
14
12
  *
15
13
  * @param unix Unix epoch: a safe integer or a digit string
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 `unix` is read and the zone its wall clock is read in
17
15
  * @returns plain datetime string in "YYYY-MM-DDTHH:mm:ss" format or "" on invalid input
18
16
  *
19
17
  * @example convertUnixToPlainDateTime(1709164800000, { timeZone: "UTC" }) // "2024-02-29T00:00:00"
@@ -2,15 +2,13 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
2
2
  /**
3
3
  * Convert a Unix timestamp to a plain time string in the format "HH:mm:ss".
4
4
  *
5
- * - Converts to PlainTime in `timeZone`: omitted is UTC, `"local"` is the system zone, and an
6
- * unknown zone returns "".
5
+ * - Converts to PlainTime in `timeZone`.
7
6
  * - `unix` is a safe integer or a string of optionally negative ASCII digits; anything else returns
8
7
  * "".
9
- * - Validates epoch unit ("seconds" | "milliseconds", singular accepted).
10
8
  * - Returns "" for invalid input.
11
9
  *
12
10
  * @param unix Unix epoch: a safe integer or a digit string
13
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds"), timeZone (IANA, or "local" for the system zone; default "UTC")
11
+ * @param options optional: how `unix` is read and the zone its wall clock is read in
14
12
  * @returns plain time string in "HH:mm:ss" format or "" on invalid input
15
13
  *
16
14
  * @example convertUnixToPlainTime(1706659200000, { timeZone: "UTC" }) // "00:00:00"
@@ -20,6 +18,18 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
20
18
  * @example convertUnixToPlainTime(NaN) // ""
21
19
  */
22
20
  export declare function convertUnixToPlainTime(unix: number | string, options?: {
21
+ /**
22
+ * The unit the epoch values are counted in: `"seconds"` or `"milliseconds"`, singular or
23
+ * plural. Any other value returns `""`.
24
+ *
25
+ * @defaultValue `"milliseconds"`
26
+ */
23
27
  epochUnit?: UnixUnit;
28
+ /**
29
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
30
+ * the system time zone. An unknown zone returns `""`.
31
+ *
32
+ * @defaultValue `"UTC"`
33
+ */
24
34
  timeZone?: string;
25
35
  }): string;
@@ -5,15 +5,13 @@ import { isOptionsArgument } from "../../internal/isObject.js";
5
5
  /**
6
6
  * Convert a Unix timestamp to a plain time string in the format "HH:mm:ss".
7
7
  *
8
- * - Converts to PlainTime in `timeZone`: omitted is UTC, `"local"` is the system zone, and an
9
- * unknown zone returns "".
8
+ * - Converts to PlainTime in `timeZone`.
10
9
  * - `unix` is a safe integer or a string of optionally negative ASCII digits; anything else returns
11
10
  * "".
12
- * - Validates epoch unit ("seconds" | "milliseconds", singular accepted).
13
11
  * - Returns "" for invalid input.
14
12
  *
15
13
  * @param unix Unix epoch: a safe integer or a digit string
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 `unix` is read and the zone its wall clock is read in
17
15
  * @returns plain time string in "HH:mm:ss" format or "" on invalid input
18
16
  *
19
17
  * @example convertUnixToPlainTime(1706659200000, { timeZone: "UTC" }) // "00:00:00"
@@ -5,12 +5,11 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
5
5
  * - Converts to UTC Instant using Temporal.Instant.
6
6
  * - `value` is a safe integer or a string of optionally negative ASCII digits; anything else, or an
7
7
  * instant outside the Temporal range, returns "".
8
- * - `options.epochUnit` is `"seconds"` or `"milliseconds"` (singular accepted), default
9
- * `"milliseconds"`. An explicit `undefined` is the same as omitted; a non-object `options` (such
10
- * as a bare `"seconds"` string) returns "".
8
+ * - An explicit `undefined` `options` is the same as omitted; a non-object `options` (such as a
9
+ * bare `"seconds"` string) returns "".
11
10
  *
12
11
  * @param value epoch value: a safe integer or a digit string
13
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds")
12
+ * @param options optional: how `value` is read
14
13
  * @returns UTC Instant string or "" on invalid
15
14
  *
16
15
  * @example convertUnixToUtc(1709164800000) // "2024-02-29T00:00:00Z"
@@ -21,5 +20,11 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
21
20
  * @example convertUnixToUtc(NaN) // ""
22
21
  */
23
22
  export declare function convertUnixToUtc(value: number | string, options?: {
23
+ /**
24
+ * The unit the epoch values are counted in: `"seconds"` or `"milliseconds"`, singular or
25
+ * plural. Any other value returns `""`.
26
+ *
27
+ * @defaultValue `"milliseconds"`
28
+ */
24
29
  epochUnit?: UnixUnit;
25
30
  }): string;
@@ -5,12 +5,11 @@ import { resolveUnixEpochUnitOptions, unixEpochToInstant, } from "../../internal
5
5
  * - Converts to UTC Instant using Temporal.Instant.
6
6
  * - `value` is a safe integer or a string of optionally negative ASCII digits; anything else, or an
7
7
  * instant outside the Temporal range, returns "".
8
- * - `options.epochUnit` is `"seconds"` or `"milliseconds"` (singular accepted), default
9
- * `"milliseconds"`. An explicit `undefined` is the same as omitted; a non-object `options` (such
10
- * as a bare `"seconds"` string) returns "".
8
+ * - An explicit `undefined` `options` is the same as omitted; a non-object `options` (such as a
9
+ * bare `"seconds"` string) returns "".
11
10
  *
12
11
  * @param value epoch value: a safe integer or a digit string
13
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds")
12
+ * @param options optional: how `value` is read
14
13
  * @returns UTC Instant string or "" on invalid
15
14
  *
16
15
  * @example convertUnixToUtc(1709164800000) // "2024-02-29T00:00:00Z"
@@ -5,13 +5,12 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
5
5
  * - Converts to ZonedDateTime using the specified timezone (required; an unknown zone returns "").
6
6
  * - `value` is a safe integer or a string of optionally negative ASCII digits; anything else, or an
7
7
  * instant outside the Temporal range, returns "".
8
- * - `options.epochUnit` is `"seconds"` or `"milliseconds"` (singular accepted), default
9
- * `"milliseconds"`. An explicit `undefined` is the same as omitted; a non-object `options` (such
10
- * as a bare `"seconds"` string) returns "".
8
+ * - An explicit `undefined` `options` is the same as omitted; a non-object `options` (such as a
9
+ * bare `"seconds"` string) returns "".
11
10
  *
12
11
  * @param value epoch value: a safe integer or a digit string
13
- * @param timeZone IANA timeZone identifier
14
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds")
12
+ * @param timeZone IANA name or UTC offset
13
+ * @param options optional: how `value` is read
15
14
  * @returns zoned ISO 8601 string or "" on invalid
16
15
  *
17
16
  * @example convertUnixToZoned(1709164800000, "America/New_York") // "2024-02-28T19:00:00-05:00[America/New_York]"
@@ -21,5 +20,11 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
21
20
  * @example convertUnixToZoned(NaN, "UTC") // ""
22
21
  */
23
22
  export declare function convertUnixToZoned(value: number | string, timeZone: string, options?: {
23
+ /**
24
+ * The unit the epoch values are counted in: `"seconds"` or `"milliseconds"`, singular or
25
+ * plural. Any other value returns `""`.
26
+ *
27
+ * @defaultValue `"milliseconds"`
28
+ */
24
29
  epochUnit?: UnixUnit;
25
30
  }): string;
@@ -6,13 +6,12 @@ import { isValidTimeZone } from "../../zoned/validate/index.js";
6
6
  * - Converts to ZonedDateTime using the specified timezone (required; an unknown zone returns "").
7
7
  * - `value` is a safe integer or a string of optionally negative ASCII digits; anything else, or an
8
8
  * instant outside the Temporal range, returns "".
9
- * - `options.epochUnit` is `"seconds"` or `"milliseconds"` (singular accepted), default
10
- * `"milliseconds"`. An explicit `undefined` is the same as omitted; a non-object `options` (such
11
- * as a bare `"seconds"` string) returns "".
9
+ * - An explicit `undefined` `options` is the same as omitted; a non-object `options` (such as a
10
+ * bare `"seconds"` string) returns "".
12
11
  *
13
12
  * @param value epoch value: a safe integer or a digit string
14
- * @param timeZone IANA timeZone identifier
15
- * @param options optional: epochUnit ("seconds" | "milliseconds", singular accepted; default "milliseconds")
13
+ * @param timeZone IANA name or UTC offset
14
+ * @param options optional: how `value` is read
16
15
  * @returns zoned ISO 8601 string or "" on invalid
17
16
  *
18
17
  * @example convertUnixToZoned(1709164800000, "America/New_York") // "2024-02-28T19:00:00-05:00[America/New_York]"
@@ -3,48 +3,56 @@ import type { UnixUnit } from "../validate/isValidUnixUnit.js";
3
3
  * Options for `formatCalendarUnix`. Like `formatCalendar`, it takes a `reference` and a `timeStyle`
4
4
  * (here also `"full"`); it adds `epochUnit` and `timeZone` for the unix domain.
5
5
  *
6
- * @remarks Members:
7
- *
8
- * | Member | Type | Default | Description |
9
- * | --- | --- | --- | --- |
10
- * | `reference` | `string\|number` | now (UTC) | Anchor epoch/ISO for the "today/tomorrow" comparison. |
11
- * | `epochUnit` | `"milliseconds"\|"seconds"` | `"milliseconds"` | Interpretation of epoch `value`/`reference`; singular names are accepted. |
12
- * | `timeZone` | `string` | `"UTC"` | IANA zone for both day-comparison and clock-time rendering; `"local"` is the system zone; an unknown zone returns `""`. |
13
- * | `timeStyle` | `"short"\|"medium"\|"full"` | `"short"` | `Intl` `timeStyle` for the time-of-day portion. |
14
- *
15
6
  * @example
16
7
  * import { FormatCalendarUnixOptions } from "@northguild/gmt/unix";
17
8
  * const opts: FormatCalendarUnixOptions = { timeZone: "America/New_York" };
18
9
  */
19
10
  export interface FormatCalendarUnixOptions {
20
- /** Anchor point for the relative day comparison. Accepts UTC ISO strings or epochs (a safe integer or a digit string). */
11
+ /**
12
+ * The instant the day label is measured from, as a UTC ISO string, or an epoch in `epochUnit`
13
+ * given as a safe integer or a digit string. Any other value returns `""`.
14
+ *
15
+ * @defaultValue The current instant.
16
+ */
21
17
  reference?: string | number;
18
+ /**
19
+ * The unit `value` and a numeric `reference` are counted in: `"seconds"` or `"milliseconds"`,
20
+ * singular or plural. Any other value returns `""`.
21
+ *
22
+ * @defaultValue `"milliseconds"`
23
+ */
22
24
  epochUnit?: UnixUnit;
23
25
  /**
24
- * IANA timezone used for both the calendar-day comparison and the
25
- * rendered clock time. Omitted is `"UTC"`, `"local"` is the system zone,
26
- * and an unknown zone makes the result `""` (ECMA-402 throws RangeError).
26
+ * The time zone used for both the calendar-day comparison and the rendered clock time: an IANA
27
+ * name, a UTC offset, or `"local"` for the system time zone. An unknown zone returns `""`, as
28
+ * ECMA-402 throws RangeError for it.
29
+ *
30
+ * @defaultValue `"UTC"`
27
31
  */
28
32
  timeZone?: string;
29
- /** `Intl.DateTimeFormatOptions` `timeStyle` for the time-of-day half. */
30
- timeStyle?: "short" | "medium" | "full";
33
+ /**
34
+ * The length of the time-of-day part, as the `timeStyle` of `Intl.DateTimeFormat`. `"short"`
35
+ * writes hours and minutes, `"medium"` adds seconds, `"long"` adds the short time zone name
36
+ * ("EDT") and `"full"` the long one ("Eastern Daylight Time"). Any other value returns `""`.
37
+ *
38
+ * @defaultValue `"short"`
39
+ */
40
+ timeStyle?: "short" | "medium" | "long" | "full";
31
41
  }
32
42
  /**
33
43
  * Format a unix epoch value as a relative day label plus time-of-day, e.g.
34
44
  * "Tomorrow at 2:30 PM" — the unix counterpart of `formatCalendar`. See
35
45
  * that function's JSDoc for the day-label/threshold/connector design; this
36
- * variant compares calendar days and renders the clock time in `timeZone`
37
- * (default `"UTC"`).
46
+ * variant compares calendar days and renders the clock time in `timeZone`.
38
47
  *
39
48
  * - `value` and a numeric `reference` are safe integers or strings of optionally negative ASCII
40
49
  * digits; anything else returns `""`.
41
50
  * - `options` must be an object or omitted: `null` returns `""`, as Temporal's GetOptionsObject
42
51
  * rejects it.
43
- * - An unknown `timeZone` returns `""`; `"local"` is the system zone.
44
52
  *
45
53
  * @param value unix epoch (string or number, per `epochUnit`) to format
46
54
  * @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
47
- * @param options optional: { epochUnit, reference, timeZone, timeStyle }
55
+ * @param options optional: the reference instant, how epochs are read, the zone and the width of the time
48
56
  * @returns the formatted calendar string, or "" on invalid input
49
57
  *
50
58
  * @example formatCalendarUnix(1710685845000, "en-US", { epochUnit: "milliseconds", timeZone: "America/New_York" }) // day label + time relative to "now", or the absolute fallback beyond the ±6-day threshold
@@ -2,22 +2,21 @@ import { formatCalendarInstants } from "../../internal/formatCalendarDays.js";
2
2
  import { normalizeTimeZone } from "../../internal/normalizeTimeZone.js";
3
3
  import { resolveUnixEpochUnit, unixEpochToInstant, } from "../../internal/unixEpochValue.js";
4
4
  import { resolveUnixFormatReference } from "../../internal/unixFormatReference.js";
5
+ import { optionOrDefault } from "../../internal/optionOrDefault.js";
5
6
  /**
6
7
  * Format a unix epoch value as a relative day label plus time-of-day, e.g.
7
8
  * "Tomorrow at 2:30 PM" — the unix counterpart of `formatCalendar`. See
8
9
  * that function's JSDoc for the day-label/threshold/connector design; this
9
- * variant compares calendar days and renders the clock time in `timeZone`
10
- * (default `"UTC"`).
10
+ * variant compares calendar days and renders the clock time in `timeZone`.
11
11
  *
12
12
  * - `value` and a numeric `reference` are safe integers or strings of optionally negative ASCII
13
13
  * digits; anything else returns `""`.
14
14
  * - `options` must be an object or omitted: `null` returns `""`, as Temporal's GetOptionsObject
15
15
  * rejects it.
16
- * - An unknown `timeZone` returns `""`; `"local"` is the system zone.
17
16
  *
18
17
  * @param value unix epoch (string or number, per `epochUnit`) to format
19
18
  * @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
20
- * @param options optional: { epochUnit, reference, timeZone, timeStyle }
19
+ * @param options optional: the reference instant, how epochs are read, the zone and the width of the time
21
20
  * @returns the formatted calendar string, or "" on invalid input
22
21
  *
23
22
  * @example formatCalendarUnix(1710685845000, "en-US", { epochUnit: "milliseconds", timeZone: "America/New_York" }) // day label + time relative to "now", or the absolute fallback beyond the ±6-day threshold
@@ -47,7 +46,7 @@ export function formatCalendarUnix(value, locale, options = {}) {
47
46
  if (reference === null)
48
47
  return "";
49
48
  try {
50
- return formatCalendarInstants(target, reference, timeZone, locale, options.timeStyle === undefined ? "short" : options.timeStyle);
49
+ return formatCalendarInstants(target, reference, timeZone, locale, optionOrDefault(options.timeStyle, "short"));
51
50
  }
52
51
  catch {
53
52
  return "";
@@ -1,12 +1,63 @@
1
1
  import type { RelativeRoundingMethod, RelativeUnit } from "../../types/index.js";
2
2
  import type { UnixUnit } from "../validate/isValidUnixUnit.js";
3
+ /**
4
+ * Options for `formatRelativeUnix`: the wording of the phrase, the unit and rounding of the
5
+ * distance, and the reference instant, epoch unit and time zone the distance is measured with.
6
+ */
3
7
  export interface FormatRelativeUnixOptions {
8
+ /**
9
+ * The length of the unit name, as the `style` of `Intl.RelativeTimeFormat`: `"long"` ("in 3
10
+ * months"), `"short"` ("in 3 mo.") or `"narrow"` (the locale's most compact form).
11
+ *
12
+ * @defaultValue `"long"`
13
+ */
4
14
  style?: "long" | "short" | "narrow";
15
+ /**
16
+ * Whether a distance may be written as a word instead of a number, as the `numeric` option of
17
+ * `Intl.RelativeTimeFormat`. `"auto"` uses the locale's word where it has one ("yesterday", "next
18
+ * year"); `"always"` writes the number every time ("1 day ago").
19
+ *
20
+ * @defaultValue `"auto"`
21
+ */
5
22
  numeric?: "always" | "auto";
23
+ /**
24
+ * The unit the distance is written in, whatever its size: `"second"`, `"minute"`, `"hour"`,
25
+ * `"day"`, `"week"`, `"month"` or `"year"`, singular or plural. Any other value returns `""`.
26
+ * Omitted, the unit is picked from the distance: second under a minute, minute under an hour,
27
+ * hour under a day, day under 7 days, week under 28, month under 365 and year beyond.
28
+ *
29
+ * @defaultValue None. The unit is picked from the distance.
30
+ */
6
31
  largestUnit?: RelativeUnit | `${RelativeUnit}s`;
32
+ /**
33
+ * The way a fractional distance becomes the whole number displayed: `"round"` goes to the nearest
34
+ * whole number, `"floor"` down and `"ceil"` up. It applies to the signed value, where a past
35
+ * distance is negative, so `"floor"` turns −1.5 hours into "2 hours ago".
36
+ *
37
+ * @defaultValue `"round"`
38
+ */
7
39
  roundingMethod?: RelativeRoundingMethod;
40
+ /**
41
+ * The unit `value` and a numeric `reference` are counted in: `"seconds"` or `"milliseconds"`,
42
+ * singular or plural. Any other value returns `""`.
43
+ *
44
+ * @defaultValue `"milliseconds"`
45
+ */
8
46
  epochUnit?: UnixUnit;
47
+ /**
48
+ * The instant the distance is measured from, as a UTC ISO string, or an epoch in `epochUnit`
49
+ * given as a safe integer or a digit string. Any other value returns `""`.
50
+ *
51
+ * @defaultValue The current instant.
52
+ */
9
53
  reference?: string | number;
54
+ /**
55
+ * The time zone that anchors a calendar unit (week, month or year): an IANA name, a UTC offset,
56
+ * or `"local"` for the system time zone. An unknown zone returns `""` whatever the unit, as
57
+ * ECMA-402 throws RangeError for it.
58
+ *
59
+ * @defaultValue `"UTC"`
60
+ */
10
61
  timeZone?: string;
11
62
  }
12
63
  /**
@@ -18,10 +69,8 @@ export interface FormatRelativeUnixOptions {
18
69
  * "3 years ago".
19
70
  * - **Compatibility:** before 1.16.0 week, month and year were never auto-picked ("1,096 days ago").
20
71
  * Pass `largestUnit: "day"` to keep a day count.
21
- * - `roundingMethod` controls how the distance rounds to the display unit.
22
- * - `timeZone` anchors a calendar unit (week, month or year, auto-picked or forced). Omitted, it is
23
- * `"UTC"`, as in every `unix/` function; `"local"` is the system zone; an unknown zone returns
24
- * `""` whatever the unit (ECMA-402 throws RangeError for it).
72
+ * - `largestUnit` is one of the seven units from `"second"` to `"year"`, singular or plural. Any
73
+ * other value returns `""`.
25
74
  * - `value` and a numeric `reference` are safe integers or strings of optionally negative ASCII
26
75
  * digits; `largestUnit` and `epochUnit` accept singular or plural names.
27
76
  * - `options` must be an object or omitted: `null` returns `""`, as Temporal's GetOptionsObject
@@ -29,7 +78,7 @@ export interface FormatRelativeUnixOptions {
29
78
  *
30
79
  * @param value unix epoch (string or number, per `epochUnit`) to format
31
80
  * @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
32
- * @param options optional: { style, numeric, largestUnit, roundingMethod, epochUnit, reference, timeZone }
81
+ * @param options optional: the wording, the unit and rounding of the distance, and what it is measured from
33
82
  * @returns the formatted relative-time string, or "" on invalid input
34
83
  *
35
84
  * @example formatRelativeUnix(1710685845000, "en-US", { epochUnit: "milliseconds", reference: 1805358645000 }) // "3 years ago"
@@ -13,10 +13,8 @@ import { durationTotal } from "../../internal/zonedWallClockDifference.js";
13
13
  * "3 years ago".
14
14
  * - **Compatibility:** before 1.16.0 week, month and year were never auto-picked ("1,096 days ago").
15
15
  * Pass `largestUnit: "day"` to keep a day count.
16
- * - `roundingMethod` controls how the distance rounds to the display unit.
17
- * - `timeZone` anchors a calendar unit (week, month or year, auto-picked or forced). Omitted, it is
18
- * `"UTC"`, as in every `unix/` function; `"local"` is the system zone; an unknown zone returns
19
- * `""` whatever the unit (ECMA-402 throws RangeError for it).
16
+ * - `largestUnit` is one of the seven units from `"second"` to `"year"`, singular or plural. Any
17
+ * other value returns `""`.
20
18
  * - `value` and a numeric `reference` are safe integers or strings of optionally negative ASCII
21
19
  * digits; `largestUnit` and `epochUnit` accept singular or plural names.
22
20
  * - `options` must be an object or omitted: `null` returns `""`, as Temporal's GetOptionsObject
@@ -24,7 +22,7 @@ import { durationTotal } from "../../internal/zonedWallClockDifference.js";
24
22
  *
25
23
  * @param value unix epoch (string or number, per `epochUnit`) to format
26
24
  * @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
27
- * @param options optional: { style, numeric, largestUnit, roundingMethod, epochUnit, reference, timeZone }
25
+ * @param options optional: the wording, the unit and rounding of the distance, and what it is measured from
28
26
  * @returns the formatted relative-time string, or "" on invalid input
29
27
  *
30
28
  * @example formatRelativeUnix(1710685845000, "en-US", { epochUnit: "milliseconds", reference: 1805358645000 }) // "3 years ago"
@@ -1,19 +1,37 @@
1
1
  import type { UnixUnit } from "../validate/index.js";
2
+ /**
3
+ * Options for `formatUnix`: every `Intl.DateTimeFormatOptions` field, plus the epoch unit, the
4
+ * time zone the value is rendered in and whether the zone name is shown.
5
+ */
2
6
  export interface FormatUnixOptions extends Intl.DateTimeFormatOptions {
7
+ /**
8
+ * The unit `value` is counted in: `"seconds"` or `"milliseconds"`, singular or plural. Any other
9
+ * value returns `""`.
10
+ *
11
+ * @defaultValue `"milliseconds"`
12
+ */
3
13
  epochUnit?: UnixUnit;
14
+ /**
15
+ * The time zone the value is rendered in: an IANA name, a UTC offset, or `"local"` for the system
16
+ * time zone. An unknown zone returns `""`, as ECMA-402 throws RangeError for it.
17
+ *
18
+ * @defaultValue `"UTC"`
19
+ */
4
20
  timeZone?: string;
21
+ /**
22
+ * Whether the value is formatted as a zoned date-time, which adds the localized time zone name.
23
+ * When `false` the wall clock is formatted on its own and `timeZoneName` is ignored.
24
+ *
25
+ * @defaultValue `false`
26
+ */
5
27
  includeTimeZoneName?: boolean;
6
28
  }
7
29
  /**
8
30
  * Format a unix epoch value (string or number) as a localized date/time string.
9
31
  *
10
32
  * - Returns `""` if the input is not a valid unix epoch value for the given `epochUnit`.
11
- * - `epochUnit` controls whether the input is interpreted as `"milliseconds"` or `"seconds"`; defaults to `"milliseconds"`.
12
33
  * - `value` is a safe integer or a string of optionally negative ASCII digits (no whitespace, `+`,
13
- * decimal point or exponent); `epochUnit` also accepts `"second"` / `"millisecond"`.
14
- * - `timeZone` controls the IANA zone used for rendering; defaults to `"UTC"`, `"local"` is the
15
- * system zone, and an unknown zone returns `""` (ECMA-402 throws RangeError for it).
16
- * - `includeTimeZoneName` appends the localized timezone name when true.
34
+ * decimal point or exponent).
17
35
  * - Without `includeTimeZoneName` the wall clock is formatted as Temporal's ECMA-402 PlainDateTime
18
36
  * format does (`timeZoneName` is ignored); with it, as the ZonedDateTime format does (a short
19
37
  * zone name is added to the defaults). Either way the requested fields and style widths are kept,
@@ -26,7 +44,7 @@ export interface FormatUnixOptions extends Intl.DateTimeFormatOptions {
26
44
  *
27
45
  * @param value unix epoch value to format (string or number, per `epochUnit`)
28
46
  * @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
29
- * @param options optional: { epochUnit, timeZone, includeTimeZoneName }
47
+ * @param options optional: `Intl.DateTimeFormatOptions` fields, plus how `value` is read, the zone and whether its name is shown
30
48
  * @returns the formatted date/time string, or "" on invalid input
31
49
  *
32
50
  * @example formatUnix("1710685845000", "en-US", { epochUnit: "milliseconds" }) // "3/17/2024, 2:30:45 PM"
@@ -3,16 +3,14 @@ import { formatWallClockOrZoned } from "../../internal/instantFormatOptions.js";
3
3
  import { normalizeDateTime } from "../../internal/normalizeDateTime.js";
4
4
  import { normalizeTimeZone } from "../../internal/normalizeTimeZone.js";
5
5
  import { resolveUnixEpochUnit, unixEpochToInstant, } from "../../internal/unixEpochValue.js";
6
+ import { readDateTimeFormatOptions } from "../../internal/readDateTimeFormatOptions.js";
7
+ import { optionOrDefault } from "../../internal/optionOrDefault.js";
6
8
  /**
7
9
  * Format a unix epoch value (string or number) as a localized date/time string.
8
10
  *
9
11
  * - Returns `""` if the input is not a valid unix epoch value for the given `epochUnit`.
10
- * - `epochUnit` controls whether the input is interpreted as `"milliseconds"` or `"seconds"`; defaults to `"milliseconds"`.
11
12
  * - `value` is a safe integer or a string of optionally negative ASCII digits (no whitespace, `+`,
12
- * decimal point or exponent); `epochUnit` also accepts `"second"` / `"millisecond"`.
13
- * - `timeZone` controls the IANA zone used for rendering; defaults to `"UTC"`, `"local"` is the
14
- * system zone, and an unknown zone returns `""` (ECMA-402 throws RangeError for it).
15
- * - `includeTimeZoneName` appends the localized timezone name when true.
13
+ * decimal point or exponent).
16
14
  * - Without `includeTimeZoneName` the wall clock is formatted as Temporal's ECMA-402 PlainDateTime
17
15
  * format does (`timeZoneName` is ignored); with it, as the ZonedDateTime format does (a short
18
16
  * zone name is added to the defaults). Either way the requested fields and style widths are kept,
@@ -25,7 +23,7 @@ import { resolveUnixEpochUnit, unixEpochToInstant, } from "../../internal/unixEp
25
23
  *
26
24
  * @param value unix epoch value to format (string or number, per `epochUnit`)
27
25
  * @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
28
- * @param options optional: { epochUnit, timeZone, includeTimeZoneName }
26
+ * @param options optional: `Intl.DateTimeFormatOptions` fields, plus how `value` is read, the zone and whether its name is shown
29
27
  * @returns the formatted date/time string, or "" on invalid input
30
28
  *
31
29
  * @example formatUnix("1710685845000", "en-US", { epochUnit: "milliseconds" }) // "3/17/2024, 2:30:45 PM"
@@ -48,7 +46,10 @@ export function formatUnix(value, locale, options) {
48
46
  // ECMA-402 CoerceOptionsToObject: undefined is defaults; null is a TypeError.
49
47
  if (options === null)
50
48
  return "";
51
- const { epochUnit, timeZone, includeTimeZoneName = false, ...intlOptions } = options ?? {};
49
+ // Each option is read once (GetOption), inherited ones included.
50
+ const epochUnit = options?.epochUnit;
51
+ const includeTimeZoneName = optionOrDefault(options?.includeTimeZoneName, false);
52
+ const { timeZone, ...intlOptions } = readDateTimeFormatOptions(options);
52
53
  const resolvedUnit = resolveUnixEpochUnit(epochUnit);
53
54
  if (resolvedUnit === null)
54
55
  return "";