@northguild/gmt 1.19.0 → 1.20.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 (1024) hide show
  1. package/README.md +12 -12
  2. package/dist/calendar/business/businessDaysBetween.d.ts +2 -2
  3. package/dist/calendar/business/businessDaysBetween.js +11 -35
  4. package/dist/calendar/business/mergeCalendars.d.ts +1 -1
  5. package/dist/calendar/business/mergeCalendars.js +8 -9
  6. package/dist/calendar/business/nextBusinessDay.d.ts +2 -2
  7. package/dist/calendar/business/nextBusinessDay.js +2 -2
  8. package/dist/calendar/business/previousBusinessDay.d.ts +2 -2
  9. package/dist/calendar/business/previousBusinessDay.js +2 -2
  10. package/dist/calendar/business/rollDate.d.ts +3 -3
  11. package/dist/calendar/business/rollDate.js +10 -43
  12. package/dist/calendar/calculate/bucketRange.d.ts +9 -9
  13. package/dist/calendar/calculate/bucketRange.js +9 -9
  14. package/dist/calendar/calculate/floorToZone.d.ts +2 -2
  15. package/dist/calendar/calculate/floorToZone.js +1 -1
  16. package/dist/calendar/calculate/getFiscalPeriod.d.ts +50 -40
  17. package/dist/calendar/calculate/getFiscalPeriod.js +78 -57
  18. package/dist/calendar/calculate/getQuarter.d.ts +26 -21
  19. package/dist/calendar/calculate/getQuarter.js +48 -19
  20. package/dist/calendar/hours/addOperatingTime.d.ts +3 -3
  21. package/dist/calendar/hours/addOperatingTime.js +3 -3
  22. package/dist/calendar/hours/isOpenAt.d.ts +3 -3
  23. package/dist/calendar/hours/isOpenAt.js +3 -3
  24. package/dist/calendar/hours/nextCloseAt.d.ts +2 -2
  25. package/dist/calendar/hours/nextCloseAt.js +2 -2
  26. package/dist/calendar/hours/nextOpenAt.d.ts +3 -3
  27. package/dist/calendar/hours/nextOpenAt.js +3 -3
  28. package/dist/calendar/hours/operatingIntervals.d.ts +2 -2
  29. package/dist/calendar/hours/operatingIntervals.js +4 -6
  30. package/dist/calendar/hours/operatingTimeBetween.d.ts +3 -3
  31. package/dist/calendar/hours/operatingTimeBetween.js +6 -8
  32. package/dist/calendar/hours/recurringWindows.d.ts +5 -5
  33. package/dist/calendar/hours/recurringWindows.js +9 -10
  34. package/dist/calendar/index.d.ts +1 -1
  35. package/dist/calendar/index.js +2 -2
  36. package/dist/calendar/validate/index.d.ts +3 -0
  37. package/dist/calendar/validate/index.js +3 -0
  38. package/dist/calendar/validate/isValidFiscalCalendar.d.ts +23 -0
  39. package/dist/calendar/validate/isValidFiscalCalendar.js +44 -0
  40. package/dist/calendar/validate/isValidFiscalExtraWeek.d.ts +19 -0
  41. package/dist/calendar/validate/isValidFiscalExtraWeek.js +23 -0
  42. package/dist/calendar/validate/isValidFiscalPattern.d.ts +7 -7
  43. package/dist/calendar/validate/isValidFiscalPattern.js +7 -7
  44. package/dist/calendar/validate/isValidFiscalYearLabel.d.ts +20 -0
  45. package/dist/calendar/validate/isValidFiscalYearLabel.js +24 -0
  46. package/dist/calendar/validate/isValidRollConvention.js +2 -10
  47. package/dist/calendar/validate/isValidZoneBucketUnit.d.ts +1 -1
  48. package/dist/duration/calculate/absDuration.js +1 -1
  49. package/dist/duration/calculate/addDuration.js +1 -1
  50. package/dist/duration/calculate/durationFromUnits.js +1 -1
  51. package/dist/duration/calculate/getDurationSign.js +1 -1
  52. package/dist/duration/calculate/getDurationUnit.d.ts +1 -1
  53. package/dist/duration/calculate/getDurationUnit.js +1 -1
  54. package/dist/duration/calculate/negateDuration.js +1 -1
  55. package/dist/duration/calculate/subtractDuration.js +1 -1
  56. package/dist/duration/calculate/totalDuration.d.ts +4 -4
  57. package/dist/duration/calculate/totalDuration.js +4 -4
  58. package/dist/duration/calculate/totalUnits.js +1 -1
  59. package/dist/duration/compare/compareDurations.d.ts +3 -3
  60. package/dist/duration/compare/compareDurations.js +3 -3
  61. package/dist/duration/format/formatDuration.d.ts +9 -9
  62. package/dist/duration/format/formatDuration.js +14 -13
  63. package/dist/duration/index.d.ts +1 -1
  64. package/dist/duration/index.js +2 -2
  65. package/dist/duration/normalize/normalizeDuration.d.ts +3 -3
  66. package/dist/duration/normalize/normalizeDuration.js +3 -3
  67. package/dist/duration/parse/parseDuration.d.ts +1 -1
  68. package/dist/duration/parse/parseDuration.js +1 -1
  69. package/dist/duration/validate/isValidDuration.js +2 -11
  70. package/dist/gnss/convert/gnssToUtc.d.ts +24 -0
  71. package/dist/gnss/convert/gnssToUtc.js +39 -0
  72. package/dist/gnss/convert/gnssWeekToUtc.d.ts +53 -0
  73. package/dist/gnss/convert/gnssWeekToUtc.js +80 -0
  74. package/dist/gnss/convert/index.d.ts +6 -0
  75. package/dist/gnss/convert/index.js +6 -0
  76. package/dist/gnss/convert/rinexWeekToUtc.d.ts +34 -0
  77. package/dist/gnss/convert/rinexWeekToUtc.js +57 -0
  78. package/dist/gnss/convert/utcToGnss.d.ts +38 -0
  79. package/dist/gnss/convert/utcToGnss.js +53 -0
  80. package/dist/gnss/convert/utcToGnssWeek.d.ts +24 -0
  81. package/dist/gnss/convert/utcToGnssWeek.js +40 -0
  82. package/dist/gnss/convert/utcToRinexWeek.d.ts +19 -0
  83. package/dist/gnss/convert/utcToRinexWeek.js +45 -0
  84. package/dist/gnss/index.d.ts +2 -0
  85. package/dist/gnss/index.js +3 -0
  86. package/dist/index.d.ts +4 -2
  87. package/dist/index.js +4 -2
  88. package/dist/instant/convert/classifyLocal.d.ts +4 -4
  89. package/dist/instant/convert/classifyLocal.js +8 -19
  90. package/dist/instant/convert/fromOffsetInstant.d.ts +4 -4
  91. package/dist/instant/convert/fromOffsetInstant.js +5 -5
  92. package/dist/instant/convert/resolveLocal.d.ts +9 -9
  93. package/dist/instant/convert/resolveLocal.js +9 -9
  94. package/dist/instant/convert/toOffsetInstant.d.ts +11 -11
  95. package/dist/instant/convert/toOffsetInstant.js +11 -28
  96. package/dist/instant/index.d.ts +1 -1
  97. package/dist/instant/index.js +2 -2
  98. package/dist/instant/validate/isValidUtcOffset.d.ts +1 -1
  99. package/dist/instant/validate/isValidUtcOffset.js +1 -1
  100. package/dist/intermodal/calculate/billingTimeline.js +1 -1
  101. package/dist/intermodal/calculate/chargeableDays.d.ts +12 -12
  102. package/dist/intermodal/calculate/chargeableDays.js +17 -16
  103. package/dist/intermodal/calculate/demurrageClock.d.ts +1 -1
  104. package/dist/intermodal/calculate/demurrageClock.js +2 -2
  105. package/dist/intermodal/calculate/freeTimeExpiry.d.ts +10 -10
  106. package/dist/intermodal/calculate/freeTimeExpiry.js +19 -15
  107. package/dist/intermodal/calculate/multimodalETA.d.ts +1 -1
  108. package/dist/intermodal/calculate/multimodalETA.js +2 -2
  109. package/dist/intermodal/format/bolTimestamp.d.ts +6 -6
  110. package/dist/intermodal/format/bolTimestamp.js +6 -6
  111. package/dist/intermodal/format/formatEpcisEvent.d.ts +1 -1
  112. package/dist/intermodal/format/formatEpcisEvent.js +2 -2
  113. package/dist/intermodal/index.d.ts +1 -1
  114. package/dist/intermodal/index.js +2 -2
  115. package/dist/intermodal/parse/parseEpcisEvent.js +1 -1
  116. package/dist/intermodal/validate/isValidEpcisEventTime.js +1 -1
  117. package/dist/internal/advanceToWeekday.d.ts +1 -1
  118. package/dist/internal/businessCalendar.d.ts +28 -12
  119. package/dist/internal/businessCalendar.js +129 -118
  120. package/dist/internal/businessDayValues.js +1 -1
  121. package/dist/internal/calendarDatePairPolicy.d.ts +1 -1
  122. package/dist/internal/calendarDateString.d.ts +1 -1
  123. package/dist/internal/calendarDateString.js +1 -1
  124. package/dist/internal/calendarSystemIds.js +1 -1
  125. package/dist/internal/calendarValueOfDate.js +1 -1
  126. package/dist/internal/calendarZonedPairPolicy.d.ts +1 -1
  127. package/dist/internal/calendarZonedString.d.ts +3 -3
  128. package/dist/internal/calendarZonedString.js +4 -4
  129. package/dist/internal/compareUnixEpochs.js +1 -1
  130. package/dist/internal/cutoffAtResolved.d.ts +62 -0
  131. package/dist/internal/cutoffAtResolved.js +162 -0
  132. package/dist/internal/cycleFieldValue.d.ts +0 -2
  133. package/dist/internal/cycleFieldValue.js +0 -2
  134. package/dist/internal/dateTimeUnitHelpers.d.ts +1 -1
  135. package/dist/internal/dateUnitHelpers.d.ts +1 -1
  136. package/dist/internal/daylightTime.d.ts +1 -1
  137. package/dist/internal/differenceRecord.d.ts +1 -1
  138. package/dist/internal/durationUntilString.d.ts +1 -1
  139. package/dist/internal/durationUntilString.js +1 -1
  140. package/dist/internal/dutyEngine.d.ts +6 -6
  141. package/dist/internal/dutyEngine.js +206 -197
  142. package/dist/internal/dutyPeriods.d.ts +1 -1
  143. package/dist/internal/dutyPeriods.js +8 -2
  144. package/dist/internal/dutyRules.d.ts +2 -1
  145. package/dist/internal/dutyRules.js +1 -1
  146. package/dist/internal/dutyRunIndex.d.ts +150 -0
  147. package/dist/internal/dutyRunIndex.js +398 -0
  148. package/dist/internal/earlierOccurrence.d.ts +41 -0
  149. package/dist/internal/earlierOccurrence.js +57 -0
  150. package/dist/internal/ediDateTimeFields.js +1 -1
  151. package/dist/internal/ediDateTimeWriter.js +1 -1
  152. package/dist/internal/englishCalendarNames.d.ts +1 -1
  153. package/dist/internal/epochDay.d.ts +41 -0
  154. package/dist/internal/epochDay.js +129 -0
  155. package/dist/internal/exactDuration.js +1 -1
  156. package/dist/internal/exactMoment.d.ts +4 -4
  157. package/dist/internal/exactMoment.js +5 -5
  158. package/dist/internal/fiscalCalendar.d.ts +41 -7
  159. package/dist/internal/fiscalCalendar.js +77 -9
  160. package/dist/internal/foreignEpochs.d.ts +5 -0
  161. package/dist/internal/foreignEpochs.js +5 -0
  162. package/dist/internal/formatCalendarDays.d.ts +4 -4
  163. package/dist/internal/formatCalendarDays.js +6 -5
  164. package/dist/internal/formatDateInCalendar.d.ts +1 -1
  165. package/dist/internal/formatRelativeDuration.d.ts +7 -7
  166. package/dist/internal/formatRelativeDuration.js +8 -7
  167. package/dist/internal/formatterCache.d.ts +40 -0
  168. package/dist/internal/formatterCache.js +181 -0
  169. package/dist/internal/freeTimeLedger.d.ts +31 -43
  170. package/dist/internal/freeTimeLedger.js +322 -30
  171. package/dist/internal/getLocaleWeekYearBounds.d.ts +1 -1
  172. package/dist/internal/gnssTimeScales.d.ts +53 -0
  173. package/dist/internal/gnssTimeScales.js +128 -0
  174. package/dist/internal/gnssWeek.d.ts +92 -0
  175. package/dist/internal/gnssWeek.js +212 -0
  176. package/dist/internal/halfOpenIntervals.d.ts +1 -1
  177. package/dist/internal/halfOpenIntervals.js +1 -1
  178. package/dist/internal/hasCalendarAnnotation.d.ts +3 -3
  179. package/dist/internal/hasCalendarAnnotation.js +3 -3
  180. package/dist/internal/hourDurationString.js +1 -1
  181. package/dist/internal/httpDateFields.js +1 -1
  182. package/dist/internal/index.d.ts +9 -3
  183. package/dist/internal/index.js +9 -3
  184. package/dist/internal/inputChecks.d.ts +53 -0
  185. package/dist/internal/inputChecks.js +132 -0
  186. package/dist/internal/instantFormatOptions.d.ts +1 -1
  187. package/dist/internal/instantFormatOptions.js +4 -8
  188. package/dist/internal/instantIntervalText.js +1 -1
  189. package/dist/internal/instantNanoseconds.d.ts +2 -2
  190. package/dist/internal/instantNanoseconds.js +2 -2
  191. package/dist/internal/intervalCountHelpers.d.ts +1 -1
  192. package/dist/internal/isoStringBody.d.ts +2 -2
  193. package/dist/internal/isoStringBody.js +2 -2
  194. package/dist/internal/joinDateTimeConnector.js +3 -2
  195. package/dist/internal/leapSeconds.d.ts +63 -0
  196. package/dist/internal/leapSeconds.js +162 -0
  197. package/dist/internal/localeWeekInfo.d.ts +1 -1
  198. package/dist/internal/localeWeekInfo.js +1 -1
  199. package/dist/internal/monthGridWeekRow.d.ts +1 -1
  200. package/dist/internal/normalizeDateTime.d.ts +2 -1
  201. package/dist/internal/normalizeDateTime.js +3 -2
  202. package/dist/internal/normalizeTimeZone.d.ts +1 -1
  203. package/dist/internal/normalizeTimeZone.js +1 -1
  204. package/dist/internal/offsetTimeline.d.ts +56 -0
  205. package/dist/internal/offsetTimeline.js +166 -0
  206. package/dist/internal/operatingSchedule.d.ts +28 -32
  207. package/dist/internal/operatingSchedule.js +538 -176
  208. package/dist/internal/patternToken.js +10 -7
  209. package/dist/internal/plainDateAdd.d.ts +1 -1
  210. package/dist/internal/plainDateAdd.js +1 -1
  211. package/dist/internal/plainDateUntil.d.ts +1 -1
  212. package/dist/internal/plainDateUntil.js +1 -1
  213. package/dist/internal/readSetFields.js +1 -1
  214. package/dist/internal/resolveDurationRelativeTo.d.ts +1 -1
  215. package/dist/internal/resolveDurationRelativeTo.js +1 -1
  216. package/dist/internal/resolveLocale.d.ts +2 -2
  217. package/dist/internal/resolveLocale.js +2 -2
  218. package/dist/internal/resolveManualRoundingOptions.d.ts +1 -1
  219. package/dist/internal/resolveUnixIntervalPair.d.ts +1 -1
  220. package/dist/internal/rinexWeek.d.ts +22 -0
  221. package/dist/internal/rinexWeek.js +30 -0
  222. package/dist/internal/rollBusinessDate.d.ts +15 -0
  223. package/dist/internal/rollBusinessDate.js +46 -0
  224. package/dist/internal/splitStep.d.ts +1 -1
  225. package/dist/internal/splitStep.js +1 -1
  226. package/dist/internal/startOrEndOfUnix.d.ts +1 -1
  227. package/dist/internal/startOrEndOfUtc.d.ts +1 -1
  228. package/dist/internal/startOrEndOfUtc.js +1 -1
  229. package/dist/internal/startOrEndOfZoned.d.ts +1 -1
  230. package/dist/internal/temporal.d.ts +5 -0
  231. package/dist/internal/temporal.js +5 -0
  232. package/dist/internal/temporalCompat/calendarDateArithmetic.d.ts +1 -1
  233. package/dist/internal/temporalCompat/calendarDateFromFields.d.ts +1 -1
  234. package/dist/internal/temporalCompat/calendarDateFromFields.js +1 -1
  235. package/dist/internal/temporalCompat/calendarFields.d.ts +1 -1
  236. package/dist/internal/temporalCompat/capabilities.d.ts +27 -5
  237. package/dist/internal/temporalCompat/capabilities.js +28 -4
  238. package/dist/internal/temporalCompat/fieldSearch.d.ts +1 -1
  239. package/dist/internal/temporalCompat/fieldSearch.js +1 -1
  240. package/dist/internal/temporalCompat/fixedDay.d.ts +1 -1
  241. package/dist/internal/temporalCompat/fixedDay.js +1 -1
  242. package/dist/internal/temporalCompat/index.d.ts +1 -1
  243. package/dist/internal/temporalCompat/index.js +1 -1
  244. package/dist/internal/temporalCompat/largeMonthSpan.js +1 -1
  245. package/dist/internal/temporalCompat/nonIsoArithmetic.d.ts +1 -1
  246. package/dist/internal/temporalCompat/nonIsoArithmetic.js +1 -1
  247. package/dist/internal/temporalCompat/probeRepros.d.ts +35 -0
  248. package/dist/internal/temporalCompat/probeRepros.js +571 -0
  249. package/dist/internal/temporalCompat/readArithmeticModel.js +2 -2
  250. package/dist/internal/temporalCompat/repros.d.ts +3 -10
  251. package/dist/internal/temporalCompat/repros.js +13 -520
  252. package/dist/internal/timeScaleString.d.ts +47 -0
  253. package/dist/internal/timeScaleString.js +86 -0
  254. package/dist/internal/toInstantFromUtc.d.ts +1 -1
  255. package/dist/internal/toInstantFromUtc.js +1 -1
  256. package/dist/internal/unixEpochValue.d.ts +1 -1
  257. package/dist/internal/unixEpochValue.js +1 -1
  258. package/dist/internal/unixFormatReference.d.ts +1 -1
  259. package/dist/internal/unixFormatReference.js +1 -1
  260. package/dist/internal/unixWallClock.d.ts +1 -1
  261. package/dist/internal/utcOffsetString.d.ts +16 -0
  262. package/dist/internal/utcOffsetString.js +31 -1
  263. package/dist/internal/utcReading.d.ts +59 -0
  264. package/dist/internal/utcReading.js +113 -0
  265. package/dist/internal/utcWallClock.d.ts +1 -1
  266. package/dist/internal/utcWallClock.js +1 -1
  267. package/dist/internal/validatedZones.d.ts +20 -0
  268. package/dist/internal/validatedZones.js +33 -0
  269. package/dist/internal/wallClockAtOffset.d.ts +1 -1
  270. package/dist/internal/yearWindowStart.js +1 -1
  271. package/dist/internal/zoneBucketCap.d.ts +1 -1
  272. package/dist/internal/zoneBucketCap.js +2 -2
  273. package/dist/internal/zoneFrame.d.ts +4 -4
  274. package/dist/internal/zoneFrame.js +4 -4
  275. package/dist/internal/zonedBucket.d.ts +2 -2
  276. package/dist/internal/zonedBucket.js +92 -21
  277. package/dist/internal/zonedFormatReference.d.ts +1 -1
  278. package/dist/internal/zonedFormatReference.js +1 -1
  279. package/dist/internal/zonedLocalDates.d.ts +1 -1
  280. package/dist/internal/zonedLocalDates.js +22 -19
  281. package/dist/internal/zonedNowUnitValue.d.ts +1 -1
  282. package/dist/internal/zonedNowUnitValue.js +1 -1
  283. package/dist/internal/zonedTransitionSearch.d.ts +2 -0
  284. package/dist/internal/zonedTransitionSearch.js +165 -16
  285. package/dist/internal/zonedWallClock.d.ts +15 -4
  286. package/dist/internal/zonedWallClock.js +34 -6
  287. package/dist/internal/zonedWallClockDifference.d.ts +1 -1
  288. package/dist/internal/zonedWallClockDifference.js +2 -2
  289. package/dist/internal/zonedWallClockOperations.d.ts +2 -2
  290. package/dist/internal/zonedWallClockOperations.js +51 -6
  291. package/dist/internal/zonelessCalendarDate.d.ts +1 -1
  292. package/dist/internal/zonelessCalendarDate.js +1 -1
  293. package/dist/interval/index.d.ts +1 -1
  294. package/dist/interval/index.js +2 -2
  295. package/dist/plain/calculate/addBusinessDays.d.ts +2 -2
  296. package/dist/plain/calculate/addBusinessDays.js +2 -2
  297. package/dist/plain/calculate/addDateTime.js +1 -1
  298. package/dist/plain/calculate/addTime.js +1 -1
  299. package/dist/plain/calculate/clampDate.js +1 -1
  300. package/dist/plain/calculate/closestDateTo.js +1 -1
  301. package/dist/plain/calculate/cycleDate.js +1 -1
  302. package/dist/plain/calculate/cycleDateTime.js +1 -1
  303. package/dist/plain/calculate/cycleTime.js +1 -1
  304. package/dist/plain/calculate/diffDate.d.ts +1 -1
  305. package/dist/plain/calculate/diffDateAsDuration.d.ts +1 -1
  306. package/dist/plain/calculate/diffDateTime.d.ts +1 -1
  307. package/dist/plain/calculate/diffDateTime.js +1 -1
  308. package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +1 -1
  309. package/dist/plain/calculate/diffDateTimeAsDuration.js +1 -1
  310. package/dist/plain/calculate/diffTime.d.ts +1 -1
  311. package/dist/plain/calculate/diffTime.js +1 -1
  312. package/dist/plain/calculate/endOfDate.d.ts +1 -1
  313. package/dist/plain/calculate/endOfDate.js +1 -1
  314. package/dist/plain/calculate/endOfDateTime.d.ts +1 -1
  315. package/dist/plain/calculate/endOfDateTime.js +1 -1
  316. package/dist/plain/calculate/endOfQuarterForDate.js +1 -1
  317. package/dist/plain/calculate/endOfQuarterForDateTime.js +1 -1
  318. package/dist/plain/calculate/endOfTime.d.ts +1 -1
  319. package/dist/plain/calculate/endOfTime.js +1 -1
  320. package/dist/plain/calculate/getDayOfYear.js +1 -1
  321. package/dist/plain/calculate/getDaysInMonth.js +1 -1
  322. package/dist/plain/calculate/getDaysInYear.js +1 -1
  323. package/dist/plain/calculate/getLargestDateDurationUnit.d.ts +1 -1
  324. package/dist/plain/calculate/getLargestDateTimeDurationUnit.d.ts +1 -1
  325. package/dist/plain/calculate/getLargestTimeDurationUnit.d.ts +1 -1
  326. package/dist/plain/calculate/getLocaleDayOfWeek.d.ts +6 -6
  327. package/dist/plain/calculate/getLocaleDayOfWeek.js +7 -7
  328. package/dist/plain/calculate/getLocaleEndOfWeek.d.ts +4 -4
  329. package/dist/plain/calculate/getLocaleEndOfWeek.js +5 -5
  330. package/dist/plain/calculate/getLocaleStartOfWeek.d.ts +5 -5
  331. package/dist/plain/calculate/getLocaleStartOfWeek.js +6 -6
  332. package/dist/plain/calculate/getLocaleWeekYear.d.ts +10 -10
  333. package/dist/plain/calculate/getLocaleWeekYear.js +11 -11
  334. package/dist/plain/calculate/getQuarterForDate.js +1 -1
  335. package/dist/plain/calculate/getQuarterForDateTime.js +1 -1
  336. package/dist/plain/calculate/getWeekNumber.js +1 -1
  337. package/dist/plain/calculate/getWeekOfMonth.d.ts +10 -14
  338. package/dist/plain/calculate/getWeekOfMonth.js +11 -15
  339. package/dist/plain/calculate/getWeekYear.js +1 -1
  340. package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +7 -7
  341. package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +8 -8
  342. package/dist/plain/calculate/getWeeksInMonth.d.ts +8 -11
  343. package/dist/plain/calculate/getWeeksInMonth.js +9 -12
  344. package/dist/plain/calculate/getWeeksInYear.js +1 -1
  345. package/dist/plain/calculate/maxDate.js +1 -1
  346. package/dist/plain/calculate/maxDateTime.js +1 -1
  347. package/dist/plain/calculate/maxTime.js +1 -1
  348. package/dist/plain/calculate/minDate.js +1 -1
  349. package/dist/plain/calculate/minDateTime.js +1 -1
  350. package/dist/plain/calculate/minTime.js +1 -1
  351. package/dist/plain/calculate/nextWeekday.d.ts +14 -12
  352. package/dist/plain/calculate/nextWeekday.js +15 -13
  353. package/dist/plain/calculate/previousWeekday.d.ts +14 -12
  354. package/dist/plain/calculate/previousWeekday.js +15 -13
  355. package/dist/plain/calculate/roundDate.d.ts +1 -1
  356. package/dist/plain/calculate/roundDate.js +1 -1
  357. package/dist/plain/calculate/roundDateTime.d.ts +1 -1
  358. package/dist/plain/calculate/roundDateTime.js +1 -1
  359. package/dist/plain/calculate/roundTime.d.ts +1 -1
  360. package/dist/plain/calculate/roundTime.js +1 -1
  361. package/dist/plain/calculate/setDate.d.ts +1 -1
  362. package/dist/plain/calculate/setDate.js +1 -1
  363. package/dist/plain/calculate/setDateTime.d.ts +1 -1
  364. package/dist/plain/calculate/setDateTime.js +1 -1
  365. package/dist/plain/calculate/setTime.d.ts +1 -1
  366. package/dist/plain/calculate/setTime.js +1 -1
  367. package/dist/plain/calculate/sortDateTimes.js +1 -1
  368. package/dist/plain/calculate/sortDates.js +1 -1
  369. package/dist/plain/calculate/sortTimes.js +1 -1
  370. package/dist/plain/calculate/startOfDate.d.ts +1 -1
  371. package/dist/plain/calculate/startOfDate.js +1 -1
  372. package/dist/plain/calculate/startOfDateTime.d.ts +1 -1
  373. package/dist/plain/calculate/startOfDateTime.js +1 -1
  374. package/dist/plain/calculate/startOfQuarterForDate.js +1 -1
  375. package/dist/plain/calculate/startOfQuarterForDateTime.js +1 -1
  376. package/dist/plain/calculate/startOfTime.d.ts +1 -1
  377. package/dist/plain/calculate/startOfTime.js +1 -1
  378. package/dist/plain/calculate/subtractBusinessDays.d.ts +2 -2
  379. package/dist/plain/calculate/subtractBusinessDays.js +2 -2
  380. package/dist/plain/calculate/subtractDate.js +1 -1
  381. package/dist/plain/calculate/subtractDateTime.js +1 -1
  382. package/dist/plain/calculate/subtractTime.js +1 -1
  383. package/dist/plain/calculate/weekOfYearForDate.js +1 -1
  384. package/dist/plain/calculate/weekOfYearForDateTime.js +1 -1
  385. package/dist/plain/chop/chopDate.js +1 -1
  386. package/dist/plain/chop/chopMilliseconds.js +1 -1
  387. package/dist/plain/chop/chopSeconds.js +1 -1
  388. package/dist/plain/chop/chopTime.js +1 -1
  389. package/dist/plain/compare/areDateTimesEqual.js +1 -1
  390. package/dist/plain/compare/areDateTimesEqualBy.d.ts +2 -4
  391. package/dist/plain/compare/areDateTimesEqualBy.js +2 -4
  392. package/dist/plain/compare/areDatesEqual.js +1 -1
  393. package/dist/plain/compare/areDatesEqualBy.d.ts +5 -5
  394. package/dist/plain/compare/areDatesEqualBy.js +5 -5
  395. package/dist/plain/compare/areTimesEqual.js +1 -1
  396. package/dist/plain/compare/isAfterDate.js +1 -1
  397. package/dist/plain/compare/isAfterDateTime.js +1 -1
  398. package/dist/plain/compare/isAfterTime.js +1 -1
  399. package/dist/plain/compare/isBeforeDate.js +1 -1
  400. package/dist/plain/compare/isBeforeDateTime.js +1 -1
  401. package/dist/plain/compare/isBeforeTime.js +1 -1
  402. package/dist/plain/compare/isBetweenDate.js +1 -1
  403. package/dist/plain/compare/isBetweenDateTime.js +1 -1
  404. package/dist/plain/compare/isBetweenTime.js +1 -1
  405. package/dist/plain/compare/isBusinessDay.d.ts +2 -2
  406. package/dist/plain/compare/isBusinessDay.js +3 -3
  407. package/dist/plain/compare/isRelativeDay.d.ts +1 -1
  408. package/dist/plain/compare/isRelativeDay.js +1 -1
  409. package/dist/plain/compare/isThisUnit.d.ts +8 -6
  410. package/dist/plain/compare/isThisUnit.js +7 -5
  411. package/dist/plain/compare/isWeekend.d.ts +5 -5
  412. package/dist/plain/compare/isWeekend.js +6 -6
  413. package/dist/plain/format/formatCalendar.d.ts +3 -5
  414. package/dist/plain/format/formatCalendar.js +10 -9
  415. package/dist/plain/format/formatDate.d.ts +4 -4
  416. package/dist/plain/format/formatDate.js +8 -7
  417. package/dist/plain/format/formatDateRange.d.ts +4 -4
  418. package/dist/plain/format/formatDateRange.js +8 -7
  419. package/dist/plain/format/formatDateTime.d.ts +4 -4
  420. package/dist/plain/format/formatDateTime.js +8 -7
  421. package/dist/plain/format/formatDateTimeRange.d.ts +4 -4
  422. package/dist/plain/format/formatDateTimeRange.js +8 -7
  423. package/dist/plain/format/formatDateTimeToParts.d.ts +6 -6
  424. package/dist/plain/format/formatDateTimeToParts.js +10 -9
  425. package/dist/plain/format/formatDateToParts.d.ts +6 -6
  426. package/dist/plain/format/formatDateToParts.js +10 -9
  427. package/dist/plain/format/formatRelativeDate.d.ts +3 -3
  428. package/dist/plain/format/formatRelativeDate.js +4 -4
  429. package/dist/plain/format/formatRelativeDateTime.d.ts +3 -3
  430. package/dist/plain/format/formatRelativeDateTime.js +4 -4
  431. package/dist/plain/format/formatRelativeTime.d.ts +3 -3
  432. package/dist/plain/format/formatRelativeTime.js +4 -4
  433. package/dist/plain/format/formatSqlDateTime.js +1 -1
  434. package/dist/plain/format/formatTime.d.ts +4 -4
  435. package/dist/plain/format/formatTime.js +8 -7
  436. package/dist/plain/get/getDay.js +1 -1
  437. package/dist/plain/get/getDayOfWeek.js +1 -1
  438. package/dist/plain/get/getHour.js +1 -1
  439. package/dist/plain/get/getMicrosecond.js +1 -1
  440. package/dist/plain/get/getMillisecond.js +1 -1
  441. package/dist/plain/get/getMinute.js +1 -1
  442. package/dist/plain/get/getMonth.js +1 -1
  443. package/dist/plain/get/getNanosecond.js +1 -1
  444. package/dist/plain/get/getNow.js +1 -1
  445. package/dist/plain/get/getNowUnit.js +1 -1
  446. package/dist/plain/get/getSecond.js +1 -1
  447. package/dist/plain/get/getToday.js +1 -1
  448. package/dist/plain/get/getWeekOfYear.js +1 -1
  449. package/dist/plain/get/getYear.js +1 -1
  450. package/dist/plain/index.d.ts +1 -1
  451. package/dist/plain/index.js +2 -2
  452. package/dist/plain/interval/intervalAbutsDate.d.ts +1 -2
  453. package/dist/plain/interval/intervalAbutsDate.js +2 -3
  454. package/dist/plain/interval/intervalAbutsDateTime.js +1 -1
  455. package/dist/plain/interval/intervalAbutsTime.js +1 -1
  456. package/dist/plain/interval/intervalContainsDate.d.ts +1 -1
  457. package/dist/plain/interval/intervalContainsDate.js +2 -2
  458. package/dist/plain/interval/intervalContainsDateTime.js +1 -1
  459. package/dist/plain/interval/intervalContainsTime.js +1 -1
  460. package/dist/plain/interval/intervalCountDate.js +1 -1
  461. package/dist/plain/interval/intervalCountDateTime.js +1 -1
  462. package/dist/plain/interval/intervalCountTime.js +1 -1
  463. package/dist/plain/interval/intervalDifferenceDate.d.ts +1 -1
  464. package/dist/plain/interval/intervalDifferenceDate.js +2 -2
  465. package/dist/plain/interval/intervalDifferenceDateTime.js +1 -1
  466. package/dist/plain/interval/intervalDifferenceTime.js +1 -1
  467. package/dist/plain/interval/intervalDivideEquallyDate.d.ts +3 -3
  468. package/dist/plain/interval/intervalDivideEquallyDate.js +3 -3
  469. package/dist/plain/interval/intervalDivideEquallyDateTime.js +1 -1
  470. package/dist/plain/interval/intervalDivideEquallyTime.js +1 -1
  471. package/dist/plain/interval/intervalEngulfsDate.d.ts +1 -1
  472. package/dist/plain/interval/intervalEngulfsDate.js +2 -2
  473. package/dist/plain/interval/intervalEngulfsDateTime.js +1 -1
  474. package/dist/plain/interval/intervalEngulfsTime.js +1 -1
  475. package/dist/plain/interval/intervalFromDurationDate.js +1 -1
  476. package/dist/plain/interval/intervalFromDurationDateTime.js +1 -1
  477. package/dist/plain/interval/intervalFromDurationTime.js +1 -1
  478. package/dist/plain/interval/intervalIntersectionDate.d.ts +1 -1
  479. package/dist/plain/interval/intervalIntersectionDate.js +2 -2
  480. package/dist/plain/interval/intervalIntersectionDateTime.js +1 -1
  481. package/dist/plain/interval/intervalIntersectionTime.js +1 -1
  482. package/dist/plain/interval/intervalLengthDateTime.js +1 -1
  483. package/dist/plain/interval/intervalLengthTime.js +1 -1
  484. package/dist/plain/interval/intervalOverlappingDaysDate.js +1 -1
  485. package/dist/plain/interval/intervalOverlappingDaysDateTime.js +1 -1
  486. package/dist/plain/interval/intervalSplitAtDate.d.ts +1 -1
  487. package/dist/plain/interval/intervalSplitAtDate.js +2 -2
  488. package/dist/plain/interval/intervalSplitAtDateTime.js +1 -1
  489. package/dist/plain/interval/intervalSplitAtTime.js +1 -1
  490. package/dist/plain/interval/intervalUnionDate.d.ts +2 -2
  491. package/dist/plain/interval/intervalUnionDate.js +3 -3
  492. package/dist/plain/interval/intervalUnionDateTime.js +1 -1
  493. package/dist/plain/interval/intervalUnionTime.js +1 -1
  494. package/dist/plain/interval/intervalXorAllDate.d.ts +1 -1
  495. package/dist/plain/interval/intervalXorAllDate.js +2 -2
  496. package/dist/plain/interval/intervalXorAllDateTime.js +1 -1
  497. package/dist/plain/interval/intervalXorAllTime.js +1 -1
  498. package/dist/plain/interval/intervalXorDate.d.ts +1 -1
  499. package/dist/plain/interval/intervalXorDate.js +2 -2
  500. package/dist/plain/interval/intervalXorDateTime.js +1 -1
  501. package/dist/plain/interval/intervalXorTime.js +1 -1
  502. package/dist/plain/interval/intervalsOverlapDate.d.ts +1 -1
  503. package/dist/plain/interval/intervalsOverlapDate.js +2 -2
  504. package/dist/plain/interval/intervalsOverlapDateTime.js +1 -1
  505. package/dist/plain/interval/intervalsOverlapTime.js +1 -1
  506. package/dist/plain/interval/mergeIntervalsDate.d.ts +1 -1
  507. package/dist/plain/interval/mergeIntervalsDate.js +2 -2
  508. package/dist/plain/interval/mergeIntervalsDateTime.js +1 -1
  509. package/dist/plain/interval/mergeIntervalsTime.js +1 -1
  510. package/dist/plain/interval/splitIntervalByUnitDate.d.ts +2 -3
  511. package/dist/plain/interval/splitIntervalByUnitDate.js +3 -4
  512. package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +2 -1
  513. package/dist/plain/interval/splitIntervalByUnitDateTime.js +3 -2
  514. package/dist/plain/interval/splitIntervalByUnitTime.js +1 -1
  515. package/dist/plain/interval/validate/isValidDateInterval.d.ts +1 -1
  516. package/dist/plain/interval/validate/isValidDateInterval.js +2 -2
  517. package/dist/plain/interval/validate/isValidDateTimeInterval.js +1 -1
  518. package/dist/plain/interval/validate/isValidTimeInterval.js +1 -1
  519. package/dist/plain/locale/getLocaleEraNames.d.ts +6 -6
  520. package/dist/plain/locale/getLocaleEraNames.js +8 -7
  521. package/dist/plain/locale/getLocaleMeridiems.d.ts +5 -5
  522. package/dist/plain/locale/getLocaleMeridiems.js +7 -6
  523. package/dist/plain/locale/getLocaleMonthNames.d.ts +6 -6
  524. package/dist/plain/locale/getLocaleMonthNames.js +17 -11
  525. package/dist/plain/locale/getLocaleWeekdayNames.d.ts +3 -3
  526. package/dist/plain/locale/getLocaleWeekdayNames.js +12 -5
  527. package/dist/plain/map/mapDatesInRange.js +1 -1
  528. package/dist/plain/map/mapDaysInMonth.js +1 -1
  529. package/dist/plain/parse/parseDateTimeWithPattern.d.ts +14 -13
  530. package/dist/plain/parse/parseDateTimeWithPattern.js +15 -14
  531. package/dist/plain/parse/parseDateWithPattern.d.ts +18 -17
  532. package/dist/plain/parse/parseDateWithPattern.js +19 -18
  533. package/dist/plain/parse/parseDayFromDate.js +1 -1
  534. package/dist/plain/parse/parseDayFromDateTime.js +1 -1
  535. package/dist/plain/parse/parseDayOfWeekFromDate.js +1 -1
  536. package/dist/plain/parse/parseDayOfWeekFromDateTime.js +1 -1
  537. package/dist/plain/parse/parseHourFromDateTime.js +1 -1
  538. package/dist/plain/parse/parseHourFromTime.js +1 -1
  539. package/dist/plain/parse/parseMicrosecondFromDateTime.js +1 -1
  540. package/dist/plain/parse/parseMicrosecondFromTime.js +1 -1
  541. package/dist/plain/parse/parseMillisecondFromDateTime.js +1 -1
  542. package/dist/plain/parse/parseMillisecondFromTime.js +1 -1
  543. package/dist/plain/parse/parseMinuteFromDateTime.js +1 -1
  544. package/dist/plain/parse/parseMinuteFromTime.js +1 -1
  545. package/dist/plain/parse/parseMonthFromDate.js +1 -1
  546. package/dist/plain/parse/parseMonthFromDateTime.js +1 -1
  547. package/dist/plain/parse/parseNanosecondFromDateTime.js +1 -1
  548. package/dist/plain/parse/parseNanosecondFromTime.js +1 -1
  549. package/dist/plain/parse/parseSecondFromDateTime.js +1 -1
  550. package/dist/plain/parse/parseSecondFromTime.js +1 -1
  551. package/dist/plain/parse/parseSqlDateTime.js +1 -1
  552. package/dist/plain/parse/parseTimeWithPattern.d.ts +6 -4
  553. package/dist/plain/parse/parseTimeWithPattern.js +7 -5
  554. package/dist/plain/parse/parseUnitFromDate.d.ts +1 -1
  555. package/dist/plain/parse/parseUnitFromDate.js +1 -1
  556. package/dist/plain/parse/parseUnitFromDateTime.d.ts +1 -1
  557. package/dist/plain/parse/parseUnitFromDateTime.js +1 -1
  558. package/dist/plain/parse/parseUnitFromTime.d.ts +1 -1
  559. package/dist/plain/parse/parseUnitFromTime.js +1 -1
  560. package/dist/plain/parse/parseWeekFromDateTime.js +1 -1
  561. package/dist/plain/parse/parseYearFromDate.js +1 -1
  562. package/dist/plain/parse/parseYearFromDateTime.js +1 -1
  563. package/dist/plain/validate/{isLeapSecond.d.ts → hasSecond60.d.ts} +16 -14
  564. package/dist/plain/validate/{isLeapSecond.js → hasSecond60.js} +16 -14
  565. package/dist/plain/validate/index.d.ts +1 -1
  566. package/dist/plain/validate/index.js +1 -1
  567. package/dist/plain/validate/isLeapYear.js +1 -1
  568. package/dist/plain/validate/isValidDate.js +2 -17
  569. package/dist/plain/validate/isValidDateRange.js +1 -1
  570. package/dist/plain/validate/isValidDateTime.d.ts +1 -1
  571. package/dist/plain/validate/isValidDateTime.js +4 -4
  572. package/dist/plain/validate/isValidDateTimeRange.js +1 -1
  573. package/dist/plain/validate/isValidIsoDateLike.js +3 -3
  574. package/dist/plain/validate/isValidTime.js +2 -18
  575. package/dist/plain/validate/isValidTimeRange.js +1 -1
  576. package/dist/precision/convert/fromNanoseconds.d.ts +2 -2
  577. package/dist/precision/convert/fromNanoseconds.js +3 -3
  578. package/dist/precision/convert/toNanoseconds.d.ts +2 -2
  579. package/dist/precision/convert/toNanoseconds.js +2 -2
  580. package/dist/precision/index.d.ts +1 -1
  581. package/dist/precision/index.js +2 -2
  582. package/dist/precision/validate/isValidInstant.d.ts +1 -1
  583. package/dist/precision/validate/isValidInstant.js +1 -1
  584. package/dist/regex/calendar-zoned-date-time.d.ts +4 -4
  585. package/dist/regex/calendar-zoned-date-time.js +4 -4
  586. package/dist/regex/index.d.ts +1 -1
  587. package/dist/regex/index.js +2 -2
  588. package/dist/regex/leap-second.d.ts +1 -1
  589. package/dist/regex/leap-second.js +1 -1
  590. package/dist/regex/time-zone-like.d.ts +2 -2
  591. package/dist/regex/time-zone-like.js +2 -2
  592. package/dist/span/calculate/spanMs.d.ts +4 -3
  593. package/dist/span/calculate/spanMs.js +4 -3
  594. package/dist/span/calculate/spanNs.d.ts +4 -3
  595. package/dist/span/calculate/spanNs.js +4 -3
  596. package/dist/span/calculate/spanWallClock.d.ts +12 -12
  597. package/dist/span/calculate/spanWallClock.js +13 -13
  598. package/dist/span/index.d.ts +1 -1
  599. package/dist/span/index.js +2 -2
  600. package/dist/span/validate/isValidSpan.d.ts +3 -3
  601. package/dist/span/validate/isValidSpan.js +3 -3
  602. package/dist/timescale/calculate/index.d.ts +3 -0
  603. package/dist/timescale/calculate/index.js +3 -0
  604. package/dist/timescale/calculate/leapSecondsBetween.d.ts +26 -0
  605. package/dist/timescale/calculate/leapSecondsBetween.js +62 -0
  606. package/dist/timescale/calculate/nextLeapSecond.d.ts +18 -0
  607. package/dist/timescale/calculate/nextLeapSecond.js +33 -0
  608. package/dist/timescale/calculate/taiMinusUtc.d.ts +21 -0
  609. package/dist/timescale/calculate/taiMinusUtc.js +38 -0
  610. package/dist/timescale/convert/fromTAI.d.ts +22 -0
  611. package/dist/timescale/convert/fromTAI.js +35 -0
  612. package/dist/timescale/convert/index.d.ts +2 -0
  613. package/dist/timescale/convert/index.js +2 -0
  614. package/dist/timescale/convert/toTAI.d.ts +23 -0
  615. package/dist/timescale/convert/toTAI.js +39 -0
  616. package/dist/timescale/index.d.ts +4 -0
  617. package/dist/timescale/index.js +5 -0
  618. package/dist/timescale/validate/index.d.ts +1 -0
  619. package/dist/timescale/validate/index.js +1 -0
  620. package/dist/timescale/validate/isLeapSecond.d.ts +25 -0
  621. package/dist/timescale/validate/isLeapSecond.js +36 -0
  622. package/dist/transport/calculate/crossingTime.d.ts +2 -2
  623. package/dist/transport/calculate/crossingTime.js +3 -3
  624. package/dist/transport/calculate/cutoffAt.d.ts +4 -4
  625. package/dist/transport/calculate/cutoffAt.js +24 -133
  626. package/dist/transport/calculate/cutoffSchedule.d.ts +2 -2
  627. package/dist/transport/calculate/cutoffSchedule.js +52 -20
  628. package/dist/transport/calculate/dwellTime.d.ts +3 -3
  629. package/dist/transport/calculate/dwellTime.js +4 -4
  630. package/dist/transport/calculate/estimateDrift.d.ts +1 -1
  631. package/dist/transport/calculate/estimateDrift.js +1 -1
  632. package/dist/transport/calculate/nextDeparture.d.ts +2 -2
  633. package/dist/transport/calculate/nextDeparture.js +2 -2
  634. package/dist/transport/calculate/scheduleDelivery.d.ts +2 -2
  635. package/dist/transport/calculate/scheduleDelivery.js +3 -3
  636. package/dist/transport/calculate/transitTime.d.ts +11 -11
  637. package/dist/transport/calculate/transitTime.js +11 -11
  638. package/dist/transport/compare/classifyPunctuality.d.ts +1 -1
  639. package/dist/transport/compare/classifyPunctuality.js +1 -1
  640. package/dist/transport/compare/isPastCutoff.d.ts +1 -1
  641. package/dist/transport/compare/isPastCutoff.js +2 -2
  642. package/dist/transport/compare/scheduleDeviation.d.ts +1 -1
  643. package/dist/transport/compare/scheduleDeviation.js +1 -1
  644. package/dist/transport/compare/timeToCutoff.d.ts +1 -1
  645. package/dist/transport/compare/timeToCutoff.js +1 -1
  646. package/dist/transport/convert/etaAtZone.d.ts +2 -2
  647. package/dist/transport/convert/etaAtZone.js +2 -2
  648. package/dist/transport/index.d.ts +1 -1
  649. package/dist/transport/index.js +2 -2
  650. package/dist/types/date-duration-unit.d.ts +1 -1
  651. package/dist/types/date-time-duration-units.d.ts +1 -1
  652. package/dist/types/date-time-unit.d.ts +1 -1
  653. package/dist/types/date-unit.d.ts +1 -1
  654. package/dist/types/disambiguation.d.ts +1 -1
  655. package/dist/types/duration-relative-to.d.ts +1 -1
  656. package/dist/types/duration-string-options.d.ts +1 -1
  657. package/dist/types/exact-duration-unit.d.ts +1 -1
  658. package/dist/types/fiscal-calendar.d.ts +40 -4
  659. package/dist/types/gnss.d.ts +51 -0
  660. package/dist/types/gnss.js +0 -0
  661. package/dist/types/index.d.ts +2 -0
  662. package/dist/types/index.js +2 -0
  663. package/dist/types/now-unit.d.ts +1 -1
  664. package/dist/types/offset.d.ts +1 -1
  665. package/dist/types/overflow.d.ts +1 -1
  666. package/dist/types/rounding-options.d.ts +1 -1
  667. package/dist/types/stored-zoned-classification.d.ts +83 -0
  668. package/dist/types/stored-zoned-classification.js +0 -0
  669. package/dist/types/time-duration-unit.d.ts +1 -1
  670. package/dist/types/time-unit.d.ts +1 -1
  671. package/dist/types/utc-now-unit.d.ts +1 -1
  672. package/dist/unix/calculate/diffUnix.d.ts +1 -1
  673. package/dist/unix/calculate/diffUnixAsDuration.d.ts +1 -1
  674. package/dist/unix/calculate/endOfUnix.d.ts +2 -2
  675. package/dist/unix/calculate/endOfUnix.js +1 -1
  676. package/dist/unix/calculate/isBetweenUnix.js +1 -1
  677. package/dist/unix/calculate/roundUnix.d.ts +7 -5
  678. package/dist/unix/calculate/roundUnix.js +6 -4
  679. package/dist/unix/calculate/setUnix.d.ts +3 -3
  680. package/dist/unix/calculate/setUnix.js +2 -2
  681. package/dist/unix/calculate/startOfUnix.d.ts +2 -2
  682. package/dist/unix/calculate/startOfUnix.js +1 -1
  683. package/dist/unix/compare/areUnixEqualBy.d.ts +6 -6
  684. package/dist/unix/compare/areUnixEqualBy.js +5 -5
  685. package/dist/unix/convert/convertUnixToPlainTime.d.ts +1 -1
  686. package/dist/unix/convert/convertUnixToPlainTime.js +1 -1
  687. package/dist/unix/convert/convertUnixToZoned.d.ts +1 -1
  688. package/dist/unix/convert/convertUnixToZoned.js +1 -1
  689. package/dist/unix/format/formatCalendarUnix.d.ts +10 -9
  690. package/dist/unix/format/formatCalendarUnix.js +6 -6
  691. package/dist/unix/format/formatRelativeUnix.d.ts +7 -7
  692. package/dist/unix/format/formatRelativeUnix.js +7 -7
  693. package/dist/unix/format/formatUnix.d.ts +9 -9
  694. package/dist/unix/format/formatUnix.js +9 -9
  695. package/dist/unix/get/getUnixDay.js +1 -1
  696. package/dist/unix/get/getUnixHour.js +1 -1
  697. package/dist/unix/get/getUnixMicrosecond.js +1 -1
  698. package/dist/unix/get/getUnixMillisecond.js +1 -1
  699. package/dist/unix/get/getUnixMinute.js +1 -1
  700. package/dist/unix/get/getUnixMonth.js +1 -1
  701. package/dist/unix/get/getUnixNanosecond.js +1 -1
  702. package/dist/unix/get/getUnixNow.js +1 -1
  703. package/dist/unix/get/getUnixNowUnit.d.ts +1 -1
  704. package/dist/unix/get/getUnixNowUnit.js +1 -1
  705. package/dist/unix/get/getUnixSecond.js +1 -1
  706. package/dist/unix/get/getUnixYear.js +1 -1
  707. package/dist/unix/index.d.ts +1 -1
  708. package/dist/unix/index.js +2 -2
  709. package/dist/unix/interval/intervalFromDurationUnix.js +1 -1
  710. package/dist/unix/interval/intervalLengthUnix.d.ts +2 -2
  711. package/dist/unix/interval/intervalLengthUnix.js +2 -2
  712. package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +3 -2
  713. package/dist/unix/interval/splitIntervalByUnitUnix.js +4 -3
  714. package/dist/unix/parse/parseUnitFromUnix.d.ts +1 -1
  715. package/dist/utc/calculate/addUtc.js +1 -1
  716. package/dist/utc/calculate/diffUtc.d.ts +1 -1
  717. package/dist/utc/calculate/diffUtc.js +1 -1
  718. package/dist/utc/calculate/diffUtcAsDuration.d.ts +1 -1
  719. package/dist/utc/calculate/diffUtcAsDuration.js +1 -1
  720. package/dist/utc/calculate/endOfQuarterForUtc.js +1 -1
  721. package/dist/utc/calculate/endOfUtc.d.ts +1 -1
  722. package/dist/utc/calculate/isBetweenUtc.js +1 -1
  723. package/dist/utc/calculate/maxUtc.js +1 -1
  724. package/dist/utc/calculate/minUtc.js +1 -1
  725. package/dist/utc/calculate/roundUtc.d.ts +1 -1
  726. package/dist/utc/calculate/roundUtc.js +1 -1
  727. package/dist/utc/calculate/setUtc.d.ts +1 -1
  728. package/dist/utc/calculate/setUtc.js +1 -1
  729. package/dist/utc/calculate/sortUtc.js +1 -1
  730. package/dist/utc/calculate/startOfQuarterForUtc.js +1 -1
  731. package/dist/utc/calculate/startOfUtc.d.ts +1 -1
  732. package/dist/utc/calculate/subtractUtc.js +1 -1
  733. package/dist/utc/compare/areUtcEqual.js +1 -1
  734. package/dist/utc/compare/areUtcEqualBy.d.ts +2 -2
  735. package/dist/utc/compare/areUtcEqualBy.js +2 -2
  736. package/dist/utc/compare/isAfterUtc.js +1 -1
  737. package/dist/utc/compare/isBeforeUtc.js +1 -1
  738. package/dist/utc/convert/convertUtcToPlainDate.d.ts +1 -1
  739. package/dist/utc/convert/convertUtcToPlainDate.js +2 -2
  740. package/dist/utc/convert/convertUtcToPlainDateTime.d.ts +1 -1
  741. package/dist/utc/convert/convertUtcToPlainDateTime.js +2 -2
  742. package/dist/utc/convert/convertUtcToPlainTime.d.ts +1 -1
  743. package/dist/utc/convert/convertUtcToPlainTime.js +2 -2
  744. package/dist/utc/convert/convertUtcToUnix.js +1 -1
  745. package/dist/utc/convert/convertUtcToZoned.d.ts +1 -1
  746. package/dist/utc/convert/convertUtcToZoned.js +2 -2
  747. package/dist/utc/format/formatCalendarUtc.d.ts +6 -5
  748. package/dist/utc/format/formatCalendarUtc.js +3 -3
  749. package/dist/utc/format/formatHttpDate.js +1 -1
  750. package/dist/utc/format/formatRelativeUtc.d.ts +5 -5
  751. package/dist/utc/format/formatRelativeUtc.js +5 -5
  752. package/dist/utc/format/formatUtc.d.ts +8 -8
  753. package/dist/utc/format/formatUtc.js +8 -8
  754. package/dist/utc/get/getUtcDay.js +1 -1
  755. package/dist/utc/get/getUtcHour.js +1 -1
  756. package/dist/utc/get/getUtcMicrosecond.js +1 -1
  757. package/dist/utc/get/getUtcMillisecond.js +1 -1
  758. package/dist/utc/get/getUtcMinute.js +1 -1
  759. package/dist/utc/get/getUtcMonth.js +1 -1
  760. package/dist/utc/get/getUtcNanosecond.js +1 -1
  761. package/dist/utc/get/getUtcNow.js +1 -1
  762. package/dist/utc/get/getUtcNowUnit.js +1 -1
  763. package/dist/utc/get/getUtcSecond.js +1 -1
  764. package/dist/utc/get/getUtcYear.js +1 -1
  765. package/dist/utc/index.d.ts +1 -1
  766. package/dist/utc/index.js +2 -2
  767. package/dist/utc/interval/intervalAbutsUtc.js +1 -1
  768. package/dist/utc/interval/intervalContainsUtc.js +1 -1
  769. package/dist/utc/interval/intervalCountUtc.js +1 -1
  770. package/dist/utc/interval/intervalDivideEquallyUtc.js +1 -1
  771. package/dist/utc/interval/intervalEngulfsUtc.js +1 -1
  772. package/dist/utc/interval/intervalFromDurationUtc.js +1 -1
  773. package/dist/utc/interval/intervalLengthUtc.js +1 -1
  774. package/dist/utc/interval/intervalOverlappingDaysUtc.js +1 -1
  775. package/dist/utc/interval/intervalSplitAtUtc.js +1 -1
  776. package/dist/utc/interval/intervalXorAllUtc.js +1 -1
  777. package/dist/utc/interval/intervalXorUtc.js +1 -1
  778. package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +2 -1
  779. package/dist/utc/interval/splitIntervalByUnitUtc.js +3 -2
  780. package/dist/utc/interval/validate/isValidUtcInterval.js +1 -1
  781. package/dist/utc/parse/parseDateFromUtc.d.ts +1 -1
  782. package/dist/utc/parse/parseDateFromUtc.js +1 -1
  783. package/dist/utc/parse/parseDayFromUtc.d.ts +1 -1
  784. package/dist/utc/parse/parseDayFromUtc.js +1 -1
  785. package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +1 -1
  786. package/dist/utc/parse/parseDayOfWeekFromUtc.js +2 -2
  787. package/dist/utc/parse/parseHourFromUtc.d.ts +1 -1
  788. package/dist/utc/parse/parseHourFromUtc.js +1 -1
  789. package/dist/utc/parse/parseHttpDate.js +1 -1
  790. package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +1 -1
  791. package/dist/utc/parse/parseMicrosecondFromUtc.js +1 -1
  792. package/dist/utc/parse/parseMillisecondFromUtc.d.ts +1 -1
  793. package/dist/utc/parse/parseMillisecondFromUtc.js +1 -1
  794. package/dist/utc/parse/parseMonthFromUtc.d.ts +1 -1
  795. package/dist/utc/parse/parseMonthFromUtc.js +1 -1
  796. package/dist/utc/parse/parseNanosecondFromUtc.d.ts +1 -1
  797. package/dist/utc/parse/parseNanosecondFromUtc.js +1 -1
  798. package/dist/utc/parse/parseSecondFromUtc.d.ts +1 -1
  799. package/dist/utc/parse/parseSecondFromUtc.js +1 -1
  800. package/dist/utc/parse/parseTimeFromUtc.d.ts +1 -1
  801. package/dist/utc/parse/parseTimeFromUtc.js +2 -2
  802. package/dist/utc/parse/parseUnitFromUtc.d.ts +2 -2
  803. package/dist/utc/parse/parseUnitFromUtc.js +2 -2
  804. package/dist/utc/parse/parseWeekFromUtc.d.ts +1 -1
  805. package/dist/utc/parse/parseWeekFromUtc.js +2 -2
  806. package/dist/utc/parse/parseYearFromUtc.d.ts +1 -1
  807. package/dist/utc/parse/parseYearFromUtc.js +1 -1
  808. package/dist/utc/validate/isValidUtc.js +3 -3
  809. package/dist/utc/validate/isValidUtcRange.js +1 -1
  810. package/dist/{duty → workforce}/calculate/dutyDayFor.js +1 -1
  811. package/dist/{duty → workforce}/calculate/evaluateDutyLog.js +1 -1
  812. package/dist/{duty → workforce}/calculate/longestRun.js +1 -1
  813. package/dist/{duty → workforce}/calculate/qualifyingRestPairs.js +1 -1
  814. package/dist/{duty → workforce}/calculate/qualifyingRests.js +1 -1
  815. package/dist/workforce/index.d.ts +3 -0
  816. package/dist/workforce/index.js +4 -0
  817. package/dist/{duty → workforce}/validate/isValidDutyLog.d.ts +2 -2
  818. package/dist/{duty → workforce}/validate/isValidDutyLog.js +2 -2
  819. package/dist/zoned/calculate/addZoned.d.ts +15 -15
  820. package/dist/zoned/calculate/addZoned.js +15 -15
  821. package/dist/zoned/calculate/addZonedBusinessDays.d.ts +5 -4
  822. package/dist/zoned/calculate/addZonedBusinessDays.js +5 -4
  823. package/dist/zoned/calculate/clampZoned.js +1 -1
  824. package/dist/zoned/calculate/diffZoned.d.ts +8 -8
  825. package/dist/zoned/calculate/diffZoned.js +7 -7
  826. package/dist/zoned/calculate/diffZonedAsDuration.d.ts +5 -5
  827. package/dist/zoned/calculate/diffZonedAsDuration.js +4 -4
  828. package/dist/zoned/calculate/endOfZoned.d.ts +3 -3
  829. package/dist/zoned/calculate/endOfZoned.js +2 -2
  830. package/dist/zoned/calculate/getHoursInZonedDay.d.ts +2 -2
  831. package/dist/zoned/calculate/getHoursInZonedDay.js +2 -2
  832. package/dist/zoned/calculate/getLocaleZonedDayOfWeek.d.ts +6 -5
  833. package/dist/zoned/calculate/getLocaleZonedDayOfWeek.js +6 -5
  834. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +5 -5
  835. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +5 -5
  836. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +6 -6
  837. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +6 -6
  838. package/dist/zoned/calculate/maxZoned.d.ts +2 -2
  839. package/dist/zoned/calculate/maxZoned.js +3 -3
  840. package/dist/zoned/calculate/minZoned.d.ts +2 -2
  841. package/dist/zoned/calculate/minZoned.js +3 -3
  842. package/dist/zoned/calculate/roundZoned.d.ts +11 -9
  843. package/dist/zoned/calculate/roundZoned.js +11 -9
  844. package/dist/zoned/calculate/setZoned.d.ts +8 -8
  845. package/dist/zoned/calculate/setZoned.js +8 -8
  846. package/dist/zoned/calculate/sortZoned.d.ts +3 -3
  847. package/dist/zoned/calculate/sortZoned.js +4 -4
  848. package/dist/zoned/calculate/startOfZoned.d.ts +3 -3
  849. package/dist/zoned/calculate/startOfZoned.js +2 -2
  850. package/dist/zoned/calculate/subtractZoned.d.ts +14 -14
  851. package/dist/zoned/calculate/subtractZoned.js +14 -14
  852. package/dist/zoned/calculate/subtractZonedBusinessDays.d.ts +5 -4
  853. package/dist/zoned/calculate/subtractZonedBusinessDays.js +5 -4
  854. package/dist/zoned/chop/chopZonedDate.d.ts +1 -1
  855. package/dist/zoned/chop/chopZonedDate.js +1 -1
  856. package/dist/zoned/chop/chopZonedMilliseconds.d.ts +1 -1
  857. package/dist/zoned/chop/chopZonedMilliseconds.js +1 -1
  858. package/dist/zoned/chop/chopZonedSeconds.d.ts +1 -1
  859. package/dist/zoned/chop/chopZonedSeconds.js +1 -1
  860. package/dist/zoned/chop/chopZonedTime.d.ts +1 -1
  861. package/dist/zoned/chop/chopZonedTime.js +1 -1
  862. package/dist/zoned/chop/chopZonedTimezone.d.ts +1 -1
  863. package/dist/zoned/chop/chopZonedTimezone.js +1 -1
  864. package/dist/zoned/classify/classifyStoredZoned.d.ts +46 -0
  865. package/dist/zoned/classify/classifyStoredZoned.js +177 -0
  866. package/dist/zoned/classify/index.d.ts +1 -0
  867. package/dist/zoned/classify/index.js +1 -0
  868. package/dist/zoned/compare/areZonedEqual.js +1 -1
  869. package/dist/zoned/compare/areZonedEqualBy.d.ts +8 -10
  870. package/dist/zoned/compare/areZonedEqualBy.js +8 -10
  871. package/dist/zoned/compare/isAfterZoned.js +1 -1
  872. package/dist/zoned/compare/isBeforeZoned.d.ts +2 -2
  873. package/dist/zoned/compare/isBeforeZoned.js +3 -3
  874. package/dist/zoned/compare/isBetweenZoned.js +1 -1
  875. package/dist/zoned/compare/isInDaylightSaving.d.ts +2 -2
  876. package/dist/zoned/compare/isInDaylightSaving.js +2 -2
  877. package/dist/zoned/compare/isZonedBusinessDay.d.ts +7 -6
  878. package/dist/zoned/compare/isZonedBusinessDay.js +7 -6
  879. package/dist/zoned/compare/isZonedFuture.js +1 -1
  880. package/dist/zoned/compare/isZonedPast.js +1 -1
  881. package/dist/zoned/compare/isZonedRelativeDay.d.ts +2 -2
  882. package/dist/zoned/compare/isZonedRelativeDay.js +3 -3
  883. package/dist/zoned/compare/isZonedThisUnit.d.ts +7 -7
  884. package/dist/zoned/compare/isZonedThisUnit.js +7 -7
  885. package/dist/zoned/compare/isZonedWeekend.d.ts +5 -5
  886. package/dist/zoned/compare/isZonedWeekend.js +5 -5
  887. package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +6 -6
  888. package/dist/zoned/convert/convertPlainDateTimeToZoned.js +6 -6
  889. package/dist/zoned/convert/convertZonedToCalendar.d.ts +5 -5
  890. package/dist/zoned/convert/convertZonedToCalendar.js +5 -5
  891. package/dist/zoned/convert/convertZonedToPlainDateTime.d.ts +3 -3
  892. package/dist/zoned/convert/convertZonedToPlainDateTime.js +3 -3
  893. package/dist/zoned/convert/convertZonedToZoned.d.ts +2 -2
  894. package/dist/zoned/convert/convertZonedToZoned.js +2 -2
  895. package/dist/zoned/format/formatCalendarZoned.d.ts +7 -6
  896. package/dist/zoned/format/formatCalendarZoned.js +5 -5
  897. package/dist/zoned/format/formatRelativeZoned.d.ts +3 -3
  898. package/dist/zoned/format/formatRelativeZoned.js +4 -4
  899. package/dist/zoned/format/formatRfc2822.d.ts +3 -3
  900. package/dist/zoned/format/formatRfc2822.js +3 -3
  901. package/dist/zoned/format/formatRfc3339.d.ts +2 -2
  902. package/dist/zoned/format/formatRfc3339.js +2 -2
  903. package/dist/zoned/format/formatTimeZoneName.d.ts +17 -17
  904. package/dist/zoned/format/formatTimeZoneName.js +13 -12
  905. package/dist/zoned/format/formatZonedDateTime.d.ts +10 -10
  906. package/dist/zoned/format/formatZonedDateTime.js +12 -11
  907. package/dist/zoned/format/formatZonedRange.d.ts +7 -7
  908. package/dist/zoned/format/formatZonedRange.js +9 -8
  909. package/dist/zoned/format/formatZonedToParts.d.ts +11 -11
  910. package/dist/zoned/format/formatZonedToParts.js +13 -12
  911. package/dist/zoned/get/getDstTransitions.d.ts +9 -9
  912. package/dist/zoned/get/getDstTransitions.js +3 -3
  913. package/dist/zoned/get/getSystemTimeZone.d.ts +2 -2
  914. package/dist/zoned/get/getSystemTimeZone.js +2 -2
  915. package/dist/zoned/get/getTimeZoneOffset.d.ts +5 -5
  916. package/dist/zoned/get/getTimeZoneOffset.js +5 -5
  917. package/dist/zoned/get/getTimeZones.d.ts +1 -1
  918. package/dist/zoned/get/getTimeZones.js +1 -1
  919. package/dist/zoned/get/getZonedDay.d.ts +1 -1
  920. package/dist/zoned/get/getZonedDay.js +1 -1
  921. package/dist/zoned/get/getZonedDayOfWeek.d.ts +1 -1
  922. package/dist/zoned/get/getZonedDayOfWeek.js +1 -1
  923. package/dist/zoned/get/getZonedHour.d.ts +1 -1
  924. package/dist/zoned/get/getZonedHour.js +1 -1
  925. package/dist/zoned/get/getZonedMicrosecond.d.ts +1 -1
  926. package/dist/zoned/get/getZonedMicrosecond.js +1 -1
  927. package/dist/zoned/get/getZonedMillisecond.d.ts +1 -1
  928. package/dist/zoned/get/getZonedMillisecond.js +1 -1
  929. package/dist/zoned/get/getZonedMinute.d.ts +1 -1
  930. package/dist/zoned/get/getZonedMinute.js +1 -1
  931. package/dist/zoned/get/getZonedMonth.d.ts +1 -1
  932. package/dist/zoned/get/getZonedMonth.js +1 -1
  933. package/dist/zoned/get/getZonedNanosecond.d.ts +1 -1
  934. package/dist/zoned/get/getZonedNanosecond.js +1 -1
  935. package/dist/zoned/get/getZonedNow.d.ts +4 -4
  936. package/dist/zoned/get/getZonedNow.js +4 -4
  937. package/dist/zoned/get/getZonedNowUnit.d.ts +2 -2
  938. package/dist/zoned/get/getZonedNowUnit.js +1 -1
  939. package/dist/zoned/get/getZonedSecond.d.ts +1 -1
  940. package/dist/zoned/get/getZonedSecond.js +1 -1
  941. package/dist/zoned/get/getZonedToday.d.ts +1 -1
  942. package/dist/zoned/get/getZonedToday.js +1 -1
  943. package/dist/zoned/get/getZonedWeekOfYear.d.ts +1 -1
  944. package/dist/zoned/get/getZonedWeekOfYear.js +1 -1
  945. package/dist/zoned/get/getZonedYear.d.ts +1 -1
  946. package/dist/zoned/get/getZonedYear.js +1 -1
  947. package/dist/zoned/index.d.ts +2 -1
  948. package/dist/zoned/index.js +3 -2
  949. package/dist/zoned/interval/intervalAbutsZoned.d.ts +2 -2
  950. package/dist/zoned/interval/intervalAbutsZoned.js +3 -3
  951. package/dist/zoned/interval/intervalContainsZoned.d.ts +1 -1
  952. package/dist/zoned/interval/intervalContainsZoned.js +2 -2
  953. package/dist/zoned/interval/intervalCountZoned.d.ts +4 -4
  954. package/dist/zoned/interval/intervalCountZoned.js +5 -5
  955. package/dist/zoned/interval/intervalDifferenceZoned.js +1 -1
  956. package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +1 -1
  957. package/dist/zoned/interval/intervalDivideEquallyZoned.js +2 -2
  958. package/dist/zoned/interval/intervalEngulfsZoned.d.ts +1 -1
  959. package/dist/zoned/interval/intervalEngulfsZoned.js +2 -2
  960. package/dist/zoned/interval/intervalFromDurationZoned.d.ts +6 -6
  961. package/dist/zoned/interval/intervalFromDurationZoned.js +7 -7
  962. package/dist/zoned/interval/intervalIntersectionZoned.js +1 -1
  963. package/dist/zoned/interval/intervalLengthZoned.d.ts +5 -5
  964. package/dist/zoned/interval/intervalLengthZoned.js +5 -5
  965. package/dist/zoned/interval/intervalOverlappingDaysZoned.d.ts +2 -2
  966. package/dist/zoned/interval/intervalOverlappingDaysZoned.js +3 -3
  967. package/dist/zoned/interval/intervalSplitAtZoned.js +14 -16
  968. package/dist/zoned/interval/intervalUnionZoned.js +1 -1
  969. package/dist/zoned/interval/intervalXorAllZoned.js +1 -1
  970. package/dist/zoned/interval/intervalXorZoned.js +1 -1
  971. package/dist/zoned/interval/intervalsOverlapZoned.d.ts +2 -2
  972. package/dist/zoned/interval/intervalsOverlapZoned.js +3 -3
  973. package/dist/zoned/interval/mergeIntervalsZoned.js +1 -1
  974. package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +2 -1
  975. package/dist/zoned/interval/splitIntervalByUnitZoned.js +3 -2
  976. package/dist/zoned/interval/validate/isValidCalendarZonedInterval.d.ts +2 -2
  977. package/dist/zoned/interval/validate/isValidCalendarZonedInterval.js +3 -3
  978. package/dist/zoned/interval/validate/isValidZonedInterval.d.ts +1 -1
  979. package/dist/zoned/interval/validate/isValidZonedInterval.js +2 -2
  980. package/dist/zoned/map/mapZonedDatesInRange.js +1 -1
  981. package/dist/zoned/map/mapZonedHoursInDay.d.ts +1 -1
  982. package/dist/zoned/map/mapZonedHoursInDay.js +2 -2
  983. package/dist/zoned/parse/getZonedOffset.d.ts +1 -1
  984. package/dist/zoned/parse/getZonedOffset.js +1 -1
  985. package/dist/zoned/parse/getZonedOffsetAs.d.ts +6 -6
  986. package/dist/zoned/parse/getZonedOffsetAs.js +3 -3
  987. package/dist/zoned/parse/parseDateTimeFromZoned.js +2 -2
  988. package/dist/zoned/parse/parseRfc2822.js +1 -1
  989. package/dist/zoned/parse/parseRfc3339.js +1 -1
  990. package/dist/zoned/parse/parseUnitFromZoned.d.ts +1 -1
  991. package/dist/zoned/validate/hasDaylightSaving.d.ts +2 -2
  992. package/dist/zoned/validate/hasDaylightSaving.js +3 -3
  993. package/dist/zoned/validate/isValidCalendarZonedDateTime.d.ts +8 -8
  994. package/dist/zoned/validate/isValidCalendarZonedDateTime.js +8 -8
  995. package/dist/zoned/validate/isValidTimeZone.d.ts +1 -1
  996. package/dist/zoned/validate/isValidTimeZone.js +3 -18
  997. package/dist/zoned/validate/isValidZonedDateTime.d.ts +7 -7
  998. package/dist/zoned/validate/isValidZonedDateTime.js +9 -9
  999. package/dist/zoned/validate/isValidZonedRange.d.ts +1 -1
  1000. package/dist/zoned/validate/isValidZonedRange.js +5 -5
  1001. package/package.json +71 -21
  1002. package/skills/gmt-arithmetic/SKILL.md +18 -59
  1003. package/skills/gmt-basics/SKILL.md +32 -12
  1004. package/skills/gmt-gnss/SKILL.md +92 -0
  1005. package/skills/gmt-integration/SKILL.md +48 -15
  1006. package/skills/gmt-intermodal/SKILL.md +189 -0
  1007. package/skills/gmt-timezone/SKILL.md +34 -257
  1008. package/skills/gmt-transport/SKILL.md +133 -0
  1009. package/skills/gmt-workforce/SKILL.md +84 -0
  1010. package/dist/duty/index.d.ts +0 -3
  1011. package/dist/duty/index.js +0 -4
  1012. /package/dist/{duty → workforce}/calculate/dutyDayFor.d.ts +0 -0
  1013. /package/dist/{duty → workforce}/calculate/dutyTotals.d.ts +0 -0
  1014. /package/dist/{duty → workforce}/calculate/dutyTotals.js +0 -0
  1015. /package/dist/{duty → workforce}/calculate/dutyViolations.d.ts +0 -0
  1016. /package/dist/{duty → workforce}/calculate/dutyViolations.js +0 -0
  1017. /package/dist/{duty → workforce}/calculate/evaluateDutyLog.d.ts +0 -0
  1018. /package/dist/{duty → workforce}/calculate/index.d.ts +0 -0
  1019. /package/dist/{duty → workforce}/calculate/index.js +0 -0
  1020. /package/dist/{duty → workforce}/calculate/longestRun.d.ts +0 -0
  1021. /package/dist/{duty → workforce}/calculate/qualifyingRestPairs.d.ts +0 -0
  1022. /package/dist/{duty → workforce}/calculate/qualifyingRests.d.ts +0 -0
  1023. /package/dist/{duty → workforce}/validate/index.d.ts +0 -0
  1024. /package/dist/{duty → workforce}/validate/index.js +0 -0
@@ -1,15 +1,14 @@
1
- import { Temporal } from "@js-temporal/polyfill";
1
+ import { Temporal } from "./temporal.js";
2
2
  import { parseDutyLog } from "./dutyLog.js";
3
3
  import { calendarScale, datePlusDays, localDateOf, operatorDayScale, periodAfter, periodsEndingAt, resolveWallClock, WallClockRejected, } from "./dutyPeriods.js";
4
4
  import { MAX_PERIOD_COUNT, parseDutyRules, usesOperatorDays, } from "./dutyRules.js";
5
+ import { countEvents, countInRange, latestPairFrom, createRunStore, endingAtOrBefore, entryHolding, firstEndingAfter, firstEntryIn, firstStartingAtOrAfter, firstWhere, interruptionResetAt, lastAtLeastUntil, lastEntryBefore, latestAtLeast, logStartBefore, runEndingAt, runIndex, runsMatching, runsUntil, timeInBefore, viewRun, } from "./dutyRunIndex.js";
6
+ import { MIN_EPOCH_NANOSECONDS } from "./epochNanoseconds.js";
5
7
  import { isObject } from "./isObject.js";
6
8
  import { parseScheduleDisambiguation } from "./operatingSchedule.js";
7
9
  import { formatHourDuration } from "./hourDurationString.js";
8
- import { coalesceIntervalNanoseconds } from "./intervalNanoseconds.js";
9
10
  import { zoneFrame } from "./zoneFrame.js";
10
11
  import { parseDayStartTime } from "./dutyPeriods.js";
11
- /** TC39 `nsMinInstant`: a window never reaches back past the first instant. */
12
- const MIN_INSTANT_NANOSECONDS = -8640000000000000000000n;
13
12
  /** A window a call cannot place in Temporal's range. Caught by the public function. */
14
13
  export class Unrepresentable extends RangeError {
15
14
  }
@@ -67,7 +66,7 @@ export function prepareDutyCall(log, rules, options) {
67
66
  scales: new Map(),
68
67
  wallClocks: new Map(),
69
68
  windowInstances: new Map(),
70
- runs: new Map(),
69
+ store: createRunStore(entries),
71
70
  },
72
71
  rules: resolved,
73
72
  };
@@ -90,18 +89,6 @@ function scaleFor(context, unit) {
90
89
  context.scales.set(unit, scale);
91
90
  return scale;
92
91
  }
93
- /** The log as it stands at `at`: later entries dropped, one straddling `at` cut there. */
94
- function clip(entries, at) {
95
- const clipped = [];
96
- for (const entry of entries) {
97
- if (entry.start >= at) {
98
- break;
99
- }
100
- clipped.push(entry.end > at ? { ...entry, end: at } : entry);
101
- }
102
- return clipped;
103
- }
104
- const matches = (test, status) => typeof test === "function" ? test(status) : test.has(status);
105
92
  /**
106
93
  * Read a status list a helper takes: an array of strings, `[]` allowed. Each element is read once.
107
94
  *
@@ -128,19 +115,7 @@ export function readStatusList(value) {
128
115
  * them (CORE-6): touching entries join, and a gap or another status ends a run.
129
116
  */
130
117
  export function runsOf(log, test) {
131
- return coalesceIntervalNanoseconds(log
132
- .filter((entry) => matches(test, entry.status))
133
- .map(({ start, end }) => ({ start, end, startText: "", endText: "" }))).map(({ start, end }) => ({ start, end }));
134
- }
135
- /** The runs of the whole log in a set of statuses, found once per call and kept. */
136
- function logRuns(context, statuses) {
137
- const known = context.runs.get(statuses);
138
- if (known !== undefined) {
139
- return known;
140
- }
141
- const found = runsOf(context.entries, statuses);
142
- context.runs.set(statuses, found);
143
- return found;
118
+ return runsMatching(log, (status) => test.has(status));
144
119
  }
145
120
  /**
146
121
  * The parts of ordered, separate runs inside `[from, to)`, empty parts dropped: `clipRuns`, with
@@ -185,7 +160,7 @@ export function clipRuns(runs, from, to) {
185
160
  export function timeIn(log, statuses, from, to) {
186
161
  let total = 0n;
187
162
  for (const entry of log) {
188
- if (matches(statuses, entry.status)) {
163
+ if (statuses.has(entry.status)) {
189
164
  const start = max(entry.start, from);
190
165
  const end = min(entry.end, to);
191
166
  total += end > start ? end - start : 0n;
@@ -193,16 +168,6 @@ export function timeIn(log, statuses, from, to) {
193
168
  }
194
169
  return total;
195
170
  }
196
- /** The latest run at least `minimum` long. */
197
- function lastAtLeast(runs, minimum) {
198
- for (let index = runs.length - 1; index >= 0; index--) {
199
- const run = runs[index];
200
- if (length(run) >= minimum) {
201
- return run;
202
- }
203
- }
204
- return undefined;
205
- }
206
171
  /**
207
172
  * The paired rests among runs of rest: two runs in a row, each shorter than `fullRest` and at
208
173
  * least `pair.each`, the longer at least `pair.one` and both together at least `pair.combined`.
@@ -249,7 +214,7 @@ function windowOf(context, period, at, anchor) {
249
214
  if (period.kind === "elapsed") {
250
215
  return {
251
216
  span: {
252
- start: max(at - period.length, MIN_INSTANT_NANOSECONDS),
217
+ start: max(at - period.length, MIN_EPOCH_NANOSECONDS),
253
218
  end: at,
254
219
  },
255
220
  basis: "elapsed",
@@ -525,7 +490,7 @@ function evaluateFreePeriod(context, rule, at, anchor) {
525
490
  const window = windowOf(context, rule.within, at, anchor);
526
491
  // Every count below ends at or before `at`, so the runs of the whole log, cut to the count's
527
492
  // span, are the runs of the log as it stands at `at`.
528
- const rests = logRuns(context, rule.restStatuses);
493
+ const rests = runIndex(context.store, rule.restStatuses).runs;
529
494
  const countIn = (from, to, extendTo) => {
530
495
  const inside = runsBetween(rests, from, to);
531
496
  const runs = extendTo === undefined ? inside : withRestUntil(inside, at, extendTo);
@@ -605,11 +570,66 @@ function evaluateFreePeriod(context, rule, at, anchor) {
605
570
  grouping: groupingOf(window),
606
571
  };
607
572
  }
608
- function evaluateRestRequirement(context, rule, log, at, anchor) {
573
+ /**
574
+ * The stretches without rest in the log as it stood at `at`: each runs from the end of one rest to
575
+ * the start of the next, the last to `at` (or nowhere, when a rest reaches `at`). The log's first
576
+ * entry starts one too, as a rest ending there would: time before the log is unknown, but the work
577
+ * logged before the first rest is a stretch without rest like any other.
578
+ */
579
+ function restGaps(rests, logStart, at) {
580
+ const taken = rests.count;
581
+ const resting = rests.last !== undefined && rests.last.end === at;
582
+ const prepended = logStart !== undefined &&
583
+ (taken === 0 || viewRun(rests, 0).start !== logStart);
584
+ const startAt = (gap) => prepended
585
+ ? gap === 0
586
+ ? logStart
587
+ : viewRun(rests, gap - 1).end
588
+ : viewRun(rests, gap).end;
589
+ const endAt = (gap) => {
590
+ const next = prepended ? gap : gap + 1;
591
+ return next < taken
592
+ ? viewRun(rests, next).start
593
+ : resting
594
+ ? startAt(gap)
595
+ : at;
596
+ };
597
+ return {
598
+ count: prepended ? taken + 1 : taken,
599
+ resting,
600
+ startAt,
601
+ endAt,
602
+ };
603
+ }
604
+ /**
605
+ * The longest stretch without rest touching `[from, to)`, found from the first that ends after
606
+ * `from`.
607
+ */
608
+ function widestGap(gaps, from, to) {
609
+ let widest = 0n;
610
+ for (let gap = firstWhere(gaps.count, (position) => gaps.endAt(position) > from); gap < gaps.count && gaps.startAt(gap) < to; gap++) {
611
+ widest = max(widest, gaps.endAt(gap) - gaps.startAt(gap));
612
+ }
613
+ return widest;
614
+ }
615
+ /** The widest stretch without rest in `[from, upper)` at `at`, and when the next rest falls due. */
616
+ function widestRestGap(context, index, at, from, upper, maxGap) {
617
+ const gaps = restGaps(runsUntil(index, at), logStartBefore(context.store, at), at);
618
+ return {
619
+ widest: widestGap(gaps, from, upper),
620
+ dueBy: gaps.count > 0 && !gaps.resting
621
+ ? gaps.startAt(gaps.count - 1) + maxGap
622
+ : null,
623
+ };
624
+ }
625
+ function evaluateRestRequirement(context, rule, at, anchor) {
609
626
  const window = windowOf(context, rule.per, at, anchor);
610
627
  const { span } = window;
611
- const rests = runsOf(log, rule.restStatuses);
612
- const inside = clipRuns(rests, span.start, min(span.end, at));
628
+ const index = runIndex(context.store, rule.restStatuses);
629
+ const upper = min(span.end, at);
630
+ // The count ends at or before `at`, so the runs of the whole log, cut to it, are the runs of
631
+ // the log as it stands at `at`.
632
+ const inside = span.start < upper ? runsBetween(index.runs, span.start, upper) : [];
613
633
  const actual = restChecks(rule, inside.map(length));
614
634
  const met = actual.met ||
615
635
  (span.end > at &&
@@ -624,30 +644,7 @@ function evaluateRestRequirement(context, rule, log, at, anchor) {
624
644
  grouping: groupingOf(window),
625
645
  };
626
646
  if (rule.maxGap !== null) {
627
- const last = rests[rests.length - 1];
628
- const resting = last !== undefined && last.end === at;
629
- // A stretch without rest runs from the end of one rest to the start of the next. The log's
630
- // first entry starts one too, as a rest ending there would: time before the log is unknown,
631
- // but the work logged before the first rest is a stretch without rest like any other.
632
- const logStart = log[0]?.start;
633
- const gapStarts = logStart === undefined || rests[0]?.start === logStart
634
- ? rests.map((run) => run.end)
635
- : [logStart, ...rests.map((run) => run.end)];
636
- const gapEnds = gapStarts.length > rests.length
637
- ? rests.map((run) => run.start)
638
- : rests.slice(1).map((run) => run.start);
639
- let widest = 0n;
640
- for (let index = 0; index < gapStarts.length; index++) {
641
- const gapStart = gapStarts[index];
642
- const gapEnd = gapEnds[index] ?? (resting ? gapStart : at);
643
- if (gapEnd > span.start && gapStart < min(span.end, at)) {
644
- widest = max(widest, gapEnd - gapStart);
645
- }
646
- }
647
- const lastGapStart = gapStarts[gapStarts.length - 1];
648
- const dueBy = lastGapStart !== undefined && !resting
649
- ? lastGapStart + rule.maxGap
650
- : null;
647
+ const { widest, dueBy } = widestRestGap(context, index, at, span.start, upper, rule.maxGap);
651
648
  if (widest > rule.maxGap) {
652
649
  return {
653
650
  satisfied: false,
@@ -669,57 +666,57 @@ function evaluateRestRequirement(context, rule, log, at, anchor) {
669
666
  dueBy: null,
670
667
  });
671
668
  }
672
- function evaluateRestBeforeDuty(rule, log, at) {
673
- const isRest = (status) => rule.restStatuses.has(status);
674
- const rests = runsOf(log, isRest);
675
- const last = log[log.length - 1];
676
- const onDuty = last !== undefined && last.end === at && !isRest(last.status);
677
- // On duty, the duty started where the run outside rest reaching `at` began; resting, a duty
678
- // starting now is the one to be ready for.
679
- const dutyStart = onDuty
680
- ? runsOf(log, (status) => !isRest(status)).at(-1).start
681
- : at;
682
- const logStart = log[0]?.start ?? at;
683
- if (rule.orFactor !== null) {
684
- // The rest judged is the one right before the duty, measured whole, against the duty it
685
- // ends: from the end of the last rest of at least `minimum` before it, breaks included, to
686
- // where it starts. A duty between an earlier rest and this one is never skipped, and more
687
- // rest before the duty only lengthens the rest or shortens the duty before it.
688
- const rest = rests.find((run) => run.end === dutyStart);
689
- const restStart = rest?.start ?? dutyStart;
690
- const fullRest = rests
691
- .filter((run) => run.end <= restStart && length(run) >= rule.minimum)
692
- .at(-1);
693
- const dutyFrom = fullRest?.end ?? min(logStart, restStart);
694
- const previousDuty = restStart - dutyFrom;
695
- const { numerator, denominator } = rule.orFactor.k;
696
- // k × the duty, rounded up to the nanosecond, exactly.
697
- const scaled = (previousDuty * numerator + denominator - 1n) / denominator;
698
- const limit = max(rule.minimum, max(scaled, rule.orFactor.floor));
699
- const used = rest === undefined ? 0n : length(rest);
700
- return {
701
- ...floored(used, limit, !onDuty || used >= limit, {
702
- window: { start: dutyFrom, end: dutyStart },
703
- periodBasis: "elapsed",
704
- dueBy: null,
705
- resetAt: null,
706
- grouping: "start",
707
- }),
708
- // A rest that starts with the log, or a duty with none logged before it, may have more
709
- // rest before the log: the record does not judge it.
710
- beforeLog: restStart <= logStart,
711
- key: restStart,
712
- };
713
- }
714
- const windowStart = max(dutyStart - rule.within, MIN_INSTANT_NANOSECONDS);
715
- // The rest before the duty: the longest run of rest inside the window, the latest on a tie.
669
+ /** The rest right before a duty, measured whole, against the duty before it (`orFactor`). */
670
+ function restBeforeDutyScaled(rule, orFactor, { rests, dutyStart, onDuty, logStart }) {
671
+ // The rest judged is the one right before the duty, measured whole, against the duty it
672
+ // ends: from the end of the last rest of at least `minimum` before it, breaks included, to
673
+ // where it starts. A duty between an earlier rest and this one is never skipped, and more
674
+ // rest before the duty only lengthens the rest or shortens the duty before it.
675
+ const rest = runEndingAt(rests, dutyStart);
676
+ const restStart = rest?.start ?? dutyStart;
677
+ const fullRest = latestAtLeast(rests, endingAtOrBefore(rests, restStart), rule.minimum);
678
+ const dutyFrom = fullRest?.end ?? min(logStart, restStart);
679
+ const previousDuty = restStart - dutyFrom;
680
+ const { numerator, denominator } = orFactor.k;
681
+ // k × the duty, rounded up to the nanosecond, exactly.
682
+ const scaled = (previousDuty * numerator + denominator - 1n) / denominator;
683
+ const limit = max(rule.minimum, max(scaled, orFactor.floor));
684
+ const used = rest === undefined ? 0n : length(rest);
685
+ return {
686
+ ...floored(used, limit, !onDuty || used >= limit, {
687
+ window: { start: dutyFrom, end: dutyStart },
688
+ periodBasis: "elapsed",
689
+ dueBy: null,
690
+ resetAt: null,
691
+ grouping: "start",
692
+ }),
693
+ // A rest that starts with the log, or a duty with none logged before it, may have more
694
+ // rest before the log: the record does not judge it.
695
+ beforeLog: restStart <= logStart,
696
+ key: restStart,
697
+ };
698
+ }
699
+ /** The longest run of rest inside `[windowStart, dutyStart)`, the latest on a tie. */
700
+ function longestRestInside(rests, windowStart, dutyStart) {
701
+ // Only the runs reaching into the window are read, and dutyStart is at most `at`, so the cut
702
+ // last run reads as it does whole.
716
703
  let rest;
717
- for (const run of rests) {
704
+ for (let position = firstEndingAfter(rests, windowStart); position < rests.count; position++) {
705
+ const run = viewRun(rests, position);
706
+ if (run.start >= dutyStart) {
707
+ break;
708
+ }
718
709
  const inside = min(run.end, dutyStart) - max(run.start, windowStart);
719
710
  if (inside > 0n && (rest === undefined || inside >= rest.inside)) {
720
711
  rest = { run, inside };
721
712
  }
722
713
  }
714
+ return rest;
715
+ }
716
+ /** The rest before a duty: the longest inside the window, against the minimum. */
717
+ function restBeforeDutyWithin(rule, { rests, dutyStart, onDuty }) {
718
+ const windowStart = max(dutyStart - rule.within, MIN_EPOCH_NANOSECONDS);
719
+ const rest = longestRestInside(rests, windowStart, dutyStart);
723
720
  const used = rest?.inside ?? 0n;
724
721
  return {
725
722
  ...floored(used, rule.minimum, !onDuty || used >= rule.minimum, {
@@ -733,18 +730,44 @@ function evaluateRestBeforeDuty(rule, log, at) {
733
730
  key: rest?.run.start ?? windowStart,
734
731
  };
735
732
  }
733
+ function evaluateRestBeforeDuty(context, rule, at) {
734
+ const { store } = context;
735
+ const rests = runsUntil(runIndex(store, rule.restStatuses), at);
736
+ const last = lastEntryBefore(store, at);
737
+ const onDuty = last !== undefined &&
738
+ last.end === at &&
739
+ !rule.restStatuses.has(last.status);
740
+ // On duty, the duty started where the run outside rest reaching `at` began; resting, a duty
741
+ // starting now is the one to be ready for.
742
+ const dutyStart = onDuty
743
+ ? runsUntil(runIndex(store, { not: rule.restStatuses }), at)
744
+ .last.start
745
+ : at;
746
+ const started = {
747
+ rests,
748
+ dutyStart,
749
+ onDuty,
750
+ logStart: logStartBefore(store, at) ?? at,
751
+ };
752
+ return rule.orFactor === null
753
+ ? restBeforeDutyWithin(rule, started)
754
+ : restBeforeDutyScaled(rule, rule.orFactor, started);
755
+ }
736
756
  function evaluateRule(context, rule, at, anchor) {
737
757
  // A free period reads only runs of rest, kept for the whole call, not the log cut at `at`.
738
758
  if (rule.kind === "freePeriod") {
739
759
  return evaluateFreePeriod(context, rule, at, anchor);
740
760
  }
741
- const log = clip(context.entries, at);
742
- const first = log[0]?.start ?? at;
761
+ // The log as it stands at `at` is the whole log read up to `at`: no copy is made.
762
+ const { store } = context;
763
+ const first = logStartBefore(store, at) ?? at;
764
+ const viewOf = (test) => runsUntil(runIndex(store, test), at);
765
+ const timeOf = (test, from, to) => timeInBefore(runIndex(store, test), from, to, at);
743
766
  switch (rule.kind) {
744
767
  case "cumulativeCap": {
745
- const reset = lastAtLeast(runsOf(log, rule.since.statuses), rule.since.consecutive);
768
+ const reset = lastAtLeastUntil(viewOf(rule.since.statuses), rule.since.consecutive);
746
769
  const from = reset?.end ?? first;
747
- return capped(duration(timeIn(log, rule.statuses, from, at)), duration(rule.cap), {
770
+ return capped(duration(timeOf(rule.statuses, from, at)), duration(rule.cap), {
748
771
  window: { start: from, end: at },
749
772
  periodBasis: null,
750
773
  dueBy: null,
@@ -753,11 +776,10 @@ function evaluateRule(context, rule, at, anchor) {
753
776
  });
754
777
  }
755
778
  case "elapsedWindow": {
756
- const rests = runsOf(log, rule.since.statuses);
757
- const reset = lastAtLeast(rests, rule.since.consecutive);
779
+ const rests = viewOf(rule.since.statuses);
780
+ const reset = lastAtLeastUntil(rests, rule.since.consecutive);
758
781
  const after = reset?.end ?? null;
759
- const opener = log.find((entry) => (after === null || entry.start >= after) &&
760
- rule.startStatuses.has(entry.status));
782
+ const opener = firstEntryIn(store, rule.startStatuses, after, at);
761
783
  if (opener === undefined) {
762
784
  return {
763
785
  satisfied: true,
@@ -775,8 +797,7 @@ function evaluateRule(context, rule, at, anchor) {
775
797
  let opensAt = opener.start;
776
798
  let second;
777
799
  if (rule.exclude !== null) {
778
- const pairs = restPairs(rests.filter((run) => run.start >= opener.start), rule.since.consecutive, rule.exclude);
779
- const latest = pairs[pairs.length - 1];
800
+ const latest = latestPairFrom(rests, firstStartingAtOrAfter(rests, opener.start), rule.since.consecutive, rule.exclude);
780
801
  if (latest !== undefined) {
781
802
  opensAt = latest.first.end;
782
803
  second = latest.second;
@@ -806,7 +827,7 @@ function evaluateRule(context, rule, at, anchor) {
806
827
  limit += rule.extension.by;
807
828
  }
808
829
  }
809
- const late = timeIn(log, rule.restrictedStatuses, closesAt, at);
830
+ const late = timeOf(rule.restrictedStatuses, closesAt, at);
810
831
  return {
811
832
  satisfied: late === 0n,
812
833
  used: duration(at - opensAt - excluded),
@@ -821,28 +842,13 @@ function evaluateRule(context, rule, at, anchor) {
821
842
  };
822
843
  }
823
844
  case "requiredInterruption": {
824
- const outside = rule.outsideStatuses;
825
- const breaks = runsOf(log, (status) => !rule.countedStatuses.has(status) &&
826
- (outside === null || outside.has(status)));
827
- let resetAt = null;
828
- let part = 0;
829
- for (const pause of breaks) {
830
- const taken = length(pause);
831
- const split = rule.orderedSplit;
832
- if (taken >= rule.minimum) {
833
- resetAt = pause.end;
834
- part = 0;
835
- }
836
- else if (split !== null && taken >= split[part]) {
837
- part++;
838
- if (part === split.length) {
839
- resetAt = pause.end;
840
- part = 0;
841
- }
842
- }
843
- }
845
+ const breaks = viewOf({
846
+ not: rule.countedStatuses,
847
+ within: rule.outsideStatuses,
848
+ });
849
+ const resetAt = interruptionResetAt(breaks, rule.minimum, rule.orderedSplit);
844
850
  const from = resetAt ?? first;
845
- return capped(duration(timeIn(log, rule.countedStatuses, from, at)), duration(rule.after), {
851
+ return capped(duration(timeOf(rule.countedStatuses, from, at)), duration(rule.after), {
846
852
  window: { start: from, end: at },
847
853
  periodBasis: null,
848
854
  dueBy: null,
@@ -854,19 +860,20 @@ function evaluateRule(context, rule, at, anchor) {
854
860
  const window = windowOf(context, rule.window, at, anchor);
855
861
  const reset = rule.reset === null
856
862
  ? undefined
857
- : lastAtLeast(runsOf(log, rule.reset.statuses), rule.reset.consecutive);
863
+ : lastAtLeastUntil(viewOf(rule.reset.statuses), rule.reset.consecutive);
858
864
  const from = reset !== undefined && reset.end > window.span.start
859
865
  ? reset.end
860
866
  : window.span.start;
861
867
  const to = min(window.span.end, at);
862
- let used = timeIn(log, rule.statuses, from, to);
868
+ let used = timeOf(rule.statuses, from, to);
863
869
  let limit = rule.cap;
864
870
  if (rule.precondition !== null) {
865
871
  const { restStatuses, minimum, beforeHours } = rule.precondition;
866
- const rest = clipRuns(runsOf(log, restStatuses), from, to).find((run) => length(run) >= minimum);
867
- const before = rest === undefined
868
- ? used
869
- : timeIn(log, rule.statuses, from, rest.start);
872
+ // `to` is at most `at`, so the runs of the whole log, cut to it, are the log's.
873
+ const rest = (from < to
874
+ ? runsBetween(runIndex(store, restStatuses).runs, from, to)
875
+ : []).find((run) => length(run) >= minimum);
876
+ const before = rest === undefined ? used : timeOf(rule.statuses, from, rest.start);
870
877
  if (rest === undefined || before > beforeHours) {
871
878
  limit = beforeHours;
872
879
  used = before;
@@ -882,7 +889,7 @@ function evaluateRule(context, rule, at, anchor) {
882
889
  }
883
890
  case "fixedPeriodCap": {
884
891
  const window = windowOf(context, repeated(rule.period, rule.adjacent), at, anchor);
885
- const total = timeIn(log, rule.statuses, window.span.start, min(window.span.end, at));
892
+ const total = timeOf(rule.statuses, window.span.start, min(window.span.end, at));
886
893
  const rest = {
887
894
  window: window.span,
888
895
  periodBasis: basisOf(window),
@@ -905,20 +912,20 @@ function evaluateRule(context, rule, at, anchor) {
905
912
  };
906
913
  }
907
914
  case "restRequirement":
908
- return evaluateRestRequirement(context, rule, log, at, anchor);
915
+ return evaluateRestRequirement(context, rule, at, anchor);
909
916
  case "restBeforeDuty":
910
- return evaluateRestBeforeDuty(rule, log, at);
917
+ return evaluateRestBeforeDuty(context, rule, at);
911
918
  case "quota": {
912
- const continuing = context.entries.some((entry) => rule.statuses.has(entry.status) &&
913
- entry.start <= at &&
914
- entry.end > at);
915
- const events = runsOf(log, rule.statuses).filter((run) => !(continuing && run.end === at) &&
916
- length(run) >= rule.minimum &&
917
- length(run) < rule.maximum);
919
+ const continuing = entryHolding(store, at);
920
+ const running = continuing !== undefined && rule.statuses.has(continuing.status);
921
+ const runs = viewOf(rule.statuses);
922
+ const sizes = { minimum: rule.minimum, maximum: rule.maximum };
923
+ // A run going on at `at` is not an event yet.
924
+ const skipEndingAt = running ? at : null;
918
925
  if ("every" in rule.reset) {
919
926
  const window = windowOf(context, rule.reset.every, at, anchor);
920
927
  const to = min(window.span.end, at);
921
- const found = events.filter((run) => run.start >= window.span.start && run.start < to).length;
928
+ const found = countEvents(runs, sizes, { from: window.span.start, to }, skipEndingAt);
922
929
  return capped(tally(found), tally(rule.count), {
923
930
  window: window.span,
924
931
  periodBasis: basisOf(window),
@@ -927,9 +934,9 @@ function evaluateRule(context, rule, at, anchor) {
927
934
  grouping: groupingOf(window),
928
935
  });
929
936
  }
930
- const reset = lastAtLeast(runsOf(log, rule.reset.statuses), rule.reset.consecutive);
937
+ const reset = lastAtLeastUntil(viewOf(rule.reset.statuses), rule.reset.consecutive);
931
938
  const from = reset?.end ?? first;
932
- return capped(tally(events.filter((run) => run.start >= from).length), tally(rule.count), {
939
+ return capped(tally(countEvents(runs, sizes, { from, to: null }, skipEndingAt)), tally(rule.count), {
933
940
  window: { start: from, end: at },
934
941
  periodBasis: null,
935
942
  dueBy: null,
@@ -938,11 +945,11 @@ function evaluateRule(context, rule, at, anchor) {
938
945
  });
939
946
  }
940
947
  case "dueBy": {
941
- const events = runsOf(log, rule.statuses);
942
- const event = lastAtLeast(events, rule.minimum);
948
+ const events = viewOf(rule.statuses);
949
+ const event = lastAtLeastUntil(events, rule.minimum);
943
950
  const reset = rule.reset === null
944
951
  ? undefined
945
- : lastAtLeast(runsOf(log, rule.reset.statuses), rule.reset.consecutive);
952
+ : lastAtLeastUntil(viewOf(rule.reset.statuses), rule.reset.consecutive);
946
953
  const clock = event === undefined
947
954
  ? (reset?.end ?? null)
948
955
  : reset === undefined
@@ -950,7 +957,7 @@ function evaluateRule(context, rule, at, anchor) {
950
957
  : max(event.end, reset.end);
951
958
  const from = clock ?? first;
952
959
  const due = boundaryAfter(context, rule.period, rule.periods, from);
953
- const latest = events[events.length - 1];
960
+ const latest = events.last;
954
961
  const pending = latest !== undefined && latest.end === at && latest.start <= due;
955
962
  return {
956
963
  satisfied: at <= due || pending,
@@ -974,12 +981,12 @@ function evaluateRule(context, rule, at, anchor) {
974
981
  const unfinished = span.end > at;
975
982
  const counts = new Map();
976
983
  for (const named of rule.classes) {
977
- const runs = runsOf(log, named.statuses);
984
+ const runs = viewOf(named.statuses);
978
985
  const qualifies = (run) => run.start >= span.start &&
979
986
  run.start < to &&
980
987
  length(run) >= named.minimum;
981
- const found = runs.filter(qualifies).length;
982
- const last = runs[runs.length - 1];
988
+ const found = countEvents(runs, { minimum: named.minimum, maximum: null }, { from: span.start, to }, null);
989
+ const last = runs.last;
983
990
  let best = found;
984
991
  if (unfinished) {
985
992
  // A run counts in the window it starts in, measured whole, so the most the window can
@@ -1030,7 +1037,7 @@ function evaluateRule(context, rule, at, anchor) {
1030
1037
  }
1031
1038
  case "occurrenceCap": {
1032
1039
  const scale = scaleFor(context, rule.per.unit);
1033
- const runs = runsOf(log, rule.statuses);
1040
+ const runs = viewOf(rule.statuses);
1034
1041
  const blocks = [];
1035
1042
  let blockAnchor = anchor;
1036
1043
  for (let index = 0; index < rule.lookback; index++) {
@@ -1043,9 +1050,11 @@ function evaluateRule(context, rule, at, anchor) {
1043
1050
  }
1044
1051
  const occupied = blocks.filter((block) => {
1045
1052
  const to = min(block.end, at);
1046
- return runs.some((run) => rule.byInitiationDate
1047
- ? run.start >= block.start && run.start < to
1048
- : run.start < to && run.end > block.start);
1053
+ // The first run that can count: starting in the block, or ending after it starts.
1054
+ const position = rule.byInitiationDate
1055
+ ? firstStartingAtOrAfter(runs, block.start)
1056
+ : firstEndingAfter(runs, block.start);
1057
+ return position < runs.count && viewRun(runs, position).start < to;
1049
1058
  }).length;
1050
1059
  const earliest = blocks[blocks.length - 1];
1051
1060
  const latest = blocks[0];
@@ -1059,18 +1068,18 @@ function evaluateRule(context, rule, at, anchor) {
1059
1068
  }
1060
1069
  case "usageLookback": {
1061
1070
  const window = windowOf(context, rule.notWithin, at, anchor);
1062
- const reset = lastAtLeast(runsOf(log, rule.reset.statuses), rule.reset.consecutive);
1071
+ const reset = lastAtLeastUntil(viewOf(rule.reset.statuses), rule.reset.consecutive);
1063
1072
  const from = reset !== undefined && reset.end > window.span.start
1064
1073
  ? reset.end
1065
1074
  : window.span.start;
1066
1075
  // A use is an instant, and each window holds it once. An elapsed window runs up to and
1067
1076
  // including the use being made at `at`, so one exactly its length earlier is outside it; a
1068
1077
  // window of local periods holds only its own, so one on its end is the next's.
1069
- const found = rule.uses.filter((use) => use >= from &&
1070
- use <= at &&
1071
- (rule.notWithin.kind === "elapsed"
1072
- ? use > at - rule.notWithin.length
1073
- : use < window.span.end)).length;
1078
+ const found = countInRange(rule.uses, rule.notWithin.kind === "elapsed"
1079
+ ? max(from, at - rule.notWithin.length + 1n)
1080
+ : from, rule.notWithin.kind === "elapsed"
1081
+ ? at + 1n
1082
+ : min(at + 1n, window.span.end));
1074
1083
  return capped(tally(found), tally(1), {
1075
1084
  window: { start: from, end: window.span.end },
1076
1085
  periodBasis: basisOf(window),
@@ -1262,11 +1271,9 @@ function runFloors(rule) {
1262
1271
  },
1263
1272
  ];
1264
1273
  case "requiredInterruption": {
1265
- const outside = rule.outsideStatuses;
1266
1274
  return [
1267
1275
  {
1268
- test: (status) => !rule.countedStatuses.has(status) &&
1269
- (outside === null || outside.has(status)),
1276
+ test: { not: rule.countedStatuses, within: rule.outsideStatuses },
1270
1277
  floors: [rule.minimum, ...(rule.orderedSplit ?? [])],
1271
1278
  sliding: false,
1272
1279
  },
@@ -1408,7 +1415,7 @@ function candidateInstants(context, rule, range) {
1408
1415
  }
1409
1416
  }
1410
1417
  for (const { test, floors, sliding } of runFloors(rule)) {
1411
- for (const run of runsOf(context.entries, test)) {
1418
+ for (const run of runIndex(context.store, test).runs) {
1412
1419
  for (const floor of floors) {
1413
1420
  around(run.start + floor);
1414
1421
  if (sliding) {
@@ -1425,7 +1432,7 @@ function candidateInstants(context, rule, range) {
1425
1432
  // full rest between. A run shorter than `each` is skipped, never a partner.
1426
1433
  const fullRest = rule.since.consecutive;
1427
1434
  let partner;
1428
- for (const run of runsOf(context.entries, rule.since.statuses)) {
1435
+ for (const run of runIndex(context.store, rule.since.statuses).runs) {
1429
1436
  if (partner !== undefined) {
1430
1437
  around(run.start + rule.exclude.combined - length(partner));
1431
1438
  }
@@ -1439,7 +1446,7 @@ function candidateInstants(context, rule, range) {
1439
1446
  }
1440
1447
  }
1441
1448
  if (rule.kind === "restRequirement") {
1442
- const rests = runsOf(context.entries, rule.restStatuses);
1449
+ const rests = runIndex(context.store, rule.restStatuses).runs;
1443
1450
  const ranks = rule.composition !== null || rule.composite !== null;
1444
1451
  if (rule.maxGap !== null) {
1445
1452
  // A stretch without rest starts at each rest's end and at the log's first entry.
@@ -1458,11 +1465,13 @@ function candidateInstants(context, rule, range) {
1458
1465
  for (let index = 0; index < near.length; index++) {
1459
1466
  const earlier = near[index];
1460
1467
  // A rest shrinking out of the window crosses one growing at its end, or one held whole.
1461
- for (let other = 0; other < near.length; other++) {
1468
+ // The rests are ordered and separate, so those within two window lengths of `earlier`
1469
+ // are one stretch of them: from the first that ends within reach to the first that
1470
+ // starts out of it.
1471
+ for (let other = firstWhere(near.length, (position) => near[position].end > earlier.start - 2n * shift); other < near.length; other++) {
1462
1472
  const later = near[other];
1463
- if (later.start - earlier.end >= 2n * shift ||
1464
- earlier.start - later.end >= 2n * shift) {
1465
- continue;
1473
+ if (later.start - earlier.end >= 2n * shift) {
1474
+ break;
1466
1475
  }
1467
1476
  const crossing = (earlier.end + shift + later.start) / 2n;
1468
1477
  around(crossing);
@@ -1479,7 +1488,7 @@ function candidateInstants(context, rule, range) {
1479
1488
  // a run further than that before the range, or after it, adds none inside it.
1480
1489
  const farthest = (BigInt(rule.atLeast) + 1n) * minimum +
1481
1490
  shifts.reduce((longest, shift) => max(longest, shift), 0n);
1482
- const rests = runsOf(context.entries, rule.restStatuses).filter((run) => run.end + farthest >= range.start && run.start <= until + 1n);
1491
+ const rests = runIndex(context.store, rule.restStatuses).runs.filter((run) => run.end + farthest >= range.start && run.start <= until + 1n);
1483
1492
  // A window fails only while it holds fewer than `atLeast` free periods, so a run's count
1484
1493
  // changing above `atLeast` changes no answer: each run's first `atLeast + 1` multiples are
1485
1494
  // the ones that matter. Of those, only the ones that land in the range are taken.
@@ -1520,13 +1529,13 @@ function candidateInstants(context, rule, range) {
1520
1529
  // and the log's start, set one.
1521
1530
  const clocks = [
1522
1531
  context.entries[0]?.start,
1523
- ...runsOf(context.entries, rule.statuses)
1524
- .filter((run) => length(run) >= rule.minimum)
1532
+ ...runIndex(context.store, rule.statuses)
1533
+ .runs.filter((run) => length(run) >= rule.minimum)
1525
1534
  .map((run) => run.end),
1526
1535
  ...(rule.reset === null
1527
1536
  ? []
1528
- : runsOf(context.entries, rule.reset.statuses)
1529
- .filter((run) => length(run) >=
1537
+ : runIndex(context.store, rule.reset.statuses)
1538
+ .runs.filter((run) => length(run) >=
1530
1539
  rule.reset.consecutive)
1531
1540
  .map((run) => run.end)),
1532
1541
  ];