@northguild/gmt 1.15.0 → 1.16.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 (1113) hide show
  1. package/README.md +852 -272
  2. package/dist/calendar/business/businessDaysBetween.d.ts +37 -0
  3. package/dist/calendar/business/businessDaysBetween.js +89 -0
  4. package/dist/calendar/business/index.d.ts +7 -0
  5. package/dist/calendar/business/index.js +10 -0
  6. package/dist/calendar/business/mergeCalendars.d.ts +33 -0
  7. package/dist/calendar/business/mergeCalendars.js +68 -0
  8. package/dist/calendar/business/nextBusinessDay.d.ts +30 -0
  9. package/dist/calendar/business/nextBusinessDay.js +39 -0
  10. package/dist/calendar/business/previousBusinessDay.d.ts +30 -0
  11. package/dist/calendar/business/previousBusinessDay.js +39 -0
  12. package/dist/calendar/business/rollDate.d.ts +59 -0
  13. package/dist/calendar/business/rollDate.js +116 -0
  14. package/dist/calendar/calculate/bucketRange.d.ts +49 -0
  15. package/dist/calendar/calculate/bucketRange.js +169 -0
  16. package/dist/calendar/calculate/floorToZone.d.ts +42 -0
  17. package/dist/calendar/calculate/floorToZone.js +62 -0
  18. package/dist/calendar/calculate/getFiscalPeriod.d.ts +64 -0
  19. package/dist/calendar/calculate/getFiscalPeriod.js +96 -0
  20. package/dist/calendar/calculate/getIsoWeekDate.d.ts +35 -0
  21. package/dist/calendar/calculate/getIsoWeekDate.js +41 -0
  22. package/dist/calendar/calculate/getOrdinalDate.d.ts +25 -0
  23. package/dist/calendar/calculate/getOrdinalDate.js +28 -0
  24. package/dist/calendar/calculate/getQuarter.d.ts +36 -0
  25. package/dist/calendar/calculate/getQuarter.js +64 -0
  26. package/dist/calendar/calculate/index.d.ts +6 -0
  27. package/dist/calendar/calculate/index.js +6 -0
  28. package/dist/calendar/index.d.ts +4 -0
  29. package/dist/calendar/index.js +5 -0
  30. package/dist/calendar/validate/index.d.ts +4 -0
  31. package/dist/calendar/validate/index.js +4 -0
  32. package/dist/calendar/validate/isValidBusinessCalendar.d.ts +31 -0
  33. package/dist/calendar/validate/isValidBusinessCalendar.js +40 -0
  34. package/dist/calendar/validate/isValidFiscalPattern.d.ts +25 -0
  35. package/dist/calendar/validate/isValidFiscalPattern.js +29 -0
  36. package/dist/calendar/validate/isValidRollConvention.d.ts +28 -0
  37. package/dist/calendar/validate/isValidRollConvention.js +38 -0
  38. package/dist/calendar/validate/isValidZoneBucketUnit.d.ts +31 -0
  39. package/dist/calendar/validate/isValidZoneBucketUnit.js +39 -0
  40. package/dist/duration/calculate/durationAs.d.ts +27 -3
  41. package/dist/duration/calculate/durationAs.js +34 -8
  42. package/dist/duration/calculate/getDurationUnit.d.ts +5 -2
  43. package/dist/duration/calculate/getDurationUnit.js +7 -3
  44. package/dist/duration/compare/compareDurations.d.ts +25 -2
  45. package/dist/duration/compare/compareDurations.js +31 -7
  46. package/dist/duration/format/formatDuration.d.ts +14 -5
  47. package/dist/duration/format/formatDuration.js +47 -11
  48. package/dist/duration/index.d.ts +1 -0
  49. package/dist/duration/index.js +2 -0
  50. package/dist/duration/normalize/normalizeDuration.d.ts +33 -6
  51. package/dist/duration/normalize/normalizeDuration.js +41 -12
  52. package/dist/duration/parse/parseDuration.js +4 -0
  53. package/dist/index.d.ts +5 -0
  54. package/dist/index.js +5 -0
  55. package/dist/instant/convert/classifyLocal.d.ts +50 -0
  56. package/dist/instant/convert/classifyLocal.js +60 -0
  57. package/dist/instant/convert/fromOffsetInstant.d.ts +47 -0
  58. package/dist/instant/convert/fromOffsetInstant.js +99 -0
  59. package/dist/instant/convert/index.d.ts +4 -0
  60. package/dist/instant/convert/index.js +4 -0
  61. package/dist/instant/convert/resolveLocal.d.ts +40 -0
  62. package/dist/instant/convert/resolveLocal.js +76 -0
  63. package/dist/instant/convert/toOffsetInstant.d.ts +73 -0
  64. package/dist/instant/convert/toOffsetInstant.js +185 -0
  65. package/dist/instant/index.d.ts +2 -0
  66. package/dist/instant/index.js +3 -0
  67. package/dist/internal/adjustZonedBusinessDays.js +9 -7
  68. package/dist/internal/businessCalendar.d.ts +46 -0
  69. package/dist/internal/businessCalendar.js +230 -0
  70. package/dist/internal/businessDayValues.d.ts +20 -0
  71. package/dist/internal/businessDayValues.js +54 -0
  72. package/dist/internal/calendarDatePairPolicy.d.ts +10 -12
  73. package/dist/internal/calendarDatePairPolicy.js +13 -19
  74. package/dist/internal/calendarDateString.d.ts +32 -58
  75. package/dist/internal/calendarDateString.js +51 -93
  76. package/dist/internal/calendarSystemIds.d.ts +26 -2
  77. package/dist/internal/calendarSystemIds.js +57 -51
  78. package/dist/internal/calendarValueOfDate.d.ts +10 -12
  79. package/dist/internal/calendarValueOfDate.js +22 -20
  80. package/dist/internal/calendarValueOfZoned.d.ts +14 -17
  81. package/dist/internal/calendarValueOfZoned.js +25 -25
  82. package/dist/internal/calendarZonedPairPolicy.d.ts +11 -18
  83. package/dist/internal/calendarZonedPairPolicy.js +14 -25
  84. package/dist/internal/calendarZonedString.d.ts +41 -65
  85. package/dist/internal/calendarZonedString.js +52 -101
  86. package/dist/internal/compareUnixEpochs.d.ts +14 -0
  87. package/dist/internal/compareUnixEpochs.js +25 -0
  88. package/dist/internal/dateTimeUnitHelpers.d.ts +18 -0
  89. package/dist/internal/dateTimeUnitHelpers.js +27 -0
  90. package/dist/internal/dateUnitHelpers.d.ts +39 -1
  91. package/dist/internal/dateUnitHelpers.js +73 -11
  92. package/dist/internal/defaultFractionalDigits.d.ts +14 -0
  93. package/dist/internal/defaultFractionalDigits.js +23 -0
  94. package/dist/internal/differenceRecord.d.ts +32 -0
  95. package/dist/internal/differenceRecord.js +79 -0
  96. package/dist/internal/divisionBoundary.d.ts +19 -0
  97. package/dist/internal/divisionBoundary.js +23 -0
  98. package/dist/internal/durationUntilString.d.ts +1 -1
  99. package/dist/internal/durationUntilString.js +10 -2
  100. package/dist/internal/englishCalendarNames.d.ts +11 -0
  101. package/dist/internal/englishCalendarNames.js +21 -1
  102. package/dist/internal/epochNanoseconds.d.ts +27 -0
  103. package/dist/internal/epochNanoseconds.js +31 -0
  104. package/dist/internal/fiscalCalendar.d.ts +36 -0
  105. package/dist/internal/fiscalCalendar.js +86 -0
  106. package/dist/internal/floorDivide.d.ts +15 -0
  107. package/dist/internal/floorDivide.js +18 -0
  108. package/dist/internal/foreignEpochs.d.ts +134 -0
  109. package/dist/internal/foreignEpochs.js +139 -0
  110. package/dist/internal/formatCalendarDays.d.ts +28 -0
  111. package/dist/internal/formatCalendarDays.js +49 -0
  112. package/dist/internal/formatDateInCalendar.d.ts +14 -39
  113. package/dist/internal/formatDateInCalendar.js +16 -47
  114. package/dist/internal/formatRelativeDuration.d.ts +27 -0
  115. package/dist/internal/formatRelativeDuration.js +45 -0
  116. package/dist/internal/getLocaleFirstDayOfWeek.d.ts +9 -6
  117. package/dist/internal/getLocaleFirstDayOfWeek.js +9 -10
  118. package/dist/internal/getLocaleWeekYearBounds.d.ts +17 -9
  119. package/dist/internal/getLocaleWeekYearBounds.js +45 -26
  120. package/dist/internal/getLocaleWeekendDays.d.ts +9 -18
  121. package/dist/internal/getLocaleWeekendDays.js +9 -5
  122. package/dist/internal/halfOpenIntervals.d.ts +102 -0
  123. package/dist/internal/halfOpenIntervals.js +180 -0
  124. package/dist/internal/hasCalendarAnnotation.d.ts +20 -20
  125. package/dist/internal/hasCalendarAnnotation.js +23 -21
  126. package/dist/internal/hourDurationString.d.ts +16 -0
  127. package/dist/internal/hourDurationString.js +47 -0
  128. package/dist/internal/httpDateFields.d.ts +24 -0
  129. package/dist/internal/httpDateFields.js +86 -0
  130. package/dist/internal/index.d.ts +28 -9
  131. package/dist/internal/index.js +28 -9
  132. package/dist/internal/instantFormatOptions.d.ts +43 -0
  133. package/dist/internal/instantFormatOptions.js +99 -0
  134. package/dist/internal/instantIntervalText.d.ts +20 -0
  135. package/dist/internal/instantIntervalText.js +25 -0
  136. package/dist/internal/instantNanoseconds.d.ts +25 -0
  137. package/dist/internal/instantNanoseconds.js +41 -0
  138. package/dist/internal/intervalCountHelpers.d.ts +16 -10
  139. package/dist/internal/intervalCountHelpers.js +1 -31
  140. package/dist/internal/intervalNanoseconds.d.ts +47 -0
  141. package/dist/internal/intervalNanoseconds.js +86 -0
  142. package/dist/internal/isObject.d.ts +26 -0
  143. package/dist/internal/isObject.js +30 -0
  144. package/dist/internal/isoStringBody.d.ts +40 -0
  145. package/dist/internal/isoStringBody.js +85 -0
  146. package/dist/internal/joinDateTimeConnector.d.ts +1 -1
  147. package/dist/internal/localeWeekInfo.d.ts +34 -0
  148. package/dist/internal/localeWeekInfo.js +27 -0
  149. package/dist/internal/maxPieces.d.ts +41 -0
  150. package/dist/internal/maxPieces.js +53 -0
  151. package/dist/internal/measureNearRangeEnd.d.ts +26 -0
  152. package/dist/internal/measureNearRangeEnd.js +47 -0
  153. package/dist/internal/monthGridWeekRow.d.ts +4 -1
  154. package/dist/internal/monthGridWeekRow.js +3 -0
  155. package/dist/internal/normalizeTimeZone.d.ts +17 -10
  156. package/dist/internal/normalizeTimeZone.js +25 -15
  157. package/dist/internal/patternToken.d.ts +2 -1
  158. package/dist/internal/patternToken.js +10 -4
  159. package/dist/internal/plainDateAdd.d.ts +20 -0
  160. package/dist/internal/plainDateAdd.js +42 -0
  161. package/dist/internal/plainDateUntil.d.ts +21 -0
  162. package/dist/internal/plainDateUntil.js +48 -0
  163. package/dist/internal/plainFormatOptions.d.ts +59 -0
  164. package/dist/internal/plainFormatOptions.js +165 -0
  165. package/dist/internal/resolveDateTimeUnit.d.ts +4 -1
  166. package/dist/internal/resolveDateTimeUnit.js +2 -12
  167. package/dist/internal/resolveDurationRelativeTo.d.ts +28 -22
  168. package/dist/internal/resolveDurationRelativeTo.js +69 -25
  169. package/dist/internal/resolveDurationUnit.d.ts +4 -1
  170. package/dist/internal/resolveDurationUnit.js +2 -11
  171. package/dist/internal/resolveLocale.d.ts +37 -0
  172. package/dist/internal/resolveLocale.js +59 -0
  173. package/dist/internal/resolveManualRoundingOptions.d.ts +23 -0
  174. package/dist/internal/resolveManualRoundingOptions.js +39 -0
  175. package/dist/internal/resolveMinimalDaysInFirstWeek.d.ts +19 -0
  176. package/dist/internal/resolveMinimalDaysInFirstWeek.js +28 -0
  177. package/dist/internal/resolveOverflow.d.ts +6 -0
  178. package/dist/internal/resolveOverflow.js +7 -1
  179. package/dist/internal/resolveReadingTimeZone.d.ts +11 -0
  180. package/dist/internal/resolveReadingTimeZone.js +18 -0
  181. package/dist/internal/resolveUnixIntervalPair.d.ts +30 -0
  182. package/dist/internal/resolveUnixIntervalPair.js +53 -0
  183. package/dist/internal/resolveWeekStartsOn.d.ts +12 -0
  184. package/dist/internal/resolveWeekStartsOn.js +18 -0
  185. package/dist/internal/rfc5322DateTime.d.ts +26 -0
  186. package/dist/internal/rfc5322DateTime.js +176 -0
  187. package/dist/internal/splitStep.d.ts +81 -0
  188. package/dist/internal/splitStep.js +182 -0
  189. package/dist/internal/startOrEndOfUnix.d.ts +26 -0
  190. package/dist/internal/startOrEndOfUnix.js +47 -0
  191. package/dist/{utc/calculate → internal}/startOrEndOfUtc.d.ts +8 -4
  192. package/dist/{utc/calculate → internal}/startOrEndOfUtc.js +30 -26
  193. package/dist/internal/startOrEndOfZoned.d.ts +22 -0
  194. package/dist/internal/startOrEndOfZoned.js +49 -0
  195. package/dist/internal/temporalCompat/calendarDateArithmetic.d.ts +33 -0
  196. package/dist/internal/temporalCompat/calendarDateArithmetic.js +199 -0
  197. package/dist/internal/temporalCompat/calendarDateFromFields.d.ts +36 -0
  198. package/dist/internal/temporalCompat/calendarDateFromFields.js +120 -0
  199. package/dist/internal/temporalCompat/calendarFields.d.ts +25 -0
  200. package/dist/internal/temporalCompat/calendarFields.js +131 -0
  201. package/dist/internal/temporalCompat/capabilities.d.ts +28 -0
  202. package/dist/internal/temporalCompat/capabilities.js +74 -0
  203. package/dist/internal/temporalCompat/fieldSearch.d.ts +21 -0
  204. package/dist/internal/temporalCompat/fieldSearch.js +83 -0
  205. package/dist/internal/temporalCompat/fixedDay.d.ts +25 -0
  206. package/dist/internal/temporalCompat/fixedDay.js +45 -0
  207. package/dist/internal/temporalCompat/hebrewArithmetic.d.ts +19 -0
  208. package/dist/internal/temporalCompat/hebrewArithmetic.js +150 -0
  209. package/dist/internal/temporalCompat/index.d.ts +4 -0
  210. package/dist/internal/temporalCompat/index.js +5 -0
  211. package/dist/internal/temporalCompat/indianArithmetic.d.ts +16 -0
  212. package/dist/internal/temporalCompat/indianArithmetic.js +87 -0
  213. package/dist/internal/temporalCompat/largeMonthSpan.d.ts +19 -0
  214. package/dist/internal/temporalCompat/largeMonthSpan.js +199 -0
  215. package/dist/internal/temporalCompat/nonIsoArithmetic.d.ts +59 -0
  216. package/dist/internal/temporalCompat/nonIsoArithmetic.js +220 -0
  217. package/dist/internal/temporalCompat/readArithmeticModel.d.ts +3 -0
  218. package/dist/internal/temporalCompat/readArithmeticModel.js +284 -0
  219. package/dist/internal/temporalCompat/repros.d.ts +31 -0
  220. package/dist/internal/temporalCompat/repros.js +556 -0
  221. package/dist/internal/toInstantFromUtc.d.ts +10 -0
  222. package/dist/internal/toInstantFromUtc.js +19 -0
  223. package/dist/internal/unixEpochValue.d.ts +166 -0
  224. package/dist/internal/unixEpochValue.js +245 -0
  225. package/dist/internal/unixFormatReference.d.ts +18 -0
  226. package/dist/internal/unixFormatReference.js +44 -0
  227. package/dist/internal/unixZonedDateTime.d.ts +22 -0
  228. package/dist/internal/unixZonedDateTime.js +32 -0
  229. package/dist/internal/utcOffsetString.d.ts +39 -0
  230. package/dist/internal/utcOffsetString.js +75 -0
  231. package/dist/internal/utcZonedDateTime.d.ts +16 -0
  232. package/dist/internal/utcZonedDateTime.js +28 -0
  233. package/dist/internal/zonedBucket.d.ts +91 -0
  234. package/dist/internal/zonedBucket.js +441 -0
  235. package/dist/internal/zonedFormatReference.d.ts +15 -0
  236. package/dist/internal/zonedFormatReference.js +24 -0
  237. package/dist/internal/zonedLocalDates.d.ts +15 -0
  238. package/dist/internal/zonedLocalDates.js +58 -0
  239. package/dist/internal/zonedNowUnitValue.d.ts +24 -0
  240. package/dist/internal/zonedNowUnitValue.js +58 -0
  241. package/dist/internal/zonedWallClock.d.ts +84 -0
  242. package/dist/internal/zonedWallClock.js +427 -0
  243. package/dist/internal/zonedWallClockDifference.d.ts +92 -0
  244. package/dist/internal/zonedWallClockDifference.js +1173 -0
  245. package/dist/internal/zonedWallClockOperations.d.ts +132 -0
  246. package/dist/internal/zonedWallClockOperations.js +553 -0
  247. package/dist/internal/zonelessCalendarDate.d.ts +12 -0
  248. package/dist/internal/zonelessCalendarDate.js +22 -0
  249. package/dist/interval/calculate/clampInterval.d.ts +22 -0
  250. package/dist/interval/calculate/clampInterval.js +31 -0
  251. package/dist/interval/calculate/index.d.ts +6 -0
  252. package/dist/interval/calculate/index.js +6 -0
  253. package/dist/interval/calculate/intersectIntervals.d.ts +23 -0
  254. package/dist/interval/calculate/intersectIntervals.js +43 -0
  255. package/dist/interval/calculate/mergeIntervals.d.ts +28 -0
  256. package/dist/interval/calculate/mergeIntervals.js +44 -0
  257. package/dist/interval/calculate/splitIntervalAt.d.ts +28 -0
  258. package/dist/interval/calculate/splitIntervalAt.js +63 -0
  259. package/dist/interval/calculate/subtractIntervals.d.ts +31 -0
  260. package/dist/interval/calculate/subtractIntervals.js +64 -0
  261. package/dist/interval/calculate/sumIntervals.d.ts +26 -0
  262. package/dist/interval/calculate/sumIntervals.js +40 -0
  263. package/dist/interval/compare/index.d.ts +2 -0
  264. package/dist/interval/compare/index.js +2 -0
  265. package/dist/interval/compare/intervalContains.d.ts +25 -0
  266. package/dist/interval/compare/intervalContains.js +39 -0
  267. package/dist/interval/compare/intervalsOverlap.d.ts +28 -0
  268. package/dist/interval/compare/intervalsOverlap.js +42 -0
  269. package/dist/interval/index.d.ts +4 -0
  270. package/dist/interval/index.js +5 -0
  271. package/dist/interval/validate/index.d.ts +1 -0
  272. package/dist/interval/validate/index.js +1 -0
  273. package/dist/interval/validate/isValidInterval.d.ts +29 -0
  274. package/dist/interval/validate/isValidInterval.js +38 -0
  275. package/dist/plain/calculate/addBusinessDays.d.ts +26 -9
  276. package/dist/plain/calculate/addBusinessDays.js +29 -21
  277. package/dist/plain/calculate/addDate.d.ts +9 -8
  278. package/dist/plain/calculate/addDate.js +35 -22
  279. package/dist/plain/calculate/addDateTime.js +24 -10
  280. package/dist/plain/calculate/addTime.d.ts +5 -8
  281. package/dist/plain/calculate/addTime.js +23 -16
  282. package/dist/plain/calculate/clampDate.js +3 -3
  283. package/dist/plain/calculate/closestDateTo.d.ts +11 -7
  284. package/dist/plain/calculate/closestDateTo.js +36 -24
  285. package/dist/plain/calculate/cycleDate.d.ts +1 -1
  286. package/dist/plain/calculate/cycleDate.js +10 -3
  287. package/dist/plain/calculate/cycleDateTime.d.ts +1 -1
  288. package/dist/plain/calculate/cycleDateTime.js +10 -3
  289. package/dist/plain/calculate/cycleTime.d.ts +6 -8
  290. package/dist/plain/calculate/cycleTime.js +15 -9
  291. package/dist/plain/calculate/diffDate.d.ts +31 -14
  292. package/dist/plain/calculate/diffDate.js +73 -38
  293. package/dist/plain/calculate/diffDateAsDuration.d.ts +13 -8
  294. package/dist/plain/calculate/diffDateAsDuration.js +22 -9
  295. package/dist/plain/calculate/diffDateTime.d.ts +17 -5
  296. package/dist/plain/calculate/diffDateTime.js +67 -28
  297. package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +2 -2
  298. package/dist/plain/calculate/diffDateTimeAsDuration.js +10 -3
  299. package/dist/plain/calculate/diffTime.d.ts +18 -5
  300. package/dist/plain/calculate/diffTime.js +68 -27
  301. package/dist/plain/calculate/endOfDate.d.ts +10 -2
  302. package/dist/plain/calculate/endOfDate.js +52 -27
  303. package/dist/plain/calculate/endOfDateTime.d.ts +17 -2
  304. package/dist/plain/calculate/endOfDateTime.js +126 -103
  305. package/dist/plain/calculate/endOfTime.d.ts +16 -2
  306. package/dist/plain/calculate/endOfTime.js +77 -59
  307. package/dist/plain/calculate/getLargestDateDurationUnit.d.ts +13 -5
  308. package/dist/plain/calculate/getLargestDateDurationUnit.js +26 -10
  309. package/dist/plain/calculate/getLargestDateTimeDurationUnit.d.ts +13 -6
  310. package/dist/plain/calculate/getLargestDateTimeDurationUnit.js +37 -22
  311. package/dist/plain/calculate/getLargestTimeDurationUnit.d.ts +13 -6
  312. package/dist/plain/calculate/getLargestTimeDurationUnit.js +33 -18
  313. package/dist/plain/calculate/getLocaleDayOfWeek.d.ts +8 -4
  314. package/dist/plain/calculate/getLocaleDayOfWeek.js +8 -3
  315. package/dist/plain/calculate/getLocaleEndOfWeek.d.ts +8 -4
  316. package/dist/plain/calculate/getLocaleEndOfWeek.js +8 -3
  317. package/dist/plain/calculate/getLocaleStartOfWeek.d.ts +8 -4
  318. package/dist/plain/calculate/getLocaleStartOfWeek.js +8 -3
  319. package/dist/plain/calculate/getLocaleWeekYear.d.ts +29 -19
  320. package/dist/plain/calculate/getLocaleWeekYear.js +48 -28
  321. package/dist/plain/calculate/getWeekNumber.d.ts +21 -2
  322. package/dist/plain/calculate/getWeekNumber.js +33 -12
  323. package/dist/plain/calculate/getWeekOfMonth.d.ts +4 -2
  324. package/dist/plain/calculate/getWeekOfMonth.js +8 -3
  325. package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +25 -14
  326. package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +45 -25
  327. package/dist/plain/calculate/getWeeksInMonth.d.ts +4 -2
  328. package/dist/plain/calculate/getWeeksInMonth.js +8 -3
  329. package/dist/plain/calculate/getWeeksInYear.d.ts +5 -4
  330. package/dist/plain/calculate/getWeeksInYear.js +9 -14
  331. package/dist/plain/calculate/maxDate.js +19 -12
  332. package/dist/plain/calculate/maxDateTime.js +19 -12
  333. package/dist/plain/calculate/maxTime.js +19 -12
  334. package/dist/plain/calculate/minDate.js +19 -12
  335. package/dist/plain/calculate/minDateTime.js +19 -12
  336. package/dist/plain/calculate/minTime.js +19 -12
  337. package/dist/plain/calculate/nextWeekday.js +5 -0
  338. package/dist/plain/calculate/previousWeekday.js +5 -0
  339. package/dist/plain/calculate/roundDate.d.ts +23 -5
  340. package/dist/plain/calculate/roundDate.js +88 -46
  341. package/dist/plain/calculate/roundDateTime.d.ts +27 -3
  342. package/dist/plain/calculate/roundDateTime.js +128 -69
  343. package/dist/plain/calculate/roundTime.d.ts +8 -1
  344. package/dist/plain/calculate/roundTime.js +32 -17
  345. package/dist/plain/calculate/setDate.js +4 -0
  346. package/dist/plain/calculate/setDateTime.js +4 -0
  347. package/dist/plain/calculate/setTime.d.ts +1 -1
  348. package/dist/plain/calculate/setTime.js +5 -1
  349. package/dist/plain/calculate/sortDateTimes.js +17 -10
  350. package/dist/plain/calculate/sortDates.js +17 -10
  351. package/dist/plain/calculate/sortTimes.js +17 -10
  352. package/dist/plain/calculate/startOfDate.d.ts +7 -2
  353. package/dist/plain/calculate/startOfDate.js +52 -27
  354. package/dist/plain/calculate/startOfDateTime.d.ts +5 -2
  355. package/dist/plain/calculate/startOfDateTime.js +81 -62
  356. package/dist/plain/calculate/startOfQuarterForDateTime.d.ts +2 -0
  357. package/dist/plain/calculate/startOfQuarterForDateTime.js +12 -1
  358. package/dist/plain/calculate/startOfTime.d.ts +15 -2
  359. package/dist/plain/calculate/startOfTime.js +33 -37
  360. package/dist/plain/calculate/subtractBusinessDays.d.ts +25 -10
  361. package/dist/plain/calculate/subtractBusinessDays.js +28 -22
  362. package/dist/plain/calculate/subtractDate.d.ts +8 -7
  363. package/dist/plain/calculate/subtractDate.js +35 -21
  364. package/dist/plain/calculate/subtractDateTime.js +24 -10
  365. package/dist/plain/calculate/subtractTime.d.ts +5 -8
  366. package/dist/plain/calculate/subtractTime.js +23 -16
  367. package/dist/plain/chop/index.d.ts +0 -1
  368. package/dist/plain/chop/index.js +0 -1
  369. package/dist/plain/compare/areDateTimesEqualBy.d.ts +10 -5
  370. package/dist/plain/compare/areDateTimesEqualBy.js +35 -10
  371. package/dist/plain/compare/areDatesEqualBy.d.ts +10 -3
  372. package/dist/plain/compare/areDatesEqualBy.js +41 -14
  373. package/dist/plain/compare/isBetweenDate.js +32 -16
  374. package/dist/plain/compare/isBetweenDateTime.js +34 -18
  375. package/dist/plain/compare/isBetweenTime.js +32 -16
  376. package/dist/plain/compare/isBusinessDay.d.ts +25 -11
  377. package/dist/plain/compare/isBusinessDay.js +36 -15
  378. package/dist/plain/compare/isThisUnit.d.ts +13 -4
  379. package/dist/plain/compare/isThisUnit.js +33 -13
  380. package/dist/plain/compare/isWeekend.d.ts +8 -4
  381. package/dist/plain/compare/isWeekend.js +7 -3
  382. package/dist/plain/convert/convertDateToCalendar.d.ts +34 -33
  383. package/dist/plain/convert/convertDateToCalendar.js +41 -40
  384. package/dist/plain/format/formatCalendar.d.ts +12 -6
  385. package/dist/plain/format/formatCalendar.js +47 -25
  386. package/dist/plain/format/formatDate.d.ts +21 -4
  387. package/dist/plain/format/formatDate.js +37 -5
  388. package/dist/plain/format/formatDateRange.d.ts +17 -4
  389. package/dist/plain/format/formatDateRange.js +29 -5
  390. package/dist/plain/format/formatDateTime.d.ts +22 -4
  391. package/dist/plain/format/formatDateTime.js +31 -5
  392. package/dist/plain/format/formatDateTimeRange.d.ts +20 -4
  393. package/dist/plain/format/formatDateTimeRange.js +29 -5
  394. package/dist/plain/format/formatDateTimeToParts.d.ts +32 -6
  395. package/dist/plain/format/formatDateTimeToParts.js +40 -14
  396. package/dist/plain/format/formatDateToParts.d.ts +24 -3
  397. package/dist/plain/format/formatDateToParts.js +36 -11
  398. package/dist/plain/format/formatRelativeDate.d.ts +7 -3
  399. package/dist/plain/format/formatRelativeDate.js +39 -24
  400. package/dist/plain/format/formatRelativeDateTime.d.ts +15 -6
  401. package/dist/plain/format/formatRelativeDateTime.js +35 -33
  402. package/dist/plain/format/formatRelativeTime.d.ts +8 -4
  403. package/dist/plain/format/formatRelativeTime.js +36 -21
  404. package/dist/plain/format/formatSql.d.ts +15 -10
  405. package/dist/plain/format/formatSql.js +20 -11
  406. package/dist/plain/format/formatTime.d.ts +18 -4
  407. package/dist/plain/format/formatTime.js +32 -5
  408. package/dist/plain/get/getNowUnit.d.ts +3 -0
  409. package/dist/plain/get/getNowUnit.js +14 -29
  410. package/dist/plain/index.js +1 -1
  411. package/dist/plain/interval/intervalAbutsDate.d.ts +12 -7
  412. package/dist/plain/interval/intervalAbutsDate.js +15 -19
  413. package/dist/plain/interval/intervalAbutsDateTime.d.ts +9 -7
  414. package/dist/plain/interval/intervalAbutsDateTime.js +17 -23
  415. package/dist/plain/interval/intervalAbutsTime.d.ts +11 -5
  416. package/dist/plain/interval/intervalAbutsTime.js +19 -21
  417. package/dist/plain/interval/intervalContainsDate.d.ts +17 -10
  418. package/dist/plain/interval/intervalContainsDate.js +20 -15
  419. package/dist/plain/interval/intervalContainsDateTime.d.ts +16 -11
  420. package/dist/plain/interval/intervalContainsDateTime.js +24 -20
  421. package/dist/plain/interval/intervalContainsTime.d.ts +20 -10
  422. package/dist/plain/interval/intervalContainsTime.js +28 -19
  423. package/dist/plain/interval/intervalCountDate.d.ts +13 -8
  424. package/dist/plain/interval/intervalCountDate.js +46 -14
  425. package/dist/plain/interval/intervalCountDateTime.d.ts +6 -4
  426. package/dist/plain/interval/intervalCountDateTime.js +63 -18
  427. package/dist/plain/interval/intervalCountTime.d.ts +3 -4
  428. package/dist/plain/interval/intervalCountTime.js +9 -9
  429. package/dist/plain/interval/intervalDifferenceDate.d.ts +13 -6
  430. package/dist/plain/interval/intervalDifferenceDate.js +19 -32
  431. package/dist/plain/interval/intervalDifferenceDateTime.d.ts +10 -4
  432. package/dist/plain/interval/intervalDifferenceDateTime.js +21 -27
  433. package/dist/plain/interval/intervalDifferenceTime.d.ts +11 -4
  434. package/dist/plain/interval/intervalDifferenceTime.js +22 -27
  435. package/dist/plain/interval/intervalDivideEquallyDate.d.ts +16 -4
  436. package/dist/plain/interval/intervalDivideEquallyDate.js +57 -33
  437. package/dist/plain/interval/intervalDivideEquallyDateTime.d.ts +16 -4
  438. package/dist/plain/interval/intervalDivideEquallyDateTime.js +67 -31
  439. package/dist/plain/interval/intervalDivideEquallyTime.d.ts +16 -4
  440. package/dist/plain/interval/intervalDivideEquallyTime.js +58 -31
  441. package/dist/plain/interval/intervalEngulfsDate.d.ts +16 -9
  442. package/dist/plain/interval/intervalEngulfsDate.js +19 -12
  443. package/dist/plain/interval/intervalEngulfsDateTime.d.ts +16 -11
  444. package/dist/plain/interval/intervalEngulfsDateTime.js +24 -18
  445. package/dist/plain/interval/intervalEngulfsTime.d.ts +18 -8
  446. package/dist/plain/interval/intervalEngulfsTime.js +26 -15
  447. package/dist/plain/interval/intervalFromDurationDate.d.ts +5 -4
  448. package/dist/plain/interval/intervalFromDurationDate.js +11 -8
  449. package/dist/plain/interval/intervalFromDurationDateTime.js +4 -0
  450. package/dist/plain/interval/intervalFromDurationTime.d.ts +10 -12
  451. package/dist/plain/interval/intervalFromDurationTime.js +28 -17
  452. package/dist/plain/interval/intervalIntersectionDate.d.ts +9 -4
  453. package/dist/plain/interval/intervalIntersectionDate.js +14 -9
  454. package/dist/plain/interval/intervalIntersectionDateTime.d.ts +9 -4
  455. package/dist/plain/interval/intervalIntersectionDateTime.js +19 -13
  456. package/dist/plain/interval/intervalIntersectionTime.d.ts +7 -3
  457. package/dist/plain/interval/intervalIntersectionTime.js +17 -12
  458. package/dist/plain/interval/intervalLengthDate.d.ts +9 -6
  459. package/dist/plain/interval/intervalLengthDate.js +40 -8
  460. package/dist/plain/interval/intervalLengthDateTime.js +2 -2
  461. package/dist/plain/interval/intervalOverlappingDaysDate.d.ts +16 -17
  462. package/dist/plain/interval/intervalOverlappingDaysDate.js +30 -30
  463. package/dist/plain/interval/intervalOverlappingDaysDateTime.d.ts +7 -12
  464. package/dist/plain/interval/intervalOverlappingDaysDateTime.js +24 -24
  465. package/dist/plain/interval/intervalSplitAtDate.d.ts +10 -5
  466. package/dist/plain/interval/intervalSplitAtDate.js +48 -36
  467. package/dist/plain/interval/intervalSplitAtDateTime.d.ts +9 -4
  468. package/dist/plain/interval/intervalSplitAtDateTime.js +44 -32
  469. package/dist/plain/interval/intervalSplitAtTime.d.ts +9 -4
  470. package/dist/plain/interval/intervalSplitAtTime.js +44 -32
  471. package/dist/plain/interval/intervalUnionDate.d.ts +14 -6
  472. package/dist/plain/interval/intervalUnionDate.js +19 -11
  473. package/dist/plain/interval/intervalUnionDateTime.d.ts +12 -5
  474. package/dist/plain/interval/intervalUnionDateTime.js +22 -14
  475. package/dist/plain/interval/intervalUnionTime.d.ts +10 -3
  476. package/dist/plain/interval/intervalUnionTime.js +20 -12
  477. package/dist/plain/interval/intervalXorAllDate.d.ts +11 -10
  478. package/dist/plain/interval/intervalXorAllDate.js +37 -59
  479. package/dist/plain/interval/intervalXorAllDateTime.d.ts +7 -5
  480. package/dist/plain/interval/intervalXorAllDateTime.js +28 -48
  481. package/dist/plain/interval/intervalXorAllTime.d.ts +8 -4
  482. package/dist/plain/interval/intervalXorAllTime.js +29 -47
  483. package/dist/plain/interval/intervalXorDate.d.ts +10 -9
  484. package/dist/plain/interval/intervalXorDate.js +19 -54
  485. package/dist/plain/interval/intervalXorDateTime.d.ts +9 -7
  486. package/dist/plain/interval/intervalXorDateTime.js +23 -50
  487. package/dist/plain/interval/intervalXorTime.d.ts +8 -7
  488. package/dist/plain/interval/intervalXorTime.js +22 -50
  489. package/dist/plain/interval/intervalsOverlapDate.d.ts +14 -7
  490. package/dist/plain/interval/intervalsOverlapDate.js +17 -10
  491. package/dist/plain/interval/intervalsOverlapDateTime.d.ts +12 -7
  492. package/dist/plain/interval/intervalsOverlapDateTime.js +20 -14
  493. package/dist/plain/interval/intervalsOverlapTime.d.ts +10 -5
  494. package/dist/plain/interval/intervalsOverlapTime.js +18 -12
  495. package/dist/plain/interval/mergeIntervalsDate.d.ts +9 -5
  496. package/dist/plain/interval/mergeIntervalsDate.js +37 -38
  497. package/dist/plain/interval/mergeIntervalsDateTime.d.ts +7 -3
  498. package/dist/plain/interval/mergeIntervalsDateTime.js +31 -32
  499. package/dist/plain/interval/mergeIntervalsTime.d.ts +7 -3
  500. package/dist/plain/interval/mergeIntervalsTime.js +31 -31
  501. package/dist/plain/interval/splitIntervalByUnitDate.d.ts +26 -6
  502. package/dist/plain/interval/splitIntervalByUnitDate.js +76 -43
  503. package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +22 -2
  504. package/dist/plain/interval/splitIntervalByUnitDateTime.js +65 -39
  505. package/dist/plain/interval/splitIntervalByUnitTime.d.ts +18 -2
  506. package/dist/plain/interval/splitIntervalByUnitTime.js +76 -39
  507. package/dist/plain/interval/validate/isValidDateInterval.d.ts +4 -2
  508. package/dist/plain/interval/validate/isValidDateInterval.js +4 -2
  509. package/dist/plain/interval/validate/isValidDateTimeInterval.d.ts +5 -0
  510. package/dist/plain/interval/validate/isValidDateTimeInterval.js +7 -2
  511. package/dist/plain/interval/validate/isValidTimeInterval.d.ts +5 -0
  512. package/dist/plain/interval/validate/isValidTimeInterval.js +8 -18
  513. package/dist/plain/locale/getLocaleEraNames.d.ts +14 -4
  514. package/dist/plain/locale/getLocaleEraNames.js +56 -41
  515. package/dist/plain/locale/getLocaleMeridiems.d.ts +7 -4
  516. package/dist/plain/locale/getLocaleMeridiems.js +28 -22
  517. package/dist/plain/locale/getLocaleMonthNames.d.ts +14 -4
  518. package/dist/plain/locale/getLocaleMonthNames.js +34 -19
  519. package/dist/plain/locale/getLocaleWeekdayNames.d.ts +14 -7
  520. package/dist/plain/locale/getLocaleWeekdayNames.js +40 -22
  521. package/dist/plain/map/mapDatesInRange.d.ts +18 -1
  522. package/dist/plain/map/mapDatesInRange.js +53 -17
  523. package/dist/plain/parse/parseDateTimeWithPattern.d.ts +3 -2
  524. package/dist/plain/parse/parseDateTimeWithPattern.js +30 -24
  525. package/dist/plain/parse/parseDateWithPattern.d.ts +3 -2
  526. package/dist/plain/parse/parseDateWithPattern.js +22 -16
  527. package/dist/plain/parse/parseMicrosecondFromDateTime.d.ts +2 -1
  528. package/dist/plain/parse/parseMicrosecondFromDateTime.js +2 -1
  529. package/dist/plain/parse/parseMicrosecondFromTime.d.ts +2 -1
  530. package/dist/plain/parse/parseMicrosecondFromTime.js +2 -1
  531. package/dist/plain/parse/parseNanosecondFromDateTime.d.ts +2 -1
  532. package/dist/plain/parse/parseNanosecondFromDateTime.js +2 -1
  533. package/dist/plain/parse/parseNanosecondFromTime.d.ts +2 -1
  534. package/dist/plain/parse/parseNanosecondFromTime.js +2 -1
  535. package/dist/plain/parse/parseSql.d.ts +15 -12
  536. package/dist/plain/parse/parseSql.js +16 -13
  537. package/dist/plain/parse/parseTimeWithPattern.d.ts +3 -2
  538. package/dist/plain/parse/parseTimeWithPattern.js +27 -21
  539. package/dist/plain/parse/parseUnitFromDate.d.ts +9 -2
  540. package/dist/plain/parse/parseUnitFromDate.js +39 -19
  541. package/dist/plain/parse/parseUnitFromDateTime.d.ts +11 -3
  542. package/dist/plain/parse/parseUnitFromDateTime.js +54 -28
  543. package/dist/plain/parse/parseUnitFromTime.d.ts +9 -3
  544. package/dist/plain/parse/parseUnitFromTime.js +13 -3
  545. package/dist/plain/parse/parseWeekFromDate.d.ts +5 -0
  546. package/dist/plain/parse/parseWeekFromDate.js +24 -5
  547. package/dist/plain/parse/parseWeekFromDateTime.d.ts +5 -0
  548. package/dist/plain/parse/parseWeekFromDateTime.js +26 -5
  549. package/dist/plain/validate/isLeapSecond.d.ts +27 -9
  550. package/dist/plain/validate/isLeapSecond.js +30 -9
  551. package/dist/plain/validate/isLeapYear.d.ts +7 -1
  552. package/dist/plain/validate/isLeapYear.js +10 -1
  553. package/dist/plain/validate/isValidCalendarDate.d.ts +37 -6
  554. package/dist/plain/validate/isValidCalendarDate.js +37 -6
  555. package/dist/plain/validate/isValidDate.d.ts +9 -1
  556. package/dist/plain/validate/isValidDate.js +14 -5
  557. package/dist/plain/validate/isValidDateRange.d.ts +11 -4
  558. package/dist/plain/validate/isValidDateRange.js +32 -22
  559. package/dist/plain/validate/isValidDateTime.d.ts +7 -1
  560. package/dist/plain/validate/isValidDateTime.js +12 -5
  561. package/dist/plain/validate/isValidDateTimeRange.d.ts +3 -2
  562. package/dist/plain/validate/isValidDateTimeRange.js +30 -15
  563. package/dist/plain/validate/isValidIsoDateLike.d.ts +6 -1
  564. package/dist/plain/validate/isValidIsoDateLike.js +13 -8
  565. package/dist/plain/validate/isValidTime.d.ts +6 -1
  566. package/dist/plain/validate/isValidTime.js +10 -3
  567. package/dist/plain/validate/isValidTimeRange.d.ts +4 -2
  568. package/dist/plain/validate/isValidTimeRange.js +31 -27
  569. package/dist/precision/calculate/index.d.ts +1 -0
  570. package/dist/precision/calculate/index.js +1 -0
  571. package/dist/precision/calculate/truncateNanoseconds.d.ts +37 -0
  572. package/dist/precision/calculate/truncateNanoseconds.js +41 -0
  573. package/dist/precision/convert/fromDotNetTicks.d.ts +30 -0
  574. package/dist/precision/convert/fromDotNetTicks.js +39 -0
  575. package/dist/precision/convert/fromExcelSerial.d.ts +38 -0
  576. package/dist/precision/convert/fromExcelSerial.js +81 -0
  577. package/dist/precision/convert/fromFileTime.d.ts +30 -0
  578. package/dist/precision/convert/fromFileTime.js +39 -0
  579. package/dist/precision/convert/fromNanoseconds.d.ts +29 -0
  580. package/dist/precision/convert/fromNanoseconds.js +50 -0
  581. package/dist/precision/convert/fromNtpTimestamp.d.ts +43 -0
  582. package/dist/precision/convert/fromNtpTimestamp.js +57 -0
  583. package/dist/precision/convert/fromPgMicroseconds.d.ts +26 -0
  584. package/dist/precision/convert/fromPgMicroseconds.js +33 -0
  585. package/dist/precision/convert/index.d.ts +12 -0
  586. package/dist/precision/convert/index.js +12 -0
  587. package/dist/precision/convert/toDotNetTicks.d.ts +29 -0
  588. package/dist/precision/convert/toDotNetTicks.js +40 -0
  589. package/dist/precision/convert/toExcelSerial.d.ts +56 -0
  590. package/dist/precision/convert/toExcelSerial.js +85 -0
  591. package/dist/precision/convert/toFileTime.d.ts +31 -0
  592. package/dist/precision/convert/toFileTime.js +43 -0
  593. package/dist/precision/convert/toNanoseconds.d.ts +37 -0
  594. package/dist/precision/convert/toNanoseconds.js +40 -0
  595. package/dist/precision/convert/toNtpTimestamp.d.ts +30 -0
  596. package/dist/precision/convert/toNtpTimestamp.js +38 -0
  597. package/dist/precision/convert/toPgMicroseconds.d.ts +29 -0
  598. package/dist/precision/convert/toPgMicroseconds.js +42 -0
  599. package/dist/precision/format/formatNanoseconds.d.ts +26 -0
  600. package/dist/precision/format/formatNanoseconds.js +32 -0
  601. package/dist/precision/format/index.d.ts +1 -0
  602. package/dist/precision/format/index.js +1 -0
  603. package/dist/precision/index.d.ts +6 -0
  604. package/dist/precision/index.js +7 -0
  605. package/dist/precision/parse/index.d.ts +1 -0
  606. package/dist/precision/parse/index.js +1 -0
  607. package/dist/precision/parse/parseNanoseconds.d.ts +27 -0
  608. package/dist/precision/parse/parseNanoseconds.js +32 -0
  609. package/dist/precision/validate/index.d.ts +3 -0
  610. package/dist/precision/validate/index.js +3 -0
  611. package/dist/precision/validate/isValidInstant.d.ts +37 -0
  612. package/dist/precision/validate/isValidInstant.js +40 -0
  613. package/dist/precision/validate/isValidNanoPattern.d.ts +27 -0
  614. package/dist/precision/validate/isValidNanoPattern.js +40 -0
  615. package/dist/precision/validate/isValidNanoseconds.d.ts +25 -0
  616. package/dist/precision/validate/isValidNanoseconds.js +28 -0
  617. package/dist/regex/calendar-date.d.ts +25 -14
  618. package/dist/regex/calendar-date.js +26 -15
  619. package/dist/regex/calendar-zoned-date-time.d.ts +22 -38
  620. package/dist/regex/calendar-zoned-date-time.js +23 -39
  621. package/dist/regex/date-time.d.ts +14 -4
  622. package/dist/regex/date-time.js +15 -5
  623. package/dist/regex/date.d.ts +45 -3
  624. package/dist/regex/date.js +47 -5
  625. package/dist/regex/http-date.d.ts +10 -6
  626. package/dist/regex/http-date.js +10 -6
  627. package/dist/regex/index.d.ts +3 -0
  628. package/dist/regex/index.js +4 -0
  629. package/dist/regex/leap-second.d.ts +41 -8
  630. package/dist/regex/leap-second.js +42 -9
  631. package/dist/regex/nanoseconds.d.ts +20 -0
  632. package/dist/regex/nanoseconds.js +20 -0
  633. package/dist/regex/rfc-2822.d.ts +15 -7
  634. package/dist/regex/rfc-2822.js +15 -7
  635. package/dist/regex/rfc-3339.d.ts +8 -1
  636. package/dist/regex/rfc-3339.js +9 -2
  637. package/dist/regex/sql-date-time.d.ts +27 -8
  638. package/dist/regex/sql-date-time.js +28 -9
  639. package/dist/regex/time-zone-like.d.ts +24 -15
  640. package/dist/regex/time-zone-like.js +25 -16
  641. package/dist/regex/time.d.ts +20 -6
  642. package/dist/regex/time.js +20 -6
  643. package/dist/regex/unix.d.ts +13 -5
  644. package/dist/regex/unix.js +13 -5
  645. package/dist/regex/utc-date-time.d.ts +19 -9
  646. package/dist/regex/utc-date-time.js +20 -10
  647. package/dist/regex/utc-offset.d.ts +24 -0
  648. package/dist/regex/utc-offset.js +24 -0
  649. package/dist/span/calculate/index.d.ts +3 -0
  650. package/dist/span/calculate/index.js +3 -0
  651. package/dist/span/calculate/spanMs.d.ts +52 -0
  652. package/dist/span/calculate/spanMs.js +80 -0
  653. package/dist/span/calculate/spanNs.d.ts +43 -0
  654. package/dist/span/calculate/spanNs.js +51 -0
  655. package/dist/span/calculate/spanWallClock.d.ts +60 -0
  656. package/dist/span/calculate/spanWallClock.js +80 -0
  657. package/dist/span/index.d.ts +3 -0
  658. package/dist/span/index.js +4 -0
  659. package/dist/span/validate/index.d.ts +1 -0
  660. package/dist/span/validate/index.js +1 -0
  661. package/dist/span/validate/isValidSpan.d.ts +37 -0
  662. package/dist/span/validate/isValidSpan.js +41 -0
  663. package/dist/types/business-calendar.d.ts +27 -0
  664. package/dist/types/business-calendar.js +0 -0
  665. package/dist/types/calendar-system.d.ts +9 -1
  666. package/dist/types/fiscal-calendar.d.ts +22 -0
  667. package/dist/types/fiscal-calendar.js +0 -0
  668. package/dist/types/index.d.ts +6 -0
  669. package/dist/types/index.js +5 -0
  670. package/dist/types/interval.d.ts +18 -0
  671. package/dist/types/interval.js +0 -0
  672. package/dist/types/now-unit.d.ts +1 -1
  673. package/dist/types/roll-convention.d.ts +32 -0
  674. package/dist/types/roll-convention.js +0 -0
  675. package/dist/types/utc-now-unit.d.ts +1 -1
  676. package/dist/types/zone-bucket-unit.d.ts +11 -0
  677. package/dist/types/zone-bucket-unit.js +0 -0
  678. package/dist/unix/calculate/addUnix.d.ts +10 -4
  679. package/dist/unix/calculate/addUnix.js +39 -26
  680. package/dist/unix/calculate/diffUnix.d.ts +38 -11
  681. package/dist/unix/calculate/diffUnix.js +84 -40
  682. package/dist/unix/calculate/diffUnixAsDuration.d.ts +17 -7
  683. package/dist/unix/calculate/diffUnixAsDuration.js +42 -23
  684. package/dist/unix/calculate/endOfQuarterForUnix.d.ts +15 -11
  685. package/dist/unix/calculate/endOfQuarterForUnix.js +20 -39
  686. package/dist/unix/calculate/endOfUnix.d.ts +23 -18
  687. package/dist/unix/calculate/endOfUnix.js +37 -15
  688. package/dist/unix/calculate/isBetweenUnix.d.ts +12 -6
  689. package/dist/unix/calculate/isBetweenUnix.js +34 -23
  690. package/dist/unix/calculate/maxUnix.d.ts +6 -3
  691. package/dist/unix/calculate/maxUnix.js +17 -8
  692. package/dist/unix/calculate/minUnix.d.ts +6 -3
  693. package/dist/unix/calculate/minUnix.js +17 -8
  694. package/dist/unix/calculate/roundUnix.d.ts +24 -10
  695. package/dist/unix/calculate/roundUnix.js +67 -42
  696. package/dist/unix/calculate/setUnix.d.ts +14 -5
  697. package/dist/unix/calculate/setUnix.js +48 -29
  698. package/dist/unix/calculate/sortUnix.d.ts +6 -3
  699. package/dist/unix/calculate/sortUnix.js +19 -11
  700. package/dist/unix/calculate/startOfQuarterForUnix.d.ts +17 -12
  701. package/dist/unix/calculate/startOfQuarterForUnix.js +22 -30
  702. package/dist/unix/calculate/startOfUnix.d.ts +23 -18
  703. package/dist/unix/calculate/startOfUnix.js +37 -15
  704. package/dist/unix/calculate/subtractUnix.d.ts +10 -4
  705. package/dist/unix/calculate/subtractUnix.js +39 -26
  706. package/dist/unix/compare/areUnixEqual.d.ts +9 -5
  707. package/dist/unix/compare/areUnixEqual.js +17 -13
  708. package/dist/unix/compare/areUnixEqualBy.d.ts +14 -7
  709. package/dist/unix/compare/areUnixEqualBy.js +14 -7
  710. package/dist/unix/compare/isAfterUnix.d.ts +8 -4
  711. package/dist/unix/compare/isAfterUnix.js +16 -12
  712. package/dist/unix/compare/isBeforeUnix.d.ts +7 -4
  713. package/dist/unix/compare/isBeforeUnix.js +15 -12
  714. package/dist/unix/convert/convertUnixToPlainDate.d.ts +17 -9
  715. package/dist/unix/convert/convertUnixToPlainDate.js +34 -21
  716. package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +15 -9
  717. package/dist/unix/convert/convertUnixToPlainDateTime.js +32 -21
  718. package/dist/unix/convert/convertUnixToPlainTime.d.ts +15 -9
  719. package/dist/unix/convert/convertUnixToPlainTime.js +32 -21
  720. package/dist/unix/convert/convertUnixToUtc.d.ts +15 -7
  721. package/dist/unix/convert/convertUnixToUtc.js +20 -15
  722. package/dist/unix/convert/convertUnixToZoned.d.ts +17 -10
  723. package/dist/unix/convert/convertUnixToZoned.js +31 -20
  724. package/dist/unix/format/formatCalendarUnix.d.ts +22 -19
  725. package/dist/unix/format/formatCalendarUnix.js +35 -81
  726. package/dist/unix/format/formatRelativeUnix.d.ts +25 -8
  727. package/dist/unix/format/formatRelativeUnix.js +46 -93
  728. package/dist/unix/format/formatUnix.d.ts +26 -4
  729. package/dist/unix/format/formatUnix.js +48 -34
  730. package/dist/unix/get/getUnixNow.d.ts +13 -7
  731. package/dist/unix/get/getUnixNow.js +27 -17
  732. package/dist/unix/get/getUnixNowUnit.d.ts +5 -2
  733. package/dist/unix/get/getUnixNowUnit.js +9 -35
  734. package/dist/unix/index.d.ts +1 -0
  735. package/dist/unix/index.js +2 -0
  736. package/dist/unix/interval/intervalAbutsUnix.d.ts +17 -12
  737. package/dist/unix/interval/intervalAbutsUnix.js +23 -41
  738. package/dist/unix/interval/intervalContainsUnix.d.ts +17 -7
  739. package/dist/unix/interval/intervalContainsUnix.js +25 -37
  740. package/dist/unix/interval/intervalCountUnix.d.ts +30 -13
  741. package/dist/unix/interval/intervalCountUnix.js +49 -23
  742. package/dist/unix/interval/intervalDifferenceUnix.d.ts +19 -10
  743. package/dist/unix/interval/intervalDifferenceUnix.js +25 -43
  744. package/dist/unix/interval/intervalDivideEquallyUnix.d.ts +24 -10
  745. package/dist/unix/interval/intervalDivideEquallyUnix.js +57 -36
  746. package/dist/unix/interval/intervalEngulfsUnix.d.ts +13 -7
  747. package/dist/unix/interval/intervalEngulfsUnix.js +18 -30
  748. package/dist/unix/interval/intervalFromDurationUnix.d.ts +10 -6
  749. package/dist/unix/interval/intervalFromDurationUnix.js +51 -39
  750. package/dist/unix/interval/intervalIntersectionUnix.d.ts +18 -11
  751. package/dist/unix/interval/intervalIntersectionUnix.js +25 -46
  752. package/dist/unix/interval/intervalLengthUnix.d.ts +21 -9
  753. package/dist/unix/interval/intervalLengthUnix.js +41 -18
  754. package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +26 -12
  755. package/dist/unix/interval/intervalOverlappingDaysUnix.js +67 -63
  756. package/dist/unix/interval/intervalSplitAtUnix.d.ts +11 -6
  757. package/dist/unix/interval/intervalSplitAtUnix.js +41 -34
  758. package/dist/unix/interval/intervalUnionUnix.d.ts +15 -9
  759. package/dist/unix/interval/intervalUnionUnix.js +20 -42
  760. package/dist/unix/interval/intervalXorAllUnix.d.ts +8 -6
  761. package/dist/unix/interval/intervalXorAllUnix.js +21 -56
  762. package/dist/unix/interval/intervalXorUnix.d.ts +22 -11
  763. package/dist/unix/interval/intervalXorUnix.js +28 -56
  764. package/dist/unix/interval/intervalsOverlapUnix.d.ts +16 -10
  765. package/dist/unix/interval/intervalsOverlapUnix.js +21 -37
  766. package/dist/unix/interval/mergeIntervalsUnix.d.ts +10 -4
  767. package/dist/unix/interval/mergeIntervalsUnix.js +25 -36
  768. package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +38 -8
  769. package/dist/unix/interval/splitIntervalByUnitUnix.js +72 -56
  770. package/dist/unix/interval/validate/isValidUnixInterval.d.ts +12 -6
  771. package/dist/unix/interval/validate/isValidUnixInterval.js +17 -16
  772. package/dist/unix/parse/index.d.ts +2 -0
  773. package/dist/unix/parse/index.js +2 -0
  774. package/dist/unix/parse/parseDateFromUnix.d.ts +10 -8
  775. package/dist/unix/parse/parseDateFromUnix.js +17 -29
  776. package/dist/unix/parse/parseDayFromUnix.d.ts +6 -4
  777. package/dist/unix/parse/parseDayFromUnix.js +18 -5
  778. package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +8 -5
  779. package/dist/unix/parse/parseDayOfWeekFromUnix.js +15 -28
  780. package/dist/unix/parse/parseHourFromUnix.d.ts +6 -4
  781. package/dist/unix/parse/parseHourFromUnix.js +18 -5
  782. package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +4 -2
  783. package/dist/unix/parse/parseMicrosecondFromUnix.js +16 -3
  784. package/dist/unix/parse/parseMillisecondFromUnix.d.ts +4 -2
  785. package/dist/unix/parse/parseMillisecondFromUnix.js +16 -3
  786. package/dist/unix/parse/parseMinuteFromUnix.d.ts +6 -4
  787. package/dist/unix/parse/parseMinuteFromUnix.js +18 -5
  788. package/dist/unix/parse/parseMonthFromUnix.d.ts +6 -4
  789. package/dist/unix/parse/parseMonthFromUnix.js +18 -5
  790. package/dist/unix/parse/parseNanosecondFromUnix.d.ts +8 -5
  791. package/dist/unix/parse/parseNanosecondFromUnix.js +20 -6
  792. package/dist/unix/parse/parseSecondFromUnix.d.ts +5 -3
  793. package/dist/unix/parse/parseSecondFromUnix.js +17 -4
  794. package/dist/unix/parse/parseTimeFromUnix.d.ts +10 -8
  795. package/dist/unix/parse/parseTimeFromUnix.js +17 -29
  796. package/dist/unix/parse/parseUnitFromUnix.d.ts +18 -11
  797. package/dist/unix/parse/parseUnitFromUnix.js +57 -55
  798. package/dist/unix/parse/parseWeekFromUnix.d.ts +15 -7
  799. package/dist/unix/parse/parseWeekFromUnix.js +32 -30
  800. package/dist/unix/parse/parseYearFromUnix.d.ts +5 -3
  801. package/dist/unix/parse/parseYearFromUnix.js +17 -4
  802. package/dist/unix/validate/isValidUnixMilliseconds.d.ts +8 -5
  803. package/dist/unix/validate/isValidUnixMilliseconds.js +10 -9
  804. package/dist/unix/validate/isValidUnixRange.d.ts +13 -7
  805. package/dist/unix/validate/isValidUnixRange.js +29 -19
  806. package/dist/unix/validate/isValidUnixSeconds.d.ts +8 -5
  807. package/dist/unix/validate/isValidUnixSeconds.js +10 -9
  808. package/dist/unix/validate/isValidUnixUnit.d.ts +9 -7
  809. package/dist/unix/validate/isValidUnixUnit.js +6 -8
  810. package/dist/utc/calculate/addUtc.js +26 -12
  811. package/dist/utc/calculate/diffUtc.d.ts +22 -7
  812. package/dist/utc/calculate/diffUtc.js +75 -31
  813. package/dist/utc/calculate/diffUtcAsDuration.d.ts +2 -2
  814. package/dist/utc/calculate/diffUtcAsDuration.js +10 -3
  815. package/dist/utc/calculate/endOfQuarterForUtc.d.ts +1 -1
  816. package/dist/utc/calculate/endOfQuarterForUtc.js +1 -1
  817. package/dist/utc/calculate/endOfUtc.d.ts +11 -4
  818. package/dist/utc/calculate/endOfUtc.js +22 -5
  819. package/dist/utc/calculate/isBetweenUtc.js +40 -24
  820. package/dist/utc/calculate/maxUtc.js +19 -12
  821. package/dist/utc/calculate/minUtc.js +19 -12
  822. package/dist/utc/calculate/roundUtc.d.ts +16 -2
  823. package/dist/utc/calculate/roundUtc.js +42 -31
  824. package/dist/utc/calculate/setUtc.d.ts +4 -8
  825. package/dist/utc/calculate/setUtc.js +25 -18
  826. package/dist/utc/calculate/sortUtc.js +17 -10
  827. package/dist/utc/calculate/startOfQuarterForUtc.d.ts +2 -0
  828. package/dist/utc/calculate/startOfQuarterForUtc.js +12 -1
  829. package/dist/utc/calculate/startOfUtc.d.ts +6 -4
  830. package/dist/utc/calculate/startOfUtc.js +17 -5
  831. package/dist/utc/calculate/subtractUtc.js +26 -12
  832. package/dist/utc/chop/chopUtc.d.ts +5 -2
  833. package/dist/utc/chop/chopUtc.js +8 -4
  834. package/dist/utc/compare/areUtcEqualBy.d.ts +10 -5
  835. package/dist/utc/compare/areUtcEqualBy.js +34 -11
  836. package/dist/utc/convert/convertUtcToPlainDate.js +22 -10
  837. package/dist/utc/convert/convertUtcToPlainDateTime.js +28 -16
  838. package/dist/utc/convert/convertUtcToPlainTime.js +22 -10
  839. package/dist/utc/convert/convertUtcToUnix.d.ts +12 -5
  840. package/dist/utc/convert/convertUtcToUnix.js +22 -13
  841. package/dist/utc/format/formatCalendarUtc.d.ts +11 -6
  842. package/dist/utc/format/formatCalendarUtc.js +32 -41
  843. package/dist/utc/format/formatHttp.d.ts +9 -3
  844. package/dist/utc/format/formatHttp.js +14 -12
  845. package/dist/utc/format/formatRelativeUtc.d.ts +18 -6
  846. package/dist/utc/format/formatRelativeUtc.js +43 -51
  847. package/dist/utc/format/formatUtc.d.ts +20 -3
  848. package/dist/utc/format/formatUtc.js +41 -12
  849. package/dist/utc/get/getUtcNowUnit.d.ts +3 -0
  850. package/dist/utc/get/getUtcNowUnit.js +11 -33
  851. package/dist/utc/index.d.ts +1 -0
  852. package/dist/utc/index.js +2 -0
  853. package/dist/utc/interval/intervalAbutsUtc.d.ts +10 -7
  854. package/dist/utc/interval/intervalAbutsUtc.js +18 -30
  855. package/dist/utc/interval/intervalContainsUtc.d.ts +19 -11
  856. package/dist/utc/interval/intervalContainsUtc.js +33 -34
  857. package/dist/utc/interval/intervalCountUtc.d.ts +3 -4
  858. package/dist/utc/interval/intervalCountUtc.js +12 -18
  859. package/dist/utc/interval/intervalDifferenceUtc.d.ts +13 -5
  860. package/dist/utc/interval/intervalDifferenceUtc.js +25 -51
  861. package/dist/utc/interval/intervalDivideEquallyUtc.d.ts +16 -3
  862. package/dist/utc/interval/intervalDivideEquallyUtc.js +54 -34
  863. package/dist/utc/interval/intervalEngulfsUtc.d.ts +17 -12
  864. package/dist/utc/interval/intervalEngulfsUtc.js +25 -26
  865. package/dist/utc/interval/intervalFromDurationUtc.js +5 -0
  866. package/dist/utc/interval/intervalIntersectionUtc.d.ts +12 -6
  867. package/dist/utc/interval/intervalIntersectionUtc.js +24 -41
  868. package/dist/utc/interval/intervalLengthUtc.js +5 -7
  869. package/dist/utc/interval/intervalOverlappingDaysUtc.d.ts +7 -13
  870. package/dist/utc/interval/intervalOverlappingDaysUtc.js +25 -36
  871. package/dist/utc/interval/intervalSplitAtUtc.d.ts +7 -2
  872. package/dist/utc/interval/intervalSplitAtUtc.js +39 -33
  873. package/dist/utc/interval/intervalUnionUtc.d.ts +15 -7
  874. package/dist/utc/interval/intervalUnionUtc.js +31 -42
  875. package/dist/utc/interval/intervalXorAllUtc.d.ts +7 -4
  876. package/dist/utc/interval/intervalXorAllUtc.js +30 -52
  877. package/dist/utc/interval/intervalXorUtc.d.ts +8 -6
  878. package/dist/utc/interval/intervalXorUtc.js +22 -56
  879. package/dist/utc/interval/intervalsOverlapUtc.d.ts +15 -9
  880. package/dist/utc/interval/intervalsOverlapUtc.js +23 -39
  881. package/dist/utc/interval/mergeIntervalsUtc.d.ts +9 -2
  882. package/dist/utc/interval/mergeIntervalsUtc.js +23 -36
  883. package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +23 -2
  884. package/dist/utc/interval/splitIntervalByUnitUtc.js +65 -44
  885. package/dist/utc/interval/validate/isValidUtcInterval.d.ts +5 -0
  886. package/dist/utc/interval/validate/isValidUtcInterval.js +7 -6
  887. package/dist/utc/parse/parseDateFromUtc.d.ts +7 -1
  888. package/dist/utc/parse/parseDateFromUtc.js +14 -9
  889. package/dist/utc/parse/parseDayFromUtc.d.ts +7 -1
  890. package/dist/utc/parse/parseDayFromUtc.js +14 -8
  891. package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +7 -1
  892. package/dist/utc/parse/parseDayOfWeekFromUtc.js +24 -6
  893. package/dist/utc/parse/parseHourFromUtc.d.ts +7 -1
  894. package/dist/utc/parse/parseHourFromUtc.js +14 -8
  895. package/dist/utc/parse/parseHttp.d.ts +39 -14
  896. package/dist/utc/parse/parseHttp.js +69 -28
  897. package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +9 -2
  898. package/dist/utc/parse/parseMicrosecondFromUtc.js +18 -9
  899. package/dist/utc/parse/parseMillisecondFromUtc.d.ts +7 -1
  900. package/dist/utc/parse/parseMillisecondFromUtc.js +16 -8
  901. package/dist/utc/parse/parseMinuteFromUtc.d.ts +7 -1
  902. package/dist/utc/parse/parseMinuteFromUtc.js +14 -8
  903. package/dist/utc/parse/parseMonthFromUtc.d.ts +7 -1
  904. package/dist/utc/parse/parseMonthFromUtc.js +14 -8
  905. package/dist/utc/parse/parseNanosecondFromUtc.d.ts +9 -2
  906. package/dist/utc/parse/parseNanosecondFromUtc.js +18 -9
  907. package/dist/utc/parse/parseSecondFromUtc.d.ts +7 -1
  908. package/dist/utc/parse/parseSecondFromUtc.js +14 -8
  909. package/dist/utc/parse/parseTimeFromUtc.js +21 -10
  910. package/dist/utc/parse/parseUnitFromUtc.d.ts +18 -7
  911. package/dist/utc/parse/parseUnitFromUtc.js +58 -31
  912. package/dist/utc/parse/parseWeekFromUtc.d.ts +16 -3
  913. package/dist/utc/parse/parseWeekFromUtc.js +38 -10
  914. package/dist/utc/parse/parseYearFromUtc.d.ts +7 -1
  915. package/dist/utc/parse/parseYearFromUtc.js +14 -8
  916. package/dist/utc/validate/isValidUtc.d.ts +8 -1
  917. package/dist/utc/validate/isValidUtc.js +12 -3
  918. package/dist/utc/validate/isValidUtcRange.d.ts +3 -2
  919. package/dist/utc/validate/isValidUtcRange.js +30 -19
  920. package/dist/zoned/calculate/addZoned.d.ts +40 -27
  921. package/dist/zoned/calculate/addZoned.js +71 -56
  922. package/dist/zoned/calculate/addZonedBusinessDays.d.ts +2 -0
  923. package/dist/zoned/calculate/addZonedBusinessDays.js +5 -2
  924. package/dist/zoned/calculate/clampZoned.js +4 -3
  925. package/dist/zoned/calculate/closestZonedTo.d.ts +6 -6
  926. package/dist/zoned/calculate/closestZonedTo.js +35 -26
  927. package/dist/zoned/calculate/cycleZoned.d.ts +10 -7
  928. package/dist/zoned/calculate/cycleZoned.js +19 -11
  929. package/dist/zoned/calculate/diffZoned.d.ts +39 -17
  930. package/dist/zoned/calculate/diffZoned.js +90 -45
  931. package/dist/zoned/calculate/diffZonedAsDuration.d.ts +19 -9
  932. package/dist/zoned/calculate/diffZonedAsDuration.js +32 -15
  933. package/dist/zoned/calculate/endOfQuarterForZoned.d.ts +11 -11
  934. package/dist/zoned/calculate/endOfQuarterForZoned.js +32 -31
  935. package/dist/zoned/calculate/endOfZoned.d.ts +21 -14
  936. package/dist/zoned/calculate/endOfZoned.js +25 -111
  937. package/dist/zoned/calculate/getHoursInZonedDay.d.ts +8 -1
  938. package/dist/zoned/calculate/getHoursInZonedDay.js +10 -14
  939. package/dist/zoned/calculate/getLocaleZonedDayOfWeek.d.ts +8 -4
  940. package/dist/zoned/calculate/getLocaleZonedDayOfWeek.js +9 -6
  941. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +20 -26
  942. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +40 -44
  943. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +16 -24
  944. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +36 -42
  945. package/dist/zoned/calculate/getQuarterForZoned.js +2 -2
  946. package/dist/zoned/calculate/maxZoned.js +20 -12
  947. package/dist/zoned/calculate/minZoned.d.ts +1 -1
  948. package/dist/zoned/calculate/minZoned.js +21 -13
  949. package/dist/zoned/calculate/roundZoned.d.ts +18 -4
  950. package/dist/zoned/calculate/roundZoned.js +58 -33
  951. package/dist/zoned/calculate/setZoned.d.ts +9 -3
  952. package/dist/zoned/calculate/setZoned.js +39 -18
  953. package/dist/zoned/calculate/sortZoned.js +18 -10
  954. package/dist/zoned/calculate/startOfQuarterForZoned.d.ts +4 -7
  955. package/dist/zoned/calculate/startOfQuarterForZoned.js +23 -17
  956. package/dist/zoned/calculate/startOfZoned.d.ts +17 -13
  957. package/dist/zoned/calculate/startOfZoned.js +21 -103
  958. package/dist/zoned/calculate/subtractZoned.d.ts +36 -24
  959. package/dist/zoned/calculate/subtractZoned.js +66 -50
  960. package/dist/zoned/calculate/subtractZonedBusinessDays.d.ts +2 -0
  961. package/dist/zoned/calculate/subtractZonedBusinessDays.js +5 -2
  962. package/dist/zoned/chop/chopZonedDate.js +2 -2
  963. package/dist/zoned/chop/chopZonedDateTime.js +2 -2
  964. package/dist/zoned/chop/chopZonedMilliseconds.js +2 -2
  965. package/dist/zoned/chop/chopZonedSeconds.js +2 -2
  966. package/dist/zoned/chop/chopZonedTime.js +2 -2
  967. package/dist/zoned/chop/chopZonedTimezone.js +2 -2
  968. package/dist/zoned/compare/areZonedEqual.js +3 -2
  969. package/dist/zoned/compare/areZonedEqualBy.d.ts +15 -2
  970. package/dist/zoned/compare/areZonedEqualBy.js +45 -12
  971. package/dist/zoned/compare/isAfterZoned.js +3 -2
  972. package/dist/zoned/compare/isBeforeZoned.d.ts +1 -1
  973. package/dist/zoned/compare/isBeforeZoned.js +4 -3
  974. package/dist/zoned/compare/isBetweenZoned.js +46 -29
  975. package/dist/zoned/compare/isInDaylightSaving.js +4 -4
  976. package/dist/zoned/compare/isZonedBusinessDay.d.ts +7 -4
  977. package/dist/zoned/compare/isZonedBusinessDay.js +9 -6
  978. package/dist/zoned/compare/isZonedFuture.js +2 -1
  979. package/dist/zoned/compare/isZonedPast.js +2 -1
  980. package/dist/zoned/compare/isZonedRelativeDay.js +2 -1
  981. package/dist/zoned/compare/isZonedThisUnit.d.ts +12 -4
  982. package/dist/zoned/compare/isZonedThisUnit.js +37 -16
  983. package/dist/zoned/compare/isZonedWeekend.d.ts +8 -4
  984. package/dist/zoned/compare/isZonedWeekend.js +9 -6
  985. package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +10 -5
  986. package/dist/zoned/convert/convertPlainDateTimeToZoned.js +34 -16
  987. package/dist/zoned/convert/convertZonedToCalendar.d.ts +26 -38
  988. package/dist/zoned/convert/convertZonedToCalendar.js +33 -48
  989. package/dist/zoned/convert/convertZonedToPlainDateTime.d.ts +6 -0
  990. package/dist/zoned/convert/convertZonedToPlainDateTime.js +8 -2
  991. package/dist/zoned/convert/convertZonedToUnix.d.ts +12 -6
  992. package/dist/zoned/convert/convertZonedToUnix.js +23 -16
  993. package/dist/zoned/convert/convertZonedToUtc.js +2 -2
  994. package/dist/zoned/convert/convertZonedToZoned.js +2 -2
  995. package/dist/zoned/format/formatCalendarZoned.d.ts +7 -3
  996. package/dist/zoned/format/formatCalendarZoned.js +37 -39
  997. package/dist/zoned/format/formatRelativeZoned.d.ts +15 -6
  998. package/dist/zoned/format/formatRelativeZoned.js +54 -54
  999. package/dist/zoned/format/formatRfc2822.d.ts +14 -1
  1000. package/dist/zoned/format/formatRfc2822.js +27 -13
  1001. package/dist/zoned/format/formatRfc3339.d.ts +14 -1
  1002. package/dist/zoned/format/formatRfc3339.js +29 -3
  1003. package/dist/zoned/format/formatTimeZoneName.d.ts +3 -2
  1004. package/dist/zoned/format/formatTimeZoneName.js +28 -18
  1005. package/dist/zoned/format/formatZonedDateTime.d.ts +25 -5
  1006. package/dist/zoned/format/formatZonedDateTime.js +40 -9
  1007. package/dist/zoned/format/formatZonedRange.d.ts +24 -6
  1008. package/dist/zoned/format/formatZonedRange.js +61 -28
  1009. package/dist/zoned/format/formatZonedToParts.d.ts +29 -6
  1010. package/dist/zoned/format/formatZonedToParts.js +42 -13
  1011. package/dist/zoned/get/getDstTransitions.d.ts +6 -1
  1012. package/dist/zoned/get/getDstTransitions.js +17 -15
  1013. package/dist/zoned/get/getTimeZoneOffset.d.ts +11 -1
  1014. package/dist/zoned/get/getTimeZoneOffset.js +19 -2
  1015. package/dist/zoned/get/getZonedNow.js +20 -9
  1016. package/dist/zoned/get/getZonedNowUnit.d.ts +8 -4
  1017. package/dist/zoned/get/getZonedNowUnit.js +15 -31
  1018. package/dist/zoned/index.js +1 -1
  1019. package/dist/zoned/interval/intervalAbutsZoned.d.ts +18 -11
  1020. package/dist/zoned/interval/intervalAbutsZoned.js +24 -25
  1021. package/dist/zoned/interval/intervalContainsZoned.d.ts +16 -7
  1022. package/dist/zoned/interval/intervalContainsZoned.js +22 -14
  1023. package/dist/zoned/interval/intervalCountZoned.d.ts +19 -11
  1024. package/dist/zoned/interval/intervalCountZoned.js +32 -27
  1025. package/dist/zoned/interval/intervalDifferenceZoned.d.ts +13 -7
  1026. package/dist/zoned/interval/intervalDifferenceZoned.js +24 -36
  1027. package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +18 -9
  1028. package/dist/zoned/interval/intervalDivideEquallyZoned.js +67 -46
  1029. package/dist/zoned/interval/intervalEngulfsZoned.d.ts +10 -5
  1030. package/dist/zoned/interval/intervalEngulfsZoned.js +16 -10
  1031. package/dist/zoned/interval/intervalFromDurationZoned.d.ts +25 -11
  1032. package/dist/zoned/interval/intervalFromDurationZoned.js +61 -44
  1033. package/dist/zoned/interval/intervalIntersectionZoned.d.ts +12 -6
  1034. package/dist/zoned/interval/intervalIntersectionZoned.js +24 -18
  1035. package/dist/zoned/interval/intervalLengthZoned.d.ts +15 -6
  1036. package/dist/zoned/interval/intervalLengthZoned.js +23 -9
  1037. package/dist/zoned/interval/intervalOverlappingDaysZoned.d.ts +28 -17
  1038. package/dist/zoned/interval/intervalOverlappingDaysZoned.js +46 -34
  1039. package/dist/zoned/interval/intervalSplitAtZoned.d.ts +6 -3
  1040. package/dist/zoned/interval/intervalSplitAtZoned.js +52 -42
  1041. package/dist/zoned/interval/intervalUnionZoned.d.ts +14 -8
  1042. package/dist/zoned/interval/intervalUnionZoned.js +25 -20
  1043. package/dist/zoned/interval/intervalXorAllZoned.d.ts +9 -7
  1044. package/dist/zoned/interval/intervalXorAllZoned.js +42 -73
  1045. package/dist/zoned/interval/intervalXorZoned.d.ts +20 -12
  1046. package/dist/zoned/interval/intervalXorZoned.js +34 -64
  1047. package/dist/zoned/interval/intervalsOverlapZoned.d.ts +15 -7
  1048. package/dist/zoned/interval/intervalsOverlapZoned.js +21 -12
  1049. package/dist/zoned/interval/mergeIntervalsZoned.d.ts +10 -3
  1050. package/dist/zoned/interval/mergeIntervalsZoned.js +44 -41
  1051. package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +28 -5
  1052. package/dist/zoned/interval/splitIntervalByUnitZoned.js +72 -39
  1053. package/dist/zoned/interval/validate/isValidCalendarZonedInterval.d.ts +13 -10
  1054. package/dist/zoned/interval/validate/isValidCalendarZonedInterval.js +13 -10
  1055. package/dist/zoned/interval/validate/isValidZonedInterval.d.ts +7 -5
  1056. package/dist/zoned/interval/validate/isValidZonedInterval.js +12 -16
  1057. package/dist/zoned/map/mapZonedDatesInRange.d.ts +17 -1
  1058. package/dist/zoned/map/mapZonedDatesInRange.js +62 -26
  1059. package/dist/zoned/map/mapZonedHoursInDay.d.ts +10 -13
  1060. package/dist/zoned/map/mapZonedHoursInDay.js +13 -21
  1061. package/dist/zoned/parse/getZonedOffset.js +2 -2
  1062. package/dist/zoned/parse/getZonedOffsetAs.d.ts +4 -2
  1063. package/dist/zoned/parse/getZonedOffsetAs.js +10 -5
  1064. package/dist/zoned/parse/parseDateFromZoned.js +2 -2
  1065. package/dist/zoned/parse/parseDateTimeFromZoned.js +2 -2
  1066. package/dist/zoned/parse/parseDayFromZoned.js +2 -2
  1067. package/dist/zoned/parse/parseDayOfWeekFromZoned.js +2 -2
  1068. package/dist/zoned/parse/parseHourFromZoned.js +2 -2
  1069. package/dist/zoned/parse/parseMicrosecondFromZoned.d.ts +2 -1
  1070. package/dist/zoned/parse/parseMicrosecondFromZoned.js +4 -3
  1071. package/dist/zoned/parse/parseMillisecondFromZoned.js +2 -2
  1072. package/dist/zoned/parse/parseMinuteFromZoned.js +2 -2
  1073. package/dist/zoned/parse/parseMonthFromZoned.js +2 -2
  1074. package/dist/zoned/parse/parseNanosecondFromZoned.d.ts +2 -1
  1075. package/dist/zoned/parse/parseNanosecondFromZoned.js +4 -3
  1076. package/dist/zoned/parse/parseRfc2822.d.ts +32 -12
  1077. package/dist/zoned/parse/parseRfc2822.js +47 -45
  1078. package/dist/zoned/parse/parseRfc3339.d.ts +6 -0
  1079. package/dist/zoned/parse/parseRfc3339.js +6 -0
  1080. package/dist/zoned/parse/parseSecondFromZoned.js +2 -2
  1081. package/dist/zoned/parse/parseTimeFromZoned.js +2 -2
  1082. package/dist/zoned/parse/parseTimeZoneFromZoned.js +2 -2
  1083. package/dist/zoned/parse/parseUnitFromZoned.d.ts +14 -5
  1084. package/dist/zoned/parse/parseUnitFromZoned.js +59 -33
  1085. package/dist/zoned/parse/parseWeekFromZoned.d.ts +13 -3
  1086. package/dist/zoned/parse/parseWeekFromZoned.js +34 -10
  1087. package/dist/zoned/parse/parseYearFromZoned.js +2 -2
  1088. package/dist/zoned/validate/hasDaylightSaving.js +3 -3
  1089. package/dist/zoned/validate/isValidCalendarZonedDateTime.d.ts +31 -16
  1090. package/dist/zoned/validate/isValidCalendarZonedDateTime.js +31 -16
  1091. package/dist/zoned/validate/isValidTimeZone.d.ts +15 -2
  1092. package/dist/zoned/validate/isValidTimeZone.js +17 -4
  1093. package/dist/zoned/validate/isValidZonedDateTime.d.ts +14 -7
  1094. package/dist/zoned/validate/isValidZonedDateTime.js +20 -12
  1095. package/dist/zoned/validate/isValidZonedRange.d.ts +9 -2
  1096. package/dist/zoned/validate/isValidZonedRange.js +44 -16
  1097. package/package.json +475 -34
  1098. package/skills/gmt-arithmetic/SKILL.md +197 -16
  1099. package/skills/gmt-basics/SKILL.md +61 -14
  1100. package/skills/gmt-integration/SKILL.md +54 -8
  1101. package/skills/gmt-timezone/SKILL.md +141 -24
  1102. package/dist/internal/advanceBusinessDays.d.ts +0 -2
  1103. package/dist/internal/advanceBusinessDays.js +0 -15
  1104. package/dist/internal/ethiopicFamilyCalendar.d.ts +0 -47
  1105. package/dist/internal/ethiopicFamilyCalendar.js +0 -136
  1106. package/dist/internal/getLocaleMinimalDaysInFirstWeek.d.ts +0 -20
  1107. package/dist/internal/getLocaleMinimalDaysInFirstWeek.js +0 -31
  1108. package/dist/internal/resolveUnixTimeZone.d.ts +0 -20
  1109. package/dist/internal/resolveUnixTimeZone.js +0 -30
  1110. package/dist/unix/calculate/startOrEndOfUnix.d.ts +0 -27
  1111. package/dist/unix/calculate/startOrEndOfUnix.js +0 -140
  1112. package/dist/unix/interval/resolveUnixIntervalPair.d.ts +0 -7
  1113. package/dist/unix/interval/resolveUnixIntervalPair.js +0 -36
@@ -1,14 +1,20 @@
1
+ // fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
1
2
  import { Temporal } from "@js-temporal/polyfill";
2
- import { calendarOfAllDateValues, formatDateInCalendar, parseCalendarDateValue, } from "../../internal/index.js";
3
+ import { calendarOfAllDateValues, formatDateInCalendar, halfOpenIntersection, parseCalendarDateValue, } from "../../internal/index.js";
3
4
  import { isValidCalendarDate } from "../validate/index.js";
4
5
  /**
5
6
  * Return the overlapping span of two date intervals, or null when they do not overlap.
6
7
  *
7
8
  * - Uses `Temporal.PlainDate.compare` for comparison.
8
- * - Adjacent intervals (e.g. `aEnd === bStart`) share one instant and DO overlap.
9
+ * - Half-open: an interval holds every `t` with `start <= t < end`. The intersection is
10
+ * `[max(aStart, bStart), min(aEnd, bEnd))` when `aStart < bEnd && bStart < aEnd` (CORE-6's
11
+ * `intersectIntervals`), otherwise `null`.
12
+ * - Touching intervals (`aEnd === bStart`) share no day and return `null`.
13
+ * - An empty interval (`start === end`) intersects only an interval it lies strictly inside, and
14
+ * then returns itself.
9
15
  * - Returns `null` if either interval is invalid (`start > end`).
10
16
  * - Returns `null` on invalid input (wrong type, malformed strings).
11
- * - Accepts GMT calendar-annotated PlainDate strings — E5 (issue #78). Since the result is a
17
+ * - Accepts RFC 9557 calendar-annotated PlainDate strings — E5 (issue #78). Since the result is a
12
18
  * date *value*, all four arguments must carry the *same* calendar tag (or all be bare ISO);
13
19
  * a mismatch returns `null` (E5 decision of record D4). The output's tag is re-derived from
14
20
  * the intersection span, never copied from an input.
@@ -20,8 +26,8 @@ import { isValidCalendarDate } from "../validate/index.js";
20
26
  * @returns `{ start, end }` with the overlapping span, or null on invalid input / no overlap / mismatched calendars
21
27
  *
22
28
  * @example intervalIntersectionDate("2024-01-01", "2024-06-30", "2024-04-01", "2024-12-31") // { start: "2024-04-01", end: "2024-06-30" }
23
- * @example intervalIntersectionDate("2024-01-01", "2024-06-30", "2024-06-30", "2024-12-31") // { start: "2024-06-30", end: "2024-06-30" }
24
- * @example intervalIntersectionDate("2024-01-01", "2024-06-30", "2024-07-01", "2024-12-31") // null
29
+ * @example intervalIntersectionDate("2024-01-01", "2024-06-30", "2024-06-29", "2024-12-31") // { start: "2024-06-29", end: "2024-06-30" } (one shared day)
30
+ * @example intervalIntersectionDate("2024-01-01", "2024-06-30", "2024-06-30", "2024-12-31") // null (touching)
25
31
  * @example intervalIntersectionDate("2024-01-01", "2024-06-30", "2024-02-01", "2024-03-01") // { start: "2024-02-01", end: "2024-03-01" }
26
32
  * @example intervalIntersectionDate("invalid", "2024-06-30", "2024-04-01", "2024-12-31") // null
27
33
  */
@@ -53,12 +59,11 @@ export function intervalIntersectionDate(aStart, aEnd, bStart, bEnd) {
53
59
  if (Temporal.PlainDate.compare(bS, bE) > 0) {
54
60
  return null;
55
61
  }
56
- if (Temporal.PlainDate.compare(aE, bS) < 0 ||
57
- Temporal.PlainDate.compare(bE, aS) < 0) {
62
+ const shared = halfOpenIntersection({ start: aS, end: aE }, { start: bS, end: bE }, Temporal.PlainDate.compare);
63
+ if (shared === null) {
58
64
  return null;
59
65
  }
60
- const start = Temporal.PlainDate.compare(aS, bS) >= 0 ? aS : bS;
61
- const end = Temporal.PlainDate.compare(aE, bE) <= 0 ? aE : bE;
66
+ const { start, end } = shared;
62
67
  return {
63
68
  start: formatDateInCalendar(start, calendar),
64
69
  end: formatDateInCalendar(end, calendar),
@@ -2,7 +2,12 @@
2
2
  * Return the overlapping span of two datetime intervals, or null when they do not overlap.
3
3
  *
4
4
  * - Uses `Temporal.PlainDateTime.compare` for comparison.
5
- * - Adjacent intervals (e.g. `aEnd === bStart`) share one instant and DO overlap.
5
+ * - Half-open: an interval holds every `t` with `start <= t < end`. The intersection is
6
+ * `[max(aStart, bStart), min(aEnd, bEnd))` when `aStart < bEnd && bStart < aEnd` (CORE-6's
7
+ * `intersectIntervals`), otherwise `null`.
8
+ * - Touching intervals (`aEnd === bStart`) share no moment and return `null`.
9
+ * - An empty interval (`start === end`) intersects only an interval it lies strictly inside, and
10
+ * then returns itself.
6
11
  * - Returns `null` if either interval is invalid (`start > end`).
7
12
  * - Returns `null` on invalid input (wrong type, malformed strings).
8
13
  *
@@ -12,9 +17,9 @@
12
17
  * @param bEnd ISO 8601 datetime string for the second interval end
13
18
  * @returns `{ start, end }` with the overlapping span, or null on invalid input / no overlap
14
19
  *
15
- * @example intervalIntersectionDateTime("2024-01-01T10:00:00", "2024-06-30T23:59:59", "2024-04-01T00:00:00", "2024-12-31T23:59:59") // { start: "2024-04-01T00:00:00", end: "2024-06-30T23:59:59" }
16
- * @example intervalIntersectionDateTime("2024-01-01T10:00:00", "2024-06-30T23:59:59", "2024-07-01T00:00:00", "2024-12-31T23:59:59") // null
17
- * @example intervalIntersectionDateTime("2024-01-01T10:00:00", "2024-06-30T23:59:59", "2024-07-02T00:00:00", "2024-12-31T23:59:59") // null
20
+ * @example intervalIntersectionDateTime("2024-01-01T09:00:00", "2024-01-01T13:00:00", "2024-01-01T12:00:00", "2024-01-01T17:00:00") // { start: "2024-01-01T12:00:00", end: "2024-01-01T13:00:00" }
21
+ * @example intervalIntersectionDateTime("2024-01-01T09:00:00", "2024-01-01T12:00:00", "2024-01-01T12:00:00", "2024-01-01T17:00:00") // null (touching)
22
+ * @example intervalIntersectionDateTime("2024-01-01T09:00:00", "2024-01-01T17:00:00", "2024-01-01T12:00:00", "2024-01-01T12:00:00") // { start: "2024-01-01T12:00:00", end: "2024-01-01T12:00:00" } (empty interval strictly inside)
18
23
  * @example intervalIntersectionDateTime("invalid", "2024-06-30T23:59:59", "2024-04-01T00:00:00", "2024-12-31T23:59:59") // null
19
24
  */
20
25
  export declare function intervalIntersectionDateTime(aStart: string, aEnd: string, bStart: string, bEnd: string): {
@@ -1,10 +1,17 @@
1
+ // fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
1
2
  import { Temporal } from "@js-temporal/polyfill";
2
- import { plainDateTime } from "../../regex/index.js";
3
+ import { halfOpenIntersection } from "../../internal/index.js";
4
+ import { isValidDateTime } from "../validate/index.js";
3
5
  /**
4
6
  * Return the overlapping span of two datetime intervals, or null when they do not overlap.
5
7
  *
6
8
  * - Uses `Temporal.PlainDateTime.compare` for comparison.
7
- * - Adjacent intervals (e.g. `aEnd === bStart`) share one instant and DO overlap.
9
+ * - Half-open: an interval holds every `t` with `start <= t < end`. The intersection is
10
+ * `[max(aStart, bStart), min(aEnd, bEnd))` when `aStart < bEnd && bStart < aEnd` (CORE-6's
11
+ * `intersectIntervals`), otherwise `null`.
12
+ * - Touching intervals (`aEnd === bStart`) share no moment and return `null`.
13
+ * - An empty interval (`start === end`) intersects only an interval it lies strictly inside, and
14
+ * then returns itself.
8
15
  * - Returns `null` if either interval is invalid (`start > end`).
9
16
  * - Returns `null` on invalid input (wrong type, malformed strings).
10
17
  *
@@ -14,9 +21,9 @@ import { plainDateTime } from "../../regex/index.js";
14
21
  * @param bEnd ISO 8601 datetime string for the second interval end
15
22
  * @returns `{ start, end }` with the overlapping span, or null on invalid input / no overlap
16
23
  *
17
- * @example intervalIntersectionDateTime("2024-01-01T10:00:00", "2024-06-30T23:59:59", "2024-04-01T00:00:00", "2024-12-31T23:59:59") // { start: "2024-04-01T00:00:00", end: "2024-06-30T23:59:59" }
18
- * @example intervalIntersectionDateTime("2024-01-01T10:00:00", "2024-06-30T23:59:59", "2024-07-01T00:00:00", "2024-12-31T23:59:59") // null
19
- * @example intervalIntersectionDateTime("2024-01-01T10:00:00", "2024-06-30T23:59:59", "2024-07-02T00:00:00", "2024-12-31T23:59:59") // null
24
+ * @example intervalIntersectionDateTime("2024-01-01T09:00:00", "2024-01-01T13:00:00", "2024-01-01T12:00:00", "2024-01-01T17:00:00") // { start: "2024-01-01T12:00:00", end: "2024-01-01T13:00:00" }
25
+ * @example intervalIntersectionDateTime("2024-01-01T09:00:00", "2024-01-01T12:00:00", "2024-01-01T12:00:00", "2024-01-01T17:00:00") // null (touching)
26
+ * @example intervalIntersectionDateTime("2024-01-01T09:00:00", "2024-01-01T17:00:00", "2024-01-01T12:00:00", "2024-01-01T12:00:00") // { start: "2024-01-01T12:00:00", end: "2024-01-01T12:00:00" } (empty interval strictly inside)
20
27
  * @example intervalIntersectionDateTime("invalid", "2024-06-30T23:59:59", "2024-04-01T00:00:00", "2024-12-31T23:59:59") // null
21
28
  */
22
29
  export function intervalIntersectionDateTime(aStart, aEnd, bStart, bEnd) {
@@ -26,10 +33,10 @@ export function intervalIntersectionDateTime(aStart, aEnd, bStart, bEnd) {
26
33
  typeof bEnd !== "string") {
27
34
  return null;
28
35
  }
29
- if (!plainDateTime.test(aStart) ||
30
- !plainDateTime.test(aEnd) ||
31
- !plainDateTime.test(bStart) ||
32
- !plainDateTime.test(bEnd)) {
36
+ if (!isValidDateTime(aStart) ||
37
+ !isValidDateTime(aEnd) ||
38
+ !isValidDateTime(bStart) ||
39
+ !isValidDateTime(bEnd)) {
33
40
  return null;
34
41
  }
35
42
  try {
@@ -43,12 +50,11 @@ export function intervalIntersectionDateTime(aStart, aEnd, bStart, bEnd) {
43
50
  if (Temporal.PlainDateTime.compare(bS, bE) > 0) {
44
51
  return null;
45
52
  }
46
- if (Temporal.PlainDateTime.compare(aE, bS) < 0 ||
47
- Temporal.PlainDateTime.compare(bE, aS) < 0) {
53
+ const shared = halfOpenIntersection({ start: aS, end: aE }, { start: bS, end: bE }, Temporal.PlainDateTime.compare);
54
+ if (shared === null) {
48
55
  return null;
49
56
  }
50
- const start = Temporal.PlainDateTime.compare(aS, bS) >= 0 ? aS : bS;
51
- const end = Temporal.PlainDateTime.compare(aE, bE) <= 0 ? aE : bE;
57
+ const { start, end } = shared;
52
58
  return { start: start.toString(), end: end.toString() };
53
59
  }
54
60
  catch {
@@ -2,7 +2,12 @@
2
2
  * Return the overlapping span of two time intervals, or null when they do not overlap.
3
3
  *
4
4
  * - Uses `Temporal.PlainTime.compare` for comparison.
5
- * - Adjacent intervals (e.g. `aEnd === bStart`) share one instant and DO overlap.
5
+ * - Half-open: an interval holds every `t` with `start <= t < end`. The intersection is
6
+ * `[max(aStart, bStart), min(aEnd, bEnd))` when `aStart < bEnd && bStart < aEnd` (CORE-6's
7
+ * `intersectIntervals`), otherwise `null`.
8
+ * - Touching intervals (`aEnd === bStart`) share no clock time and return `null`.
9
+ * - An empty interval (`start === end`) intersects only an interval it lies strictly inside, and
10
+ * then returns itself.
6
11
  * - Returns `null` if either interval is invalid (`start > end`).
7
12
  * - Returns `null` on invalid input (wrong type, malformed strings).
8
13
  *
@@ -13,8 +18,7 @@
13
18
  * @returns `{ start, end }` with the overlapping span, or null on invalid input / no overlap
14
19
  *
15
20
  * @example intervalIntersectionTime("09:00:00", "17:00:00", "12:00:00", "18:00:00") // { start: "12:00:00", end: "17:00:00" }
16
- * @example intervalIntersectionTime("09:00:00", "17:00:00", "17:00:00", "18:00:00") // { start: "17:00:00", end: "17:00:00" }
17
- * @example intervalIntersectionTime("09:00:00", "17:00:00", "18:00:00", "20:00:00") // null
21
+ * @example intervalIntersectionTime("09:00:00", "17:00:00", "17:00:00", "18:00:00") // null (touching)
18
22
  * @example intervalIntersectionTime("09:00:00", "17:00:00", "10:00:00", "11:00:00") // { start: "10:00:00", end: "11:00:00" }
19
23
  * @example intervalIntersectionTime("invalid", "17:00:00", "12:00:00", "18:00:00") // null
20
24
  */
@@ -1,10 +1,17 @@
1
+ // fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
1
2
  import { Temporal } from "@js-temporal/polyfill";
2
- import { plainTime } from "../../regex/index.js";
3
+ import { halfOpenIntersection } from "../../internal/index.js";
4
+ import { isValidTime } from "../validate/index.js";
3
5
  /**
4
6
  * Return the overlapping span of two time intervals, or null when they do not overlap.
5
7
  *
6
8
  * - Uses `Temporal.PlainTime.compare` for comparison.
7
- * - Adjacent intervals (e.g. `aEnd === bStart`) share one instant and DO overlap.
9
+ * - Half-open: an interval holds every `t` with `start <= t < end`. The intersection is
10
+ * `[max(aStart, bStart), min(aEnd, bEnd))` when `aStart < bEnd && bStart < aEnd` (CORE-6's
11
+ * `intersectIntervals`), otherwise `null`.
12
+ * - Touching intervals (`aEnd === bStart`) share no clock time and return `null`.
13
+ * - An empty interval (`start === end`) intersects only an interval it lies strictly inside, and
14
+ * then returns itself.
8
15
  * - Returns `null` if either interval is invalid (`start > end`).
9
16
  * - Returns `null` on invalid input (wrong type, malformed strings).
10
17
  *
@@ -15,8 +22,7 @@ import { plainTime } from "../../regex/index.js";
15
22
  * @returns `{ start, end }` with the overlapping span, or null on invalid input / no overlap
16
23
  *
17
24
  * @example intervalIntersectionTime("09:00:00", "17:00:00", "12:00:00", "18:00:00") // { start: "12:00:00", end: "17:00:00" }
18
- * @example intervalIntersectionTime("09:00:00", "17:00:00", "17:00:00", "18:00:00") // { start: "17:00:00", end: "17:00:00" }
19
- * @example intervalIntersectionTime("09:00:00", "17:00:00", "18:00:00", "20:00:00") // null
25
+ * @example intervalIntersectionTime("09:00:00", "17:00:00", "17:00:00", "18:00:00") // null (touching)
20
26
  * @example intervalIntersectionTime("09:00:00", "17:00:00", "10:00:00", "11:00:00") // { start: "10:00:00", end: "11:00:00" }
21
27
  * @example intervalIntersectionTime("invalid", "17:00:00", "12:00:00", "18:00:00") // null
22
28
  */
@@ -27,10 +33,10 @@ export function intervalIntersectionTime(aStart, aEnd, bStart, bEnd) {
27
33
  typeof bEnd !== "string") {
28
34
  return null;
29
35
  }
30
- if (!plainTime.test(aStart) ||
31
- !plainTime.test(aEnd) ||
32
- !plainTime.test(bStart) ||
33
- !plainTime.test(bEnd)) {
36
+ if (!isValidTime(aStart) ||
37
+ !isValidTime(aEnd) ||
38
+ !isValidTime(bStart) ||
39
+ !isValidTime(bEnd)) {
34
40
  return null;
35
41
  }
36
42
  try {
@@ -44,12 +50,11 @@ export function intervalIntersectionTime(aStart, aEnd, bStart, bEnd) {
44
50
  if (Temporal.PlainTime.compare(bS, bE) > 0) {
45
51
  return null;
46
52
  }
47
- if (Temporal.PlainTime.compare(aE, bS) < 0 ||
48
- Temporal.PlainTime.compare(bE, aS) < 0) {
53
+ const shared = halfOpenIntersection({ start: aS, end: aE }, { start: bS, end: bE }, Temporal.PlainTime.compare);
54
+ if (shared === null) {
49
55
  return null;
50
56
  }
51
- const start = Temporal.PlainTime.compare(aS, bS) >= 0 ? aS : bS;
52
- const end = Temporal.PlainTime.compare(aE, bE) <= 0 ? aE : bE;
57
+ const { start, end } = shared;
53
58
  return { start: start.toString(), end: end.toString() };
54
59
  }
55
60
  catch {
@@ -5,16 +5,19 @@
5
5
  * than measuring exact duration — see `intervalCountDate`'s JSDoc for the canonical
6
6
  * 11:59pm→12:01am example of the two diverging. `intervalLengthDate` answers "how long is
7
7
  * this interval", `intervalCountDate` answers "how many boundaries does it touch".
8
- * - Uses `Temporal.Duration.prototype.total`, which resolves calendar units (month, year)
8
+ * - Uses `Temporal.Duration.prototype.total` semantics, which resolve calendar units (month, year)
9
9
  * against the interval's own start so a partial month is expressed as a true fraction rather
10
- * than truncated.
10
+ * than truncated (non-ISO calendars follow the same TC39 NudgeToCalendarUnit steps over
11
+ * calendar-correct arithmetic).
11
12
  * - Returns `0` for a zero-length interval (`start === end`).
12
13
  * - Returns `null` on invalid input (unparseable start/end, `start > end`, unsupported unit,
13
14
  * or a unit that has no effect on `PlainDate`, e.g. `"hours"`).
14
- * - Accepts GMT calendar-annotated PlainDate strings — E5 (issue #78). When `start` and `end`
15
- * carry the *same* calendar tag, the length is measured in that calendar; otherwise (or if
16
- * either is bare ISO) it falls back to Gregorian — same shared-calendar rule as
17
- * `intervalCountDate` (E5 decision of record D5).
15
+ * - Accepts RFC 9557 calendar-annotated PlainDate strings — E5 (issue #78). When `start` and `end`
16
+ * carry the *same* calendar tag, the length is measured in that calendar; when they name
17
+ * different calendars the result is `null` — same calendar rule as `intervalCountDate` (TC39
18
+ * `CalendarEquals`; before 1.16.0 measured in ISO).
19
+ * - Compatibility: since 1.16.0 calendar strings are RFC 9557 (ISO digits, `[u-ca=<id>]`, canonical
20
+ * calendar ids); see `isValidCalendarDate`.
18
21
  *
19
22
  * @param start ISO PlainDate string for the interval start, optionally calendar-annotated
20
23
  * @param end ISO PlainDate string for the interval end, optionally calendar-annotated
@@ -1,6 +1,32 @@
1
- import { parseCalendarDatePairForArithmetic, resolveDateTimeUnit, } from "../../internal/index.js";
1
+ import { durationTotal, parseCalendarDatePairForArithmetic, resolveDateTimeUnit, } from "../../internal/index.js";
2
+ import { calendarDateAdd, calendarDateUntil, } from "../../internal/temporalCompat/index.js";
2
3
  import { isValidDateUnit } from "../validate/index.js";
3
4
  import { isValidDateInterval } from "./validate/index.js";
5
+ const UNIT_FIELD = {
6
+ year: "years",
7
+ month: "months",
8
+ week: "weeks",
9
+ day: "days",
10
+ };
11
+ function daysBetween(from, to) {
12
+ return from
13
+ .withCalendar("iso8601")
14
+ .until(to.withCalendar("iso8601"), { largestUnit: "days" }).days;
15
+ }
16
+ /**
17
+ * `Duration.total({ unit, relativeTo: start })` of a non-ISO calendar difference, computed as TC39
18
+ * `TotalRelativeDuration` → `NudgeToCalendarUnit` does, over the Temporal compat layer's calendar
19
+ * add and until (CORE-6: the polyfill's own `total` runs its D1/D6/D7-affected arithmetic):
20
+ * `r1` whole units from `CalendarDateUntil`, plus the days from `start + r1` to `end` over the days
21
+ * from `start + r1` to `start + (r1 + 1)`, both added with `constrain`. `start <= end`.
22
+ */
23
+ function calendarLength(start, end, unit) {
24
+ const field = UNIT_FIELD[unit];
25
+ const whole = calendarDateUntil(start, end, unit)[field];
26
+ const lower = calendarDateAdd(start, { [field]: whole }, "constrain");
27
+ const upper = calendarDateAdd(start, { [field]: whole + 1 }, "constrain");
28
+ return whole + daysBetween(lower, end) / daysBetween(lower, upper);
29
+ }
4
30
  /**
5
31
  * Return the exact length of a date interval in `unit`, as a real (possibly fractional) number.
6
32
  *
@@ -8,16 +34,19 @@ import { isValidDateInterval } from "./validate/index.js";
8
34
  * than measuring exact duration — see `intervalCountDate`'s JSDoc for the canonical
9
35
  * 11:59pm→12:01am example of the two diverging. `intervalLengthDate` answers "how long is
10
36
  * this interval", `intervalCountDate` answers "how many boundaries does it touch".
11
- * - Uses `Temporal.Duration.prototype.total`, which resolves calendar units (month, year)
37
+ * - Uses `Temporal.Duration.prototype.total` semantics, which resolve calendar units (month, year)
12
38
  * against the interval's own start so a partial month is expressed as a true fraction rather
13
- * than truncated.
39
+ * than truncated (non-ISO calendars follow the same TC39 NudgeToCalendarUnit steps over
40
+ * calendar-correct arithmetic).
14
41
  * - Returns `0` for a zero-length interval (`start === end`).
15
42
  * - Returns `null` on invalid input (unparseable start/end, `start > end`, unsupported unit,
16
43
  * or a unit that has no effect on `PlainDate`, e.g. `"hours"`).
17
- * - Accepts GMT calendar-annotated PlainDate strings — E5 (issue #78). When `start` and `end`
18
- * carry the *same* calendar tag, the length is measured in that calendar; otherwise (or if
19
- * either is bare ISO) it falls back to Gregorian — same shared-calendar rule as
20
- * `intervalCountDate` (E5 decision of record D5).
44
+ * - Accepts RFC 9557 calendar-annotated PlainDate strings — E5 (issue #78). When `start` and `end`
45
+ * carry the *same* calendar tag, the length is measured in that calendar; when they name
46
+ * different calendars the result is `null` — same calendar rule as `intervalCountDate` (TC39
47
+ * `CalendarEquals`; before 1.16.0 measured in ISO).
48
+ * - Compatibility: since 1.16.0 calendar strings are RFC 9557 (ISO digits, `[u-ca=<id>]`, canonical
49
+ * calendar ids); see `isValidCalendarDate`.
21
50
  *
22
51
  * @param start ISO PlainDate string for the interval start, optionally calendar-annotated
23
52
  * @param end ISO PlainDate string for the interval end, optionally calendar-annotated
@@ -44,11 +73,14 @@ export function intervalLengthDate(start, end, unit) {
44
73
  }
45
74
  try {
46
75
  const { a: startVal, b: endVal } = parseCalendarDatePairForArithmetic(start, end);
76
+ if (startVal.calendarId !== "iso8601") {
77
+ return calendarLength(startVal, endVal, resolvedUnit);
78
+ }
47
79
  const duration = startVal.until(endVal, { largestUnit: resolvedUnit });
48
80
  // total() gives the exact (possibly fractional) length, unlike intervalCountDate's
49
81
  // boundary-crossing count — e.g. Jan 31 -> Feb 1 is 1 month boundary via intervalCountDate
50
82
  // but only a fraction of a month via total().
51
- return duration.total({ unit: resolvedUnit, relativeTo: startVal });
83
+ return durationTotal(duration, resolvedUnit, startVal);
52
84
  }
53
85
  catch {
54
86
  return null;
@@ -1,5 +1,5 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
- import { resolveDateTimeUnit } from "../../internal/index.js";
2
+ import { durationTotal, resolveDateTimeUnit } from "../../internal/index.js";
3
3
  import { isValidDateTimeUnit } from "../validate/index.js";
4
4
  import { isValidDateTimeInterval } from "./validate/index.js";
5
5
  /**
@@ -42,7 +42,7 @@ export function intervalLengthDateTime(start, end, unit) {
42
42
  const duration = startVal.until(endVal, { largestUnit: resolvedUnit });
43
43
  // total() gives the exact elapsed length, unlike intervalCountDateTime's boundary-crossing
44
44
  // count — 23:59 -> 00:01 is 2 day boundaries via intervalCountDateTime but ~0.0014 days here.
45
- return duration.total({ unit: resolvedUnit, relativeTo: startVal });
45
+ return durationTotal(duration, resolvedUnit, startVal);
46
46
  }
47
47
  catch {
48
48
  return null;
@@ -1,22 +1,20 @@
1
1
  /**
2
2
  * Return how many distinct calendar dates two date intervals share.
3
3
  *
4
- * - Counts the number of dates touched by the closed intersection
5
- * `[max(aStart, bStart), min(aEnd, bEnd)]` — inclusive of both endpoints.
6
- * - Adjacent intervals (e.g. `aEnd === bStart`) share one date and count as `1`.
7
- * - Returns `0` when the intervals do not overlap at all (a well-defined answer, not
8
- * invalid input).
4
+ * - Half-open: an interval holds every date `d` with `start <= d < end`. The count is the number
5
+ * of days in the intersection `[max(aStart, bStart), min(aEnd, bEnd))`, that is
6
+ * `min(aEnd, bEnd) - max(aStart, bStart)` in days.
7
+ * - Touching intervals (`aEnd === bStart`) share no day and count `0`; so does an empty interval.
8
+ * - Returns `0` when the intervals share no day (a well-defined answer, not invalid input).
9
9
  * - Returns `null` if either interval is invalid (`start > end`).
10
10
  * - Returns `null` on invalid input (wrong type, malformed strings).
11
- * - Diverges from date-fns's `getOverlappingDaysInIntervals`, which rounds up elapsed
12
- * 24-hour periods instead of counting calendar dates (its own doc example — Jan 10-20 vs
13
- * Jan 17-21 — returns 3 there, 4 here). To reproduce date-fns's number, compose
14
- * `intervalIntersectionDate` with `intervalCountDate`:
15
- * `const span = intervalIntersectionDate(aStart, aEnd, bStart, bEnd); span ? intervalCountDate(span.start, span.end, "day") : 0;`
16
11
  *
17
- * - Accepts GMT calendar-annotated PlainDate strings — E5 (issue #78). A day is a day in every
18
- * supported calendar, so this returns the same count whether or not the endpoints are
19
- * calendar-tagged, and arguments may carry different or no tags (D4).
12
+ * - Accepts RFC 9557 calendar-annotated PlainDate strings — E5 (issue #78). All four arguments
13
+ * must name the same calendar (a bare ISO string names `iso8601`); different calendars return
14
+ * `null`, as Temporal's `until` throws when `CalendarEquals` is false.
15
+ * - Compatibility: before 1.16.0 arguments could name different calendars. Since 1.16.0 calendar
16
+ * strings are RFC 9557 (ISO digits, `[u-ca=<id>]`, canonical calendar ids); see
17
+ * `isValidCalendarDate`.
20
18
  *
21
19
  * @param aStart ISO 8601 date string for the first interval start, optionally calendar-annotated
22
20
  * @param aEnd ISO 8601 date string for the first interval end, optionally calendar-annotated
@@ -24,10 +22,11 @@
24
22
  * @param bEnd ISO 8601 date string for the second interval end, optionally calendar-annotated
25
23
  * @returns number of shared calendar dates, `0` when disjoint, or null on invalid input
26
24
  *
27
- * @example intervalOverlappingDaysDate("2024-01-01", "2024-06-30", "2024-04-01", "2024-12-31") // 91
28
- * @example intervalOverlappingDaysDate("2024-01-01", "2024-12-31", "2024-02-01", "2024-02-29") // 29
29
- * @example intervalOverlappingDaysDate("2024-01-01", "2024-06-30", "2024-06-30", "2024-12-31") // 1 (adjacent)
30
- * @example intervalOverlappingDaysDate("2024-01-01", "2024-06-30", "2024-07-01", "2024-12-31") // 0 (disjoint)
25
+ * @example intervalOverlappingDaysDate("2024-01-01", "2024-06-30", "2024-04-01", "2024-12-31") // 90 (04-01 up to, not including, 06-30)
26
+ * @example intervalOverlappingDaysDate("2024-01-01", "2024-12-31", "2024-02-01", "2024-02-29") // 28
27
+ * @example intervalOverlappingDaysDate("2024-01-01", "2024-06-30", "2024-06-29", "2024-12-31") // 1
28
+ * @example intervalOverlappingDaysDate("2024-01-01", "2024-06-30", "2024-06-30", "2024-12-31") // 0 (touching)
29
+ * @example intervalOverlappingDaysDate("2024-10-01", "2024-10-31", "2024-10-03[u-ca=hebrew]", "2024-11-15") // null (different calendars)
31
30
  * @example intervalOverlappingDaysDate("invalid", "2024-06-30", "2024-04-01", "2024-12-31") // null
32
31
  */
33
32
  export declare function intervalOverlappingDaysDate(aStart: string, aEnd: string, bStart: string, bEnd: string): number | null;
@@ -1,25 +1,24 @@
1
+ // fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
1
2
  import { Temporal } from "@js-temporal/polyfill";
2
- import { parseCalendarDateValue } from "../../internal/index.js";
3
+ import { calendarOfAllDateValues, halfOpenIntersection, parseCalendarDateValue, } from "../../internal/index.js";
3
4
  import { isValidCalendarDate } from "../validate/index.js";
4
5
  /**
5
6
  * Return how many distinct calendar dates two date intervals share.
6
7
  *
7
- * - Counts the number of dates touched by the closed intersection
8
- * `[max(aStart, bStart), min(aEnd, bEnd)]` — inclusive of both endpoints.
9
- * - Adjacent intervals (e.g. `aEnd === bStart`) share one date and count as `1`.
10
- * - Returns `0` when the intervals do not overlap at all (a well-defined answer, not
11
- * invalid input).
8
+ * - Half-open: an interval holds every date `d` with `start <= d < end`. The count is the number
9
+ * of days in the intersection `[max(aStart, bStart), min(aEnd, bEnd))`, that is
10
+ * `min(aEnd, bEnd) - max(aStart, bStart)` in days.
11
+ * - Touching intervals (`aEnd === bStart`) share no day and count `0`; so does an empty interval.
12
+ * - Returns `0` when the intervals share no day (a well-defined answer, not invalid input).
12
13
  * - Returns `null` if either interval is invalid (`start > end`).
13
14
  * - Returns `null` on invalid input (wrong type, malformed strings).
14
- * - Diverges from date-fns's `getOverlappingDaysInIntervals`, which rounds up elapsed
15
- * 24-hour periods instead of counting calendar dates (its own doc example — Jan 10-20 vs
16
- * Jan 17-21 — returns 3 there, 4 here). To reproduce date-fns's number, compose
17
- * `intervalIntersectionDate` with `intervalCountDate`:
18
- * `const span = intervalIntersectionDate(aStart, aEnd, bStart, bEnd); span ? intervalCountDate(span.start, span.end, "day") : 0;`
19
15
  *
20
- * - Accepts GMT calendar-annotated PlainDate strings — E5 (issue #78). A day is a day in every
21
- * supported calendar, so this returns the same count whether or not the endpoints are
22
- * calendar-tagged, and arguments may carry different or no tags (D4).
16
+ * - Accepts RFC 9557 calendar-annotated PlainDate strings — E5 (issue #78). All four arguments
17
+ * must name the same calendar (a bare ISO string names `iso8601`); different calendars return
18
+ * `null`, as Temporal's `until` throws when `CalendarEquals` is false.
19
+ * - Compatibility: before 1.16.0 arguments could name different calendars. Since 1.16.0 calendar
20
+ * strings are RFC 9557 (ISO digits, `[u-ca=<id>]`, canonical calendar ids); see
21
+ * `isValidCalendarDate`.
23
22
  *
24
23
  * @param aStart ISO 8601 date string for the first interval start, optionally calendar-annotated
25
24
  * @param aEnd ISO 8601 date string for the first interval end, optionally calendar-annotated
@@ -27,10 +26,11 @@ import { isValidCalendarDate } from "../validate/index.js";
27
26
  * @param bEnd ISO 8601 date string for the second interval end, optionally calendar-annotated
28
27
  * @returns number of shared calendar dates, `0` when disjoint, or null on invalid input
29
28
  *
30
- * @example intervalOverlappingDaysDate("2024-01-01", "2024-06-30", "2024-04-01", "2024-12-31") // 91
31
- * @example intervalOverlappingDaysDate("2024-01-01", "2024-12-31", "2024-02-01", "2024-02-29") // 29
32
- * @example intervalOverlappingDaysDate("2024-01-01", "2024-06-30", "2024-06-30", "2024-12-31") // 1 (adjacent)
33
- * @example intervalOverlappingDaysDate("2024-01-01", "2024-06-30", "2024-07-01", "2024-12-31") // 0 (disjoint)
29
+ * @example intervalOverlappingDaysDate("2024-01-01", "2024-06-30", "2024-04-01", "2024-12-31") // 90 (04-01 up to, not including, 06-30)
30
+ * @example intervalOverlappingDaysDate("2024-01-01", "2024-12-31", "2024-02-01", "2024-02-29") // 28
31
+ * @example intervalOverlappingDaysDate("2024-01-01", "2024-06-30", "2024-06-29", "2024-12-31") // 1
32
+ * @example intervalOverlappingDaysDate("2024-01-01", "2024-06-30", "2024-06-30", "2024-12-31") // 0 (touching)
33
+ * @example intervalOverlappingDaysDate("2024-10-01", "2024-10-31", "2024-10-03[u-ca=hebrew]", "2024-11-15") // null (different calendars)
34
34
  * @example intervalOverlappingDaysDate("invalid", "2024-06-30", "2024-04-01", "2024-12-31") // null
35
35
  */
36
36
  export function intervalOverlappingDaysDate(aStart, aEnd, bStart, bEnd) {
@@ -46,6 +46,11 @@ export function intervalOverlappingDaysDate(aStart, aEnd, bStart, bEnd) {
46
46
  !isValidCalendarDate(bEnd)) {
47
47
  return null;
48
48
  }
49
+ // The count is a difference between two of the endpoints, so all four must name one calendar
50
+ // (TC39 CalendarEquals, which makes until throw across calendars).
51
+ if (calendarOfAllDateValues([aStart, aEnd, bStart, bEnd]) === null) {
52
+ return null;
53
+ }
49
54
  try {
50
55
  const aS = parseCalendarDateValue(aStart);
51
56
  const aE = parseCalendarDateValue(aEnd);
@@ -57,20 +62,15 @@ export function intervalOverlappingDaysDate(aStart, aEnd, bStart, bEnd) {
57
62
  if (Temporal.PlainDate.compare(bS, bE) > 0) {
58
63
  return null;
59
64
  }
60
- if (Temporal.PlainDate.compare(aE, bS) < 0 ||
61
- Temporal.PlainDate.compare(bE, aS) < 0) {
65
+ const shared = halfOpenIntersection({ start: aS, end: aE }, { start: bS, end: bE }, Temporal.PlainDate.compare);
66
+ if (shared === null) {
62
67
  return 0;
63
68
  }
64
- const start = Temporal.PlainDate.compare(aS, bS) >= 0 ? aS : bS;
65
- const end = Temporal.PlainDate.compare(aE, bE) <= 0 ? aE : bE;
66
- // start/end may carry different calendars when the four arguments' tags don't all match
67
- // (D4: this function accepts mixed calendars since it returns a count, not a date value) —
68
- // Temporal.PlainDate.prototype.until throws outright across two different calendars, even
69
- // though .compare above does not, so both are normalized to iso8601 first. A day is the
70
- // same length in every supported calendar, so this never changes the answer.
71
- return (start.withCalendar("iso8601").until(end.withCalendar("iso8601"), {
72
- largestUnit: "day",
73
- }).days + 1);
69
+ // A day is the same length in every supported calendar, so the day count is measured in
70
+ // iso8601, which never changes the answer.
71
+ return shared.start
72
+ .withCalendar("iso8601")
73
+ .until(shared.end.withCalendar("iso8601"), { largestUnit: "day" }).days;
74
74
  }
75
75
  catch {
76
76
  return null;
@@ -1,18 +1,13 @@
1
1
  /**
2
2
  * Return how many distinct calendar dates two datetime intervals share.
3
3
  *
4
- * - Counts the number of local dates touched by the closed intersection
5
- * `[max(aStart, bStart), min(aEnd, bEnd)]` — inclusive of both endpoints.
6
- * - Adjacent intervals (e.g. `aEnd === bStart`) share one date and count as `1`.
7
- * - Returns `0` when the intervals do not overlap at all (a well-defined answer, not
8
- * invalid input).
4
+ * - Half-open: an interval holds every `t` with `start <= t < end`. The count is the number of
5
+ * calendar days holding at least one moment of the intersection `[max(aStart, bStart),
6
+ * min(aEnd, bEnd))`. An intersection ending exactly at midnight does not reach that day.
7
+ * - Touching intervals (`aEnd === bStart`) share no moment and count `0`; so does an empty interval.
8
+ * - Returns `0` when the intervals share nothing (a well-defined answer, not invalid input).
9
9
  * - Returns `null` if either interval is invalid (`start > end`).
10
10
  * - Returns `null` on invalid input (wrong type, malformed strings).
11
- * - Diverges from date-fns's `getOverlappingDaysInIntervals`, which rounds up elapsed
12
- * 24-hour periods instead of counting calendar dates (its own doc example — Jan 10-20 vs
13
- * Jan 17-21 — returns 3 there, 4 here). To reproduce date-fns's number, compose
14
- * `intervalIntersectionDateTime` with `intervalCountDateTime`:
15
- * `const span = intervalIntersectionDateTime(aStart, aEnd, bStart, bEnd); span ? intervalCountDateTime(span.start, span.end, "day") : 0;`
16
11
  *
17
12
  * @param aStart ISO 8601 datetime string for the first interval start
18
13
  * @param aEnd ISO 8601 datetime string for the first interval end
@@ -21,8 +16,8 @@
21
16
  * @returns number of shared calendar dates, `0` when disjoint, or null on invalid input
22
17
  *
23
18
  * @example intervalOverlappingDaysDateTime("2024-01-01T23:59:00", "2024-01-02T00:01:00", "2024-01-01T23:59:00", "2024-01-02T00:01:00") // 2
24
- * @example intervalOverlappingDaysDateTime("2024-01-01T00:00:00", "2024-01-02T00:00:00", "2024-01-02T00:00:00", "2024-01-03T00:00:00") // 1 (adjacent)
25
- * @example intervalOverlappingDaysDateTime("2024-01-01T00:00:00", "2024-01-02T00:00:00", "2024-01-02T00:00:00.001", "2024-01-03T00:00:00") // 0 (disjoint)
19
+ * @example intervalOverlappingDaysDateTime("2024-01-01T00:00:00", "2024-01-05T00:00:00", "2024-01-03T12:00:00", "2024-01-09T00:00:00") // 2 (01-03 and 01-04; 01-05T00:00 is excluded)
20
+ * @example intervalOverlappingDaysDateTime("2024-01-01T00:00:00", "2024-01-02T00:00:00", "2024-01-02T00:00:00", "2024-01-03T00:00:00") // 0 (touching)
26
21
  * @example intervalOverlappingDaysDateTime("invalid", "2024-06-30T23:59:59", "2024-04-01T00:00:00", "2024-12-31T23:59:59") // null
27
22
  */
28
23
  export declare function intervalOverlappingDaysDateTime(aStart: string, aEnd: string, bStart: string, bEnd: string): number | null;