@northguild/gmt 1.14.2 → 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 (1163) hide show
  1. package/README.md +887 -277
  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 +6 -0
  54. package/dist/index.js +6 -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/internal/startOrEndOfUtc.d.ts +27 -0
  192. package/dist/{utc/calculate → internal}/startOrEndOfUtc.js +45 -24
  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 +23 -10
  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/index.d.ts +2 -1
  332. package/dist/plain/calculate/index.js +2 -1
  333. package/dist/plain/calculate/maxDate.js +19 -12
  334. package/dist/plain/calculate/maxDateTime.js +19 -12
  335. package/dist/plain/calculate/maxTime.js +19 -12
  336. package/dist/plain/calculate/minDate.js +19 -12
  337. package/dist/plain/calculate/minDateTime.js +19 -12
  338. package/dist/plain/calculate/minTime.js +19 -12
  339. package/dist/plain/calculate/nextWeekday.js +5 -0
  340. package/dist/plain/calculate/previousWeekday.js +5 -0
  341. package/dist/plain/calculate/roundDate.d.ts +23 -5
  342. package/dist/plain/calculate/roundDate.js +88 -46
  343. package/dist/plain/calculate/roundDateTime.d.ts +27 -3
  344. package/dist/plain/calculate/roundDateTime.js +128 -69
  345. package/dist/plain/calculate/roundTime.d.ts +8 -1
  346. package/dist/plain/calculate/roundTime.js +32 -17
  347. package/dist/plain/calculate/setDate.js +4 -0
  348. package/dist/plain/calculate/setDateTime.js +4 -0
  349. package/dist/plain/calculate/setTime.d.ts +1 -1
  350. package/dist/plain/calculate/setTime.js +5 -1
  351. package/dist/plain/calculate/sortDateTimes.js +17 -10
  352. package/dist/plain/calculate/sortDates.js +17 -10
  353. package/dist/plain/calculate/sortTimes.js +17 -10
  354. package/dist/plain/calculate/startOfDate.d.ts +7 -2
  355. package/dist/plain/calculate/startOfDate.js +52 -27
  356. package/dist/plain/calculate/startOfDateTime.d.ts +5 -2
  357. package/dist/plain/calculate/startOfDateTime.js +81 -62
  358. package/dist/plain/calculate/startOfQuarterForDateTime.d.ts +2 -0
  359. package/dist/plain/calculate/startOfQuarterForDateTime.js +12 -1
  360. package/dist/plain/calculate/startOfTime.d.ts +15 -2
  361. package/dist/plain/calculate/startOfTime.js +33 -37
  362. package/dist/plain/calculate/subtractBusinessDays.d.ts +25 -10
  363. package/dist/plain/calculate/subtractBusinessDays.js +28 -22
  364. package/dist/plain/calculate/subtractDate.d.ts +8 -7
  365. package/dist/plain/calculate/subtractDate.js +35 -21
  366. package/dist/plain/calculate/subtractDateTime.js +24 -10
  367. package/dist/plain/calculate/subtractTime.d.ts +5 -8
  368. package/dist/plain/calculate/subtractTime.js +23 -16
  369. package/dist/plain/calculate/{weekOfYear.d.ts → weekOfYearForDate.d.ts} +0 -14
  370. package/dist/plain/calculate/weekOfYearForDate.js +28 -0
  371. package/dist/plain/calculate/weekOfYearForDateTime.d.ts +14 -0
  372. package/dist/plain/calculate/{weekOfYear.js → weekOfYearForDateTime.js} +1 -27
  373. package/dist/plain/chop/index.d.ts +0 -1
  374. package/dist/plain/chop/index.js +0 -1
  375. package/dist/plain/compare/areDateTimesEqualBy.d.ts +10 -5
  376. package/dist/plain/compare/areDateTimesEqualBy.js +35 -10
  377. package/dist/plain/compare/areDatesEqualBy.d.ts +10 -3
  378. package/dist/plain/compare/areDatesEqualBy.js +41 -14
  379. package/dist/plain/compare/isBetweenDate.js +32 -16
  380. package/dist/plain/compare/isBetweenDateTime.js +34 -18
  381. package/dist/plain/compare/isBetweenTime.js +32 -16
  382. package/dist/plain/compare/isBusinessDay.d.ts +25 -11
  383. package/dist/plain/compare/isBusinessDay.js +36 -15
  384. package/dist/plain/compare/isThisUnit.d.ts +13 -4
  385. package/dist/plain/compare/isThisUnit.js +33 -13
  386. package/dist/plain/compare/isWeekend.d.ts +8 -4
  387. package/dist/plain/compare/isWeekend.js +7 -3
  388. package/dist/plain/convert/convertDateToCalendar.d.ts +34 -33
  389. package/dist/plain/convert/convertDateToCalendar.js +41 -40
  390. package/dist/plain/format/formatCalendar.d.ts +14 -8
  391. package/dist/plain/format/formatCalendar.js +47 -25
  392. package/dist/plain/format/formatDate.d.ts +22 -4
  393. package/dist/plain/format/formatDate.js +37 -5
  394. package/dist/plain/format/formatDateRange.d.ts +18 -4
  395. package/dist/plain/format/formatDateRange.js +29 -5
  396. package/dist/plain/format/formatDateTime.d.ts +23 -4
  397. package/dist/plain/format/formatDateTime.js +31 -5
  398. package/dist/plain/format/formatDateTimeRange.d.ts +21 -4
  399. package/dist/plain/format/formatDateTimeRange.js +29 -5
  400. package/dist/plain/format/formatDateTimeToParts.d.ts +33 -6
  401. package/dist/plain/format/formatDateTimeToParts.js +40 -14
  402. package/dist/plain/format/formatDateToParts.d.ts +25 -3
  403. package/dist/plain/format/formatDateToParts.js +36 -11
  404. package/dist/plain/format/formatRelativeDate.d.ts +10 -17
  405. package/dist/plain/format/formatRelativeDate.js +39 -24
  406. package/dist/plain/format/formatRelativeDateTime.d.ts +18 -20
  407. package/dist/plain/format/formatRelativeDateTime.js +35 -33
  408. package/dist/plain/format/formatRelativeTime.d.ts +11 -18
  409. package/dist/plain/format/formatRelativeTime.js +36 -21
  410. package/dist/plain/format/formatSql.d.ts +15 -10
  411. package/dist/plain/format/formatSql.js +20 -11
  412. package/dist/plain/format/formatTime.d.ts +19 -4
  413. package/dist/plain/format/formatTime.js +32 -5
  414. package/dist/plain/get/getNowUnit.d.ts +5 -3
  415. package/dist/plain/get/getNowUnit.js +14 -29
  416. package/dist/plain/index.js +1 -1
  417. package/dist/plain/interval/intervalAbutsDate.d.ts +12 -7
  418. package/dist/plain/interval/intervalAbutsDate.js +15 -19
  419. package/dist/plain/interval/intervalAbutsDateTime.d.ts +9 -7
  420. package/dist/plain/interval/intervalAbutsDateTime.js +17 -23
  421. package/dist/plain/interval/intervalAbutsTime.d.ts +11 -5
  422. package/dist/plain/interval/intervalAbutsTime.js +19 -21
  423. package/dist/plain/interval/intervalContainsDate.d.ts +17 -10
  424. package/dist/plain/interval/intervalContainsDate.js +20 -15
  425. package/dist/plain/interval/intervalContainsDateTime.d.ts +16 -11
  426. package/dist/plain/interval/intervalContainsDateTime.js +24 -20
  427. package/dist/plain/interval/intervalContainsTime.d.ts +20 -10
  428. package/dist/plain/interval/intervalContainsTime.js +28 -19
  429. package/dist/plain/interval/intervalCountDate.d.ts +13 -8
  430. package/dist/plain/interval/intervalCountDate.js +46 -14
  431. package/dist/plain/interval/intervalCountDateTime.d.ts +6 -4
  432. package/dist/plain/interval/intervalCountDateTime.js +63 -18
  433. package/dist/plain/interval/intervalCountTime.d.ts +3 -4
  434. package/dist/plain/interval/intervalCountTime.js +9 -9
  435. package/dist/plain/interval/intervalDifferenceDate.d.ts +13 -6
  436. package/dist/plain/interval/intervalDifferenceDate.js +19 -32
  437. package/dist/plain/interval/intervalDifferenceDateTime.d.ts +10 -4
  438. package/dist/plain/interval/intervalDifferenceDateTime.js +21 -27
  439. package/dist/plain/interval/intervalDifferenceTime.d.ts +11 -4
  440. package/dist/plain/interval/intervalDifferenceTime.js +22 -27
  441. package/dist/plain/interval/intervalDivideEquallyDate.d.ts +16 -4
  442. package/dist/plain/interval/intervalDivideEquallyDate.js +57 -33
  443. package/dist/plain/interval/intervalDivideEquallyDateTime.d.ts +16 -4
  444. package/dist/plain/interval/intervalDivideEquallyDateTime.js +67 -31
  445. package/dist/plain/interval/intervalDivideEquallyTime.d.ts +16 -4
  446. package/dist/plain/interval/intervalDivideEquallyTime.js +58 -31
  447. package/dist/plain/interval/intervalEngulfsDate.d.ts +16 -9
  448. package/dist/plain/interval/intervalEngulfsDate.js +19 -12
  449. package/dist/plain/interval/intervalEngulfsDateTime.d.ts +16 -11
  450. package/dist/plain/interval/intervalEngulfsDateTime.js +24 -18
  451. package/dist/plain/interval/intervalEngulfsTime.d.ts +18 -8
  452. package/dist/plain/interval/intervalEngulfsTime.js +26 -15
  453. package/dist/plain/interval/intervalFromDurationDate.d.ts +5 -4
  454. package/dist/plain/interval/intervalFromDurationDate.js +11 -8
  455. package/dist/plain/interval/intervalFromDurationDateTime.js +4 -0
  456. package/dist/plain/interval/intervalFromDurationTime.d.ts +10 -12
  457. package/dist/plain/interval/intervalFromDurationTime.js +28 -17
  458. package/dist/plain/interval/intervalIntersectionDate.d.ts +9 -4
  459. package/dist/plain/interval/intervalIntersectionDate.js +14 -9
  460. package/dist/plain/interval/intervalIntersectionDateTime.d.ts +9 -4
  461. package/dist/plain/interval/intervalIntersectionDateTime.js +19 -13
  462. package/dist/plain/interval/intervalIntersectionTime.d.ts +7 -3
  463. package/dist/plain/interval/intervalIntersectionTime.js +17 -12
  464. package/dist/plain/interval/intervalLengthDate.d.ts +9 -6
  465. package/dist/plain/interval/intervalLengthDate.js +40 -8
  466. package/dist/plain/interval/intervalLengthDateTime.js +2 -2
  467. package/dist/plain/interval/intervalOverlappingDaysDate.d.ts +16 -17
  468. package/dist/plain/interval/intervalOverlappingDaysDate.js +30 -30
  469. package/dist/plain/interval/intervalOverlappingDaysDateTime.d.ts +7 -12
  470. package/dist/plain/interval/intervalOverlappingDaysDateTime.js +24 -24
  471. package/dist/plain/interval/intervalSplitAtDate.d.ts +10 -5
  472. package/dist/plain/interval/intervalSplitAtDate.js +48 -36
  473. package/dist/plain/interval/intervalSplitAtDateTime.d.ts +9 -4
  474. package/dist/plain/interval/intervalSplitAtDateTime.js +44 -32
  475. package/dist/plain/interval/intervalSplitAtTime.d.ts +9 -4
  476. package/dist/plain/interval/intervalSplitAtTime.js +44 -32
  477. package/dist/plain/interval/intervalUnionDate.d.ts +14 -6
  478. package/dist/plain/interval/intervalUnionDate.js +19 -11
  479. package/dist/plain/interval/intervalUnionDateTime.d.ts +12 -5
  480. package/dist/plain/interval/intervalUnionDateTime.js +22 -14
  481. package/dist/plain/interval/intervalUnionTime.d.ts +10 -3
  482. package/dist/plain/interval/intervalUnionTime.js +20 -12
  483. package/dist/plain/interval/intervalXorAllDate.d.ts +11 -10
  484. package/dist/plain/interval/intervalXorAllDate.js +37 -59
  485. package/dist/plain/interval/intervalXorAllDateTime.d.ts +7 -5
  486. package/dist/plain/interval/intervalXorAllDateTime.js +28 -48
  487. package/dist/plain/interval/intervalXorAllTime.d.ts +8 -4
  488. package/dist/plain/interval/intervalXorAllTime.js +29 -47
  489. package/dist/plain/interval/intervalXorDate.d.ts +10 -9
  490. package/dist/plain/interval/intervalXorDate.js +19 -54
  491. package/dist/plain/interval/intervalXorDateTime.d.ts +9 -7
  492. package/dist/plain/interval/intervalXorDateTime.js +23 -50
  493. package/dist/plain/interval/intervalXorTime.d.ts +8 -7
  494. package/dist/plain/interval/intervalXorTime.js +22 -50
  495. package/dist/plain/interval/intervalsOverlapDate.d.ts +14 -7
  496. package/dist/plain/interval/intervalsOverlapDate.js +17 -10
  497. package/dist/plain/interval/intervalsOverlapDateTime.d.ts +12 -7
  498. package/dist/plain/interval/intervalsOverlapDateTime.js +20 -14
  499. package/dist/plain/interval/intervalsOverlapTime.d.ts +10 -5
  500. package/dist/plain/interval/intervalsOverlapTime.js +18 -12
  501. package/dist/plain/interval/mergeIntervalsDate.d.ts +9 -5
  502. package/dist/plain/interval/mergeIntervalsDate.js +37 -38
  503. package/dist/plain/interval/mergeIntervalsDateTime.d.ts +7 -3
  504. package/dist/plain/interval/mergeIntervalsDateTime.js +31 -32
  505. package/dist/plain/interval/mergeIntervalsTime.d.ts +7 -3
  506. package/dist/plain/interval/mergeIntervalsTime.js +31 -31
  507. package/dist/plain/interval/splitIntervalByUnitDate.d.ts +26 -6
  508. package/dist/plain/interval/splitIntervalByUnitDate.js +76 -43
  509. package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +22 -2
  510. package/dist/plain/interval/splitIntervalByUnitDateTime.js +65 -39
  511. package/dist/plain/interval/splitIntervalByUnitTime.d.ts +18 -2
  512. package/dist/plain/interval/splitIntervalByUnitTime.js +76 -39
  513. package/dist/plain/interval/validate/isValidDateInterval.d.ts +4 -2
  514. package/dist/plain/interval/validate/isValidDateInterval.js +4 -2
  515. package/dist/plain/interval/validate/isValidDateTimeInterval.d.ts +5 -0
  516. package/dist/plain/interval/validate/isValidDateTimeInterval.js +7 -2
  517. package/dist/plain/interval/validate/isValidTimeInterval.d.ts +5 -0
  518. package/dist/plain/interval/validate/isValidTimeInterval.js +8 -18
  519. package/dist/plain/locale/getLocaleEraNames.d.ts +14 -4
  520. package/dist/plain/locale/getLocaleEraNames.js +56 -41
  521. package/dist/plain/locale/getLocaleMeridiems.d.ts +7 -4
  522. package/dist/plain/locale/getLocaleMeridiems.js +28 -22
  523. package/dist/plain/locale/getLocaleMonthNames.d.ts +14 -4
  524. package/dist/plain/locale/getLocaleMonthNames.js +34 -19
  525. package/dist/plain/locale/getLocaleWeekdayNames.d.ts +14 -7
  526. package/dist/plain/locale/getLocaleWeekdayNames.js +40 -22
  527. package/dist/plain/map/mapDatesInRange.d.ts +18 -1
  528. package/dist/plain/map/mapDatesInRange.js +53 -17
  529. package/dist/plain/parse/parseDateTimeWithPattern.d.ts +3 -2
  530. package/dist/plain/parse/parseDateTimeWithPattern.js +30 -24
  531. package/dist/plain/parse/parseDateWithPattern.d.ts +3 -2
  532. package/dist/plain/parse/parseDateWithPattern.js +22 -16
  533. package/dist/plain/parse/parseMicrosecondFromDateTime.d.ts +2 -1
  534. package/dist/plain/parse/parseMicrosecondFromDateTime.js +2 -1
  535. package/dist/plain/parse/parseMicrosecondFromTime.d.ts +2 -1
  536. package/dist/plain/parse/parseMicrosecondFromTime.js +2 -1
  537. package/dist/plain/parse/parseNanosecondFromDateTime.d.ts +2 -1
  538. package/dist/plain/parse/parseNanosecondFromDateTime.js +2 -1
  539. package/dist/plain/parse/parseNanosecondFromTime.d.ts +2 -1
  540. package/dist/plain/parse/parseNanosecondFromTime.js +2 -1
  541. package/dist/plain/parse/parseSql.d.ts +15 -12
  542. package/dist/plain/parse/parseSql.js +16 -13
  543. package/dist/plain/parse/parseTimeWithPattern.d.ts +3 -2
  544. package/dist/plain/parse/parseTimeWithPattern.js +27 -21
  545. package/dist/plain/parse/parseUnitFromDate.d.ts +9 -2
  546. package/dist/plain/parse/parseUnitFromDate.js +39 -19
  547. package/dist/plain/parse/parseUnitFromDateTime.d.ts +11 -3
  548. package/dist/plain/parse/parseUnitFromDateTime.js +54 -28
  549. package/dist/plain/parse/parseUnitFromTime.d.ts +9 -3
  550. package/dist/plain/parse/parseUnitFromTime.js +13 -3
  551. package/dist/plain/parse/parseWeekFromDate.d.ts +5 -0
  552. package/dist/plain/parse/parseWeekFromDate.js +24 -5
  553. package/dist/plain/parse/parseWeekFromDateTime.d.ts +5 -0
  554. package/dist/plain/parse/parseWeekFromDateTime.js +26 -5
  555. package/dist/plain/validate/isLeapSecond.d.ts +27 -9
  556. package/dist/plain/validate/isLeapSecond.js +30 -9
  557. package/dist/plain/validate/isLeapYear.d.ts +7 -1
  558. package/dist/plain/validate/isLeapYear.js +10 -1
  559. package/dist/plain/validate/isValidCalendarDate.d.ts +37 -6
  560. package/dist/plain/validate/isValidCalendarDate.js +37 -6
  561. package/dist/plain/validate/isValidDate.d.ts +9 -1
  562. package/dist/plain/validate/isValidDate.js +14 -5
  563. package/dist/plain/validate/isValidDateRange.d.ts +11 -4
  564. package/dist/plain/validate/isValidDateRange.js +32 -22
  565. package/dist/plain/validate/isValidDateTime.d.ts +7 -1
  566. package/dist/plain/validate/isValidDateTime.js +12 -5
  567. package/dist/plain/validate/isValidDateTimeRange.d.ts +3 -2
  568. package/dist/plain/validate/isValidDateTimeRange.js +30 -15
  569. package/dist/plain/validate/isValidIsoDateLike.d.ts +6 -1
  570. package/dist/plain/validate/isValidIsoDateLike.js +13 -8
  571. package/dist/plain/validate/isValidTime.d.ts +6 -1
  572. package/dist/plain/validate/isValidTime.js +10 -3
  573. package/dist/plain/validate/isValidTimeRange.d.ts +4 -2
  574. package/dist/plain/validate/isValidTimeRange.js +31 -27
  575. package/dist/precision/calculate/index.d.ts +1 -0
  576. package/dist/precision/calculate/index.js +1 -0
  577. package/dist/precision/calculate/truncateNanoseconds.d.ts +37 -0
  578. package/dist/precision/calculate/truncateNanoseconds.js +41 -0
  579. package/dist/precision/convert/fromDotNetTicks.d.ts +30 -0
  580. package/dist/precision/convert/fromDotNetTicks.js +39 -0
  581. package/dist/precision/convert/fromExcelSerial.d.ts +38 -0
  582. package/dist/precision/convert/fromExcelSerial.js +81 -0
  583. package/dist/precision/convert/fromFileTime.d.ts +30 -0
  584. package/dist/precision/convert/fromFileTime.js +39 -0
  585. package/dist/precision/convert/fromNanoseconds.d.ts +29 -0
  586. package/dist/precision/convert/fromNanoseconds.js +50 -0
  587. package/dist/precision/convert/fromNtpTimestamp.d.ts +43 -0
  588. package/dist/precision/convert/fromNtpTimestamp.js +57 -0
  589. package/dist/precision/convert/fromPgMicroseconds.d.ts +26 -0
  590. package/dist/precision/convert/fromPgMicroseconds.js +33 -0
  591. package/dist/precision/convert/index.d.ts +12 -0
  592. package/dist/precision/convert/index.js +12 -0
  593. package/dist/precision/convert/toDotNetTicks.d.ts +29 -0
  594. package/dist/precision/convert/toDotNetTicks.js +40 -0
  595. package/dist/precision/convert/toExcelSerial.d.ts +56 -0
  596. package/dist/precision/convert/toExcelSerial.js +85 -0
  597. package/dist/precision/convert/toFileTime.d.ts +31 -0
  598. package/dist/precision/convert/toFileTime.js +43 -0
  599. package/dist/precision/convert/toNanoseconds.d.ts +37 -0
  600. package/dist/precision/convert/toNanoseconds.js +40 -0
  601. package/dist/precision/convert/toNtpTimestamp.d.ts +30 -0
  602. package/dist/precision/convert/toNtpTimestamp.js +38 -0
  603. package/dist/precision/convert/toPgMicroseconds.d.ts +29 -0
  604. package/dist/precision/convert/toPgMicroseconds.js +42 -0
  605. package/dist/precision/format/formatNanoseconds.d.ts +26 -0
  606. package/dist/precision/format/formatNanoseconds.js +32 -0
  607. package/dist/precision/format/index.d.ts +1 -0
  608. package/dist/precision/format/index.js +1 -0
  609. package/dist/precision/index.d.ts +6 -0
  610. package/dist/precision/index.js +7 -0
  611. package/dist/precision/parse/index.d.ts +1 -0
  612. package/dist/precision/parse/index.js +1 -0
  613. package/dist/precision/parse/parseNanoseconds.d.ts +27 -0
  614. package/dist/precision/parse/parseNanoseconds.js +32 -0
  615. package/dist/precision/validate/index.d.ts +3 -0
  616. package/dist/precision/validate/index.js +3 -0
  617. package/dist/precision/validate/isValidInstant.d.ts +37 -0
  618. package/dist/precision/validate/isValidInstant.js +40 -0
  619. package/dist/precision/validate/isValidNanoPattern.d.ts +27 -0
  620. package/dist/precision/validate/isValidNanoPattern.js +40 -0
  621. package/dist/precision/validate/isValidNanoseconds.d.ts +25 -0
  622. package/dist/precision/validate/isValidNanoseconds.js +28 -0
  623. package/dist/regex/calendar-date.d.ts +30 -0
  624. package/dist/regex/calendar-date.js +31 -11
  625. package/dist/regex/calendar-zoned-date-time.d.ts +29 -0
  626. package/dist/regex/calendar-zoned-date-time.js +30 -41
  627. package/dist/regex/date-time.d.ts +28 -0
  628. package/dist/regex/date-time.js +29 -2
  629. package/dist/regex/date.d.ts +58 -0
  630. package/dist/regex/date.js +60 -3
  631. package/dist/regex/http-date.d.ts +19 -0
  632. package/dist/regex/http-date.js +19 -6
  633. package/dist/regex/index.d.ts +3 -0
  634. package/dist/regex/index.js +4 -0
  635. package/dist/regex/leap-second.d.ts +45 -0
  636. package/dist/regex/leap-second.js +46 -2
  637. package/dist/regex/nanoseconds.d.ts +20 -0
  638. package/dist/regex/nanoseconds.js +20 -0
  639. package/dist/regex/rfc-2822.d.ts +26 -0
  640. package/dist/regex/rfc-2822.js +26 -8
  641. package/dist/regex/rfc-3339.d.ts +26 -0
  642. package/dist/regex/rfc-3339.js +27 -7
  643. package/dist/regex/sql-date-time.d.ts +33 -0
  644. package/dist/regex/sql-date-time.js +34 -7
  645. package/dist/regex/time-zone-like.d.ts +30 -0
  646. package/dist/regex/time-zone-like.js +31 -1
  647. package/dist/regex/time.d.ts +73 -0
  648. package/dist/regex/time.js +73 -3
  649. package/dist/regex/unix.d.ts +29 -0
  650. package/dist/regex/unix.js +29 -0
  651. package/dist/regex/utc-date-time.d.ts +30 -0
  652. package/dist/regex/utc-date-time.js +31 -2
  653. package/dist/regex/utc-offset.d.ts +24 -0
  654. package/dist/regex/utc-offset.js +24 -0
  655. package/dist/span/calculate/index.d.ts +3 -0
  656. package/dist/span/calculate/index.js +3 -0
  657. package/dist/span/calculate/spanMs.d.ts +52 -0
  658. package/dist/span/calculate/spanMs.js +80 -0
  659. package/dist/span/calculate/spanNs.d.ts +43 -0
  660. package/dist/span/calculate/spanNs.js +51 -0
  661. package/dist/span/calculate/spanWallClock.d.ts +60 -0
  662. package/dist/span/calculate/spanWallClock.js +80 -0
  663. package/dist/span/index.d.ts +3 -0
  664. package/dist/span/index.js +4 -0
  665. package/dist/span/validate/index.d.ts +1 -0
  666. package/dist/span/validate/index.js +1 -0
  667. package/dist/span/validate/isValidSpan.d.ts +37 -0
  668. package/dist/span/validate/isValidSpan.js +41 -0
  669. package/dist/types/business-calendar.d.ts +27 -0
  670. package/dist/types/business-calendar.js +0 -0
  671. package/dist/types/calendar-options.d.ts +11 -0
  672. package/dist/types/calendar-options.js +0 -0
  673. package/dist/types/calendar-system.d.ts +9 -1
  674. package/dist/types/datetime-format-options.d.ts +6 -0
  675. package/dist/types/datetime-format-options.js +0 -0
  676. package/dist/types/duration-unit.d.ts +5 -0
  677. package/dist/types/duration-unit.js +0 -0
  678. package/dist/types/fiscal-calendar.d.ts +22 -0
  679. package/dist/types/fiscal-calendar.js +0 -0
  680. package/dist/types/index.d.ts +17 -0
  681. package/dist/types/index.js +16 -0
  682. package/dist/types/interval.d.ts +18 -0
  683. package/dist/types/interval.js +0 -0
  684. package/dist/types/now-unit.d.ts +5 -0
  685. package/dist/types/now-unit.js +0 -0
  686. package/dist/types/relative-date-time-unit.d.ts +6 -0
  687. package/dist/types/relative-date-time-unit.js +0 -0
  688. package/dist/types/relative-date-unit.d.ts +5 -0
  689. package/dist/types/relative-date-unit.js +0 -0
  690. package/dist/types/relative-time-options.d.ts +18 -0
  691. package/dist/types/relative-time-options.js +0 -0
  692. package/dist/types/relative-time-unit.d.ts +5 -0
  693. package/dist/types/relative-time-unit.js +0 -0
  694. package/dist/types/relative-unit.d.ts +6 -0
  695. package/dist/types/relative-unit.js +0 -0
  696. package/dist/types/roll-convention.d.ts +32 -0
  697. package/dist/types/roll-convention.js +0 -0
  698. package/dist/types/unix-now-unit.d.ts +5 -0
  699. package/dist/types/unix-now-unit.js +0 -0
  700. package/dist/types/utc-now-unit.d.ts +5 -0
  701. package/dist/types/utc-now-unit.js +0 -0
  702. package/dist/types/zone-bucket-unit.d.ts +11 -0
  703. package/dist/types/zone-bucket-unit.js +0 -0
  704. package/dist/unix/calculate/addUnix.d.ts +10 -4
  705. package/dist/unix/calculate/addUnix.js +39 -26
  706. package/dist/unix/calculate/diffUnix.d.ts +38 -11
  707. package/dist/unix/calculate/diffUnix.js +84 -40
  708. package/dist/unix/calculate/diffUnixAsDuration.d.ts +17 -7
  709. package/dist/unix/calculate/diffUnixAsDuration.js +42 -23
  710. package/dist/unix/calculate/endOfQuarterForUnix.d.ts +15 -11
  711. package/dist/unix/calculate/endOfQuarterForUnix.js +20 -39
  712. package/dist/unix/calculate/endOfUnix.d.ts +23 -18
  713. package/dist/unix/calculate/endOfUnix.js +37 -15
  714. package/dist/unix/calculate/isBetweenUnix.d.ts +12 -6
  715. package/dist/unix/calculate/isBetweenUnix.js +34 -23
  716. package/dist/unix/calculate/maxUnix.d.ts +6 -3
  717. package/dist/unix/calculate/maxUnix.js +17 -8
  718. package/dist/unix/calculate/minUnix.d.ts +6 -3
  719. package/dist/unix/calculate/minUnix.js +17 -8
  720. package/dist/unix/calculate/roundUnix.d.ts +24 -10
  721. package/dist/unix/calculate/roundUnix.js +67 -42
  722. package/dist/unix/calculate/setUnix.d.ts +14 -5
  723. package/dist/unix/calculate/setUnix.js +48 -29
  724. package/dist/unix/calculate/sortUnix.d.ts +6 -3
  725. package/dist/unix/calculate/sortUnix.js +19 -11
  726. package/dist/unix/calculate/startOfQuarterForUnix.d.ts +17 -12
  727. package/dist/unix/calculate/startOfQuarterForUnix.js +22 -30
  728. package/dist/unix/calculate/startOfUnix.d.ts +23 -18
  729. package/dist/unix/calculate/startOfUnix.js +37 -15
  730. package/dist/unix/calculate/subtractUnix.d.ts +10 -4
  731. package/dist/unix/calculate/subtractUnix.js +39 -26
  732. package/dist/unix/compare/areUnixEqual.d.ts +9 -5
  733. package/dist/unix/compare/areUnixEqual.js +17 -13
  734. package/dist/unix/compare/areUnixEqualBy.d.ts +14 -7
  735. package/dist/unix/compare/areUnixEqualBy.js +14 -7
  736. package/dist/unix/compare/isAfterUnix.d.ts +8 -4
  737. package/dist/unix/compare/isAfterUnix.js +16 -12
  738. package/dist/unix/compare/isBeforeUnix.d.ts +7 -4
  739. package/dist/unix/compare/isBeforeUnix.js +15 -12
  740. package/dist/unix/convert/convertUnixToPlainDate.d.ts +17 -9
  741. package/dist/unix/convert/convertUnixToPlainDate.js +34 -21
  742. package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +15 -9
  743. package/dist/unix/convert/convertUnixToPlainDateTime.js +32 -21
  744. package/dist/unix/convert/convertUnixToPlainTime.d.ts +15 -9
  745. package/dist/unix/convert/convertUnixToPlainTime.js +32 -21
  746. package/dist/unix/convert/convertUnixToUtc.d.ts +15 -7
  747. package/dist/unix/convert/convertUnixToUtc.js +20 -15
  748. package/dist/unix/convert/convertUnixToZoned.d.ts +17 -10
  749. package/dist/unix/convert/convertUnixToZoned.js +31 -20
  750. package/dist/unix/format/formatCalendarUnix.d.ts +35 -6
  751. package/dist/unix/format/formatCalendarUnix.js +35 -81
  752. package/dist/unix/format/formatRelativeUnix.d.ts +26 -16
  753. package/dist/unix/format/formatRelativeUnix.js +46 -93
  754. package/dist/unix/format/formatUnix.d.ts +43 -2
  755. package/dist/unix/format/formatUnix.js +65 -32
  756. package/dist/unix/get/getUnixNow.d.ts +13 -7
  757. package/dist/unix/get/getUnixNow.js +27 -17
  758. package/dist/unix/get/getUnixNowUnit.d.ts +7 -5
  759. package/dist/unix/get/getUnixNowUnit.js +9 -35
  760. package/dist/unix/index.d.ts +1 -0
  761. package/dist/unix/index.js +2 -0
  762. package/dist/unix/interval/intervalAbutsUnix.d.ts +17 -12
  763. package/dist/unix/interval/intervalAbutsUnix.js +23 -41
  764. package/dist/unix/interval/intervalContainsUnix.d.ts +17 -7
  765. package/dist/unix/interval/intervalContainsUnix.js +25 -37
  766. package/dist/unix/interval/intervalCountUnix.d.ts +30 -13
  767. package/dist/unix/interval/intervalCountUnix.js +49 -23
  768. package/dist/unix/interval/intervalDifferenceUnix.d.ts +19 -10
  769. package/dist/unix/interval/intervalDifferenceUnix.js +25 -43
  770. package/dist/unix/interval/intervalDivideEquallyUnix.d.ts +24 -10
  771. package/dist/unix/interval/intervalDivideEquallyUnix.js +57 -36
  772. package/dist/unix/interval/intervalEngulfsUnix.d.ts +13 -7
  773. package/dist/unix/interval/intervalEngulfsUnix.js +18 -30
  774. package/dist/unix/interval/intervalFromDurationUnix.d.ts +10 -6
  775. package/dist/unix/interval/intervalFromDurationUnix.js +51 -39
  776. package/dist/unix/interval/intervalIntersectionUnix.d.ts +18 -11
  777. package/dist/unix/interval/intervalIntersectionUnix.js +25 -46
  778. package/dist/unix/interval/intervalLengthUnix.d.ts +21 -9
  779. package/dist/unix/interval/intervalLengthUnix.js +41 -18
  780. package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +26 -12
  781. package/dist/unix/interval/intervalOverlappingDaysUnix.js +67 -63
  782. package/dist/unix/interval/intervalSplitAtUnix.d.ts +11 -6
  783. package/dist/unix/interval/intervalSplitAtUnix.js +41 -34
  784. package/dist/unix/interval/intervalUnionUnix.d.ts +15 -9
  785. package/dist/unix/interval/intervalUnionUnix.js +20 -42
  786. package/dist/unix/interval/intervalXorAllUnix.d.ts +8 -6
  787. package/dist/unix/interval/intervalXorAllUnix.js +21 -56
  788. package/dist/unix/interval/intervalXorUnix.d.ts +22 -11
  789. package/dist/unix/interval/intervalXorUnix.js +28 -56
  790. package/dist/unix/interval/intervalsOverlapUnix.d.ts +16 -10
  791. package/dist/unix/interval/intervalsOverlapUnix.js +21 -37
  792. package/dist/unix/interval/mergeIntervalsUnix.d.ts +10 -4
  793. package/dist/unix/interval/mergeIntervalsUnix.js +25 -36
  794. package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +38 -8
  795. package/dist/unix/interval/splitIntervalByUnitUnix.js +72 -56
  796. package/dist/unix/interval/validate/isValidUnixInterval.d.ts +12 -6
  797. package/dist/unix/interval/validate/isValidUnixInterval.js +17 -16
  798. package/dist/unix/parse/index.d.ts +2 -0
  799. package/dist/unix/parse/index.js +2 -0
  800. package/dist/unix/parse/parseDateFromUnix.d.ts +10 -8
  801. package/dist/unix/parse/parseDateFromUnix.js +17 -29
  802. package/dist/unix/parse/parseDayFromUnix.d.ts +6 -4
  803. package/dist/unix/parse/parseDayFromUnix.js +18 -5
  804. package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +8 -5
  805. package/dist/unix/parse/parseDayOfWeekFromUnix.js +15 -28
  806. package/dist/unix/parse/parseHourFromUnix.d.ts +6 -4
  807. package/dist/unix/parse/parseHourFromUnix.js +18 -5
  808. package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +4 -2
  809. package/dist/unix/parse/parseMicrosecondFromUnix.js +16 -3
  810. package/dist/unix/parse/parseMillisecondFromUnix.d.ts +4 -2
  811. package/dist/unix/parse/parseMillisecondFromUnix.js +16 -3
  812. package/dist/unix/parse/parseMinuteFromUnix.d.ts +6 -4
  813. package/dist/unix/parse/parseMinuteFromUnix.js +18 -5
  814. package/dist/unix/parse/parseMonthFromUnix.d.ts +6 -4
  815. package/dist/unix/parse/parseMonthFromUnix.js +18 -5
  816. package/dist/unix/parse/parseNanosecondFromUnix.d.ts +8 -5
  817. package/dist/unix/parse/parseNanosecondFromUnix.js +20 -6
  818. package/dist/unix/parse/parseSecondFromUnix.d.ts +5 -3
  819. package/dist/unix/parse/parseSecondFromUnix.js +17 -4
  820. package/dist/unix/parse/parseTimeFromUnix.d.ts +10 -8
  821. package/dist/unix/parse/parseTimeFromUnix.js +17 -29
  822. package/dist/unix/parse/parseUnitFromUnix.d.ts +40 -9
  823. package/dist/unix/parse/parseUnitFromUnix.js +57 -55
  824. package/dist/unix/parse/parseWeekFromUnix.d.ts +15 -7
  825. package/dist/unix/parse/parseWeekFromUnix.js +32 -30
  826. package/dist/unix/parse/parseYearFromUnix.d.ts +5 -3
  827. package/dist/unix/parse/parseYearFromUnix.js +17 -4
  828. package/dist/unix/validate/isValidUnixMilliseconds.d.ts +8 -5
  829. package/dist/unix/validate/isValidUnixMilliseconds.js +10 -9
  830. package/dist/unix/validate/isValidUnixRange.d.ts +13 -7
  831. package/dist/unix/validate/isValidUnixRange.js +29 -19
  832. package/dist/unix/validate/isValidUnixSeconds.d.ts +8 -5
  833. package/dist/unix/validate/isValidUnixSeconds.js +10 -9
  834. package/dist/unix/validate/isValidUnixUnit.d.ts +22 -5
  835. package/dist/unix/validate/isValidUnixUnit.js +6 -8
  836. package/dist/utc/calculate/addUtc.js +26 -12
  837. package/dist/utc/calculate/diffUtc.d.ts +22 -7
  838. package/dist/utc/calculate/diffUtc.js +75 -31
  839. package/dist/utc/calculate/diffUtcAsDuration.d.ts +2 -2
  840. package/dist/utc/calculate/diffUtcAsDuration.js +10 -3
  841. package/dist/utc/calculate/endOfQuarterForUtc.d.ts +1 -1
  842. package/dist/utc/calculate/endOfQuarterForUtc.js +1 -1
  843. package/dist/utc/calculate/endOfUtc.d.ts +11 -4
  844. package/dist/utc/calculate/endOfUtc.js +22 -5
  845. package/dist/utc/calculate/isBetweenUtc.js +40 -24
  846. package/dist/utc/calculate/maxUtc.js +19 -12
  847. package/dist/utc/calculate/minUtc.js +19 -12
  848. package/dist/utc/calculate/roundUtc.d.ts +16 -2
  849. package/dist/utc/calculate/roundUtc.js +42 -31
  850. package/dist/utc/calculate/setUtc.d.ts +4 -8
  851. package/dist/utc/calculate/setUtc.js +25 -18
  852. package/dist/utc/calculate/sortUtc.js +17 -10
  853. package/dist/utc/calculate/startOfQuarterForUtc.d.ts +2 -0
  854. package/dist/utc/calculate/startOfQuarterForUtc.js +12 -1
  855. package/dist/utc/calculate/startOfUtc.d.ts +6 -4
  856. package/dist/utc/calculate/startOfUtc.js +17 -5
  857. package/dist/utc/calculate/subtractUtc.js +26 -12
  858. package/dist/utc/chop/chopUtc.d.ts +5 -2
  859. package/dist/utc/chop/chopUtc.js +8 -4
  860. package/dist/utc/compare/areUtcEqualBy.d.ts +10 -5
  861. package/dist/utc/compare/areUtcEqualBy.js +34 -11
  862. package/dist/utc/convert/convertUtcToPlainDate.js +22 -10
  863. package/dist/utc/convert/convertUtcToPlainDateTime.js +28 -16
  864. package/dist/utc/convert/convertUtcToPlainTime.js +22 -10
  865. package/dist/utc/convert/convertUtcToUnix.d.ts +12 -5
  866. package/dist/utc/convert/convertUtcToUnix.js +22 -13
  867. package/dist/utc/format/formatCalendarUtc.d.ts +13 -8
  868. package/dist/utc/format/formatCalendarUtc.js +32 -41
  869. package/dist/utc/format/formatHttp.d.ts +9 -3
  870. package/dist/utc/format/formatHttp.js +14 -12
  871. package/dist/utc/format/formatRelativeUtc.d.ts +20 -18
  872. package/dist/utc/format/formatRelativeUtc.js +43 -51
  873. package/dist/utc/format/formatUtc.d.ts +51 -1
  874. package/dist/utc/format/formatUtc.js +57 -11
  875. package/dist/utc/get/getUtcNowUnit.d.ts +5 -3
  876. package/dist/utc/get/getUtcNowUnit.js +11 -33
  877. package/dist/utc/index.d.ts +1 -0
  878. package/dist/utc/index.js +2 -0
  879. package/dist/utc/interval/intervalAbutsUtc.d.ts +10 -7
  880. package/dist/utc/interval/intervalAbutsUtc.js +18 -30
  881. package/dist/utc/interval/intervalContainsUtc.d.ts +19 -11
  882. package/dist/utc/interval/intervalContainsUtc.js +33 -34
  883. package/dist/utc/interval/intervalCountUtc.d.ts +3 -4
  884. package/dist/utc/interval/intervalCountUtc.js +12 -18
  885. package/dist/utc/interval/intervalDifferenceUtc.d.ts +13 -5
  886. package/dist/utc/interval/intervalDifferenceUtc.js +25 -51
  887. package/dist/utc/interval/intervalDivideEquallyUtc.d.ts +16 -3
  888. package/dist/utc/interval/intervalDivideEquallyUtc.js +54 -34
  889. package/dist/utc/interval/intervalEngulfsUtc.d.ts +17 -12
  890. package/dist/utc/interval/intervalEngulfsUtc.js +25 -26
  891. package/dist/utc/interval/intervalFromDurationUtc.js +5 -0
  892. package/dist/utc/interval/intervalIntersectionUtc.d.ts +12 -6
  893. package/dist/utc/interval/intervalIntersectionUtc.js +24 -41
  894. package/dist/utc/interval/intervalLengthUtc.js +5 -7
  895. package/dist/utc/interval/intervalOverlappingDaysUtc.d.ts +7 -13
  896. package/dist/utc/interval/intervalOverlappingDaysUtc.js +25 -36
  897. package/dist/utc/interval/intervalSplitAtUtc.d.ts +7 -2
  898. package/dist/utc/interval/intervalSplitAtUtc.js +39 -33
  899. package/dist/utc/interval/intervalUnionUtc.d.ts +15 -7
  900. package/dist/utc/interval/intervalUnionUtc.js +31 -42
  901. package/dist/utc/interval/intervalXorAllUtc.d.ts +7 -4
  902. package/dist/utc/interval/intervalXorAllUtc.js +30 -52
  903. package/dist/utc/interval/intervalXorUtc.d.ts +8 -6
  904. package/dist/utc/interval/intervalXorUtc.js +22 -56
  905. package/dist/utc/interval/intervalsOverlapUtc.d.ts +15 -9
  906. package/dist/utc/interval/intervalsOverlapUtc.js +23 -39
  907. package/dist/utc/interval/mergeIntervalsUtc.d.ts +9 -2
  908. package/dist/utc/interval/mergeIntervalsUtc.js +23 -36
  909. package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +23 -2
  910. package/dist/utc/interval/splitIntervalByUnitUtc.js +65 -44
  911. package/dist/utc/interval/validate/isValidUtcInterval.d.ts +5 -0
  912. package/dist/utc/interval/validate/isValidUtcInterval.js +7 -6
  913. package/dist/utc/parse/parseDateFromUtc.d.ts +7 -1
  914. package/dist/utc/parse/parseDateFromUtc.js +14 -9
  915. package/dist/utc/parse/parseDayFromUtc.d.ts +7 -1
  916. package/dist/utc/parse/parseDayFromUtc.js +14 -8
  917. package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +7 -1
  918. package/dist/utc/parse/parseDayOfWeekFromUtc.js +24 -6
  919. package/dist/utc/parse/parseHourFromUtc.d.ts +7 -1
  920. package/dist/utc/parse/parseHourFromUtc.js +14 -8
  921. package/dist/utc/parse/parseHttp.d.ts +39 -14
  922. package/dist/utc/parse/parseHttp.js +69 -28
  923. package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +9 -2
  924. package/dist/utc/parse/parseMicrosecondFromUtc.js +18 -9
  925. package/dist/utc/parse/parseMillisecondFromUtc.d.ts +7 -1
  926. package/dist/utc/parse/parseMillisecondFromUtc.js +16 -8
  927. package/dist/utc/parse/parseMinuteFromUtc.d.ts +7 -1
  928. package/dist/utc/parse/parseMinuteFromUtc.js +14 -8
  929. package/dist/utc/parse/parseMonthFromUtc.d.ts +7 -1
  930. package/dist/utc/parse/parseMonthFromUtc.js +14 -8
  931. package/dist/utc/parse/parseNanosecondFromUtc.d.ts +9 -2
  932. package/dist/utc/parse/parseNanosecondFromUtc.js +18 -9
  933. package/dist/utc/parse/parseSecondFromUtc.d.ts +7 -1
  934. package/dist/utc/parse/parseSecondFromUtc.js +14 -8
  935. package/dist/utc/parse/parseTimeFromUtc.js +21 -10
  936. package/dist/utc/parse/parseUnitFromUtc.d.ts +39 -5
  937. package/dist/utc/parse/parseUnitFromUtc.js +58 -31
  938. package/dist/utc/parse/parseWeekFromUtc.d.ts +16 -3
  939. package/dist/utc/parse/parseWeekFromUtc.js +38 -10
  940. package/dist/utc/parse/parseYearFromUtc.d.ts +7 -1
  941. package/dist/utc/parse/parseYearFromUtc.js +14 -8
  942. package/dist/utc/validate/isValidUtc.d.ts +8 -1
  943. package/dist/utc/validate/isValidUtc.js +12 -3
  944. package/dist/utc/validate/isValidUtcRange.d.ts +3 -2
  945. package/dist/utc/validate/isValidUtcRange.js +30 -19
  946. package/dist/zoned/calculate/addZoned.d.ts +40 -27
  947. package/dist/zoned/calculate/addZoned.js +71 -56
  948. package/dist/zoned/calculate/addZonedBusinessDays.d.ts +2 -0
  949. package/dist/zoned/calculate/addZonedBusinessDays.js +5 -2
  950. package/dist/zoned/calculate/clampZoned.js +4 -3
  951. package/dist/zoned/calculate/closestZonedTo.d.ts +6 -6
  952. package/dist/zoned/calculate/closestZonedTo.js +35 -26
  953. package/dist/zoned/calculate/cycleZoned.d.ts +10 -7
  954. package/dist/zoned/calculate/cycleZoned.js +19 -11
  955. package/dist/zoned/calculate/diffZoned.d.ts +39 -17
  956. package/dist/zoned/calculate/diffZoned.js +90 -45
  957. package/dist/zoned/calculate/diffZonedAsDuration.d.ts +19 -9
  958. package/dist/zoned/calculate/diffZonedAsDuration.js +32 -15
  959. package/dist/zoned/calculate/endOfQuarterForZoned.d.ts +11 -11
  960. package/dist/zoned/calculate/endOfQuarterForZoned.js +32 -31
  961. package/dist/zoned/calculate/endOfZoned.d.ts +21 -14
  962. package/dist/zoned/calculate/endOfZoned.js +25 -111
  963. package/dist/zoned/calculate/getHoursInZonedDay.d.ts +8 -1
  964. package/dist/zoned/calculate/getHoursInZonedDay.js +10 -14
  965. package/dist/zoned/calculate/getLocaleZonedDayOfWeek.d.ts +8 -4
  966. package/dist/zoned/calculate/getLocaleZonedDayOfWeek.js +9 -6
  967. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +20 -26
  968. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +40 -44
  969. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +16 -24
  970. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +36 -42
  971. package/dist/zoned/calculate/getQuarterForZoned.js +2 -2
  972. package/dist/zoned/calculate/maxZoned.js +20 -12
  973. package/dist/zoned/calculate/minZoned.d.ts +1 -1
  974. package/dist/zoned/calculate/minZoned.js +21 -13
  975. package/dist/zoned/calculate/roundZoned.d.ts +18 -4
  976. package/dist/zoned/calculate/roundZoned.js +58 -33
  977. package/dist/zoned/calculate/setZoned.d.ts +9 -3
  978. package/dist/zoned/calculate/setZoned.js +39 -18
  979. package/dist/zoned/calculate/sortZoned.js +18 -10
  980. package/dist/zoned/calculate/startOfQuarterForZoned.d.ts +4 -7
  981. package/dist/zoned/calculate/startOfQuarterForZoned.js +23 -17
  982. package/dist/zoned/calculate/startOfZoned.d.ts +17 -13
  983. package/dist/zoned/calculate/startOfZoned.js +21 -103
  984. package/dist/zoned/calculate/subtractZoned.d.ts +36 -24
  985. package/dist/zoned/calculate/subtractZoned.js +66 -50
  986. package/dist/zoned/calculate/subtractZonedBusinessDays.d.ts +2 -0
  987. package/dist/zoned/calculate/subtractZonedBusinessDays.js +5 -2
  988. package/dist/zoned/chop/chopZonedDate.js +2 -2
  989. package/dist/zoned/chop/chopZonedDateTime.js +2 -2
  990. package/dist/zoned/chop/chopZonedMilliseconds.js +2 -2
  991. package/dist/zoned/chop/chopZonedSeconds.js +2 -2
  992. package/dist/zoned/chop/chopZonedTime.js +2 -2
  993. package/dist/zoned/chop/chopZonedTimezone.js +2 -2
  994. package/dist/zoned/compare/areZonedEqual.js +3 -2
  995. package/dist/zoned/compare/areZonedEqualBy.d.ts +15 -2
  996. package/dist/zoned/compare/areZonedEqualBy.js +45 -12
  997. package/dist/zoned/compare/isAfterZoned.js +3 -2
  998. package/dist/zoned/compare/isBeforeZoned.d.ts +1 -1
  999. package/dist/zoned/compare/isBeforeZoned.js +4 -3
  1000. package/dist/zoned/compare/isBetweenZoned.js +46 -29
  1001. package/dist/zoned/compare/isInDaylightSaving.js +4 -4
  1002. package/dist/zoned/compare/isZonedBusinessDay.d.ts +7 -4
  1003. package/dist/zoned/compare/isZonedBusinessDay.js +9 -6
  1004. package/dist/zoned/compare/isZonedFuture.js +2 -1
  1005. package/dist/zoned/compare/isZonedPast.js +2 -1
  1006. package/dist/zoned/compare/isZonedRelativeDay.js +2 -1
  1007. package/dist/zoned/compare/isZonedThisUnit.d.ts +12 -4
  1008. package/dist/zoned/compare/isZonedThisUnit.js +37 -16
  1009. package/dist/zoned/compare/isZonedWeekend.d.ts +8 -4
  1010. package/dist/zoned/compare/isZonedWeekend.js +9 -6
  1011. package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +10 -5
  1012. package/dist/zoned/convert/convertPlainDateTimeToZoned.js +34 -16
  1013. package/dist/zoned/convert/convertZonedToCalendar.d.ts +26 -38
  1014. package/dist/zoned/convert/convertZonedToCalendar.js +33 -48
  1015. package/dist/zoned/convert/convertZonedToPlainDateTime.d.ts +6 -0
  1016. package/dist/zoned/convert/convertZonedToPlainDateTime.js +8 -2
  1017. package/dist/zoned/convert/convertZonedToUnix.d.ts +12 -6
  1018. package/dist/zoned/convert/convertZonedToUnix.js +23 -16
  1019. package/dist/zoned/convert/convertZonedToUtc.js +2 -2
  1020. package/dist/zoned/convert/convertZonedToZoned.js +2 -2
  1021. package/dist/zoned/format/formatCalendarZoned.d.ts +7 -3
  1022. package/dist/zoned/format/formatCalendarZoned.js +37 -39
  1023. package/dist/zoned/format/formatRelativeZoned.d.ts +16 -14
  1024. package/dist/zoned/format/formatRelativeZoned.js +54 -54
  1025. package/dist/zoned/format/formatRfc2822.d.ts +14 -1
  1026. package/dist/zoned/format/formatRfc2822.js +27 -13
  1027. package/dist/zoned/format/formatRfc3339.d.ts +14 -1
  1028. package/dist/zoned/format/formatRfc3339.js +29 -3
  1029. package/dist/zoned/format/formatTimeZoneName.d.ts +18 -2
  1030. package/dist/zoned/format/formatTimeZoneName.js +28 -18
  1031. package/dist/zoned/format/formatZonedDateTime.d.ts +26 -5
  1032. package/dist/zoned/format/formatZonedDateTime.js +40 -9
  1033. package/dist/zoned/format/formatZonedRange.d.ts +25 -6
  1034. package/dist/zoned/format/formatZonedRange.js +61 -28
  1035. package/dist/zoned/format/formatZonedToParts.d.ts +30 -6
  1036. package/dist/zoned/format/formatZonedToParts.js +42 -13
  1037. package/dist/zoned/get/getDstTransitions.d.ts +24 -3
  1038. package/dist/zoned/get/getDstTransitions.js +17 -15
  1039. package/dist/zoned/get/getTimeZoneOffset.d.ts +11 -1
  1040. package/dist/zoned/get/getTimeZoneOffset.js +19 -2
  1041. package/dist/zoned/get/getZonedNow.js +20 -9
  1042. package/dist/zoned/get/getZonedNowUnit.d.ts +30 -2
  1043. package/dist/zoned/get/getZonedNowUnit.js +15 -31
  1044. package/dist/zoned/index.js +1 -1
  1045. package/dist/zoned/interval/intervalAbutsZoned.d.ts +18 -11
  1046. package/dist/zoned/interval/intervalAbutsZoned.js +24 -25
  1047. package/dist/zoned/interval/intervalContainsZoned.d.ts +16 -7
  1048. package/dist/zoned/interval/intervalContainsZoned.js +22 -14
  1049. package/dist/zoned/interval/intervalCountZoned.d.ts +19 -11
  1050. package/dist/zoned/interval/intervalCountZoned.js +32 -27
  1051. package/dist/zoned/interval/intervalDifferenceZoned.d.ts +14 -8
  1052. package/dist/zoned/interval/intervalDifferenceZoned.js +25 -37
  1053. package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +18 -9
  1054. package/dist/zoned/interval/intervalDivideEquallyZoned.js +67 -46
  1055. package/dist/zoned/interval/intervalEngulfsZoned.d.ts +10 -5
  1056. package/dist/zoned/interval/intervalEngulfsZoned.js +16 -10
  1057. package/dist/zoned/interval/intervalFromDurationZoned.d.ts +25 -11
  1058. package/dist/zoned/interval/intervalFromDurationZoned.js +61 -44
  1059. package/dist/zoned/interval/intervalIntersectionZoned.d.ts +12 -6
  1060. package/dist/zoned/interval/intervalIntersectionZoned.js +24 -18
  1061. package/dist/zoned/interval/intervalLengthZoned.d.ts +15 -6
  1062. package/dist/zoned/interval/intervalLengthZoned.js +23 -9
  1063. package/dist/zoned/interval/intervalOverlappingDaysZoned.d.ts +28 -17
  1064. package/dist/zoned/interval/intervalOverlappingDaysZoned.js +46 -34
  1065. package/dist/zoned/interval/intervalSplitAtZoned.d.ts +6 -3
  1066. package/dist/zoned/interval/intervalSplitAtZoned.js +52 -42
  1067. package/dist/zoned/interval/intervalUnionZoned.d.ts +14 -8
  1068. package/dist/zoned/interval/intervalUnionZoned.js +25 -20
  1069. package/dist/zoned/interval/intervalXorAllZoned.d.ts +9 -7
  1070. package/dist/zoned/interval/intervalXorAllZoned.js +42 -73
  1071. package/dist/zoned/interval/intervalXorZoned.d.ts +20 -10
  1072. package/dist/zoned/interval/intervalXorZoned.js +34 -62
  1073. package/dist/zoned/interval/intervalsOverlapZoned.d.ts +15 -7
  1074. package/dist/zoned/interval/intervalsOverlapZoned.js +21 -12
  1075. package/dist/zoned/interval/mergeIntervalsZoned.d.ts +10 -3
  1076. package/dist/zoned/interval/mergeIntervalsZoned.js +44 -41
  1077. package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +28 -5
  1078. package/dist/zoned/interval/splitIntervalByUnitZoned.js +72 -39
  1079. package/dist/zoned/interval/validate/isValidCalendarZonedInterval.d.ts +13 -10
  1080. package/dist/zoned/interval/validate/isValidCalendarZonedInterval.js +13 -10
  1081. package/dist/zoned/interval/validate/isValidZonedInterval.d.ts +7 -5
  1082. package/dist/zoned/interval/validate/isValidZonedInterval.js +12 -16
  1083. package/dist/zoned/map/mapZonedDatesInRange.d.ts +17 -1
  1084. package/dist/zoned/map/mapZonedDatesInRange.js +62 -26
  1085. package/dist/zoned/map/mapZonedHoursInDay.d.ts +10 -13
  1086. package/dist/zoned/map/mapZonedHoursInDay.js +13 -21
  1087. package/dist/zoned/parse/getZonedOffset.js +2 -2
  1088. package/dist/zoned/parse/getZonedOffsetAs.d.ts +15 -2
  1089. package/dist/zoned/parse/getZonedOffsetAs.js +10 -5
  1090. package/dist/zoned/parse/parseDateFromZoned.js +2 -2
  1091. package/dist/zoned/parse/parseDateTimeFromZoned.js +2 -2
  1092. package/dist/zoned/parse/parseDayFromZoned.js +2 -2
  1093. package/dist/zoned/parse/parseDayOfWeekFromZoned.js +2 -2
  1094. package/dist/zoned/parse/parseHourFromZoned.js +2 -2
  1095. package/dist/zoned/parse/parseMicrosecondFromZoned.d.ts +2 -1
  1096. package/dist/zoned/parse/parseMicrosecondFromZoned.js +4 -3
  1097. package/dist/zoned/parse/parseMillisecondFromZoned.js +2 -2
  1098. package/dist/zoned/parse/parseMinuteFromZoned.js +2 -2
  1099. package/dist/zoned/parse/parseMonthFromZoned.js +2 -2
  1100. package/dist/zoned/parse/parseNanosecondFromZoned.d.ts +2 -1
  1101. package/dist/zoned/parse/parseNanosecondFromZoned.js +4 -3
  1102. package/dist/zoned/parse/parseRfc2822.d.ts +32 -12
  1103. package/dist/zoned/parse/parseRfc2822.js +47 -45
  1104. package/dist/zoned/parse/parseRfc3339.d.ts +6 -0
  1105. package/dist/zoned/parse/parseRfc3339.js +6 -0
  1106. package/dist/zoned/parse/parseSecondFromZoned.js +2 -2
  1107. package/dist/zoned/parse/parseTimeFromZoned.js +2 -2
  1108. package/dist/zoned/parse/parseTimeZoneFromZoned.js +2 -2
  1109. package/dist/zoned/parse/parseUnitFromZoned.d.ts +36 -3
  1110. package/dist/zoned/parse/parseUnitFromZoned.js +59 -33
  1111. package/dist/zoned/parse/parseWeekFromZoned.d.ts +13 -3
  1112. package/dist/zoned/parse/parseWeekFromZoned.js +34 -10
  1113. package/dist/zoned/parse/parseYearFromZoned.js +2 -2
  1114. package/dist/zoned/validate/hasDaylightSaving.js +3 -3
  1115. package/dist/zoned/validate/isValidCalendarZonedDateTime.d.ts +31 -16
  1116. package/dist/zoned/validate/isValidCalendarZonedDateTime.js +31 -16
  1117. package/dist/zoned/validate/isValidTimeZone.d.ts +15 -2
  1118. package/dist/zoned/validate/isValidTimeZone.js +17 -4
  1119. package/dist/zoned/validate/isValidZonedDateTime.d.ts +14 -7
  1120. package/dist/zoned/validate/isValidZonedDateTime.js +20 -12
  1121. package/dist/zoned/validate/isValidZonedRange.d.ts +9 -2
  1122. package/dist/zoned/validate/isValidZonedRange.js +44 -16
  1123. package/package.json +487 -28
  1124. package/skills/gmt-arithmetic/SKILL.md +264 -0
  1125. package/skills/gmt-basics/SKILL.md +127 -0
  1126. package/skills/gmt-integration/SKILL.md +119 -0
  1127. package/skills/gmt-timezone/SKILL.md +197 -0
  1128. package/dist/internal/advanceBusinessDays.d.ts +0 -2
  1129. package/dist/internal/advanceBusinessDays.js +0 -15
  1130. package/dist/internal/ethiopicFamilyCalendar.d.ts +0 -47
  1131. package/dist/internal/ethiopicFamilyCalendar.js +0 -136
  1132. package/dist/internal/getLocaleMinimalDaysInFirstWeek.d.ts +0 -20
  1133. package/dist/internal/getLocaleMinimalDaysInFirstWeek.js +0 -31
  1134. package/dist/internal/resolveUnixTimeZone.d.ts +0 -20
  1135. package/dist/internal/resolveUnixTimeZone.js +0 -30
  1136. package/dist/unix/calculate/startOrEndOfUnix.d.ts +0 -9
  1137. package/dist/unix/calculate/startOrEndOfUnix.js +0 -122
  1138. package/dist/unix/interval/resolveUnixIntervalPair.d.ts +0 -7
  1139. package/dist/unix/interval/resolveUnixIntervalPair.js +0 -36
  1140. package/dist/utc/calculate/startOrEndOfUtc.d.ts +0 -6
  1141. package/skills/_artifacts/domain_map.yaml +0 -547
  1142. package/skills/_artifacts/skill_spec.md +0 -67
  1143. package/skills/_artifacts/skill_tree.yaml +0 -278
  1144. package/skills/api-expansion-workflow/SKILL.md +0 -52
  1145. package/skills/app-integration/SKILL.md +0 -38
  1146. package/skills/calculate-dates/SKILL.md +0 -432
  1147. package/skills/compare-dates/SKILL.md +0 -412
  1148. package/skills/convert-types/SKILL.md +0 -305
  1149. package/skills/durations/SKILL.md +0 -418
  1150. package/skills/format-date-time/SKILL.md +0 -486
  1151. package/skills/format-date-time/references/format-api.md +0 -34
  1152. package/skills/format-relative-time/SKILL.md +0 -223
  1153. package/skills/get-current/SKILL.md +0 -229
  1154. package/skills/interval-ops/SKILL.md +0 -432
  1155. package/skills/issue-creation/SKILL.md +0 -118
  1156. package/skills/lint-package-suggestion/SKILL.md +0 -37
  1157. package/skills/new-method-implementation/SKILL.md +0 -71
  1158. package/skills/parse-date-time/SKILL.md +0 -349
  1159. package/skills/pr-contribution/SKILL.md +0 -180
  1160. package/skills/unit-test-generation/SKILL.md +0 -56
  1161. package/skills/validate-dates/SKILL.md +0 -438
  1162. package/skills/zoned-date-ops/SKILL.md +0 -422
  1163. package/skills/zoned-date-ops/references/timezones.md +0 -13
@@ -3,9 +3,12 @@
3
3
  * covered by an odd number of the input intervals.
4
4
  *
5
5
  * - List-form generalization of `intervalXorTime`, which is pairwise only.
6
- * - Implemented as a coverage sweep: each interval contributes a `+1` at its start and a `-1`
7
- * one nanosecond after its end; the result is every maximal run where the running coverage
8
- * count is odd. For two intervals this reduces to exactly `intervalXorTime`'s pairwise result.
6
+ * - Half-open: an interval holds every `t` with `start <= t < end`. The result is every maximal
7
+ * run covered an odd number of times, computed as a coverage-parity sweep over the start and
8
+ * end boundaries. Runs end exactly at a boundary; no boundary is ever stepped by one unit, so
9
+ * an interval may end on the type's last value without overflow or midnight wrap.
10
+ * - Touching odd runs join into one run; an empty interval (`start === end`) contributes nothing.
11
+ * For two intervals this is exactly `intervalXorTime`'s pairwise result.
9
12
  * - Order of the input list does not matter; the result is sorted by start.
10
13
  * - Returns `[]` for an empty list, and `[]` when every clock time is covered an even number of
11
14
  * times (e.g. two identical intervals cancel out).
@@ -16,7 +19,8 @@
16
19
  * @param intervals array of `{ start, end }` records
17
20
  * @returns array of `{ start, end }` records covered an odd number of times, or `[]` on invalid input
18
21
  *
19
- * @example intervalXorAllTime([{ start: "09:00:00", end: "12:00:00" }, { start: "11:00:00", end: "15:00:00" }]) // [{ start: "09:00:00", end: "10:59:59.999999999" }, { start: "12:00:00.000000001", end: "15:00:00" }]
22
+ * @example intervalXorAllTime([{ start: "09:00:00", end: "12:00:00" }, { start: "11:00:00", end: "15:00:00" }]) // [{ start: "09:00:00", end: "11:00:00" }, { start: "12:00:00", end: "15:00:00" }]
23
+ * @example intervalXorAllTime([{ start: "22:00:00", end: "23:59:59.999999999" }, { start: "23:00:00", end: "23:30:00" }]) // [{ start: "22:00:00", end: "23:00:00" }, { start: "23:30:00", end: "23:59:59.999999999" }]
20
24
  * @example intervalXorAllTime([]) // []
21
25
  */
22
26
  export declare function intervalXorAllTime(intervals: Array<{
@@ -1,13 +1,17 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
+ import { halfOpenXor } from "../../internal/index.js";
2
3
  import { isValidTimeInterval } from "./validate/index.js";
3
4
  /**
4
5
  * Return the symmetric difference across a list of time intervals — the set of clock times
5
6
  * covered by an odd number of the input intervals.
6
7
  *
7
8
  * - List-form generalization of `intervalXorTime`, which is pairwise only.
8
- * - Implemented as a coverage sweep: each interval contributes a `+1` at its start and a `-1`
9
- * one nanosecond after its end; the result is every maximal run where the running coverage
10
- * count is odd. For two intervals this reduces to exactly `intervalXorTime`'s pairwise result.
9
+ * - Half-open: an interval holds every `t` with `start <= t < end`. The result is every maximal
10
+ * run covered an odd number of times, computed as a coverage-parity sweep over the start and
11
+ * end boundaries. Runs end exactly at a boundary; no boundary is ever stepped by one unit, so
12
+ * an interval may end on the type's last value without overflow or midnight wrap.
13
+ * - Touching odd runs join into one run; an empty interval (`start === end`) contributes nothing.
14
+ * For two intervals this is exactly `intervalXorTime`'s pairwise result.
11
15
  * - Order of the input list does not matter; the result is sorted by start.
12
16
  * - Returns `[]` for an empty list, and `[]` when every clock time is covered an even number of
13
17
  * times (e.g. two identical intervals cancel out).
@@ -18,59 +22,37 @@ import { isValidTimeInterval } from "./validate/index.js";
18
22
  * @param intervals array of `{ start, end }` records
19
23
  * @returns array of `{ start, end }` records covered an odd number of times, or `[]` on invalid input
20
24
  *
21
- * @example intervalXorAllTime([{ start: "09:00:00", end: "12:00:00" }, { start: "11:00:00", end: "15:00:00" }]) // [{ start: "09:00:00", end: "10:59:59.999999999" }, { start: "12:00:00.000000001", end: "15:00:00" }]
25
+ * @example intervalXorAllTime([{ start: "09:00:00", end: "12:00:00" }, { start: "11:00:00", end: "15:00:00" }]) // [{ start: "09:00:00", end: "11:00:00" }, { start: "12:00:00", end: "15:00:00" }]
26
+ * @example intervalXorAllTime([{ start: "22:00:00", end: "23:59:59.999999999" }, { start: "23:00:00", end: "23:30:00" }]) // [{ start: "22:00:00", end: "23:00:00" }, { start: "23:30:00", end: "23:59:59.999999999" }]
22
27
  * @example intervalXorAllTime([]) // []
23
28
  */
24
29
  export function intervalXorAllTime(intervals) {
25
- if (!Array.isArray(intervals) || intervals.length === 0) {
26
- return [];
27
- }
28
- if (!intervals.every((interval) => interval &&
29
- typeof interval === "object" &&
30
- isValidTimeInterval(interval.start, interval.end))) {
31
- return [];
32
- }
33
30
  try {
34
- const events = [];
35
- for (const interval of intervals) {
36
- const start = Temporal.PlainTime.from(interval.start);
37
- const closesAfter = Temporal.PlainTime.from(interval.end).add({
38
- nanoseconds: 1,
39
- });
40
- events.push({ point: start, delta: 1 });
41
- events.push({ point: closesAfter, delta: -1 });
31
+ if (!Array.isArray(intervals) || intervals.length === 0) {
32
+ return [];
33
+ }
34
+ if (!intervals.every((interval) => interval &&
35
+ typeof interval === "object" &&
36
+ isValidTimeInterval(interval.start, interval.end))) {
37
+ return [];
42
38
  }
43
- events.sort((a, b) => Temporal.PlainTime.compare(a.point, b.point));
44
- const grouped = [];
45
- for (const event of events) {
46
- const last = grouped[grouped.length - 1];
47
- if (last && last.point.equals(event.point)) {
48
- last.delta += event.delta;
49
- }
50
- else {
51
- grouped.push({ point: event.point, delta: event.delta });
52
- }
39
+ try {
40
+ const parsed = intervals.map((interval) => ({
41
+ start: Temporal.PlainTime.from(interval.start),
42
+ end: Temporal.PlainTime.from(interval.end),
43
+ }));
44
+ return halfOpenXor(parsed, Temporal.PlainTime.compare).map(({ start, end }) => ({
45
+ start: start.toString(),
46
+ end: end.toString(),
47
+ }));
53
48
  }
54
- const result = [];
55
- let coverage = 0;
56
- let runStart = null;
57
- for (const group of grouped) {
58
- const previousCoverage = coverage;
59
- coverage += group.delta;
60
- if (previousCoverage % 2 === 0 && coverage % 2 === 1) {
61
- runStart = group.point;
62
- }
63
- else if (previousCoverage % 2 === 1 && coverage % 2 === 0 && runStart) {
64
- result.push({
65
- start: runStart.toString(),
66
- end: group.point.subtract({ nanoseconds: 1 }).toString(),
67
- });
68
- runStart = null;
69
- }
49
+ catch {
50
+ return [];
70
51
  }
71
- return result;
72
52
  }
73
53
  catch {
54
+ // Never throws (Core Rule 3): a hostile
55
+ // argument is invalid input, not an exception.
74
56
  return [];
75
57
  }
76
58
  }
@@ -1,13 +1,15 @@
1
1
  /**
2
2
  * Return the symmetric difference of two date intervals — time covered by exactly one interval.
3
3
  *
4
- * - Uses `Temporal.PlainDate.compare` for comparison.
5
- * - Returns `[]` when intervals are identical or both invalid.
6
- * - Returns `[{ start, end }]` when one interval fully contains the other.
7
- * - Returns `[{ start, end }, { start, end }]` when intervals partially overlap (two non-overlapping pieces).
4
+ * - Half-open: an interval holds every `t` with `start <= t < end`. The result is every maximal
5
+ * run covered by exactly one of the two intervals, sorted by start — the same set as
6
+ * CORE-6's `mergeIntervals([...subtractIntervals(a, [b]), ...subtractIntervals(b, [a])])`.
7
+ * - Pieces end exactly where the other interval starts; no piece is stepped by one day.
8
+ * - Touching intervals (`aEnd === bStart`) share nothing, so they return one combined run.
9
+ * - Returns `[]` when the intervals are identical. An empty interval contributes nothing.
8
10
  * - Returns `[]` if either interval is invalid (`start > end`).
9
11
  * - Returns `[]` on invalid input (wrong type, malformed strings).
10
- * - Accepts GMT calendar-annotated PlainDate strings — E5 (issue #78). Since the result is
12
+ * - Accepts RFC 9557 calendar-annotated PlainDate strings — E5 (issue #78). Since the result is
11
13
  * date *values*, all four arguments must carry the *same* calendar tag (or all be bare ISO);
12
14
  * a mismatch returns `[]` (E5 decision of record D4). Each output piece's tag is re-derived,
13
15
  * never copied from an input.
@@ -18,11 +20,10 @@
18
20
  * @param bEnd ISO 8601 date string for the second interval end, optionally calendar-annotated
19
21
  * @returns array of `{ start, end }` records representing the symmetric difference, or `[]` on invalid input / mismatched calendars
20
22
  *
21
- * @example intervalXorDate("2024-01-01", "2024-06-30", "2024-04-01", "2024-12-31") // [{ start: "2024-01-01", end: "2024-03-31" }, { start: "2024-07-01", end: "2024-12-31" }]
22
- * @example intervalXorDate("2024-01-01", "2024-12-31", "2024-04-01", "2024-06-30") // [{ start: "2024-01-01", end: "2024-03-31" }, { start: "2024-07-01", end: "2024-12-31" }]
23
+ * @example intervalXorDate("2024-01-01", "2024-06-30", "2024-04-01", "2024-12-31") // [{ start: "2024-01-01", end: "2024-04-01" }, { start: "2024-06-30", end: "2024-12-31" }]
24
+ * @example intervalXorDate("2024-01-01", "2024-06-30", "2024-06-30", "2024-12-31") // [{ start: "2024-01-01", end: "2024-12-31" }] (touching)
23
25
  * @example intervalXorDate("2024-01-01", "2024-12-31", "2024-01-01", "2024-12-31") // []
24
- * @example intervalXorDate("2024-01-01", "2024-06-30", "2024-07-01", "2024-12-31") // [{ start: "2024-01-01", end: "2024-06-30" }, { start: "2024-07-01", end: "2024-12-31" }]
25
- * @example intervalXorDate("invalid", "2024-06-30", "2024-07-01", "2024-12-31") // []
26
+ * @example intervalXorDate("invalid", "2024-06-30", "2024-04-01", "2024-12-31") // []
26
27
  */
27
28
  export declare function intervalXorDate(aStart: string, aEnd: string, bStart: string, bEnd: string): Array<{
28
29
  start: string;
@@ -1,16 +1,19 @@
1
+ // fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
1
2
  import { Temporal } from "@js-temporal/polyfill";
2
- import { calendarOfAllDateValues, formatDateInCalendar, parseCalendarDateValue, } from "../../internal/index.js";
3
+ import { calendarOfAllDateValues, formatDateInCalendar, halfOpenXor, parseCalendarDateValue, } from "../../internal/index.js";
3
4
  import { isValidCalendarDate } from "../validate/index.js";
4
5
  /**
5
6
  * Return the symmetric difference of two date intervals — time covered by exactly one interval.
6
7
  *
7
- * - Uses `Temporal.PlainDate.compare` for comparison.
8
- * - Returns `[]` when intervals are identical or both invalid.
9
- * - Returns `[{ start, end }]` when one interval fully contains the other.
10
- * - Returns `[{ start, end }, { start, end }]` when intervals partially overlap (two non-overlapping pieces).
8
+ * - Half-open: an interval holds every `t` with `start <= t < end`. The result is every maximal
9
+ * run covered by exactly one of the two intervals, sorted by start — the same set as
10
+ * CORE-6's `mergeIntervals([...subtractIntervals(a, [b]), ...subtractIntervals(b, [a])])`.
11
+ * - Pieces end exactly where the other interval starts; no piece is stepped by one day.
12
+ * - Touching intervals (`aEnd === bStart`) share nothing, so they return one combined run.
13
+ * - Returns `[]` when the intervals are identical. An empty interval contributes nothing.
11
14
  * - Returns `[]` if either interval is invalid (`start > end`).
12
15
  * - Returns `[]` on invalid input (wrong type, malformed strings).
13
- * - Accepts GMT calendar-annotated PlainDate strings — E5 (issue #78). Since the result is
16
+ * - Accepts RFC 9557 calendar-annotated PlainDate strings — E5 (issue #78). Since the result is
14
17
  * date *values*, all four arguments must carry the *same* calendar tag (or all be bare ISO);
15
18
  * a mismatch returns `[]` (E5 decision of record D4). Each output piece's tag is re-derived,
16
19
  * never copied from an input.
@@ -21,11 +24,10 @@ import { isValidCalendarDate } from "../validate/index.js";
21
24
  * @param bEnd ISO 8601 date string for the second interval end, optionally calendar-annotated
22
25
  * @returns array of `{ start, end }` records representing the symmetric difference, or `[]` on invalid input / mismatched calendars
23
26
  *
24
- * @example intervalXorDate("2024-01-01", "2024-06-30", "2024-04-01", "2024-12-31") // [{ start: "2024-01-01", end: "2024-03-31" }, { start: "2024-07-01", end: "2024-12-31" }]
25
- * @example intervalXorDate("2024-01-01", "2024-12-31", "2024-04-01", "2024-06-30") // [{ start: "2024-01-01", end: "2024-03-31" }, { start: "2024-07-01", end: "2024-12-31" }]
27
+ * @example intervalXorDate("2024-01-01", "2024-06-30", "2024-04-01", "2024-12-31") // [{ start: "2024-01-01", end: "2024-04-01" }, { start: "2024-06-30", end: "2024-12-31" }]
28
+ * @example intervalXorDate("2024-01-01", "2024-06-30", "2024-06-30", "2024-12-31") // [{ start: "2024-01-01", end: "2024-12-31" }] (touching)
26
29
  * @example intervalXorDate("2024-01-01", "2024-12-31", "2024-01-01", "2024-12-31") // []
27
- * @example intervalXorDate("2024-01-01", "2024-06-30", "2024-07-01", "2024-12-31") // [{ start: "2024-01-01", end: "2024-06-30" }, { start: "2024-07-01", end: "2024-12-31" }]
28
- * @example intervalXorDate("invalid", "2024-06-30", "2024-07-01", "2024-12-31") // []
30
+ * @example intervalXorDate("invalid", "2024-06-30", "2024-04-01", "2024-12-31") // []
29
31
  */
30
32
  export function intervalXorDate(aStart, aEnd, bStart, bEnd) {
31
33
  if (typeof aStart !== "string" ||
@@ -55,50 +57,13 @@ export function intervalXorDate(aStart, aEnd, bStart, bEnd) {
55
57
  if (Temporal.PlainDate.compare(bS, bE) > 0) {
56
58
  return [];
57
59
  }
58
- const result = [];
59
- // If intervals don't overlap, return both as-is
60
- if (Temporal.PlainDate.compare(aE, bS) < 0 ||
61
- Temporal.PlainDate.compare(bE, aS) < 0) {
62
- return [
63
- {
64
- start: formatDateInCalendar(aS, calendar),
65
- end: formatDateInCalendar(aE, calendar),
66
- },
67
- {
68
- start: formatDateInCalendar(bS, calendar),
69
- end: formatDateInCalendar(bE, calendar),
70
- },
71
- ];
72
- }
73
- // Left piece: A before B starts
74
- if (Temporal.PlainDate.compare(aS, bS) < 0) {
75
- result.push({
76
- start: formatDateInCalendar(aS, calendar),
77
- end: formatDateInCalendar(bS.subtract({ days: 1 }), calendar),
78
- });
79
- }
80
- // Right piece: A after B ends
81
- if (Temporal.PlainDate.compare(aE, bE) > 0) {
82
- result.push({
83
- start: formatDateInCalendar(bE.add({ days: 1 }), calendar),
84
- end: formatDateInCalendar(aE, calendar),
85
- });
86
- }
87
- // Left piece: B before A starts
88
- if (Temporal.PlainDate.compare(bS, aS) < 0) {
89
- result.push({
90
- start: formatDateInCalendar(bS, calendar),
91
- end: formatDateInCalendar(aS.subtract({ days: 1 }), calendar),
92
- });
93
- }
94
- // Right piece: B after A ends
95
- if (Temporal.PlainDate.compare(bE, aE) > 0) {
96
- result.push({
97
- start: formatDateInCalendar(aE.add({ days: 1 }), calendar),
98
- end: formatDateInCalendar(bE, calendar),
99
- });
100
- }
101
- return result;
60
+ return halfOpenXor([
61
+ { start: aS, end: aE },
62
+ { start: bS, end: bE },
63
+ ], Temporal.PlainDate.compare).map(({ start, end }) => ({
64
+ start: formatDateInCalendar(start, calendar),
65
+ end: formatDateInCalendar(end, calendar),
66
+ }));
102
67
  }
103
68
  catch {
104
69
  return [];
@@ -1,10 +1,12 @@
1
1
  /**
2
2
  * Return the symmetric difference of two datetime intervals — time covered by exactly one interval.
3
3
  *
4
- * - Uses `Temporal.PlainDateTime.compare` for comparison.
5
- * - Returns `[]` when intervals are identical or both invalid.
6
- * - Returns `[{ start, end }]` when one interval fully contains the other.
7
- * - Returns `[{ start, end }, { start, end }]` when intervals partially overlap.
4
+ * - Half-open: an interval holds every `t` with `start <= t < end`. The result is every maximal
5
+ * run covered by exactly one of the two intervals, sorted by start — the same set as
6
+ * CORE-6's `mergeIntervals([...subtractIntervals(a, [b]), ...subtractIntervals(b, [a])])`.
7
+ * - Pieces end exactly where the other interval starts; no piece is stepped by one nanosecond.
8
+ * - Touching intervals (`aEnd === bStart`) share nothing, so they return one combined run.
9
+ * - Returns `[]` when the intervals are identical. An empty interval contributes nothing.
8
10
  * - Returns `[]` if either interval is invalid (`start > end`).
9
11
  * - Returns `[]` on invalid input (wrong type, malformed strings).
10
12
  *
@@ -14,9 +16,9 @@
14
16
  * @param bEnd ISO 8601 datetime string for the second interval end
15
17
  * @returns array of `{ start, end }` records representing the symmetric difference, or `[]` on invalid input
16
18
  *
17
- * @example intervalXorDateTime("2024-01-01T09:00:00", "2024-06-30T12:00:00", "2024-04-01T11:00:00", "2024-12-31T17:00:00") // [{ start: "2024-01-01T09:00:00", end: "2024-03-31T17:00:00" }, { start: "2024-06-30T12:00:01", end: "2024-12-31T17:00:00" }]
18
- * @example intervalXorDateTime("2024-01-01T09:00:00", "2024-12-31T17:00:00", "2024-04-01T11:00:00", "2024-06-30T12:00:00") // [{ start: "2024-01-01T09:00:00", end: "2024-03-31T17:00:00" }, { start: "2024-06-30T12:00:01", end: "2024-12-31T17:00:00" }]
19
- * @example intervalXorDateTime("2024-01-01T09:00:00", "2024-12-31T17:00:00", "2024-01-01T09:00:00", "2024-12-31T17:00:00") // []
19
+ * @example intervalXorDateTime("2024-01-01T09:00:00", "2024-01-01T13:00:00", "2024-01-01T12:00:00", "2024-01-01T17:00:00") // [{ start: "2024-01-01T09:00:00", end: "2024-01-01T12:00:00" }, { start: "2024-01-01T13:00:00", end: "2024-01-01T17:00:00" }]
20
+ * @example intervalXorDateTime("2024-01-01T09:00:00", "2024-01-01T12:00:00", "2024-01-01T12:00:00", "2024-01-01T17:00:00") // [{ start: "2024-01-01T09:00:00", end: "2024-01-01T17:00:00" }] (touching)
21
+ * @example intervalXorDateTime("2024-01-01T09:00:00", "2024-01-01T17:00:00", "2024-01-01T09:00:00", "2024-01-01T17:00:00") // []
20
22
  * @example intervalXorDateTime("invalid", "2024-06-30T12:00:00", "2024-07-01T13:00:00", "2024-12-31T17:00:00") // []
21
23
  */
22
24
  export declare function intervalXorDateTime(aStart: string, aEnd: string, bStart: string, bEnd: string): Array<{
@@ -1,12 +1,16 @@
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 { halfOpenXor } from "../../internal/index.js";
4
+ import { isValidDateTime } from "../validate/index.js";
3
5
  /**
4
6
  * Return the symmetric difference of two datetime intervals — time covered by exactly one interval.
5
7
  *
6
- * - Uses `Temporal.PlainDateTime.compare` for comparison.
7
- * - Returns `[]` when intervals are identical or both invalid.
8
- * - Returns `[{ start, end }]` when one interval fully contains the other.
9
- * - Returns `[{ start, end }, { start, end }]` when intervals partially overlap.
8
+ * - Half-open: an interval holds every `t` with `start <= t < end`. The result is every maximal
9
+ * run covered by exactly one of the two intervals, sorted by start — the same set as
10
+ * CORE-6's `mergeIntervals([...subtractIntervals(a, [b]), ...subtractIntervals(b, [a])])`.
11
+ * - Pieces end exactly where the other interval starts; no piece is stepped by one nanosecond.
12
+ * - Touching intervals (`aEnd === bStart`) share nothing, so they return one combined run.
13
+ * - Returns `[]` when the intervals are identical. An empty interval contributes nothing.
10
14
  * - Returns `[]` if either interval is invalid (`start > end`).
11
15
  * - Returns `[]` on invalid input (wrong type, malformed strings).
12
16
  *
@@ -16,9 +20,9 @@ import { plainDateTime } from "../../regex/index.js";
16
20
  * @param bEnd ISO 8601 datetime string for the second interval end
17
21
  * @returns array of `{ start, end }` records representing the symmetric difference, or `[]` on invalid input
18
22
  *
19
- * @example intervalXorDateTime("2024-01-01T09:00:00", "2024-06-30T12:00:00", "2024-04-01T11:00:00", "2024-12-31T17:00:00") // [{ start: "2024-01-01T09:00:00", end: "2024-03-31T17:00:00" }, { start: "2024-06-30T12:00:01", end: "2024-12-31T17:00:00" }]
20
- * @example intervalXorDateTime("2024-01-01T09:00:00", "2024-12-31T17:00:00", "2024-04-01T11:00:00", "2024-06-30T12:00:00") // [{ start: "2024-01-01T09:00:00", end: "2024-03-31T17:00:00" }, { start: "2024-06-30T12:00:01", end: "2024-12-31T17:00:00" }]
21
- * @example intervalXorDateTime("2024-01-01T09:00:00", "2024-12-31T17:00:00", "2024-01-01T09:00:00", "2024-12-31T17:00:00") // []
23
+ * @example intervalXorDateTime("2024-01-01T09:00:00", "2024-01-01T13:00:00", "2024-01-01T12:00:00", "2024-01-01T17:00:00") // [{ start: "2024-01-01T09:00:00", end: "2024-01-01T12:00:00" }, { start: "2024-01-01T13:00:00", end: "2024-01-01T17:00:00" }]
24
+ * @example intervalXorDateTime("2024-01-01T09:00:00", "2024-01-01T12:00:00", "2024-01-01T12:00:00", "2024-01-01T17:00:00") // [{ start: "2024-01-01T09:00:00", end: "2024-01-01T17:00:00" }] (touching)
25
+ * @example intervalXorDateTime("2024-01-01T09:00:00", "2024-01-01T17:00:00", "2024-01-01T09:00:00", "2024-01-01T17:00:00") // []
22
26
  * @example intervalXorDateTime("invalid", "2024-06-30T12:00:00", "2024-07-01T13:00:00", "2024-12-31T17:00:00") // []
23
27
  */
24
28
  export function intervalXorDateTime(aStart, aEnd, bStart, bEnd) {
@@ -28,10 +32,10 @@ export function intervalXorDateTime(aStart, aEnd, bStart, bEnd) {
28
32
  typeof bEnd !== "string") {
29
33
  return [];
30
34
  }
31
- if (!plainDateTime.test(aStart) ||
32
- !plainDateTime.test(aEnd) ||
33
- !plainDateTime.test(bStart) ||
34
- !plainDateTime.test(bEnd)) {
35
+ if (!isValidDateTime(aStart) ||
36
+ !isValidDateTime(aEnd) ||
37
+ !isValidDateTime(bStart) ||
38
+ !isValidDateTime(bEnd)) {
35
39
  return [];
36
40
  }
37
41
  try {
@@ -45,44 +49,13 @@ export function intervalXorDateTime(aStart, aEnd, bStart, bEnd) {
45
49
  if (Temporal.PlainDateTime.compare(bS, bE) > 0) {
46
50
  return [];
47
51
  }
48
- const result = [];
49
- // If intervals don't overlap, return both as-is
50
- if (Temporal.PlainDateTime.compare(aE, bS) < 0 ||
51
- Temporal.PlainDateTime.compare(bE, aS) < 0) {
52
- return [
53
- { start: aS.toString(), end: aE.toString() },
54
- { start: bS.toString(), end: bE.toString() },
55
- ];
56
- }
57
- // Left piece: A before B starts
58
- if (Temporal.PlainDateTime.compare(aS, bS) < 0) {
59
- result.push({
60
- start: aS.toString(),
61
- end: bS.subtract({ nanoseconds: 1 }).toString(),
62
- });
63
- }
64
- // Right piece: A after B ends
65
- if (Temporal.PlainDateTime.compare(aE, bE) > 0) {
66
- result.push({
67
- start: bE.add({ nanoseconds: 1 }).toString(),
68
- end: aE.toString(),
69
- });
70
- }
71
- // Left piece: B before A starts
72
- if (Temporal.PlainDateTime.compare(bS, aS) < 0) {
73
- result.push({
74
- start: bS.toString(),
75
- end: aS.subtract({ nanoseconds: 1 }).toString(),
76
- });
77
- }
78
- // Right piece: B after A ends
79
- if (Temporal.PlainDateTime.compare(bE, aE) > 0) {
80
- result.push({
81
- start: aE.add({ nanoseconds: 1 }).toString(),
82
- end: bE.toString(),
83
- });
84
- }
85
- return result;
52
+ return halfOpenXor([
53
+ { start: aS, end: aE },
54
+ { start: bS, end: bE },
55
+ ], Temporal.PlainDateTime.compare).map(({ start, end }) => ({
56
+ start: start.toString(),
57
+ end: end.toString(),
58
+ }));
86
59
  }
87
60
  catch {
88
61
  return [];
@@ -1,10 +1,12 @@
1
1
  /**
2
2
  * Return the symmetric difference of two time intervals — time covered by exactly one interval.
3
3
  *
4
- * - Uses `Temporal.PlainTime.compare` for comparison.
5
- * - Returns `[]` when intervals are identical or both invalid.
6
- * - Returns `[{ start, end }]` when one interval fully contains the other.
7
- * - Returns `[{ start, end }, { start, end }]` when intervals partially overlap.
4
+ * - Half-open: an interval holds every `t` with `start <= t < end`. The result is every maximal
5
+ * run covered by exactly one of the two intervals, sorted by start — the same set as
6
+ * CORE-6's `mergeIntervals([...subtractIntervals(a, [b]), ...subtractIntervals(b, [a])])`.
7
+ * - Pieces end exactly where the other interval starts; no piece is stepped by one nanosecond.
8
+ * - Touching intervals (`aEnd === bStart`) share nothing, so they return one combined run.
9
+ * - Returns `[]` when the intervals are identical. An empty interval contributes nothing.
8
10
  * - Returns `[]` if either interval is invalid (`start > end`).
9
11
  * - Returns `[]` on invalid input (wrong type, malformed strings).
10
12
  *
@@ -14,10 +16,9 @@
14
16
  * @param bEnd ISO 8601 time string for the second interval end
15
17
  * @returns array of `{ start, end }` records representing the symmetric difference, or `[]` on invalid input
16
18
  *
17
- * @example intervalXorTime("09:00:00", "12:00:00", "11:00:00", "17:00:00") // [{ start: "09:00:00", end: "10:59:59" }, { start: "12:00:01", end: "17:00:00" }]
18
- * @example intervalXorTime("09:00:00", "17:00:00", "11:00:00", "12:00:00") // [{ start: "09:00:00", end: "10:59:59" }, { start: "12:00:01", end: "17:00:00" }]
19
+ * @example intervalXorTime("09:00:00", "12:00:00", "11:00:00", "17:00:00") // [{ start: "09:00:00", end: "11:00:00" }, { start: "12:00:00", end: "17:00:00" }]
20
+ * @example intervalXorTime("09:00:00", "12:00:00", "12:00:00", "17:00:00") // [{ start: "09:00:00", end: "17:00:00" }] (touching)
19
21
  * @example intervalXorTime("09:00:00", "17:00:00", "09:00:00", "17:00:00") // []
20
- * @example intervalXorTime("09:00:00", "12:00:00", "13:00:00", "17:00:00") // [{ start: "09:00:00", end: "12:00:00" }, { start: "13:00:00", end: "17:00:00" }]
21
22
  * @example intervalXorTime("invalid", "12:00:00", "13:00:00", "17:00:00") // []
22
23
  */
23
24
  export declare function intervalXorTime(aStart: string, aEnd: string, bStart: string, bEnd: string): Array<{
@@ -1,12 +1,16 @@
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 { halfOpenXor } from "../../internal/index.js";
4
+ import { isValidTime } from "../validate/index.js";
3
5
  /**
4
6
  * Return the symmetric difference of two time intervals — time covered by exactly one interval.
5
7
  *
6
- * - Uses `Temporal.PlainTime.compare` for comparison.
7
- * - Returns `[]` when intervals are identical or both invalid.
8
- * - Returns `[{ start, end }]` when one interval fully contains the other.
9
- * - Returns `[{ start, end }, { start, end }]` when intervals partially overlap.
8
+ * - Half-open: an interval holds every `t` with `start <= t < end`. The result is every maximal
9
+ * run covered by exactly one of the two intervals, sorted by start — the same set as
10
+ * CORE-6's `mergeIntervals([...subtractIntervals(a, [b]), ...subtractIntervals(b, [a])])`.
11
+ * - Pieces end exactly where the other interval starts; no piece is stepped by one nanosecond.
12
+ * - Touching intervals (`aEnd === bStart`) share nothing, so they return one combined run.
13
+ * - Returns `[]` when the intervals are identical. An empty interval contributes nothing.
10
14
  * - Returns `[]` if either interval is invalid (`start > end`).
11
15
  * - Returns `[]` on invalid input (wrong type, malformed strings).
12
16
  *
@@ -16,10 +20,9 @@ import { plainTime } from "../../regex/index.js";
16
20
  * @param bEnd ISO 8601 time string for the second interval end
17
21
  * @returns array of `{ start, end }` records representing the symmetric difference, or `[]` on invalid input
18
22
  *
19
- * @example intervalXorTime("09:00:00", "12:00:00", "11:00:00", "17:00:00") // [{ start: "09:00:00", end: "10:59:59" }, { start: "12:00:01", end: "17:00:00" }]
20
- * @example intervalXorTime("09:00:00", "17:00:00", "11:00:00", "12:00:00") // [{ start: "09:00:00", end: "10:59:59" }, { start: "12:00:01", end: "17:00:00" }]
23
+ * @example intervalXorTime("09:00:00", "12:00:00", "11:00:00", "17:00:00") // [{ start: "09:00:00", end: "11:00:00" }, { start: "12:00:00", end: "17:00:00" }]
24
+ * @example intervalXorTime("09:00:00", "12:00:00", "12:00:00", "17:00:00") // [{ start: "09:00:00", end: "17:00:00" }] (touching)
21
25
  * @example intervalXorTime("09:00:00", "17:00:00", "09:00:00", "17:00:00") // []
22
- * @example intervalXorTime("09:00:00", "12:00:00", "13:00:00", "17:00:00") // [{ start: "09:00:00", end: "12:00:00" }, { start: "13:00:00", end: "17:00:00" }]
23
26
  * @example intervalXorTime("invalid", "12:00:00", "13:00:00", "17:00:00") // []
24
27
  */
25
28
  export function intervalXorTime(aStart, aEnd, bStart, bEnd) {
@@ -29,10 +32,10 @@ export function intervalXorTime(aStart, aEnd, bStart, bEnd) {
29
32
  typeof bEnd !== "string") {
30
33
  return [];
31
34
  }
32
- if (!plainTime.test(aStart) ||
33
- !plainTime.test(aEnd) ||
34
- !plainTime.test(bStart) ||
35
- !plainTime.test(bEnd)) {
35
+ if (!isValidTime(aStart) ||
36
+ !isValidTime(aEnd) ||
37
+ !isValidTime(bStart) ||
38
+ !isValidTime(bEnd)) {
36
39
  return [];
37
40
  }
38
41
  try {
@@ -46,44 +49,13 @@ export function intervalXorTime(aStart, aEnd, bStart, bEnd) {
46
49
  if (Temporal.PlainTime.compare(bS, bE) > 0) {
47
50
  return [];
48
51
  }
49
- const result = [];
50
- // If intervals don't overlap, return both as-is
51
- if (Temporal.PlainTime.compare(aE, bS) < 0 ||
52
- Temporal.PlainTime.compare(bE, aS) < 0) {
53
- return [
54
- { start: aS.toString(), end: aE.toString() },
55
- { start: bS.toString(), end: bE.toString() },
56
- ];
57
- }
58
- // Left piece: A before B starts
59
- if (Temporal.PlainTime.compare(aS, bS) < 0) {
60
- result.push({
61
- start: aS.toString(),
62
- end: bS.subtract({ nanoseconds: 1 }).toString(),
63
- });
64
- }
65
- // Right piece: A after B ends
66
- if (Temporal.PlainTime.compare(aE, bE) > 0) {
67
- result.push({
68
- start: bE.add({ nanoseconds: 1 }).toString(),
69
- end: aE.toString(),
70
- });
71
- }
72
- // Left piece: B before A starts
73
- if (Temporal.PlainTime.compare(bS, aS) < 0) {
74
- result.push({
75
- start: bS.toString(),
76
- end: aS.subtract({ nanoseconds: 1 }).toString(),
77
- });
78
- }
79
- // Right piece: B after A ends
80
- if (Temporal.PlainTime.compare(bE, aE) > 0) {
81
- result.push({
82
- start: aE.add({ nanoseconds: 1 }).toString(),
83
- end: bE.toString(),
84
- });
85
- }
86
- return result;
52
+ return halfOpenXor([
53
+ { start: aS, end: aE },
54
+ { start: bS, end: bE },
55
+ ], Temporal.PlainTime.compare).map(({ start, end }) => ({
56
+ start: start.toString(),
57
+ end: end.toString(),
58
+ }));
87
59
  }
88
60
  catch {
89
61
  return [];
@@ -1,23 +1,30 @@
1
1
  /**
2
- * Return true when intervals `[aStart, aEnd]` and `[bStart, bEnd]` share at least one instant.
2
+ * Return true when the half-open date intervals `[aStart, aEnd)` and `[bStart, bEnd)` share at
3
+ * least one day.
3
4
  *
5
+ * - Half-open: an interval holds every date `d` with `start <= d < end`, so `end` itself is not
6
+ * in it (the rule CORE-6's `intervalsOverlap` uses). The test is `aStart < bEnd && bStart < aEnd`.
7
+ * - Touching intervals (`aEnd` equal to `bStart`) share no day and do not overlap.
8
+ * - An empty interval (`start === end`) overlaps only an interval it lies strictly inside.
4
9
  * - Uses `Temporal.PlainDate.compare` for comparison.
5
- * - Adjacent intervals (e.g. `aEnd === bStart`) do NOT overlap — returns `false`.
6
10
  * - Returns `false` if either interval is invalid (`start > end`).
7
11
  * - Returns `false` on invalid input (wrong type, malformed strings).
8
- * - Accepts GMT calendar-annotated PlainDate strings — E5 (issue #78). Ordering is
12
+ * - Accepts RFC 9557 calendar-annotated PlainDate strings — E5 (issue #78). Ordering is
9
13
  * calendar-independent, so arguments may carry different or no calendar tags (D4).
14
+ * - Compatibility: since 1.16.0 calendar strings are RFC 9557 (ISO digits, `[u-ca=<id>]`, canonical
15
+ * calendar ids); see `isValidCalendarDate`.
10
16
  *
11
17
  * @param aStart ISO 8601 date string for the first interval start, optionally calendar-annotated
12
- * @param aEnd ISO 8601 date string for the first interval end, optionally calendar-annotated
18
+ * @param aEnd ISO 8601 date string for the first interval end (excluded), optionally calendar-annotated
13
19
  * @param bStart ISO 8601 date string for the second interval start, optionally calendar-annotated
14
- * @param bEnd ISO 8601 date string for the second interval end, optionally calendar-annotated
20
+ * @param bEnd ISO 8601 date string for the second interval end (excluded), optionally calendar-annotated
15
21
  * @returns true if intervals overlap, or false on invalid input
16
22
  *
17
23
  * @example intervalsOverlapDate("2024-01-01", "2024-06-30", "2024-04-01", "2024-12-31") // true
18
- * @example intervalsOverlapDate("2024-01-01", "2024-06-30", "2024-07-01", "2024-12-31") // false (adjacent)
24
+ * @example intervalsOverlapDate("2024-01-01", "2024-06-30", "2024-06-30", "2024-12-31") // false (touching: A ends before 06-30)
25
+ * @example intervalsOverlapDate("2024-01-01", "2024-06-30", "2024-06-29", "2024-07-01") // true (both hold 06-29)
19
26
  * @example intervalsOverlapDate("2024-01-01", "2024-06-30", "2024-07-02", "2024-12-31") // false (disjoint)
20
- * @example intervalsOverlapDate("2024-01-01", "2024-06-30", "2024-02-01", "2024-03-01") // true (partial)
27
+ * @example intervalsOverlapDate("2024-01-01", "2024-06-30", "2024-06-30", "2024-06-30") // false (empty interval at the end)
21
28
  * @example intervalsOverlapDate("invalid", "2024-06-30", "2024-04-01", "2024-12-31") // false
22
29
  */
23
30
  export declare function intervalsOverlapDate(aStart: string, aEnd: string, bStart: string, bEnd: string): boolean;