@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,24 +1,31 @@
1
1
  /**
2
- * Return true when interval B is fully contained within interval A — every instant of B
3
- * falls within A.
2
+ * Return true when the half-open interval B `[bStart, bEnd)` lies within the half-open interval
3
+ * A `[aStart, aEnd)` — every day of B is also in A.
4
4
  *
5
- * - Uses `Temporal.PlainDate.compare` for comparison.
5
+ * - Half-open: an interval holds every `t` with `start <= t < end`. B may start at A's start and
6
+ * end at A's end, because neither end is part of either interval.
7
+ * - B must also overlap A, so an empty B (`bStart === bEnd`) counts only strictly inside A, never
8
+ * at an edge (CORE-6's `clampInterval` clamps it away there).
6
9
  * - Equivalent to 4-argument `intervalContainsDate(aStart, aEnd, bStart, bEnd)`.
10
+ * - Uses `Temporal.PlainDate.compare` for comparison.
7
11
  * - Returns `false` if either interval is invalid (`start > end`).
8
12
  * - Returns `false` on invalid input (wrong type, malformed strings).
9
- * - Accepts GMT calendar-annotated PlainDate strings — E5 (issue #78). Ordering is
13
+ * - Accepts RFC 9557 calendar-annotated PlainDate strings — E5 (issue #78). Ordering is
10
14
  * calendar-independent, so arguments may carry different or no calendar tags (D4).
15
+ * - Compatibility: since 1.16.0 calendar strings are RFC 9557 (ISO digits, `[u-ca=<id>]`, canonical
16
+ * calendar ids); see `isValidCalendarDate`.
11
17
  *
12
18
  * @param aStart ISO 8601 date string for the outer interval start, optionally calendar-annotated
13
- * @param aEnd ISO 8601 date string for the outer interval end, optionally calendar-annotated
19
+ * @param aEnd ISO 8601 date string for the outer interval end (excluded), optionally calendar-annotated
14
20
  * @param bStart ISO 8601 date string for the inner interval start, optionally calendar-annotated
15
- * @param bEnd ISO 8601 date string for the inner interval end, optionally calendar-annotated
16
- * @returns true if B is fully contained in A, or false on invalid input
21
+ * @param bEnd ISO 8601 date string for the inner interval end (excluded), optionally calendar-annotated
22
+ * @returns true if B lies within A, or false on invalid input
17
23
  *
18
24
  * @example intervalEngulfsDate("2024-01-01", "2024-12-31", "2024-06-01", "2024-07-01") // true
19
25
  * @example intervalEngulfsDate("2024-01-01", "2024-12-31", "2024-01-01", "2024-12-31") // true (equal intervals)
20
- * @example intervalEngulfsDate("2024-01-01", "2024-12-31", "2024-06-01", "2024-12-31") // true
26
+ * @example intervalEngulfsDate("2024-01-01", "2024-12-31", "2024-06-01", "2024-12-31") // true (same end)
27
+ * @example intervalEngulfsDate("2024-01-01", "2024-12-31", "2024-06-01", "2024-06-01") // true (empty interval strictly inside)
28
+ * @example intervalEngulfsDate("2024-01-01", "2024-12-31", "2024-12-31", "2024-12-31") // false (empty interval at the edge)
21
29
  * @example intervalEngulfsDate("2024-06-01", "2024-07-01", "2024-01-01", "2024-12-31") // false
22
- * @example intervalEngulfsDate("invalid", "2024-12-31", "2024-06-01", "2024-07-01") // false
23
30
  */
24
31
  export declare function intervalEngulfsDate(aStart: string, aEnd: string, bStart: string, bEnd: string): boolean;
@@ -1,28 +1,36 @@
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 { halfOpenContainsSpan, parseCalendarDateValue } from "../../internal/index.js";
3
4
  import { isValidCalendarDate } from "../validate/index.js";
4
5
  /**
5
- * Return true when interval B is fully contained within interval A — every instant of B
6
- * falls within A.
6
+ * Return true when the half-open interval B `[bStart, bEnd)` lies within the half-open interval
7
+ * A `[aStart, aEnd)` — every day of B is also in A.
7
8
  *
8
- * - Uses `Temporal.PlainDate.compare` for comparison.
9
+ * - Half-open: an interval holds every `t` with `start <= t < end`. B may start at A's start and
10
+ * end at A's end, because neither end is part of either interval.
11
+ * - B must also overlap A, so an empty B (`bStart === bEnd`) counts only strictly inside A, never
12
+ * at an edge (CORE-6's `clampInterval` clamps it away there).
9
13
  * - Equivalent to 4-argument `intervalContainsDate(aStart, aEnd, bStart, bEnd)`.
14
+ * - Uses `Temporal.PlainDate.compare` for comparison.
10
15
  * - Returns `false` if either interval is invalid (`start > end`).
11
16
  * - Returns `false` on invalid input (wrong type, malformed strings).
12
- * - Accepts GMT calendar-annotated PlainDate strings — E5 (issue #78). Ordering is
17
+ * - Accepts RFC 9557 calendar-annotated PlainDate strings — E5 (issue #78). Ordering is
13
18
  * calendar-independent, so arguments may carry different or no calendar tags (D4).
19
+ * - Compatibility: since 1.16.0 calendar strings are RFC 9557 (ISO digits, `[u-ca=<id>]`, canonical
20
+ * calendar ids); see `isValidCalendarDate`.
14
21
  *
15
22
  * @param aStart ISO 8601 date string for the outer interval start, optionally calendar-annotated
16
- * @param aEnd ISO 8601 date string for the outer interval end, optionally calendar-annotated
23
+ * @param aEnd ISO 8601 date string for the outer interval end (excluded), optionally calendar-annotated
17
24
  * @param bStart ISO 8601 date string for the inner interval start, optionally calendar-annotated
18
- * @param bEnd ISO 8601 date string for the inner interval end, optionally calendar-annotated
19
- * @returns true if B is fully contained in A, or false on invalid input
25
+ * @param bEnd ISO 8601 date string for the inner interval end (excluded), optionally calendar-annotated
26
+ * @returns true if B lies within A, or false on invalid input
20
27
  *
21
28
  * @example intervalEngulfsDate("2024-01-01", "2024-12-31", "2024-06-01", "2024-07-01") // true
22
29
  * @example intervalEngulfsDate("2024-01-01", "2024-12-31", "2024-01-01", "2024-12-31") // true (equal intervals)
23
- * @example intervalEngulfsDate("2024-01-01", "2024-12-31", "2024-06-01", "2024-12-31") // true
30
+ * @example intervalEngulfsDate("2024-01-01", "2024-12-31", "2024-06-01", "2024-12-31") // true (same end)
31
+ * @example intervalEngulfsDate("2024-01-01", "2024-12-31", "2024-06-01", "2024-06-01") // true (empty interval strictly inside)
32
+ * @example intervalEngulfsDate("2024-01-01", "2024-12-31", "2024-12-31", "2024-12-31") // false (empty interval at the edge)
24
33
  * @example intervalEngulfsDate("2024-06-01", "2024-07-01", "2024-01-01", "2024-12-31") // false
25
- * @example intervalEngulfsDate("invalid", "2024-12-31", "2024-06-01", "2024-07-01") // false
26
34
  */
27
35
  export function intervalEngulfsDate(aStart, aEnd, bStart, bEnd) {
28
36
  if (typeof aStart !== "string" ||
@@ -48,8 +56,7 @@ export function intervalEngulfsDate(aStart, aEnd, bStart, bEnd) {
48
56
  if (Temporal.PlainDate.compare(bS, bE) > 0) {
49
57
  return false;
50
58
  }
51
- return (Temporal.PlainDate.compare(aS, bS) <= 0 &&
52
- Temporal.PlainDate.compare(bE, aE) <= 0);
59
+ return halfOpenContainsSpan({ start: aS, end: aE }, { start: bS, end: bE }, Temporal.PlainDate.compare);
53
60
  }
54
61
  catch {
55
62
  return false;
@@ -1,22 +1,27 @@
1
1
  /**
2
- * Return true when interval B is fully contained within interval A — every instant of B
3
- * falls within A.
2
+ * Return true when the half-open interval B `[bStart, bEnd)` lies within the half-open interval
3
+ * A `[aStart, aEnd)` — every moment of B is also in A.
4
4
  *
5
- * - Uses `Temporal.PlainDateTime.compare` for comparison.
5
+ * - Half-open: an interval holds every `t` with `start <= t < end`. B may start at A's start and
6
+ * end at A's end, because neither end is part of either interval.
7
+ * - B must also overlap A, so an empty B (`bStart === bEnd`) counts only strictly inside A, never
8
+ * at an edge (CORE-6's `clampInterval` clamps it away there).
6
9
  * - Equivalent to 4-argument `intervalContainsDateTime(aStart, aEnd, bStart, bEnd)`.
10
+ * - Uses `Temporal.PlainDateTime.compare` for comparison.
7
11
  * - Returns `false` if either interval is invalid (`start > end`).
8
12
  * - Returns `false` on invalid input (wrong type, malformed strings).
9
13
  *
10
14
  * @param aStart ISO 8601 datetime string for the outer interval start
11
- * @param aEnd ISO 8601 datetime string for the outer interval end
15
+ * @param aEnd ISO 8601 datetime string for the outer interval end (excluded)
12
16
  * @param bStart ISO 8601 datetime string for the inner interval start
13
- * @param bEnd ISO 8601 datetime string for the inner interval end
14
- * @returns true if B is fully contained in A, or false on invalid input
17
+ * @param bEnd ISO 8601 datetime string for the inner interval end (excluded)
18
+ * @returns true if B lies within A, or false on invalid input
15
19
  *
16
- * @example intervalEngulfsDateTime("2024-01-01T09:00:00", "2024-12-31T17:00:00", "2024-06-01T12:00:00", "2024-07-01T13:00:00") // true
17
- * @example intervalEngulfsDateTime("2024-01-01T09:00:00", "2024-12-31T17:00:00", "2024-01-01T09:00:00", "2024-12-31T17:00:00") // true (equal intervals)
18
- * @example intervalEngulfsDateTime("2024-01-01T09:00:00", "2024-12-31T17:00:00", "2024-01-01T09:00:00", "2024-06-30T12:00:00") // true
19
- * @example intervalEngulfsDateTime("2024-06-01T12:00:00", "2024-07-01T13:00:00", "2024-01-01T09:00:00", "2024-12-31T17:00:00") // false
20
- * @example intervalEngulfsDateTime("invalid", "2024-12-31T17:00:00", "2024-06-01T12:00:00", "2024-07-01T13:00:00") // false
20
+ * @example intervalEngulfsDateTime("2024-01-01T09:00:00", "2024-01-01T17:00:00", "2024-01-01T12:00:00", "2024-01-01T13:00:00") // true
21
+ * @example intervalEngulfsDateTime("2024-01-01T09:00:00", "2024-01-01T17:00:00", "2024-01-01T09:00:00", "2024-01-01T17:00:00") // true (equal intervals)
22
+ * @example intervalEngulfsDateTime("2024-01-01T09:00:00", "2024-01-01T17:00:00", "2024-01-01T12:00:00", "2024-01-01T17:00:00") // true (same end)
23
+ * @example intervalEngulfsDateTime("2024-01-01T09:00:00", "2024-01-01T17:00:00", "2024-01-01T12:00:00", "2024-01-01T12:00:00") // true (empty interval strictly inside)
24
+ * @example intervalEngulfsDateTime("2024-01-01T09:00:00", "2024-01-01T17:00:00", "2024-01-01T17:00:00", "2024-01-01T17:00:00") // false (empty interval at the edge)
25
+ * @example intervalEngulfsDateTime("2024-01-01T12:00:00", "2024-01-01T13:00:00", "2024-01-01T09:00:00", "2024-01-01T17:00:00") // false
21
26
  */
22
27
  export declare function intervalEngulfsDateTime(aStart: string, aEnd: string, bStart: string, bEnd: string): boolean;
@@ -1,25 +1,32 @@
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 { halfOpenContainsSpan } from "../../internal/index.js";
4
+ import { isValidDateTime } from "../validate/index.js";
3
5
  /**
4
- * Return true when interval B is fully contained within interval A — every instant of B
5
- * falls within A.
6
+ * Return true when the half-open interval B `[bStart, bEnd)` lies within the half-open interval
7
+ * A `[aStart, aEnd)` — every moment of B is also in A.
6
8
  *
7
- * - Uses `Temporal.PlainDateTime.compare` for comparison.
9
+ * - Half-open: an interval holds every `t` with `start <= t < end`. B may start at A's start and
10
+ * end at A's end, because neither end is part of either interval.
11
+ * - B must also overlap A, so an empty B (`bStart === bEnd`) counts only strictly inside A, never
12
+ * at an edge (CORE-6's `clampInterval` clamps it away there).
8
13
  * - Equivalent to 4-argument `intervalContainsDateTime(aStart, aEnd, bStart, bEnd)`.
14
+ * - Uses `Temporal.PlainDateTime.compare` for comparison.
9
15
  * - Returns `false` if either interval is invalid (`start > end`).
10
16
  * - Returns `false` on invalid input (wrong type, malformed strings).
11
17
  *
12
18
  * @param aStart ISO 8601 datetime string for the outer interval start
13
- * @param aEnd ISO 8601 datetime string for the outer interval end
19
+ * @param aEnd ISO 8601 datetime string for the outer interval end (excluded)
14
20
  * @param bStart ISO 8601 datetime string for the inner interval start
15
- * @param bEnd ISO 8601 datetime string for the inner interval end
16
- * @returns true if B is fully contained in A, or false on invalid input
21
+ * @param bEnd ISO 8601 datetime string for the inner interval end (excluded)
22
+ * @returns true if B lies within A, or false on invalid input
17
23
  *
18
- * @example intervalEngulfsDateTime("2024-01-01T09:00:00", "2024-12-31T17:00:00", "2024-06-01T12:00:00", "2024-07-01T13:00:00") // true
19
- * @example intervalEngulfsDateTime("2024-01-01T09:00:00", "2024-12-31T17:00:00", "2024-01-01T09:00:00", "2024-12-31T17:00:00") // true (equal intervals)
20
- * @example intervalEngulfsDateTime("2024-01-01T09:00:00", "2024-12-31T17:00:00", "2024-01-01T09:00:00", "2024-06-30T12:00:00") // true
21
- * @example intervalEngulfsDateTime("2024-06-01T12:00:00", "2024-07-01T13:00:00", "2024-01-01T09:00:00", "2024-12-31T17:00:00") // false
22
- * @example intervalEngulfsDateTime("invalid", "2024-12-31T17:00:00", "2024-06-01T12:00:00", "2024-07-01T13:00:00") // false
24
+ * @example intervalEngulfsDateTime("2024-01-01T09:00:00", "2024-01-01T17:00:00", "2024-01-01T12:00:00", "2024-01-01T13:00:00") // true
25
+ * @example intervalEngulfsDateTime("2024-01-01T09:00:00", "2024-01-01T17:00:00", "2024-01-01T09:00:00", "2024-01-01T17:00:00") // true (equal intervals)
26
+ * @example intervalEngulfsDateTime("2024-01-01T09:00:00", "2024-01-01T17:00:00", "2024-01-01T12:00:00", "2024-01-01T17:00:00") // true (same end)
27
+ * @example intervalEngulfsDateTime("2024-01-01T09:00:00", "2024-01-01T17:00:00", "2024-01-01T12:00:00", "2024-01-01T12:00:00") // true (empty interval strictly inside)
28
+ * @example intervalEngulfsDateTime("2024-01-01T09:00:00", "2024-01-01T17:00:00", "2024-01-01T17:00:00", "2024-01-01T17:00:00") // false (empty interval at the edge)
29
+ * @example intervalEngulfsDateTime("2024-01-01T12:00:00", "2024-01-01T13:00:00", "2024-01-01T09:00:00", "2024-01-01T17:00:00") // false
23
30
  */
24
31
  export function intervalEngulfsDateTime(aStart, aEnd, bStart, bEnd) {
25
32
  if (typeof aStart !== "string" ||
@@ -28,10 +35,10 @@ export function intervalEngulfsDateTime(aStart, aEnd, bStart, bEnd) {
28
35
  typeof bEnd !== "string") {
29
36
  return false;
30
37
  }
31
- if (!plainDateTime.test(aStart) ||
32
- !plainDateTime.test(aEnd) ||
33
- !plainDateTime.test(bStart) ||
34
- !plainDateTime.test(bEnd)) {
38
+ if (!isValidDateTime(aStart) ||
39
+ !isValidDateTime(aEnd) ||
40
+ !isValidDateTime(bStart) ||
41
+ !isValidDateTime(bEnd)) {
35
42
  return false;
36
43
  }
37
44
  try {
@@ -45,8 +52,7 @@ export function intervalEngulfsDateTime(aStart, aEnd, bStart, bEnd) {
45
52
  if (Temporal.PlainDateTime.compare(bS, bE) > 0) {
46
53
  return false;
47
54
  }
48
- return (Temporal.PlainDateTime.compare(aS, bS) <= 0 &&
49
- Temporal.PlainDateTime.compare(bE, aE) <= 0);
55
+ return halfOpenContainsSpan({ start: aS, end: aE }, { start: bS, end: bE }, Temporal.PlainDateTime.compare);
50
56
  }
51
57
  catch {
52
58
  return false;
@@ -1,22 +1,32 @@
1
1
  /**
2
- * Return true when interval B is fully contained within interval A — every instant of B
3
- * falls within A.
2
+ * Return true when the half-open interval B `[bStart, bEnd)` lies within the half-open interval
3
+ * A `[aStart, aEnd)` — every clock time of B is also in A.
4
4
  *
5
- * - Uses `Temporal.PlainTime.compare` for comparison.
5
+ * - Half-open: an interval holds every `t` with `start <= t < end`. B may start at A's start and
6
+ * end at A's end, because neither end is part of either interval.
7
+ * - B must also overlap A, so an empty B (`bStart === bEnd`) counts only strictly inside A, never
8
+ * at an edge (CORE-6's `clampInterval` clamps it away there).
6
9
  * - Equivalent to 4-argument `intervalContainsTime(aStart, aEnd, bStart, bEnd)`.
10
+ * - PlainTime has no day rollover: an interval never wraps past midnight. And because `end` is
11
+ * excluded, no interval *contains* `23:59:59.999999999` — containing it would need an `end`
12
+ * greater than it, and no PlainTime is. An interval may still *have* it as its `end`:
13
+ * `intervalContainsTime("09:00:00", "23:59:59.999999999", "23:00:00")` is `true`, while
14
+ * `intervalContainsTime("09:00:00", "23:59:59.999999999", "23:59:59.999999999")` is `false`.
15
+ * - Uses `Temporal.PlainTime.compare` for comparison.
7
16
  * - Returns `false` if either interval is invalid (`start > end`).
8
17
  * - Returns `false` on invalid input (wrong type, malformed strings).
9
18
  *
10
19
  * @param aStart ISO 8601 time string for the outer interval start
11
- * @param aEnd ISO 8601 time string for the outer interval end
20
+ * @param aEnd ISO 8601 time string for the outer interval end (excluded)
12
21
  * @param bStart ISO 8601 time string for the inner interval start
13
- * @param bEnd ISO 8601 time string for the inner interval end
14
- * @returns true if B is fully contained in A, or false on invalid input
22
+ * @param bEnd ISO 8601 time string for the inner interval end (excluded)
23
+ * @returns true if B lies within A, or false on invalid input
15
24
  *
16
25
  * @example intervalEngulfsTime("09:00:00", "17:00:00", "12:00:00", "13:00:00") // true
17
26
  * @example intervalEngulfsTime("09:00:00", "17:00:00", "09:00:00", "17:00:00") // true (equal intervals)
18
- * @example intervalEngulfsTime("09:00:00", "17:00:00", "09:00:00", "12:00:00") // true
27
+ * @example intervalEngulfsTime("09:00:00", "17:00:00", "12:00:00", "17:00:00") // true (same end)
28
+ * @example intervalEngulfsTime("09:00:00", "17:00:00", "12:00:00", "12:00:00") // true (empty interval strictly inside)
29
+ * @example intervalEngulfsTime("09:00:00", "17:00:00", "17:00:00", "17:00:00") // false (empty interval at the edge)
19
30
  * @example intervalEngulfsTime("12:00:00", "13:00:00", "09:00:00", "17:00:00") // false
20
- * @example intervalEngulfsTime("invalid", "17:00:00", "12:00:00", "13:00:00") // false
21
31
  */
22
32
  export declare function intervalEngulfsTime(aStart: string, aEnd: string, bStart: string, bEnd: string): boolean;
@@ -1,25 +1,37 @@
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 { halfOpenContainsSpan } from "../../internal/index.js";
4
+ import { isValidTime } from "../validate/index.js";
3
5
  /**
4
- * Return true when interval B is fully contained within interval A — every instant of B
5
- * falls within A.
6
+ * Return true when the half-open interval B `[bStart, bEnd)` lies within the half-open interval
7
+ * A `[aStart, aEnd)` — every clock time of B is also in A.
6
8
  *
7
- * - Uses `Temporal.PlainTime.compare` for comparison.
9
+ * - Half-open: an interval holds every `t` with `start <= t < end`. B may start at A's start and
10
+ * end at A's end, because neither end is part of either interval.
11
+ * - B must also overlap A, so an empty B (`bStart === bEnd`) counts only strictly inside A, never
12
+ * at an edge (CORE-6's `clampInterval` clamps it away there).
8
13
  * - Equivalent to 4-argument `intervalContainsTime(aStart, aEnd, bStart, bEnd)`.
14
+ * - PlainTime has no day rollover: an interval never wraps past midnight. And because `end` is
15
+ * excluded, no interval *contains* `23:59:59.999999999` — containing it would need an `end`
16
+ * greater than it, and no PlainTime is. An interval may still *have* it as its `end`:
17
+ * `intervalContainsTime("09:00:00", "23:59:59.999999999", "23:00:00")` is `true`, while
18
+ * `intervalContainsTime("09:00:00", "23:59:59.999999999", "23:59:59.999999999")` is `false`.
19
+ * - Uses `Temporal.PlainTime.compare` for comparison.
9
20
  * - Returns `false` if either interval is invalid (`start > end`).
10
21
  * - Returns `false` on invalid input (wrong type, malformed strings).
11
22
  *
12
23
  * @param aStart ISO 8601 time string for the outer interval start
13
- * @param aEnd ISO 8601 time string for the outer interval end
24
+ * @param aEnd ISO 8601 time string for the outer interval end (excluded)
14
25
  * @param bStart ISO 8601 time string for the inner interval start
15
- * @param bEnd ISO 8601 time string for the inner interval end
16
- * @returns true if B is fully contained in A, or false on invalid input
26
+ * @param bEnd ISO 8601 time string for the inner interval end (excluded)
27
+ * @returns true if B lies within A, or false on invalid input
17
28
  *
18
29
  * @example intervalEngulfsTime("09:00:00", "17:00:00", "12:00:00", "13:00:00") // true
19
30
  * @example intervalEngulfsTime("09:00:00", "17:00:00", "09:00:00", "17:00:00") // true (equal intervals)
20
- * @example intervalEngulfsTime("09:00:00", "17:00:00", "09:00:00", "12:00:00") // true
31
+ * @example intervalEngulfsTime("09:00:00", "17:00:00", "12:00:00", "17:00:00") // true (same end)
32
+ * @example intervalEngulfsTime("09:00:00", "17:00:00", "12:00:00", "12:00:00") // true (empty interval strictly inside)
33
+ * @example intervalEngulfsTime("09:00:00", "17:00:00", "17:00:00", "17:00:00") // false (empty interval at the edge)
21
34
  * @example intervalEngulfsTime("12:00:00", "13:00:00", "09:00:00", "17:00:00") // false
22
- * @example intervalEngulfsTime("invalid", "17:00:00", "12:00:00", "13:00:00") // false
23
35
  */
24
36
  export function intervalEngulfsTime(aStart, aEnd, bStart, bEnd) {
25
37
  if (typeof aStart !== "string" ||
@@ -28,10 +40,10 @@ export function intervalEngulfsTime(aStart, aEnd, bStart, bEnd) {
28
40
  typeof bEnd !== "string") {
29
41
  return false;
30
42
  }
31
- if (!plainTime.test(aStart) ||
32
- !plainTime.test(aEnd) ||
33
- !plainTime.test(bStart) ||
34
- !plainTime.test(bEnd)) {
43
+ if (!isValidTime(aStart) ||
44
+ !isValidTime(aEnd) ||
45
+ !isValidTime(bStart) ||
46
+ !isValidTime(bEnd)) {
35
47
  return false;
36
48
  }
37
49
  try {
@@ -45,8 +57,7 @@ export function intervalEngulfsTime(aStart, aEnd, bStart, bEnd) {
45
57
  if (Temporal.PlainTime.compare(bS, bE) > 0) {
46
58
  return false;
47
59
  }
48
- return (Temporal.PlainTime.compare(aS, bS) <= 0 &&
49
- Temporal.PlainTime.compare(bE, aE) <= 0);
60
+ return halfOpenContainsSpan({ start: aS, end: aE }, { start: bS, end: bE }, Temporal.PlainTime.compare);
50
61
  }
51
62
  catch {
52
63
  return false;
@@ -4,13 +4,14 @@ import type { Overflow } from "../../types/index.js";
4
4
  *
5
5
  * - `anchor: "start"` treats `value` as the interval start and adds `duration` to get the end.
6
6
  * - `anchor: "end"` treats `value` as the interval end and subtracts `duration` to get the start.
7
- * - Uses `Temporal.PlainDate.prototype.add`/`.subtract`, so calendar units (years/months/weeks)
8
- * resolve against `value` itself — no separate `relativeTo` is needed, unlike `addDuration`.
7
+ * - Uses `Temporal.PlainDate.prototype.add`/`.subtract` semantics, so calendar units
8
+ * (years/months/weeks) resolve against `value` itself — no separate `relativeTo` is needed,
9
+ * unlike `addDuration`. Time units count as whole 24-hour days, as Temporal's do.
9
10
  * - A negative `duration` (e.g. `"-P1D"`) can invert the computed span; returns null when that
10
11
  * happens, mirroring `intervalIntersectionDate`'s `start > end` rejection.
11
12
  * - `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. adding 1 month
12
13
  * to Jan 31: "constrain" clamps to Feb 29/28, "reject" returns null.
13
- * - Accepts a GMT calendar-annotated PlainDate string — E5 (issue #78). The computed endpoint
14
+ * - Accepts a RFC 9557 calendar-annotated PlainDate string — E5 (issue #78). The computed endpoint
14
15
  * is resolved in `value`'s own calendar (no `relativeTo`/pair-matching question, since there
15
16
  * is only one calendar-tagged input) and both endpoints are re-formatted in that calendar,
16
17
  * re-derived from the actual result rather than copied from `value`'s tag (a leap-month or
@@ -29,7 +30,7 @@ import type { Overflow } from "../../types/index.js";
29
30
  * @example intervalFromDurationDate("2024-01-31", "P1M", "start", { overflow: "reject" }) // null
30
31
  * @example intervalFromDurationDate("2024-01-05", "-P10D", "start") // null (inverted span)
31
32
  * @example intervalFromDurationDate("invalid", "P1M", "start") // null
32
- * @example intervalFromDurationDate("5784-06-15[u-ca=hebrew]", "P1M", "start") // { start: "5784-06-15[u-ca=hebrew]", end: "5784-07-15[u-ca=hebrew]" } (Adar I -> Adar)
33
+ * @example intervalFromDurationDate("2024-02-24[u-ca=hebrew]", "P1M", "start") // { start: "2024-02-24[u-ca=hebrew]", end: "2024-03-25[u-ca=hebrew]" } (Adar I -> Adar)
33
34
  */
34
35
  export declare function intervalFromDurationDate(value: string, duration: string, anchor: "start" | "end", options?: {
35
36
  overflow?: Overflow;
@@ -1,19 +1,21 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { isValidDuration } from "../../duration/validate/index.js";
3
- import { calendarSystemOfDateValue, formatDateInCalendar, parseCalendarDateValue, resolveOverflow, } from "../../internal/index.js";
3
+ import { calendarSystemOfDateValue, formatDateInCalendar, parseCalendarDateValue, plainDateAdd, resolveOverflow, } from "../../internal/index.js";
4
4
  import { isValidCalendarDate } from "../validate/index.js";
5
+ import { isOptionsArgument } from "../../internal/isObject.js";
5
6
  /**
6
7
  * Construct a date interval from a single point plus an ISO 8601 duration, anchored at either end.
7
8
  *
8
9
  * - `anchor: "start"` treats `value` as the interval start and adds `duration` to get the end.
9
10
  * - `anchor: "end"` treats `value` as the interval end and subtracts `duration` to get the start.
10
- * - Uses `Temporal.PlainDate.prototype.add`/`.subtract`, so calendar units (years/months/weeks)
11
- * resolve against `value` itself — no separate `relativeTo` is needed, unlike `addDuration`.
11
+ * - Uses `Temporal.PlainDate.prototype.add`/`.subtract` semantics, so calendar units
12
+ * (years/months/weeks) resolve against `value` itself — no separate `relativeTo` is needed,
13
+ * unlike `addDuration`. Time units count as whole 24-hour days, as Temporal's do.
12
14
  * - A negative `duration` (e.g. `"-P1D"`) can invert the computed span; returns null when that
13
15
  * happens, mirroring `intervalIntersectionDate`'s `start > end` rejection.
14
16
  * - `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. adding 1 month
15
17
  * to Jan 31: "constrain" clamps to Feb 29/28, "reject" returns null.
16
- * - Accepts a GMT calendar-annotated PlainDate string — E5 (issue #78). The computed endpoint
18
+ * - Accepts a RFC 9557 calendar-annotated PlainDate string — E5 (issue #78). The computed endpoint
17
19
  * is resolved in `value`'s own calendar (no `relativeTo`/pair-matching question, since there
18
20
  * is only one calendar-tagged input) and both endpoints are re-formatted in that calendar,
19
21
  * re-derived from the actual result rather than copied from `value`'s tag (a leap-month or
@@ -32,9 +34,12 @@ import { isValidCalendarDate } from "../validate/index.js";
32
34
  * @example intervalFromDurationDate("2024-01-31", "P1M", "start", { overflow: "reject" }) // null
33
35
  * @example intervalFromDurationDate("2024-01-05", "-P10D", "start") // null (inverted span)
34
36
  * @example intervalFromDurationDate("invalid", "P1M", "start") // null
35
- * @example intervalFromDurationDate("5784-06-15[u-ca=hebrew]", "P1M", "start") // { start: "5784-06-15[u-ca=hebrew]", end: "5784-07-15[u-ca=hebrew]" } (Adar I -> Adar)
37
+ * @example intervalFromDurationDate("2024-02-24[u-ca=hebrew]", "P1M", "start") // { start: "2024-02-24[u-ca=hebrew]", end: "2024-03-25[u-ca=hebrew]" } (Adar I -> Adar)
36
38
  */
37
39
  export function intervalFromDurationDate(value, duration, anchor, options) {
40
+ if (!isOptionsArgument(options)) {
41
+ return null;
42
+ }
38
43
  if (typeof value !== "string" || !isValidCalendarDate(value)) {
39
44
  return null;
40
45
  }
@@ -52,9 +57,7 @@ export function intervalFromDurationDate(value, duration, anchor, options) {
52
57
  const point = parseCalendarDateValue(value);
53
58
  const dur = Temporal.Duration.from(duration);
54
59
  const overflow = resolveOverflow(options?.overflow);
55
- const other = anchor === "start"
56
- ? point.add(dur, { overflow })
57
- : point.subtract(dur, { overflow });
60
+ const other = plainDateAdd(point, anchor === "start" ? dur : dur.negated(), overflow);
58
61
  const start = anchor === "start" ? point : other;
59
62
  const end = anchor === "start" ? other : point;
60
63
  if (Temporal.PlainDate.compare(start, end) > 0) {
@@ -2,6 +2,7 @@ import { Temporal } from "@js-temporal/polyfill";
2
2
  import { isValidDuration } from "../../duration/validate/index.js";
3
3
  import { resolveOverflow } from "../../internal/index.js";
4
4
  import { isValidDateTime } from "../validate/index.js";
5
+ import { isOptionsArgument } from "../../internal/isObject.js";
5
6
  /**
6
7
  * Construct a datetime interval from a single point plus an ISO 8601 duration, anchored at either end.
7
8
  *
@@ -29,6 +30,9 @@ import { isValidDateTime } from "../validate/index.js";
29
30
  * @example intervalFromDurationDateTime("invalid", "P1D", "start") // null
30
31
  */
31
32
  export function intervalFromDurationDateTime(value, duration, anchor, options) {
33
+ if (!isOptionsArgument(options)) {
34
+ return null;
35
+ }
32
36
  if (typeof value !== "string" || !isValidDateTime(value)) {
33
37
  return null;
34
38
  }
@@ -1,4 +1,3 @@
1
- import type { Overflow } from "../../types/index.js";
2
1
  /**
3
2
  * Construct a time interval from a single point plus an ISO 8601 duration, anchored at either end.
4
3
  *
@@ -8,31 +7,30 @@ import type { Overflow } from "../../types/index.js";
8
7
  * cannot be resolved against a bare clock time — there is no `relativeTo` to supply (mirrors
9
8
  * A2/A3's documented `relativeTo` gap). `Temporal.PlainTime.prototype.add` silently discards
10
9
  * those fields rather than throwing, so this is checked explicitly and returns null.
11
- * - A `duration` that wraps past midnight (e.g. `"23:00:00"` + `"PT2H"`) produces a span PlainTime
12
- * can't represent (no date component for the day rollover) and returns null, same as any other
13
- * inverted span.
14
- * - `overflow` ("constrain" (default) | "reject") is accepted for API consistency with sibling
15
- * `intervalFromDuration*` functions, but `PlainTime` arithmetic always wraps around the clock
16
- * rather than producing an out-of-range value, so it has no observable effect here (mirrors
17
- * `addTime`'s own documented no-op).
10
+ * - The span must fit inside one day in the anchored direction. A `duration` that crosses
11
+ * midnight (e.g. `"23:00:00"` + `"PT2H"`), any `duration` of 24 hours or more (e.g. `"PT24H"`,
12
+ * even though the wrapped clock time looks valid), and any negative `duration` return null —
13
+ * PlainTime has no date component for the day rollover. The span is measured exactly in
14
+ * nanoseconds, not by comparing wrapped clock times.
15
+ * - There is no options argument (its only member, `overflow`, was removed in 1.16.0): Temporal
16
+ * `PlainTime#add`/`#subtract` take no options.
18
17
  * - Returns null on invalid input (unparseable `value`, invalid `duration`, or an `anchor` other
19
18
  * than `"start"`/`"end"`).
20
19
  *
21
20
  * @param value ISO PlainTime string
22
21
  * @param duration ISO 8601 duration string
23
22
  * @param anchor "start" | "end" — which endpoint `value` represents
24
- * @param options optional: overflow ("constrain" | "reject" — accepted but inert, see above)
25
23
  * @returns `{ start, end }` with the constructed span, or null on invalid input
26
24
  *
27
25
  * @example intervalFromDurationTime("12:00:00", "PT1H", "start") // { start: "12:00:00", end: "13:00:00" }
28
26
  * @example intervalFromDurationTime("13:00:00", "PT1H", "end") // { start: "12:00:00", end: "13:00:00" }
29
27
  * @example intervalFromDurationTime("12:00:00", "P1D", "start") // null (date units need relativeTo, unsupported)
30
28
  * @example intervalFromDurationTime("23:00:00", "PT2H", "start") // null (wraps past midnight, inverted span)
29
+ * @example intervalFromDurationTime("10:00:00", "PT24H", "start") // null (24 hours or more never fits one day)
30
+ * @example intervalFromDurationTime("12:00:00", "-PT23H", "start") // null (negative duration)
31
31
  * @example intervalFromDurationTime("invalid", "PT1H", "start") // null
32
32
  */
33
- export declare function intervalFromDurationTime(value: string, duration: string, anchor: "start" | "end", options?: {
34
- overflow?: Overflow;
35
- }): {
33
+ export declare function intervalFromDurationTime(value: string, duration: string, anchor: "start" | "end"): {
36
34
  start: string;
37
35
  end: string;
38
36
  } | null;
@@ -1,7 +1,15 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { isValidDuration } from "../../duration/validate/index.js";
3
- import { resolveOverflow } from "../../internal/index.js";
4
3
  import { isValidTime } from "../validate/index.js";
4
+ const NANOSECONDS_PER_DAY = 86400000000000n;
5
+ function clockNanoseconds(hours, minutes, seconds, milliseconds, microseconds, nanoseconds) {
6
+ return (BigInt(hours) * 3600000000000n +
7
+ BigInt(minutes) * 60000000000n +
8
+ BigInt(seconds) * 1000000000n +
9
+ BigInt(milliseconds) * 1000000n +
10
+ BigInt(microseconds) * 1000n +
11
+ BigInt(nanoseconds));
12
+ }
5
13
  /**
6
14
  * Construct a time interval from a single point plus an ISO 8601 duration, anchored at either end.
7
15
  *
@@ -11,29 +19,30 @@ import { isValidTime } from "../validate/index.js";
11
19
  * cannot be resolved against a bare clock time — there is no `relativeTo` to supply (mirrors
12
20
  * A2/A3's documented `relativeTo` gap). `Temporal.PlainTime.prototype.add` silently discards
13
21
  * those fields rather than throwing, so this is checked explicitly and returns null.
14
- * - A `duration` that wraps past midnight (e.g. `"23:00:00"` + `"PT2H"`) produces a span PlainTime
15
- * can't represent (no date component for the day rollover) and returns null, same as any other
16
- * inverted span.
17
- * - `overflow` ("constrain" (default) | "reject") is accepted for API consistency with sibling
18
- * `intervalFromDuration*` functions, but `PlainTime` arithmetic always wraps around the clock
19
- * rather than producing an out-of-range value, so it has no observable effect here (mirrors
20
- * `addTime`'s own documented no-op).
22
+ * - The span must fit inside one day in the anchored direction. A `duration` that crosses
23
+ * midnight (e.g. `"23:00:00"` + `"PT2H"`), any `duration` of 24 hours or more (e.g. `"PT24H"`,
24
+ * even though the wrapped clock time looks valid), and any negative `duration` return null —
25
+ * PlainTime has no date component for the day rollover. The span is measured exactly in
26
+ * nanoseconds, not by comparing wrapped clock times.
27
+ * - There is no options argument (its only member, `overflow`, was removed in 1.16.0): Temporal
28
+ * `PlainTime#add`/`#subtract` take no options.
21
29
  * - Returns null on invalid input (unparseable `value`, invalid `duration`, or an `anchor` other
22
30
  * than `"start"`/`"end"`).
23
31
  *
24
32
  * @param value ISO PlainTime string
25
33
  * @param duration ISO 8601 duration string
26
34
  * @param anchor "start" | "end" — which endpoint `value` represents
27
- * @param options optional: overflow ("constrain" | "reject" — accepted but inert, see above)
28
35
  * @returns `{ start, end }` with the constructed span, or null on invalid input
29
36
  *
30
37
  * @example intervalFromDurationTime("12:00:00", "PT1H", "start") // { start: "12:00:00", end: "13:00:00" }
31
38
  * @example intervalFromDurationTime("13:00:00", "PT1H", "end") // { start: "12:00:00", end: "13:00:00" }
32
39
  * @example intervalFromDurationTime("12:00:00", "P1D", "start") // null (date units need relativeTo, unsupported)
33
40
  * @example intervalFromDurationTime("23:00:00", "PT2H", "start") // null (wraps past midnight, inverted span)
41
+ * @example intervalFromDurationTime("10:00:00", "PT24H", "start") // null (24 hours or more never fits one day)
42
+ * @example intervalFromDurationTime("12:00:00", "-PT23H", "start") // null (negative duration)
34
43
  * @example intervalFromDurationTime("invalid", "PT1H", "start") // null
35
44
  */
36
- export function intervalFromDurationTime(value, duration, anchor, options) {
45
+ export function intervalFromDurationTime(value, duration, anchor) {
37
46
  if (typeof value !== "string" || !isValidTime(value)) {
38
47
  return null;
39
48
  }
@@ -52,15 +61,17 @@ export function intervalFromDurationTime(value, duration, anchor, options) {
52
61
  return null;
53
62
  }
54
63
  const point = Temporal.PlainTime.from(value);
55
- const overflow = resolveOverflow(options?.overflow);
56
- const other = anchor === "start"
57
- ? point.add(dur, { overflow })
58
- : point.subtract(dur, { overflow });
59
- const start = anchor === "start" ? point : other;
60
- const end = anchor === "start" ? other : point;
61
- if (Temporal.PlainTime.compare(start, end) > 0) {
64
+ // Measure the span exactly: PlainTime.add wraps modulo 24 h, so comparing the wrapped
65
+ // endpoints misses a span of 24 h or more and a negative duration that wraps.
66
+ const spanNs = clockNanoseconds(dur.hours, dur.minutes, dur.seconds, dur.milliseconds, dur.microseconds, dur.nanoseconds);
67
+ const pointNs = clockNanoseconds(point.hour, point.minute, point.second, point.millisecond, point.microsecond, point.nanosecond);
68
+ const otherNs = anchor === "start" ? pointNs + spanNs : pointNs - spanNs;
69
+ if (spanNs < 0n || otherNs < 0n || otherNs >= NANOSECONDS_PER_DAY) {
62
70
  return null;
63
71
  }
72
+ const other = anchor === "start" ? point.add(dur) : point.subtract(dur);
73
+ const start = anchor === "start" ? point : other;
74
+ const end = anchor === "start" ? other : point;
64
75
  return { start: start.toString(), end: end.toString() };
65
76
  }
66
77
  catch {
@@ -2,10 +2,15 @@
2
2
  * Return the overlapping span of two date intervals, or null when they do not overlap.
3
3
  *
4
4
  * - Uses `Temporal.PlainDate.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 day 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
- * - Accepts GMT calendar-annotated PlainDate strings — E5 (issue #78). Since the result is a
13
+ * - Accepts RFC 9557 calendar-annotated PlainDate strings — E5 (issue #78). Since the result is a
9
14
  * date *value*, all four arguments must carry the *same* calendar tag (or all be bare ISO);
10
15
  * a mismatch returns `null` (E5 decision of record D4). The output's tag is re-derived from
11
16
  * the intersection span, never copied from an input.
@@ -17,8 +22,8 @@
17
22
  * @returns `{ start, end }` with the overlapping span, or null on invalid input / no overlap / mismatched calendars
18
23
  *
19
24
  * @example intervalIntersectionDate("2024-01-01", "2024-06-30", "2024-04-01", "2024-12-31") // { start: "2024-04-01", end: "2024-06-30" }
20
- * @example intervalIntersectionDate("2024-01-01", "2024-06-30", "2024-06-30", "2024-12-31") // { start: "2024-06-30", end: "2024-06-30" }
21
- * @example intervalIntersectionDate("2024-01-01", "2024-06-30", "2024-07-01", "2024-12-31") // null
25
+ * @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)
26
+ * @example intervalIntersectionDate("2024-01-01", "2024-06-30", "2024-06-30", "2024-12-31") // null (touching)
22
27
  * @example intervalIntersectionDate("2024-01-01", "2024-06-30", "2024-02-01", "2024-03-01") // { start: "2024-02-01", end: "2024-03-01" }
23
28
  * @example intervalIntersectionDate("invalid", "2024-06-30", "2024-04-01", "2024-12-31") // null
24
29
  */