@northguild/gmt 1.17.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 (638) hide show
  1. package/README.md +462 -22
  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/instant/convert/classifyLocal.d.ts +1 -1
  43. package/dist/instant/convert/classifyLocal.js +1 -1
  44. package/dist/instant/convert/fromOffsetInstant.d.ts +3 -1
  45. package/dist/instant/convert/fromOffsetInstant.js +3 -1
  46. package/dist/instant/convert/resolveLocal.d.ts +12 -7
  47. package/dist/instant/convert/resolveLocal.js +6 -10
  48. package/dist/instant/convert/toOffsetInstant.d.ts +22 -9
  49. package/dist/instant/convert/toOffsetInstant.js +10 -3
  50. package/dist/intermodal/calculate/billingTimeline.d.ts +31 -11
  51. package/dist/intermodal/calculate/billingTimeline.js +2 -2
  52. package/dist/intermodal/calculate/chargeableDays.d.ts +13 -11
  53. package/dist/intermodal/calculate/chargeableDays.js +4 -9
  54. package/dist/intermodal/calculate/demurrageClock.d.ts +16 -7
  55. package/dist/intermodal/calculate/demurrageClock.js +7 -7
  56. package/dist/intermodal/calculate/freeTimeExpiry.d.ts +5 -4
  57. package/dist/intermodal/calculate/freeTimeExpiry.js +6 -6
  58. package/dist/internal/businessCalendar.d.ts +5 -0
  59. package/dist/internal/businessCalendar.js +5 -1
  60. package/dist/internal/cycleFieldValue.d.ts +6 -4
  61. package/dist/internal/cycleFieldValue.js +6 -4
  62. package/dist/internal/daylightTime.d.ts +33 -0
  63. package/dist/internal/daylightTime.js +164 -0
  64. package/dist/internal/durationUntilString.js +4 -3
  65. package/dist/internal/englishCalendarNames.js +1 -2
  66. package/dist/internal/epochNanoseconds.d.ts +2 -0
  67. package/dist/internal/epochNanoseconds.js +2 -0
  68. package/dist/internal/exactDuration.d.ts +37 -0
  69. package/dist/internal/exactDuration.js +64 -0
  70. package/dist/internal/exactMoment.d.ts +72 -0
  71. package/dist/internal/exactMoment.js +114 -0
  72. package/dist/internal/fiscalCalendar.d.ts +4 -3
  73. package/dist/internal/fiscalCalendar.js +4 -3
  74. package/dist/internal/formatCalendarDays.d.ts +2 -2
  75. package/dist/internal/formatRelativeDuration.d.ts +21 -1
  76. package/dist/internal/formatRelativeDuration.js +47 -7
  77. package/dist/internal/index.d.ts +9 -4
  78. package/dist/internal/index.js +9 -4
  79. package/dist/internal/instantFormatOptions.js +2 -1
  80. package/dist/internal/instantNanoseconds.d.ts +75 -9
  81. package/dist/internal/instantNanoseconds.js +192 -11
  82. package/dist/internal/joinDateTimeConnector.d.ts +1 -1
  83. package/dist/internal/monthGridWeekRow.d.ts +2 -1
  84. package/dist/internal/monthGridWeekRow.js +2 -1
  85. package/dist/internal/normalizeTimeZone.d.ts +2 -2
  86. package/dist/internal/normalizeTimeZone.js +2 -2
  87. package/dist/internal/operatingSchedule.d.ts +129 -0
  88. package/dist/internal/operatingSchedule.js +668 -0
  89. package/dist/internal/optionOrDefault.d.ts +18 -0
  90. package/dist/internal/optionOrDefault.js +20 -0
  91. package/dist/internal/patternToken.d.ts +2 -2
  92. package/dist/internal/patternToken.js +28 -13
  93. package/dist/internal/plainDateUntil.js +10 -6
  94. package/dist/internal/punctuality.d.ts +38 -0
  95. package/dist/internal/punctuality.js +59 -0
  96. package/dist/internal/readDateTimeFormatOptions.d.ts +30 -0
  97. package/dist/internal/readDateTimeFormatOptions.js +93 -0
  98. package/dist/internal/resolveDurationRelativeTo.d.ts +4 -0
  99. package/dist/internal/resolveDurationRelativeTo.js +11 -1
  100. package/dist/internal/resolveRelativeRounding.d.ts +17 -6
  101. package/dist/internal/resolveRelativeRounding.js +27 -7
  102. package/dist/internal/resolveRelativeUnit.d.ts +30 -0
  103. package/dist/internal/resolveRelativeUnit.js +40 -0
  104. package/dist/internal/splitStep.d.ts +24 -1
  105. package/dist/internal/splitStep.js +34 -2
  106. package/dist/internal/startOrEndOfZoned.js +2 -3
  107. package/dist/internal/temporalCompat/capabilities.d.ts +26 -0
  108. package/dist/internal/temporalCompat/capabilities.js +35 -3
  109. package/dist/internal/temporalCompat/fieldSearch.js +1 -1
  110. package/dist/internal/temporalCompat/index.d.ts +1 -1
  111. package/dist/internal/temporalCompat/index.js +1 -1
  112. package/dist/internal/temporalCompat/repros.d.ts +1 -1
  113. package/dist/internal/temporalCompat/repros.js +157 -0
  114. package/dist/internal/timestampEvents.d.ts +32 -0
  115. package/dist/internal/timestampEvents.js +76 -0
  116. package/dist/internal/utcZonedDateTime.d.ts +5 -2
  117. package/dist/internal/utcZonedDateTime.js +8 -5
  118. package/dist/internal/zonedBucket.js +8 -6
  119. package/dist/internal/zonedLocalDates.js +1 -1
  120. package/dist/internal/zonedTransitionSearch.d.ts +27 -0
  121. package/dist/internal/zonedTransitionSearch.js +218 -0
  122. package/dist/internal/zonedWallClock.d.ts +21 -7
  123. package/dist/internal/zonedWallClock.js +87 -18
  124. package/dist/internal/zonedWallClockOperations.d.ts +26 -13
  125. package/dist/internal/zonedWallClockOperations.js +87 -34
  126. package/dist/interval/validate/isValidInterval.d.ts +6 -3
  127. package/dist/interval/validate/isValidInterval.js +6 -3
  128. package/dist/plain/calculate/addDate.d.ts +11 -8
  129. package/dist/plain/calculate/addDate.js +5 -8
  130. package/dist/plain/calculate/addDateTime.d.ts +7 -4
  131. package/dist/plain/calculate/addDateTime.js +1 -4
  132. package/dist/plain/calculate/cycleDate.d.ts +16 -7
  133. package/dist/plain/calculate/cycleDate.js +3 -7
  134. package/dist/plain/calculate/cycleDateTime.d.ts +14 -4
  135. package/dist/plain/calculate/cycleDateTime.js +1 -4
  136. package/dist/plain/calculate/cycleTime.d.ts +10 -5
  137. package/dist/plain/calculate/cycleTime.js +3 -5
  138. package/dist/plain/calculate/diffDate.d.ts +1 -1
  139. package/dist/plain/calculate/diffDate.js +1 -1
  140. package/dist/plain/calculate/diffDateAsDuration.d.ts +1 -1
  141. package/dist/plain/calculate/diffDateAsDuration.js +1 -1
  142. package/dist/plain/calculate/diffDateTime.d.ts +1 -1
  143. package/dist/plain/calculate/diffDateTime.js +1 -1
  144. package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +1 -1
  145. package/dist/plain/calculate/diffDateTimeAsDuration.js +1 -1
  146. package/dist/plain/calculate/diffTime.d.ts +1 -1
  147. package/dist/plain/calculate/diffTime.js +1 -1
  148. package/dist/plain/calculate/endOfDate.d.ts +8 -3
  149. package/dist/plain/calculate/endOfDate.js +1 -3
  150. package/dist/plain/calculate/endOfDateTime.d.ts +15 -5
  151. package/dist/plain/calculate/endOfDateTime.js +1 -5
  152. package/dist/plain/calculate/endOfTime.d.ts +8 -2
  153. package/dist/plain/calculate/endOfTime.js +1 -2
  154. package/dist/plain/calculate/getLocaleWeekYear.d.ts +16 -9
  155. package/dist/plain/calculate/getLocaleWeekYear.js +9 -9
  156. package/dist/plain/calculate/getWeekOfMonth.d.ts +7 -4
  157. package/dist/plain/calculate/getWeekOfMonth.js +7 -4
  158. package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +13 -6
  159. package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +6 -6
  160. package/dist/plain/calculate/getWeeksInMonth.d.ts +5 -2
  161. package/dist/plain/calculate/getWeeksInMonth.js +5 -2
  162. package/dist/plain/calculate/nextWeekday.d.ts +7 -3
  163. package/dist/plain/calculate/nextWeekday.js +1 -3
  164. package/dist/plain/calculate/previousWeekday.d.ts +7 -3
  165. package/dist/plain/calculate/previousWeekday.js +1 -3
  166. package/dist/plain/calculate/roundDate.d.ts +20 -7
  167. package/dist/plain/calculate/roundDate.js +3 -10
  168. package/dist/plain/calculate/roundDateTime.d.ts +22 -8
  169. package/dist/plain/calculate/roundDateTime.js +3 -11
  170. package/dist/plain/calculate/roundTime.d.ts +20 -4
  171. package/dist/plain/calculate/roundTime.js +3 -7
  172. package/dist/plain/calculate/setDate.d.ts +7 -5
  173. package/dist/plain/calculate/setDate.js +1 -5
  174. package/dist/plain/calculate/setDateTime.d.ts +8 -5
  175. package/dist/plain/calculate/setDateTime.js +1 -5
  176. package/dist/plain/calculate/setTime.d.ts +10 -6
  177. package/dist/plain/calculate/setTime.js +4 -6
  178. package/dist/plain/calculate/startOfDate.d.ts +8 -2
  179. package/dist/plain/calculate/startOfDate.js +1 -2
  180. package/dist/plain/calculate/startOfDateTime.d.ts +15 -2
  181. package/dist/plain/calculate/startOfDateTime.js +1 -2
  182. package/dist/plain/calculate/startOfTime.d.ts +8 -1
  183. package/dist/plain/calculate/startOfTime.js +1 -1
  184. package/dist/plain/calculate/subtractDate.d.ts +7 -4
  185. package/dist/plain/calculate/subtractDate.js +1 -4
  186. package/dist/plain/calculate/subtractDateTime.d.ts +7 -4
  187. package/dist/plain/calculate/subtractDateTime.js +1 -4
  188. package/dist/plain/compare/areDateTimesEqualBy.d.ts +13 -5
  189. package/dist/plain/compare/areDateTimesEqualBy.js +6 -5
  190. package/dist/plain/compare/areDatesEqualBy.d.ts +15 -6
  191. package/dist/plain/compare/areDatesEqualBy.js +8 -6
  192. package/dist/plain/compare/isBetweenDate.d.ts +13 -2
  193. package/dist/plain/compare/isBetweenDate.js +4 -4
  194. package/dist/plain/compare/isBetweenDateTime.d.ts +13 -2
  195. package/dist/plain/compare/isBetweenDateTime.js +4 -4
  196. package/dist/plain/compare/isBetweenTime.d.ts +13 -2
  197. package/dist/plain/compare/isBetweenTime.js +4 -4
  198. package/dist/plain/compare/isRelativeDay.d.ts +1 -1
  199. package/dist/plain/compare/isRelativeDay.js +1 -1
  200. package/dist/plain/compare/isThisUnit.d.ts +1 -1
  201. package/dist/plain/compare/isThisUnit.js +1 -1
  202. package/dist/plain/format/formatCalendar.d.ts +21 -14
  203. package/dist/plain/format/formatCalendar.js +21 -16
  204. package/dist/plain/format/formatDate.js +5 -3
  205. package/dist/plain/format/formatDateRange.js +4 -2
  206. package/dist/plain/format/formatDateTime.js +4 -2
  207. package/dist/plain/format/formatDateTimeRange.js +4 -2
  208. package/dist/plain/format/formatDateTimeToParts.d.ts +15 -4
  209. package/dist/plain/format/formatDateTimeToParts.js +10 -6
  210. package/dist/plain/format/formatDateToParts.d.ts +13 -2
  211. package/dist/plain/format/formatDateToParts.js +8 -4
  212. package/dist/plain/format/formatRelativeDate.d.ts +16 -3
  213. package/dist/plain/format/formatRelativeDate.js +26 -15
  214. package/dist/plain/format/formatRelativeDateTime.d.ts +16 -3
  215. package/dist/plain/format/formatRelativeDateTime.js +8 -5
  216. package/dist/plain/format/formatRelativeTime.d.ts +16 -3
  217. package/dist/plain/format/formatRelativeTime.js +21 -13
  218. package/dist/plain/format/formatTime.js +4 -2
  219. package/dist/plain/interval/intervalDifferenceDate.d.ts +9 -0
  220. package/dist/plain/interval/intervalDifferenceDateTime.d.ts +9 -0
  221. package/dist/plain/interval/intervalDifferenceTime.d.ts +9 -0
  222. package/dist/plain/interval/intervalDivideEquallyDate.d.ts +19 -4
  223. package/dist/plain/interval/intervalDivideEquallyDate.js +3 -4
  224. package/dist/plain/interval/intervalDivideEquallyDateTime.d.ts +19 -4
  225. package/dist/plain/interval/intervalDivideEquallyDateTime.js +3 -4
  226. package/dist/plain/interval/intervalDivideEquallyTime.d.ts +19 -4
  227. package/dist/plain/interval/intervalDivideEquallyTime.js +3 -4
  228. package/dist/plain/interval/intervalFromDurationDate.d.ts +16 -3
  229. package/dist/plain/interval/intervalFromDurationDate.js +1 -3
  230. package/dist/plain/interval/intervalFromDurationDateTime.d.ts +16 -3
  231. package/dist/plain/interval/intervalFromDurationDateTime.js +1 -3
  232. package/dist/plain/interval/intervalFromDurationTime.d.ts +9 -0
  233. package/dist/plain/interval/intervalIntersectionDate.d.ts +9 -0
  234. package/dist/plain/interval/intervalIntersectionDateTime.d.ts +9 -0
  235. package/dist/plain/interval/intervalIntersectionTime.d.ts +9 -0
  236. package/dist/plain/interval/intervalSplitAtDate.d.ts +11 -0
  237. package/dist/plain/interval/intervalSplitAtDate.js +2 -0
  238. package/dist/plain/interval/intervalSplitAtDateTime.d.ts +11 -0
  239. package/dist/plain/interval/intervalSplitAtDateTime.js +2 -0
  240. package/dist/plain/interval/intervalSplitAtTime.d.ts +11 -0
  241. package/dist/plain/interval/intervalSplitAtTime.js +2 -0
  242. package/dist/plain/interval/intervalUnionDate.d.ts +9 -0
  243. package/dist/plain/interval/intervalUnionDateTime.d.ts +9 -0
  244. package/dist/plain/interval/intervalUnionTime.d.ts +9 -0
  245. package/dist/plain/interval/intervalXorAllDate.d.ts +9 -0
  246. package/dist/plain/interval/intervalXorAllDateTime.d.ts +9 -0
  247. package/dist/plain/interval/intervalXorAllTime.d.ts +9 -0
  248. package/dist/plain/interval/intervalXorDate.d.ts +9 -0
  249. package/dist/plain/interval/intervalXorDateTime.d.ts +9 -0
  250. package/dist/plain/interval/intervalXorTime.d.ts +9 -0
  251. package/dist/plain/interval/mergeIntervalsDate.d.ts +9 -0
  252. package/dist/plain/interval/mergeIntervalsDateTime.d.ts +9 -0
  253. package/dist/plain/interval/mergeIntervalsTime.d.ts +9 -0
  254. package/dist/plain/interval/splitIntervalByUnitDate.d.ts +23 -7
  255. package/dist/plain/interval/splitIntervalByUnitDate.js +7 -7
  256. package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +22 -6
  257. package/dist/plain/interval/splitIntervalByUnitDateTime.js +6 -6
  258. package/dist/plain/interval/splitIntervalByUnitTime.d.ts +17 -4
  259. package/dist/plain/interval/splitIntervalByUnitTime.js +1 -4
  260. package/dist/plain/map/mapDatesInRange.d.ts +8 -4
  261. package/dist/plain/map/mapDatesInRange.js +1 -4
  262. package/dist/plain/parse/parseDateTimeWithPattern.d.ts +10 -7
  263. package/dist/plain/parse/parseDateTimeWithPattern.js +10 -7
  264. package/dist/plain/parse/parseDateWithPattern.d.ts +10 -7
  265. package/dist/plain/parse/parseDateWithPattern.js +10 -7
  266. package/dist/plain/parse/parseTimeWithPattern.d.ts +10 -7
  267. package/dist/plain/parse/parseTimeWithPattern.js +10 -7
  268. package/dist/plain/parse/parseUnitFromDate.d.ts +11 -3
  269. package/dist/plain/parse/parseUnitFromDate.js +3 -3
  270. package/dist/plain/parse/parseUnitFromDateTime.d.ts +11 -3
  271. package/dist/plain/parse/parseUnitFromDateTime.js +3 -3
  272. package/dist/plain/parse/parseWeekFromDate.d.ts +10 -6
  273. package/dist/plain/parse/parseWeekFromDate.js +2 -6
  274. package/dist/plain/parse/parseWeekFromDateTime.d.ts +10 -6
  275. package/dist/plain/parse/parseWeekFromDateTime.js +2 -6
  276. package/dist/plain/validate/isValidDateRange.d.ts +19 -4
  277. package/dist/plain/validate/isValidDateRange.js +1 -4
  278. package/dist/plain/validate/isValidDateTimeRange.d.ts +20 -5
  279. package/dist/plain/validate/isValidDateTimeRange.js +2 -5
  280. package/dist/plain/validate/isValidTimeRange.d.ts +20 -5
  281. package/dist/plain/validate/isValidTimeRange.js +2 -5
  282. package/dist/precision/convert/fromExcelSerial.d.ts +10 -4
  283. package/dist/precision/convert/fromExcelSerial.js +4 -5
  284. package/dist/precision/convert/fromNanoseconds.d.ts +1 -1
  285. package/dist/precision/convert/fromNanoseconds.js +1 -1
  286. package/dist/precision/convert/toExcelSerial.d.ts +9 -3
  287. package/dist/precision/convert/toExcelSerial.js +3 -4
  288. package/dist/precision/convert/toNanoseconds.d.ts +11 -6
  289. package/dist/precision/convert/toNanoseconds.js +11 -6
  290. package/dist/precision/validate/isValidInstant.d.ts +12 -3
  291. package/dist/precision/validate/isValidInstant.js +12 -3
  292. package/dist/span/calculate/spanMs.d.ts +10 -4
  293. package/dist/span/calculate/spanMs.js +10 -4
  294. package/dist/span/calculate/spanNs.d.ts +10 -4
  295. package/dist/span/calculate/spanNs.js +10 -4
  296. package/dist/span/validate/isValidSpan.d.ts +8 -3
  297. package/dist/span/validate/isValidSpan.js +8 -3
  298. package/dist/transport/calculate/bestAvailable.d.ts +47 -0
  299. package/dist/transport/calculate/bestAvailable.js +76 -0
  300. package/dist/transport/calculate/crossingTime.d.ts +58 -0
  301. package/dist/transport/calculate/crossingTime.js +76 -0
  302. package/dist/transport/calculate/cutoffAt.d.ts +90 -0
  303. package/dist/transport/calculate/cutoffAt.js +209 -0
  304. package/dist/transport/calculate/cutoffSchedule.d.ts +70 -0
  305. package/dist/transport/calculate/cutoffSchedule.js +71 -0
  306. package/dist/transport/calculate/dwellTime.d.ts +16 -7
  307. package/dist/transport/calculate/dwellTime.js +12 -8
  308. package/dist/transport/calculate/estimateDrift.d.ts +65 -0
  309. package/dist/transport/calculate/estimateDrift.js +75 -0
  310. package/dist/transport/calculate/index.d.ts +8 -0
  311. package/dist/transport/calculate/index.js +8 -0
  312. package/dist/transport/calculate/nextDeparture.d.ts +78 -0
  313. package/dist/transport/calculate/nextDeparture.js +131 -0
  314. package/dist/transport/calculate/punctualityRate.d.ts +42 -0
  315. package/dist/transport/calculate/punctualityRate.js +59 -0
  316. package/dist/transport/calculate/scheduleDelivery.d.ts +150 -0
  317. package/dist/transport/calculate/scheduleDelivery.js +300 -0
  318. package/dist/transport/calculate/transitTime.d.ts +21 -3
  319. package/dist/transport/calculate/transitTime.js +29 -46
  320. package/dist/transport/compare/classifyPunctuality.d.ts +46 -0
  321. package/dist/transport/compare/classifyPunctuality.js +64 -0
  322. package/dist/transport/compare/index.d.ts +4 -0
  323. package/dist/transport/compare/index.js +4 -0
  324. package/dist/transport/compare/isPastCutoff.d.ts +33 -0
  325. package/dist/transport/compare/isPastCutoff.js +48 -0
  326. package/dist/transport/compare/scheduleDeviation.d.ts +37 -0
  327. package/dist/transport/compare/scheduleDeviation.js +53 -0
  328. package/dist/transport/compare/timeToCutoff.d.ts +31 -0
  329. package/dist/transport/compare/timeToCutoff.js +47 -0
  330. package/dist/transport/convert/etaAtZone.d.ts +7 -0
  331. package/dist/transport/convert/etaAtZone.js +9 -4
  332. package/dist/transport/index.d.ts +1 -0
  333. package/dist/transport/index.js +1 -0
  334. package/dist/types/business-calendar.d.ts +19 -14
  335. package/dist/types/calendar-options.d.ts +15 -3
  336. package/dist/types/date-cycle-field.d.ts +5 -0
  337. package/dist/types/date-duration-unit.d.ts +4 -0
  338. package/dist/types/date-time-cycle-field.d.ts +4 -0
  339. package/dist/types/date-time-duration-units.d.ts +4 -0
  340. package/dist/types/date-time-unit.d.ts +4 -0
  341. package/dist/types/date-unit.d.ts +4 -0
  342. package/dist/types/disambiguation.d.ts +8 -0
  343. package/dist/types/duration-relative-to.d.ts +8 -0
  344. package/dist/types/duration-string-options.d.ts +28 -0
  345. package/dist/types/fiscal-calendar.d.ts +1 -1
  346. package/dist/types/fractional-digit.d.ts +5 -0
  347. package/dist/types/free-time-options.d.ts +21 -11
  348. package/dist/types/index.d.ts +2 -1
  349. package/dist/types/index.js +2 -1
  350. package/dist/types/interval.d.ts +8 -1
  351. package/dist/types/offset.d.ts +9 -0
  352. package/dist/types/operating-schedule.d.ts +71 -0
  353. package/dist/types/overflow.d.ts +6 -0
  354. package/dist/types/relative-rounding-method.d.ts +6 -0
  355. package/dist/types/relative-time-options.d.ts +33 -5
  356. package/dist/types/rounding-options.d.ts +27 -0
  357. package/dist/types/time-cycle-field.d.ts +4 -0
  358. package/dist/types/time-duration-unit.d.ts +4 -0
  359. package/dist/types/time-unit.d.ts +4 -0
  360. package/dist/types/transport-timestamps.d.ts +54 -0
  361. package/dist/types/transport-timestamps.js +0 -0
  362. package/dist/unix/calculate/addUnix.d.ts +19 -5
  363. package/dist/unix/calculate/addUnix.js +1 -5
  364. package/dist/unix/calculate/diffUnix.d.ts +13 -3
  365. package/dist/unix/calculate/diffUnix.js +1 -3
  366. package/dist/unix/calculate/diffUnixAsDuration.d.ts +13 -3
  367. package/dist/unix/calculate/diffUnixAsDuration.js +1 -3
  368. package/dist/unix/calculate/endOfQuarterForUnix.d.ts +13 -3
  369. package/dist/unix/calculate/endOfQuarterForUnix.js +1 -3
  370. package/dist/unix/calculate/endOfUnix.d.ts +20 -4
  371. package/dist/unix/calculate/endOfUnix.js +1 -4
  372. package/dist/unix/calculate/isBetweenUnix.d.ts +26 -4
  373. package/dist/unix/calculate/isBetweenUnix.js +4 -6
  374. package/dist/unix/calculate/roundUnix.d.ts +31 -3
  375. package/dist/unix/calculate/roundUnix.js +3 -6
  376. package/dist/unix/calculate/setUnix.d.ts +35 -9
  377. package/dist/unix/calculate/setUnix.js +4 -13
  378. package/dist/unix/calculate/startOfQuarterForUnix.d.ts +13 -3
  379. package/dist/unix/calculate/startOfQuarterForUnix.js +1 -3
  380. package/dist/unix/calculate/startOfUnix.d.ts +20 -4
  381. package/dist/unix/calculate/startOfUnix.js +1 -4
  382. package/dist/unix/calculate/subtractUnix.d.ts +19 -5
  383. package/dist/unix/calculate/subtractUnix.js +1 -5
  384. package/dist/unix/compare/areUnixEqual.d.ts +7 -1
  385. package/dist/unix/compare/areUnixEqual.js +1 -1
  386. package/dist/unix/compare/areUnixEqualBy.d.ts +24 -7
  387. package/dist/unix/compare/areUnixEqualBy.js +13 -9
  388. package/dist/unix/compare/isAfterUnix.d.ts +7 -1
  389. package/dist/unix/compare/isAfterUnix.js +1 -1
  390. package/dist/unix/compare/isBeforeUnix.d.ts +7 -1
  391. package/dist/unix/compare/isBeforeUnix.js +1 -1
  392. package/dist/unix/convert/convertUnixToPlainDate.d.ts +14 -4
  393. package/dist/unix/convert/convertUnixToPlainDate.js +2 -4
  394. package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +14 -4
  395. package/dist/unix/convert/convertUnixToPlainDateTime.js +2 -4
  396. package/dist/unix/convert/convertUnixToPlainTime.d.ts +14 -4
  397. package/dist/unix/convert/convertUnixToPlainTime.js +2 -4
  398. package/dist/unix/convert/convertUnixToUtc.d.ts +9 -4
  399. package/dist/unix/convert/convertUnixToUtc.js +3 -4
  400. package/dist/unix/convert/convertUnixToZoned.d.ts +10 -5
  401. package/dist/unix/convert/convertUnixToZoned.js +4 -5
  402. package/dist/unix/format/formatCalendarUnix.d.ts +27 -19
  403. package/dist/unix/format/formatCalendarUnix.js +4 -5
  404. package/dist/unix/format/formatRelativeUnix.d.ts +54 -5
  405. package/dist/unix/format/formatRelativeUnix.js +3 -5
  406. package/dist/unix/format/formatUnix.d.ts +24 -6
  407. package/dist/unix/format/formatUnix.js +8 -7
  408. package/dist/unix/get/getUnixNow.d.ts +8 -3
  409. package/dist/unix/get/getUnixNow.js +1 -3
  410. package/dist/unix/interval/intervalCountUnix.d.ts +14 -5
  411. package/dist/unix/interval/intervalCountUnix.js +2 -5
  412. package/dist/unix/interval/intervalDifferenceUnix.d.ts +6 -0
  413. package/dist/unix/interval/intervalDivideEquallyUnix.d.ts +18 -4
  414. package/dist/unix/interval/intervalDivideEquallyUnix.js +5 -4
  415. package/dist/unix/interval/intervalFromDurationUnix.d.ts +33 -5
  416. package/dist/unix/interval/intervalFromDurationUnix.js +6 -5
  417. package/dist/unix/interval/intervalIntersectionUnix.d.ts +6 -0
  418. package/dist/unix/interval/intervalLengthUnix.d.ts +16 -6
  419. package/dist/unix/interval/intervalLengthUnix.js +4 -6
  420. package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +13 -3
  421. package/dist/unix/interval/intervalOverlappingDaysUnix.js +1 -3
  422. package/dist/unix/interval/intervalSplitAtUnix.d.ts +8 -0
  423. package/dist/unix/interval/intervalSplitAtUnix.js +2 -0
  424. package/dist/unix/interval/intervalUnionUnix.d.ts +6 -0
  425. package/dist/unix/interval/intervalXorAllUnix.d.ts +6 -0
  426. package/dist/unix/interval/intervalXorUnix.d.ts +6 -0
  427. package/dist/unix/interval/mergeIntervalsUnix.d.ts +6 -0
  428. package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +42 -11
  429. package/dist/unix/interval/splitIntervalByUnitUnix.js +21 -16
  430. package/dist/unix/parse/parseDateFromUnix.d.ts +13 -2
  431. package/dist/unix/parse/parseDateFromUnix.js +1 -2
  432. package/dist/unix/parse/parseDayFromUnix.d.ts +14 -2
  433. package/dist/unix/parse/parseDayFromUnix.js +2 -2
  434. package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +13 -1
  435. package/dist/unix/parse/parseDayOfWeekFromUnix.js +1 -1
  436. package/dist/unix/parse/parseHourFromUnix.d.ts +14 -2
  437. package/dist/unix/parse/parseHourFromUnix.js +2 -2
  438. package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +14 -2
  439. package/dist/unix/parse/parseMicrosecondFromUnix.js +2 -2
  440. package/dist/unix/parse/parseMillisecondFromUnix.d.ts +14 -2
  441. package/dist/unix/parse/parseMillisecondFromUnix.js +2 -2
  442. package/dist/unix/parse/parseMinuteFromUnix.d.ts +14 -2
  443. package/dist/unix/parse/parseMinuteFromUnix.js +2 -2
  444. package/dist/unix/parse/parseMonthFromUnix.d.ts +14 -2
  445. package/dist/unix/parse/parseMonthFromUnix.js +2 -2
  446. package/dist/unix/parse/parseNanosecondFromUnix.d.ts +14 -2
  447. package/dist/unix/parse/parseNanosecondFromUnix.js +2 -2
  448. package/dist/unix/parse/parseSecondFromUnix.d.ts +14 -2
  449. package/dist/unix/parse/parseSecondFromUnix.js +2 -2
  450. package/dist/unix/parse/parseTimeFromUnix.d.ts +13 -2
  451. package/dist/unix/parse/parseTimeFromUnix.js +1 -2
  452. package/dist/unix/parse/parseUnitFromUnix.d.ts +22 -3
  453. package/dist/unix/parse/parseUnitFromUnix.js +2 -3
  454. package/dist/unix/parse/parseWeekFromUnix.d.ts +23 -7
  455. package/dist/unix/parse/parseWeekFromUnix.js +3 -7
  456. package/dist/unix/parse/parseYearFromUnix.d.ts +14 -2
  457. package/dist/unix/parse/parseYearFromUnix.js +2 -2
  458. package/dist/unix/validate/isValidUnixRange.d.ts +20 -4
  459. package/dist/unix/validate/isValidUnixRange.js +1 -4
  460. package/dist/utc/calculate/addUtc.d.ts +7 -4
  461. package/dist/utc/calculate/addUtc.js +1 -4
  462. package/dist/utc/calculate/diffUtc.d.ts +1 -1
  463. package/dist/utc/calculate/diffUtc.js +1 -1
  464. package/dist/utc/calculate/diffUtcAsDuration.d.ts +1 -1
  465. package/dist/utc/calculate/diffUtcAsDuration.js +1 -1
  466. package/dist/utc/calculate/endOfUtc.d.ts +16 -3
  467. package/dist/utc/calculate/endOfUtc.js +2 -3
  468. package/dist/utc/calculate/isBetweenUtc.d.ts +13 -2
  469. package/dist/utc/calculate/isBetweenUtc.js +4 -4
  470. package/dist/utc/calculate/roundUtc.d.ts +26 -9
  471. package/dist/utc/calculate/roundUtc.js +3 -12
  472. package/dist/utc/calculate/setUtc.d.ts +7 -4
  473. package/dist/utc/calculate/setUtc.js +1 -4
  474. package/dist/utc/calculate/startOfUtc.d.ts +15 -2
  475. package/dist/utc/calculate/startOfUtc.js +1 -2
  476. package/dist/utc/calculate/subtractUtc.d.ts +7 -4
  477. package/dist/utc/calculate/subtractUtc.js +1 -4
  478. package/dist/utc/compare/areUtcEqualBy.d.ts +9 -3
  479. package/dist/utc/compare/areUtcEqualBy.js +2 -3
  480. package/dist/utc/convert/convertUtcToPlainDate.d.ts +8 -3
  481. package/dist/utc/convert/convertUtcToPlainDate.js +5 -6
  482. package/dist/utc/convert/convertUtcToPlainDateTime.d.ts +8 -3
  483. package/dist/utc/convert/convertUtcToPlainDateTime.js +5 -6
  484. package/dist/utc/convert/convertUtcToPlainTime.d.ts +8 -3
  485. package/dist/utc/convert/convertUtcToPlainTime.js +5 -6
  486. package/dist/utc/convert/convertUtcToUnix.d.ts +9 -4
  487. package/dist/utc/convert/convertUtcToUnix.js +3 -4
  488. package/dist/utc/convert/convertUtcToZoned.d.ts +1 -1
  489. package/dist/utc/convert/convertUtcToZoned.js +1 -1
  490. package/dist/utc/format/formatCalendarUtc.d.ts +19 -8
  491. package/dist/utc/format/formatCalendarUtc.js +8 -6
  492. package/dist/utc/format/formatHttp.d.ts +1 -1
  493. package/dist/utc/format/formatHttp.js +1 -1
  494. package/dist/utc/format/formatRelativeUtc.d.ts +30 -10
  495. package/dist/utc/format/formatRelativeUtc.js +9 -11
  496. package/dist/utc/format/formatUtc.d.ts +17 -15
  497. package/dist/utc/format/formatUtc.js +8 -8
  498. package/dist/utc/interval/intervalDifferenceUtc.d.ts +6 -0
  499. package/dist/utc/interval/intervalDivideEquallyUtc.d.ts +18 -4
  500. package/dist/utc/interval/intervalDivideEquallyUtc.js +5 -4
  501. package/dist/utc/interval/intervalFromDurationUtc.d.ts +13 -3
  502. package/dist/utc/interval/intervalFromDurationUtc.js +1 -3
  503. package/dist/utc/interval/intervalIntersectionUtc.d.ts +6 -0
  504. package/dist/utc/interval/intervalSplitAtUtc.d.ts +8 -0
  505. package/dist/utc/interval/intervalSplitAtUtc.js +2 -0
  506. package/dist/utc/interval/intervalUnionUtc.d.ts +6 -0
  507. package/dist/utc/interval/intervalXorAllUtc.d.ts +6 -0
  508. package/dist/utc/interval/intervalXorUtc.d.ts +6 -0
  509. package/dist/utc/interval/mergeIntervalsUtc.d.ts +6 -0
  510. package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +19 -6
  511. package/dist/utc/interval/splitIntervalByUnitUtc.js +6 -6
  512. package/dist/utc/parse/parseDateFromUtc.d.ts +7 -3
  513. package/dist/utc/parse/parseDateFromUtc.js +1 -3
  514. package/dist/utc/parse/parseDayFromUtc.d.ts +7 -3
  515. package/dist/utc/parse/parseDayFromUtc.js +1 -3
  516. package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +7 -3
  517. package/dist/utc/parse/parseDayOfWeekFromUtc.js +4 -6
  518. package/dist/utc/parse/parseHourFromUtc.d.ts +7 -3
  519. package/dist/utc/parse/parseHourFromUtc.js +1 -3
  520. package/dist/utc/parse/parseHttp.d.ts +1 -1
  521. package/dist/utc/parse/parseHttp.js +1 -1
  522. package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +7 -3
  523. package/dist/utc/parse/parseMicrosecondFromUtc.js +1 -3
  524. package/dist/utc/parse/parseMillisecondFromUtc.d.ts +7 -3
  525. package/dist/utc/parse/parseMillisecondFromUtc.js +1 -3
  526. package/dist/utc/parse/parseMinuteFromUtc.d.ts +7 -3
  527. package/dist/utc/parse/parseMinuteFromUtc.js +1 -3
  528. package/dist/utc/parse/parseMonthFromUtc.d.ts +7 -3
  529. package/dist/utc/parse/parseMonthFromUtc.js +1 -3
  530. package/dist/utc/parse/parseNanosecondFromUtc.d.ts +7 -3
  531. package/dist/utc/parse/parseNanosecondFromUtc.js +1 -3
  532. package/dist/utc/parse/parseSecondFromUtc.d.ts +7 -3
  533. package/dist/utc/parse/parseSecondFromUtc.js +1 -3
  534. package/dist/utc/parse/parseTimeFromUtc.d.ts +8 -3
  535. package/dist/utc/parse/parseTimeFromUtc.js +5 -6
  536. package/dist/utc/parse/parseUnitFromUtc.d.ts +17 -5
  537. package/dist/utc/parse/parseUnitFromUtc.js +6 -8
  538. package/dist/utc/parse/parseWeekFromUtc.d.ts +18 -10
  539. package/dist/utc/parse/parseWeekFromUtc.js +7 -13
  540. package/dist/utc/parse/parseYearFromUtc.d.ts +7 -3
  541. package/dist/utc/parse/parseYearFromUtc.js +1 -3
  542. package/dist/utc/validate/isValidUtcRange.d.ts +16 -5
  543. package/dist/utc/validate/isValidUtcRange.js +2 -5
  544. package/dist/zoned/calculate/addZoned.d.ts +20 -10
  545. package/dist/zoned/calculate/addZoned.js +6 -13
  546. package/dist/zoned/calculate/cycleZoned.d.ts +33 -8
  547. package/dist/zoned/calculate/cycleZoned.js +1 -8
  548. package/dist/zoned/calculate/diffZoned.d.ts +1 -1
  549. package/dist/zoned/calculate/diffZoned.js +1 -1
  550. package/dist/zoned/calculate/diffZonedAsDuration.d.ts +1 -1
  551. package/dist/zoned/calculate/diffZonedAsDuration.js +1 -1
  552. package/dist/zoned/calculate/endOfQuarterForZoned.d.ts +9 -2
  553. package/dist/zoned/calculate/endOfQuarterForZoned.js +4 -5
  554. package/dist/zoned/calculate/endOfZoned.d.ts +16 -3
  555. package/dist/zoned/calculate/endOfZoned.js +2 -3
  556. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +10 -3
  557. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +5 -6
  558. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +7 -1
  559. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +3 -4
  560. package/dist/zoned/calculate/roundZoned.d.ts +21 -4
  561. package/dist/zoned/calculate/roundZoned.js +3 -7
  562. package/dist/zoned/calculate/setZoned.d.ts +25 -8
  563. package/dist/zoned/calculate/setZoned.js +4 -12
  564. package/dist/zoned/calculate/startOfQuarterForZoned.d.ts +7 -2
  565. package/dist/zoned/calculate/startOfQuarterForZoned.js +3 -5
  566. package/dist/zoned/calculate/startOfZoned.d.ts +15 -3
  567. package/dist/zoned/calculate/startOfZoned.js +1 -3
  568. package/dist/zoned/calculate/subtractZoned.d.ts +20 -10
  569. package/dist/zoned/calculate/subtractZoned.js +6 -13
  570. package/dist/zoned/compare/areZonedEqualBy.d.ts +14 -5
  571. package/dist/zoned/compare/areZonedEqualBy.js +7 -5
  572. package/dist/zoned/compare/isBetweenZoned.d.ts +13 -1
  573. package/dist/zoned/compare/isBetweenZoned.js +4 -3
  574. package/dist/zoned/compare/isInDaylightSaving.d.ts +38 -11
  575. package/dist/zoned/compare/isInDaylightSaving.js +40 -44
  576. package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +18 -5
  577. package/dist/zoned/convert/convertPlainDateTimeToZoned.js +6 -11
  578. package/dist/zoned/convert/convertZonedToUnix.d.ts +9 -4
  579. package/dist/zoned/convert/convertZonedToUnix.js +2 -4
  580. package/dist/zoned/convert/convertZonedToZoned.d.ts +1 -1
  581. package/dist/zoned/convert/convertZonedToZoned.js +1 -1
  582. package/dist/zoned/format/formatCalendarZoned.d.ts +18 -12
  583. package/dist/zoned/format/formatCalendarZoned.js +13 -9
  584. package/dist/zoned/format/formatRelativeZoned.d.ts +41 -12
  585. package/dist/zoned/format/formatRelativeZoned.js +7 -4
  586. package/dist/zoned/format/formatRfc2822.d.ts +2 -2
  587. package/dist/zoned/format/formatRfc2822.js +2 -2
  588. package/dist/zoned/format/formatRfc3339.d.ts +2 -3
  589. package/dist/zoned/format/formatRfc3339.js +2 -3
  590. package/dist/zoned/format/formatTimeZoneName.d.ts +12 -3
  591. package/dist/zoned/format/formatTimeZoneName.js +5 -4
  592. package/dist/zoned/format/formatZonedDateTime.js +2 -1
  593. package/dist/zoned/format/formatZonedRange.js +2 -1
  594. package/dist/zoned/format/formatZonedToParts.d.ts +15 -4
  595. package/dist/zoned/format/formatZonedToParts.js +8 -5
  596. package/dist/zoned/get/getDstTransitions.d.ts +9 -10
  597. package/dist/zoned/get/getDstTransitions.js +12 -3
  598. package/dist/zoned/get/getTimeZoneOffset.d.ts +4 -1
  599. package/dist/zoned/get/getTimeZoneOffset.js +6 -3
  600. package/dist/zoned/get/getZonedNow.d.ts +13 -1
  601. package/dist/zoned/get/getZonedNow.js +12 -3
  602. package/dist/zoned/interval/intervalDifferenceZoned.d.ts +9 -0
  603. package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +22 -4
  604. package/dist/zoned/interval/intervalDivideEquallyZoned.js +6 -4
  605. package/dist/zoned/interval/intervalFromDurationZoned.d.ts +29 -10
  606. package/dist/zoned/interval/intervalFromDurationZoned.js +6 -13
  607. package/dist/zoned/interval/intervalIntersectionZoned.d.ts +9 -0
  608. package/dist/zoned/interval/intervalSplitAtZoned.d.ts +11 -0
  609. package/dist/zoned/interval/intervalSplitAtZoned.js +2 -0
  610. package/dist/zoned/interval/intervalUnionZoned.d.ts +9 -0
  611. package/dist/zoned/interval/intervalXorAllZoned.d.ts +9 -0
  612. package/dist/zoned/interval/intervalXorZoned.d.ts +9 -0
  613. package/dist/zoned/interval/mergeIntervalsZoned.d.ts +9 -0
  614. package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +27 -6
  615. package/dist/zoned/interval/splitIntervalByUnitZoned.js +11 -6
  616. package/dist/zoned/map/mapZonedDatesInRange.d.ts +9 -4
  617. package/dist/zoned/map/mapZonedDatesInRange.js +2 -4
  618. package/dist/zoned/parse/parseRfc2822.d.ts +1 -1
  619. package/dist/zoned/parse/parseRfc2822.js +1 -1
  620. package/dist/zoned/parse/parseUnitFromZoned.d.ts +9 -3
  621. package/dist/zoned/parse/parseUnitFromZoned.js +1 -3
  622. package/dist/zoned/parse/parseWeekFromZoned.d.ts +10 -3
  623. package/dist/zoned/parse/parseWeekFromZoned.js +2 -3
  624. package/dist/zoned/validate/hasDaylightSaving.d.ts +42 -11
  625. package/dist/zoned/validate/hasDaylightSaving.js +47 -31
  626. package/dist/zoned/validate/isValidZonedDateTime.d.ts +13 -0
  627. package/dist/zoned/validate/isValidZonedDateTime.js +14 -1
  628. package/dist/zoned/validate/isValidZonedRange.d.ts +15 -4
  629. package/dist/zoned/validate/isValidZonedRange.js +1 -4
  630. package/package.json +18 -5
  631. package/skills/gmt-arithmetic/SKILL.md +1 -1
  632. package/skills/gmt-basics/SKILL.md +10 -1
  633. package/skills/gmt-integration/SKILL.md +10 -5
  634. package/skills/gmt-timezone/SKILL.md +150 -21
  635. package/dist/internal/resolveReadingTimeZone.d.ts +0 -11
  636. package/dist/internal/resolveReadingTimeZone.js +0 -18
  637. package/dist/types/duration-unit.d.ts +0 -5
  638. /package/dist/types/{duration-unit.js → operating-schedule.js} +0 -0
@@ -1,33 +1,35 @@
1
1
  /**
2
2
  * Options for `formatUtc`. Extends `Intl.DateTimeFormatOptions`; only the
3
- * added/overridden members are listed below. All `Intl.DateTimeFormatOptions`
3
+ * added/overridden members are declared here. All `Intl.DateTimeFormatOptions`
4
4
  * (`dateStyle`, `timeStyle`, etc.) apply to the time-of-day portion.
5
5
  *
6
- * @remarks Members:
7
- *
8
- * | Member | Type | Default | Description |
9
- * | --- | --- | --- | --- |
10
- * | `timeZone` | `string` | `"UTC"` | IANA zone for rendering; omitted is UTC, `"local"` is the system zone, and an unknown zone makes `formatUtc` return `""`. |
11
- * | `includeTimeZoneName` | `boolean` | `false` | Appends the localized zone name (style via `Intl`) when true. |
12
- *
13
6
  * @example
14
7
  * import { FormatUtcOptions } from "@northguild/gmt/utc";
15
8
  * const opts: FormatUtcOptions = { includeTimeZoneName: true };
16
9
  */
17
10
  export interface FormatUtcOptions extends Intl.DateTimeFormatOptions {
11
+ /**
12
+ * The time zone the value is rendered in: an IANA name, a UTC offset, or `"local"` for the system
13
+ * time zone. An unknown zone returns `""`, as ECMA-402 throws RangeError for it.
14
+ *
15
+ * @defaultValue `"UTC"`
16
+ */
18
17
  timeZone?: string;
18
+ /**
19
+ * Whether the localized time zone name is appended. When true the value is formatted as Temporal's
20
+ * ECMA-402 ZonedDateTime format does, which adds a short zone name to the defaults; when false, as
21
+ * the PlainDateTime format does, and `timeZoneName` is ignored.
22
+ *
23
+ * @defaultValue `false`
24
+ */
19
25
  includeTimeZoneName?: boolean;
20
26
  }
21
27
  /**
22
28
  * Format a UTC ISO string as a localized date/time string.
23
29
  *
24
30
  * - Returns `""` if the input is not a valid UTC string.
25
- * - `timeZone` controls the IANA zone used for rendering; defaults to `"UTC"`.
26
- * - `includeTimeZoneName` appends the localized timezone name when true.
27
- * - Without `includeTimeZoneName` the wall clock is formatted as Temporal's ECMA-402 PlainDateTime
28
- * format does (`timeZoneName` is ignored); with it, as the ZonedDateTime format does (a short
29
- * zone name is added to the defaults). Either way the requested fields and style widths are kept,
30
- * and `era` alone still gets the date and time defaults.
31
+ * - The requested fields and style widths are kept, and `era` alone still gets the date and time
32
+ * defaults.
31
33
  * - **Compatibility:** before 1.16.0 some locales and calendars lost a requested width (ja-JP with
32
34
  * the japanese calendar and `month: "long"` gave `"R6/2"`), a `long`/`full` `timeStyle` replaced
33
35
  * the `dateStyle` width, `era` alone dropped the time, and `timeZoneName` alone without
@@ -36,7 +38,7 @@ export interface FormatUtcOptions extends Intl.DateTimeFormatOptions {
36
38
  *
37
39
  * @param value UTC ISO string to format
38
40
  * @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
39
- * @param options optional: { timeZone, includeTimeZoneName }
41
+ * @param options The time zone, the zone-name switch and any `Intl.DateTimeFormatOptions`
40
42
  * @returns the formatted date/time string, or "" on invalid input
41
43
  *
42
44
  * @example formatUtc("2026-03-16T18:30:00Z") // "3/16/2026, 6:30:00 PM"
@@ -4,16 +4,14 @@ import { normalizeDateTime } from "../../internal/normalizeDateTime.js";
4
4
  import { normalizeTimeZone } from "../../internal/normalizeTimeZone.js";
5
5
  import { toInstantFromUtc } from "../../internal/toInstantFromUtc.js";
6
6
  import { isValidUtc } from "../validate/index.js";
7
+ import { readDateTimeFormatOptions } from "../../internal/readDateTimeFormatOptions.js";
8
+ import { optionOrDefault } from "../../internal/optionOrDefault.js";
7
9
  /**
8
10
  * Format a UTC ISO string as a localized date/time string.
9
11
  *
10
12
  * - Returns `""` if the input is not a valid UTC string.
11
- * - `timeZone` controls the IANA zone used for rendering; defaults to `"UTC"`.
12
- * - `includeTimeZoneName` appends the localized timezone name when true.
13
- * - Without `includeTimeZoneName` the wall clock is formatted as Temporal's ECMA-402 PlainDateTime
14
- * format does (`timeZoneName` is ignored); with it, as the ZonedDateTime format does (a short
15
- * zone name is added to the defaults). Either way the requested fields and style widths are kept,
16
- * and `era` alone still gets the date and time defaults.
13
+ * - The requested fields and style widths are kept, and `era` alone still gets the date and time
14
+ * defaults.
17
15
  * - **Compatibility:** before 1.16.0 some locales and calendars lost a requested width (ja-JP with
18
16
  * the japanese calendar and `month: "long"` gave `"R6/2"`), a `long`/`full` `timeStyle` replaced
19
17
  * the `dateStyle` width, `era` alone dropped the time, and `timeZoneName` alone without
@@ -22,7 +20,7 @@ import { isValidUtc } from "../validate/index.js";
22
20
  *
23
21
  * @param value UTC ISO string to format
24
22
  * @param locale optional: BCP 47 locale tag, or a preference list of tags (ECMA-402)
25
- * @param options optional: { timeZone, includeTimeZoneName }
23
+ * @param options The time zone, the zone-name switch and any `Intl.DateTimeFormatOptions`
26
24
  * @returns the formatted date/time string, or "" on invalid input
27
25
  *
28
26
  * @example formatUtc("2026-03-16T18:30:00Z") // "3/16/2026, 6:30:00 PM"
@@ -45,7 +43,9 @@ export function formatUtc(value, locale, options) {
45
43
  return "";
46
44
  if (!isValidUtc(value))
47
45
  return "";
48
- const { timeZone, includeTimeZoneName = false, ...intlOptions } = options ?? {};
46
+ // Each option is read once (GetOption), inherited ones included.
47
+ const includeTimeZoneName = optionOrDefault(options?.includeTimeZoneName, false);
48
+ const { timeZone, ...intlOptions } = readDateTimeFormatOptions(options);
49
49
  const instant = toInstantFromUtc(value);
50
50
  if (instant === null)
51
51
  return "";
@@ -27,6 +27,12 @@
27
27
  * @example intervalDifferenceUtc("invalid", "2024-12-31T17:00:00Z", "2024-06-01T12:00:00Z", "2024-07-01T13:00:00Z") // []
28
28
  */
29
29
  export declare function intervalDifferenceUtc(aStart: string, aEnd: string, bStart: string, bEnd: string): Array<{
30
+ /** The instant the interval begins at, as an ISO 8601 UTC string ending in `Z`. */
30
31
  start: string;
32
+ /**
33
+ * The first instant after the interval, in the same format as `start`. It is exclusive: the
34
+ * interval holds everything from `start` up to but not including this value. It is always later
35
+ * than `start`.
36
+ */
31
37
  end: string;
32
38
  }>;
@@ -10,18 +10,19 @@
10
10
  * split is exact whenever the span divides evenly by `n` and within half a nanosecond of the
11
11
  * exact cut otherwise, at any span length (no double arithmetic) — no DST is involved, since
12
12
  * UTC has no time zone offset.
13
+ * - When `n` is larger than the number of nanoseconds in the interval, some pieces are empty (their
14
+ * `start` equals their `end`): the result always has exactly `n` pieces.
13
15
  * - `n === 1` returns the original interval unchanged, as a single-element array.
14
16
  * - A zero-length interval (`start === end`) returns `n` identical zero-length sub-intervals.
15
17
  * - Returns `[]` when `n` is not a positive integer, or on invalid input (unparseable
16
18
  * start/end, `start > end`, leap-second strings).
17
- * - `options.maxPieces` (positive safe integer, default `1_000_000`) bounds the output: when `n`
18
- * exceeds it, or exceeds the longest possible array (2^32 - 1), the function returns `[]`
19
- * before building any piece. An invalid `maxPieces` also returns `[]`.
19
+ * - Returns `[]` before building any piece when `n` exceeds the longest possible array
20
+ * (2^32 - 1).
20
21
  *
21
22
  * @param start ISO UTC datetime string for the interval start
22
23
  * @param end ISO UTC datetime string for the interval end
23
24
  * @param n number of equal sub-intervals to produce (positive integer)
24
- * @param options optional: `maxPieces` (positive safe integer, default `1_000_000`)
25
+ * @param options A limit on the size of the result
25
26
  * @returns array of `n` `{ start, end }` records, or `[]` on invalid input
26
27
  *
27
28
  * @example intervalDivideEquallyUtc("2024-01-01T00:00:00Z", "2024-01-04T00:00:00Z", 3) // [{ start: "2024-01-01T00:00:00Z", end: "2024-01-02T00:00:00Z" }, { start: "2024-01-02T00:00:00Z", end: "2024-01-03T00:00:00Z" }, { start: "2024-01-03T00:00:00Z", end: "2024-01-04T00:00:00Z" }]
@@ -32,8 +33,21 @@
32
33
  * @example intervalDivideEquallyUtc("2024-01-01T00:00:00Z", "2024-01-04T00:00:00Z", 3, { maxPieces: 3 }) // [{ start: "2024-01-01T00:00:00Z", end: "2024-01-02T00:00:00Z" }, { start: "2024-01-02T00:00:00Z", end: "2024-01-03T00:00:00Z" }, { start: "2024-01-03T00:00:00Z", end: "2024-01-04T00:00:00Z" }]
33
34
  */
34
35
  export declare function intervalDivideEquallyUtc(start: string, end: string, n: number, options?: {
36
+ /**
37
+ * The most records the result may hold. A result that would hold more, or more than the longest
38
+ * possible array (2^32 - 1 elements), returns `[]` and none is built. A value that is not a
39
+ * positive safe integer also returns `[]`.
40
+ *
41
+ * @defaultValue `1_000_000`
42
+ */
35
43
  maxPieces?: number;
36
44
  }): Array<{
45
+ /** The instant the interval begins at, as an ISO 8601 UTC string ending in `Z`. */
37
46
  start: string;
47
+ /**
48
+ * The first instant after the interval, in the same format as `start`. It is exclusive: the
49
+ * interval holds everything from `start` up to but not including this value. It can equal
50
+ * `start`, which makes the interval empty.
51
+ */
38
52
  end: string;
39
53
  }>;
@@ -15,18 +15,19 @@ import { exceedsPieceLimit, resolveMaxPieces } from "../../internal/maxPieces.js
15
15
  * split is exact whenever the span divides evenly by `n` and within half a nanosecond of the
16
16
  * exact cut otherwise, at any span length (no double arithmetic) — no DST is involved, since
17
17
  * UTC has no time zone offset.
18
+ * - When `n` is larger than the number of nanoseconds in the interval, some pieces are empty (their
19
+ * `start` equals their `end`): the result always has exactly `n` pieces.
18
20
  * - `n === 1` returns the original interval unchanged, as a single-element array.
19
21
  * - A zero-length interval (`start === end`) returns `n` identical zero-length sub-intervals.
20
22
  * - Returns `[]` when `n` is not a positive integer, or on invalid input (unparseable
21
23
  * start/end, `start > end`, leap-second strings).
22
- * - `options.maxPieces` (positive safe integer, default `1_000_000`) bounds the output: when `n`
23
- * exceeds it, or exceeds the longest possible array (2^32 - 1), the function returns `[]`
24
- * before building any piece. An invalid `maxPieces` also returns `[]`.
24
+ * - Returns `[]` before building any piece when `n` exceeds the longest possible array
25
+ * (2^32 - 1).
25
26
  *
26
27
  * @param start ISO UTC datetime string for the interval start
27
28
  * @param end ISO UTC datetime string for the interval end
28
29
  * @param n number of equal sub-intervals to produce (positive integer)
29
- * @param options optional: `maxPieces` (positive safe integer, default `1_000_000`)
30
+ * @param options A limit on the size of the result
30
31
  * @returns array of `n` `{ start, end }` records, or `[]` on invalid input
31
32
  *
32
33
  * @example intervalDivideEquallyUtc("2024-01-01T00:00:00Z", "2024-01-04T00:00:00Z", 3) // [{ start: "2024-01-01T00:00:00Z", end: "2024-01-02T00:00:00Z" }, { start: "2024-01-02T00:00:00Z", end: "2024-01-03T00:00:00Z" }, { start: "2024-01-03T00:00:00Z", end: "2024-01-04T00:00:00Z" }]
@@ -10,15 +10,13 @@ import type { Overflow } from "../../types/index.js";
10
10
  * reference point (mirrors `addUtc`).
11
11
  * - A negative `duration` (e.g. `"-P1D"`) can invert the computed span; returns null when that
12
12
  * happens, mirroring `intervalIntersectionUtc`'s `start > end` rejection.
13
- * - `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. adding 1 month
14
- * to Jan 31: "constrain" clamps to Feb 29/28, "reject" returns null.
15
13
  * - Returns null on invalid input (unparseable `value`, invalid `duration`, or an `anchor` other
16
14
  * than `"start"`/`"end"`).
17
15
  *
18
16
  * @param value ISO UTC datetime string (e.g. "2024-03-10T12:00:00Z")
19
17
  * @param duration ISO 8601 duration string
20
18
  * @param anchor "start" | "end" — which endpoint `value` represents
21
- * @param options optional: overflow ("constrain" | "reject")
19
+ * @param options How an out-of-range result is handled
22
20
  * @returns `{ start, end }` with the constructed span (UTC Instant strings), or null on invalid input
23
21
  *
24
22
  * @example intervalFromDurationUtc("2024-01-01T00:00:00Z", "P1D", "start") // { start: "2024-01-01T00:00:00Z", end: "2024-01-02T00:00:00Z" }
@@ -28,8 +26,20 @@ import type { Overflow } from "../../types/index.js";
28
26
  * @example intervalFromDurationUtc("invalid", "P1D", "start") // null
29
27
  */
30
28
  export declare function intervalFromDurationUtc(value: string, duration: string, anchor: "start" | "end", options?: {
29
+ /**
30
+ * What to do when the result is not a real date. `"constrain"` clamps it to the last valid day,
31
+ * so Jan 31 + 1 month is Feb 29/28 (TC39 Temporal); `"reject"` returns `null`.
32
+ *
33
+ * @defaultValue `"constrain"`, Temporal's default.
34
+ */
31
35
  overflow?: Overflow;
32
36
  }): {
37
+ /** The instant the interval begins at, as an ISO 8601 UTC string ending in `Z`. */
33
38
  start: string;
39
+ /**
40
+ * The first instant after the interval, in the same format as `start`. It is exclusive: the
41
+ * interval holds everything from `start` up to but not including this value. It can equal
42
+ * `start`, which makes the interval empty.
43
+ */
34
44
  end: string;
35
45
  } | null;
@@ -15,15 +15,13 @@ import { isOptionsArgument } from "../../internal/isObject.js";
15
15
  * reference point (mirrors `addUtc`).
16
16
  * - A negative `duration` (e.g. `"-P1D"`) can invert the computed span; returns null when that
17
17
  * happens, mirroring `intervalIntersectionUtc`'s `start > end` rejection.
18
- * - `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. adding 1 month
19
- * to Jan 31: "constrain" clamps to Feb 29/28, "reject" returns null.
20
18
  * - Returns null on invalid input (unparseable `value`, invalid `duration`, or an `anchor` other
21
19
  * than `"start"`/`"end"`).
22
20
  *
23
21
  * @param value ISO UTC datetime string (e.g. "2024-03-10T12:00:00Z")
24
22
  * @param duration ISO 8601 duration string
25
23
  * @param anchor "start" | "end" — which endpoint `value` represents
26
- * @param options optional: overflow ("constrain" | "reject")
24
+ * @param options How an out-of-range result is handled
27
25
  * @returns `{ start, end }` with the constructed span (UTC Instant strings), or null on invalid input
28
26
  *
29
27
  * @example intervalFromDurationUtc("2024-01-01T00:00:00Z", "P1D", "start") // { start: "2024-01-01T00:00:00Z", end: "2024-01-02T00:00:00Z" }
@@ -24,6 +24,12 @@
24
24
  * @example intervalIntersectionUtc("invalid", "2024-06-30T23:59:59Z", "2024-04-01T00:00:00Z", "2024-12-31T23:59:59Z") // null
25
25
  */
26
26
  export declare function intervalIntersectionUtc(aStart: string, aEnd: string, bStart: string, bEnd: string): {
27
+ /** The instant the interval begins at, as an ISO 8601 UTC string ending in `Z`. */
27
28
  start: string;
29
+ /**
30
+ * The first instant after the interval, in the same format as `start`. It is exclusive: the
31
+ * interval holds everything from `start` up to but not including this value. It can equal
32
+ * `start`, which makes the interval empty.
33
+ */
28
34
  end: string;
29
35
  } | null;
@@ -13,6 +13,8 @@
13
13
  * there, so the pieces share no value and together cover the interval exactly once (the rule
14
14
  * CORE-6's `splitIntervalAt` uses).
15
15
  * - Returns `[{ start, end }]` (the whole interval, unsplit) when no valid in-range point remains.
16
+ * - A piece's `end` equals its `start` only when the interval itself is zero-length (`start`
17
+ * equal to `end`): the result is then that one empty piece, whatever the points.
16
18
  * - Returns `[]` when `points` is not an array, when any element is not a valid ISO UTC
17
19
  * datetime string, or on invalid input (unparseable start/end, `start > end`, leap-second
18
20
  * strings).
@@ -27,6 +29,12 @@
27
29
  * @example intervalSplitAtUtc("invalid", "2024-01-10T00:00:00Z", ["2024-01-05T00:00:00Z"]) // []
28
30
  */
29
31
  export declare function intervalSplitAtUtc(start: string, end: string, points: string[]): Array<{
32
+ /** The instant the interval begins at, as an ISO 8601 UTC string ending in `Z`. */
30
33
  start: string;
34
+ /**
35
+ * The first instant after the interval, in the same format as `start`. It is exclusive: the
36
+ * interval holds everything from `start` up to but not including this value. It can equal
37
+ * `start`, which makes the interval empty.
38
+ */
31
39
  end: string;
32
40
  }>;
@@ -16,6 +16,8 @@ import { isValidUtc } from "../validate/index.js";
16
16
  * there, so the pieces share no value and together cover the interval exactly once (the rule
17
17
  * CORE-6's `splitIntervalAt` uses).
18
18
  * - Returns `[{ start, end }]` (the whole interval, unsplit) when no valid in-range point remains.
19
+ * - A piece's `end` equals its `start` only when the interval itself is zero-length (`start`
20
+ * equal to `end`): the result is then that one empty piece, whatever the points.
19
21
  * - Returns `[]` when `points` is not an array, when any element is not a valid ISO UTC
20
22
  * datetime string, or on invalid input (unparseable start/end, `start > end`, leap-second
21
23
  * strings).
@@ -27,6 +27,12 @@
27
27
  * @example intervalUnionUtc("invalid", "2024-06-30T23:59:59Z", "2024-04-01T00:00:00Z", "2024-12-31T23:59:59Z") // null
28
28
  */
29
29
  export declare function intervalUnionUtc(aStart: string, aEnd: string, bStart: string, bEnd: string): {
30
+ /** The instant the interval begins at, as an ISO 8601 UTC string ending in `Z`. */
30
31
  start: string;
32
+ /**
33
+ * The first instant after the interval, in the same format as `start`. It is exclusive: the
34
+ * interval holds everything from `start` up to but not including this value. It is always later
35
+ * than `start`.
36
+ */
31
37
  end: string;
32
38
  } | null;
@@ -26,6 +26,12 @@ export declare function intervalXorAllUtc(intervals: Array<{
26
26
  start: string;
27
27
  end: string;
28
28
  }>): Array<{
29
+ /** The instant the interval begins at, as an ISO 8601 UTC string ending in `Z`. */
29
30
  start: string;
31
+ /**
32
+ * The first instant after the interval, in the same format as `start`. It is exclusive: the
33
+ * interval holds everything from `start` up to but not including this value. It is always later
34
+ * than `start`.
35
+ */
30
36
  end: string;
31
37
  }>;
@@ -22,6 +22,12 @@
22
22
  * @example intervalXorUtc("invalid", "2024-06-30T12:00:00Z", "2024-07-01T13:00:00Z", "2024-12-31T17:00:00Z") // []
23
23
  */
24
24
  export declare function intervalXorUtc(aStart: string, aEnd: string, bStart: string, bEnd: string): Array<{
25
+ /** The instant the interval begins at, as an ISO 8601 UTC string ending in `Z`. */
25
26
  start: string;
27
+ /**
28
+ * The first instant after the interval, in the same format as `start`. It is exclusive: the
29
+ * interval holds everything from `start` up to but not including this value. It is always later
30
+ * than `start`.
31
+ */
26
32
  end: string;
27
33
  }>;
@@ -27,6 +27,12 @@ export declare function mergeIntervalsUtc(intervals: Array<{
27
27
  start: string;
28
28
  end: string;
29
29
  }>): Array<{
30
+ /** The instant the interval begins at, as an ISO 8601 UTC string ending in `Z`. */
30
31
  start: string;
32
+ /**
33
+ * The first instant after the interval, in the same format as `start`. It is exclusive: the
34
+ * interval holds everything from `start` up to but not including this value. It is always later
35
+ * than `start`.
36
+ */
31
37
  end: string;
32
38
  }>;
@@ -8,8 +8,11 @@
8
8
  * CORE-6's `splitIntervalAt` uses).
9
9
  * - The final sub-interval is trimmed so its `end` never exceeds the original `end`.
10
10
  * - Calendar-unit boundaries (years, months, weeks, days) are computed from `start`
11
- * (`start + k × amount`, as Temporal and Luxon's `Interval.splitBy` do), so month-end starts
12
- * don't drift: a monthly split from January 31 lands on February 29, March 31, April 30.
11
+ * (`start + k × amount`), so month-end starts don't drift: a monthly split from January 31
12
+ * lands on February 29, March 31, April 30. Temporal's `add` constrains a day the month lacks
13
+ * to the month's last day, and stepping from that boundary would keep the shortened day
14
+ * (February 29, then March 29).
15
+ * - Comparison: Luxon's `Interval.splitBy` computes each boundary from the start the same way.
13
16
  * - Exact-unit boundaries (hours and smaller) step from the previous boundary. Exact units never
14
17
  * clamp, and stepping keeps nanosecond precision where `k × amount` would pass
15
18
  * `Number.MAX_SAFE_INTEGER`.
@@ -18,15 +21,12 @@
18
21
  * - Returns `[{ start, end }]` when `start === end` (zero-length interval).
19
22
  * - Returns `[]` on invalid input (unparseable start/end, unsupported unit, non-positive amount,
20
23
  * leap-second strings).
21
- * - `options.maxPieces` (positive safe integer, default `1_000_000`) bounds the output: a split
22
- * into more slices returns `[]`, decided from the span before stepping where it can be, and
23
- * otherwise as soon as slice `maxPieces + 1` is due. An invalid `maxPieces` also returns `[]`.
24
24
  *
25
25
  * @param start ISO UTC datetime string for the interval start
26
26
  * @param end ISO UTC datetime string for the interval end
27
27
  * @param unit duration unit string — any `DateTimeDurationUnit`
28
28
  * @param amount positive number of units per step
29
- * @param options optional: `maxPieces` (positive safe integer, default `1_000_000`)
29
+ * @param options A limit on the size of the result
30
30
  * @returns array of `{ start, end }` records, or [] on invalid input
31
31
  *
32
32
  * @example splitIntervalByUnitUtc("2024-01-01T00:00:00Z", "2024-01-02T00:00:00Z", "hour", 6) // [{ start: "2024-01-01T00:00:00Z", end: "2024-01-01T06:00:00Z" }, { start: "2024-01-01T06:00:00Z", end: "2024-01-01T12:00:00Z" }, { start: "2024-01-01T12:00:00Z", end: "2024-01-01T18:00:00Z" }, { start: "2024-01-01T18:00:00Z", end: "2024-01-02T00:00:00Z" }]
@@ -39,8 +39,21 @@
39
39
  * @example splitIntervalByUnitUtc("+275760-09-12T23:00:00Z", "+275760-09-13T00:00:00Z", "hour", 2) // [{ start: "+275760-09-12T23:00:00Z", end: "+275760-09-13T00:00:00Z" }] (the step past the last instant is trimmed to `end`)
40
40
  */
41
41
  export declare function splitIntervalByUnitUtc(start: string, end: string, unit: string, amount: number, options?: {
42
+ /**
43
+ * The most records the result may hold. A result that would hold more, or more than the longest
44
+ * possible array (2^32 - 1 elements), returns `[]` and none is built. A value that is not a
45
+ * positive safe integer also returns `[]`.
46
+ *
47
+ * @defaultValue `1_000_000`
48
+ */
42
49
  maxPieces?: number;
43
50
  }): Array<{
51
+ /** The instant the interval begins at, as an ISO 8601 UTC string ending in `Z`. */
44
52
  start: string;
53
+ /**
54
+ * The first instant after the interval, in the same format as `start`. It is exclusive: the
55
+ * interval holds everything from `start` up to but not including this value. It can equal
56
+ * `start`, which makes the interval empty.
57
+ */
45
58
  end: string;
46
59
  }>;
@@ -15,8 +15,11 @@ import { minSlicesForSpan } from "../../internal/splitStep.js";
15
15
  * CORE-6's `splitIntervalAt` uses).
16
16
  * - The final sub-interval is trimmed so its `end` never exceeds the original `end`.
17
17
  * - Calendar-unit boundaries (years, months, weeks, days) are computed from `start`
18
- * (`start + k × amount`, as Temporal and Luxon's `Interval.splitBy` do), so month-end starts
19
- * don't drift: a monthly split from January 31 lands on February 29, March 31, April 30.
18
+ * (`start + k × amount`), so month-end starts don't drift: a monthly split from January 31
19
+ * lands on February 29, March 31, April 30. Temporal's `add` constrains a day the month lacks
20
+ * to the month's last day, and stepping from that boundary would keep the shortened day
21
+ * (February 29, then March 29).
22
+ * - Comparison: Luxon's `Interval.splitBy` computes each boundary from the start the same way.
20
23
  * - Exact-unit boundaries (hours and smaller) step from the previous boundary. Exact units never
21
24
  * clamp, and stepping keeps nanosecond precision where `k × amount` would pass
22
25
  * `Number.MAX_SAFE_INTEGER`.
@@ -25,15 +28,12 @@ import { minSlicesForSpan } from "../../internal/splitStep.js";
25
28
  * - Returns `[{ start, end }]` when `start === end` (zero-length interval).
26
29
  * - Returns `[]` on invalid input (unparseable start/end, unsupported unit, non-positive amount,
27
30
  * leap-second strings).
28
- * - `options.maxPieces` (positive safe integer, default `1_000_000`) bounds the output: a split
29
- * into more slices returns `[]`, decided from the span before stepping where it can be, and
30
- * otherwise as soon as slice `maxPieces + 1` is due. An invalid `maxPieces` also returns `[]`.
31
31
  *
32
32
  * @param start ISO UTC datetime string for the interval start
33
33
  * @param end ISO UTC datetime string for the interval end
34
34
  * @param unit duration unit string — any `DateTimeDurationUnit`
35
35
  * @param amount positive number of units per step
36
- * @param options optional: `maxPieces` (positive safe integer, default `1_000_000`)
36
+ * @param options A limit on the size of the result
37
37
  * @returns array of `{ start, end }` records, or [] on invalid input
38
38
  *
39
39
  * @example splitIntervalByUnitUtc("2024-01-01T00:00:00Z", "2024-01-02T00:00:00Z", "hour", 6) // [{ start: "2024-01-01T00:00:00Z", end: "2024-01-01T06:00:00Z" }, { start: "2024-01-01T06:00:00Z", end: "2024-01-01T12:00:00Z" }, { start: "2024-01-01T12:00:00Z", end: "2024-01-01T18:00:00Z" }, { start: "2024-01-01T18:00:00Z", end: "2024-01-02T00:00:00Z" }]
@@ -2,12 +2,10 @@
2
2
  * Extract the date portion from a UTC datetime string.
3
3
  *
4
4
  * - Uses Temporal.Instant.from to parse, converts to UTC date.
5
- * - Reads the value on the wall clock of `options.timeZone` (an IANA zone, default UTC), as
6
- * `parseTimeFromUtc` does; an invalid zone returns "".
7
5
  * - Returns "" for invalid input.
8
6
  *
9
7
  * @param value ISO UTC datetime string (e.g., "2024-03-17T14:30:45Z")
10
- * @param options optional: timeZone (IANA, default "UTC")
8
+ * @param options The time zone the value is read in
11
9
  * @returns ISO date string (e.g., "2024-03-17") or "" on invalid input
12
10
  *
13
11
  * @example parseDateFromUtc("2024-03-17T14:30:45Z") // "2024-03-17"
@@ -15,5 +13,11 @@
15
13
  * @example parseDateFromUtc("invalid") // ""
16
14
  */
17
15
  export declare function parseDateFromUtc(value: string, options?: {
16
+ /**
17
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
18
+ * the system time zone. An unknown zone returns `""`.
19
+ *
20
+ * @defaultValue `"UTC"`
21
+ */
18
22
  timeZone?: string;
19
23
  }): string;
@@ -4,12 +4,10 @@ import { isOptionsArgument } from "../../internal/isObject.js";
4
4
  * Extract the date portion from a UTC datetime string.
5
5
  *
6
6
  * - Uses Temporal.Instant.from to parse, converts to UTC date.
7
- * - Reads the value on the wall clock of `options.timeZone` (an IANA zone, default UTC), as
8
- * `parseTimeFromUtc` does; an invalid zone returns "".
9
7
  * - Returns "" for invalid input.
10
8
  *
11
9
  * @param value ISO UTC datetime string (e.g., "2024-03-17T14:30:45Z")
12
- * @param options optional: timeZone (IANA, default "UTC")
10
+ * @param options The time zone the value is read in
13
11
  * @returns ISO date string (e.g., "2024-03-17") or "" on invalid input
14
12
  *
15
13
  * @example parseDateFromUtc("2024-03-17T14:30:45Z") // "2024-03-17"
@@ -2,12 +2,10 @@
2
2
  * Return the day of month (1-31) from a UTC datetime string.
3
3
  *
4
4
  * - Returns zero-padded string for day.
5
- * - Reads the value on the wall clock of `options.timeZone` (an IANA zone, default UTC), as
6
- * `parseTimeFromUtc` does; an invalid zone returns "".
7
5
  * - Returns "" for invalid input.
8
6
  *
9
7
  * @param value ISO UTC datetime string (e.g., "2024-03-17T14:30:45Z")
10
- * @param options optional: timeZone (IANA, default "UTC")
8
+ * @param options The time zone the value is read in
11
9
  * @returns Day (01-31) or "" on invalid input
12
10
  *
13
11
  * @example parseDayFromUtc("2024-03-17T14:30:45Z") // "17"
@@ -15,5 +13,11 @@
15
13
  * @example parseDayFromUtc("invalid") // ""
16
14
  */
17
15
  export declare function parseDayFromUtc(value: string, options?: {
16
+ /**
17
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
18
+ * the system time zone. An unknown zone returns `""`.
19
+ *
20
+ * @defaultValue `"UTC"`
21
+ */
18
22
  timeZone?: string;
19
23
  }): string;
@@ -4,12 +4,10 @@ import { isOptionsArgument } from "../../internal/isObject.js";
4
4
  * Return the day of month (1-31) from a UTC datetime string.
5
5
  *
6
6
  * - Returns zero-padded string for day.
7
- * - Reads the value on the wall clock of `options.timeZone` (an IANA zone, default UTC), as
8
- * `parseTimeFromUtc` does; an invalid zone returns "".
9
7
  * - Returns "" for invalid input.
10
8
  *
11
9
  * @param value ISO UTC datetime string (e.g., "2024-03-17T14:30:45Z")
12
- * @param options optional: timeZone (IANA, default "UTC")
10
+ * @param options The time zone the value is read in
13
11
  * @returns Day (01-31) or "" on invalid input
14
12
  *
15
13
  * @example parseDayFromUtc("2024-03-17T14:30:45Z") // "17"
@@ -2,12 +2,10 @@
2
2
  * Return the day of week (1-7) from a UTC datetime string.
3
3
  *
4
4
  * - Monday=1 through Sunday=7.
5
- * - Reads the value on the wall clock of `options.timeZone` (an IANA zone, default UTC), as
6
- * `parseTimeFromUtc` does; an invalid zone returns null.
7
5
  * - Returns null for invalid input.
8
6
  *
9
7
  * @param value ISO UTC datetime string (e.g., "2024-03-17T14:30:45Z")
10
- * @param options optional: timeZone (IANA, default "UTC")
8
+ * @param options The time zone the value is read in
11
9
  * @returns Day of week (1-7) or null on invalid input
12
10
  *
13
11
  * @example parseDayOfWeekFromUtc("2024-03-17T14:30:45Z") // 7
@@ -16,5 +14,11 @@
16
14
  * @example parseDayOfWeekFromUtc("invalid") // null
17
15
  */
18
16
  export declare function parseDayOfWeekFromUtc(value: string, options?: {
17
+ /**
18
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
19
+ * the system time zone. An unknown zone returns `null`.
20
+ *
21
+ * @defaultValue `"UTC"`
22
+ */
19
23
  timeZone?: string;
20
24
  }): number | null;
@@ -1,17 +1,15 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
- import { resolveReadingTimeZone } from "../../internal/resolveReadingTimeZone.js";
2
+ import { normalizeTimeZone } from "../../internal/normalizeTimeZone.js";
3
3
  import { isValidUtc } from "../validate/index.js";
4
4
  import { isOptionsArgument } from "../../internal/isObject.js";
5
5
  /**
6
6
  * Return the day of week (1-7) from a UTC datetime string.
7
7
  *
8
8
  * - Monday=1 through Sunday=7.
9
- * - Reads the value on the wall clock of `options.timeZone` (an IANA zone, default UTC), as
10
- * `parseTimeFromUtc` does; an invalid zone returns null.
11
9
  * - Returns null for invalid input.
12
10
  *
13
11
  * @param value ISO UTC datetime string (e.g., "2024-03-17T14:30:45Z")
14
- * @param options optional: timeZone (IANA, default "UTC")
12
+ * @param options The time zone the value is read in
15
13
  * @returns Day of week (1-7) or null on invalid input
16
14
  *
17
15
  * @example parseDayOfWeekFromUtc("2024-03-17T14:30:45Z") // 7
@@ -26,8 +24,8 @@ export function parseDayOfWeekFromUtc(value, options) {
26
24
  }
27
25
  if (!isValidUtc(value))
28
26
  return null;
29
- const timeZone = resolveReadingTimeZone(options?.timeZone);
30
- if (timeZone === null)
27
+ const timeZone = normalizeTimeZone(options?.timeZone);
28
+ if (timeZone === "")
31
29
  return null;
32
30
  try {
33
31
  const dateTime = Temporal.Instant.from(value).toZonedDateTimeISO(timeZone);
@@ -2,12 +2,10 @@
2
2
  * Return the hour (0-23) from a UTC datetime string.
3
3
  *
4
4
  * - Returns zero-padded string for hour.
5
- * - Reads the value on the wall clock of `options.timeZone` (an IANA zone, default UTC), as
6
- * `parseTimeFromUtc` does; an invalid zone returns "".
7
5
  * - Returns "" for invalid input.
8
6
  *
9
7
  * @param value ISO UTC datetime string (e.g., "2024-03-17T14:30:45Z")
10
- * @param options optional: timeZone (IANA, default "UTC")
8
+ * @param options The time zone the value is read in
11
9
  * @returns Hour (00-23) or "" on invalid input
12
10
  *
13
11
  * @example parseHourFromUtc("2024-03-17T14:30:45Z") // "14"
@@ -15,5 +13,11 @@
15
13
  * @example parseHourFromUtc("invalid") // ""
16
14
  */
17
15
  export declare function parseHourFromUtc(value: string, options?: {
16
+ /**
17
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
18
+ * the system time zone. An unknown zone returns `""`.
19
+ *
20
+ * @defaultValue `"UTC"`
21
+ */
18
22
  timeZone?: string;
19
23
  }): string;
@@ -4,12 +4,10 @@ import { isOptionsArgument } from "../../internal/isObject.js";
4
4
  * Return the hour (0-23) from a UTC datetime string.
5
5
  *
6
6
  * - Returns zero-padded string for hour.
7
- * - Reads the value on the wall clock of `options.timeZone` (an IANA zone, default UTC), as
8
- * `parseTimeFromUtc` does; an invalid zone returns "".
9
7
  * - Returns "" for invalid input.
10
8
  *
11
9
  * @param value ISO UTC datetime string (e.g., "2024-03-17T14:30:45Z")
12
- * @param options optional: timeZone (IANA, default "UTC")
10
+ * @param options The time zone the value is read in
13
11
  * @returns Hour (00-23) or "" on invalid input
14
12
  *
15
13
  * @example parseHourFromUtc("2024-03-17T14:30:45Z") // "14"
@@ -3,7 +3,7 @@
3
3
  * `Last-Modified`/`Date`/`Expires` use — into a UTC ISO 8601 datetime string.
4
4
  *
5
5
  * - **Decoding, not display.** Accepts English weekday/month names only, per
6
- * the fixed grammar (see `formatHttp`'s JSDoc and roadmap Decision 1).
6
+ * the fixed grammar (see `formatHttp`'s JSDoc).
7
7
  * - **All three HTTP-date formats**, as RFC 9110 §5.6.7 requires ("A
8
8
  * recipient that parses a timestamp value in an HTTP field MUST accept all
9
9
  * three"): IMF-fixdate (`Sun, 06 Nov 1994 08:49:37 GMT`), the obsolete