@northguild/gmt 1.15.0 → 1.17.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 (1143) hide show
  1. package/README.md +1133 -272
  2. package/dist/calendar/business/businessDaysBetween.d.ts +37 -0
  3. package/dist/calendar/business/businessDaysBetween.js +89 -0
  4. package/dist/calendar/business/index.d.ts +7 -0
  5. package/dist/calendar/business/index.js +10 -0
  6. package/dist/calendar/business/mergeCalendars.d.ts +33 -0
  7. package/dist/calendar/business/mergeCalendars.js +68 -0
  8. package/dist/calendar/business/nextBusinessDay.d.ts +30 -0
  9. package/dist/calendar/business/nextBusinessDay.js +39 -0
  10. package/dist/calendar/business/previousBusinessDay.d.ts +30 -0
  11. package/dist/calendar/business/previousBusinessDay.js +39 -0
  12. package/dist/calendar/business/rollDate.d.ts +59 -0
  13. package/dist/calendar/business/rollDate.js +116 -0
  14. package/dist/calendar/calculate/bucketRange.d.ts +49 -0
  15. package/dist/calendar/calculate/bucketRange.js +169 -0
  16. package/dist/calendar/calculate/floorToZone.d.ts +42 -0
  17. package/dist/calendar/calculate/floorToZone.js +62 -0
  18. package/dist/calendar/calculate/getFiscalPeriod.d.ts +64 -0
  19. package/dist/calendar/calculate/getFiscalPeriod.js +96 -0
  20. package/dist/calendar/calculate/getIsoWeekDate.d.ts +35 -0
  21. package/dist/calendar/calculate/getIsoWeekDate.js +41 -0
  22. package/dist/calendar/calculate/getOrdinalDate.d.ts +25 -0
  23. package/dist/calendar/calculate/getOrdinalDate.js +28 -0
  24. package/dist/calendar/calculate/getQuarter.d.ts +36 -0
  25. package/dist/calendar/calculate/getQuarter.js +64 -0
  26. package/dist/calendar/calculate/index.d.ts +6 -0
  27. package/dist/calendar/calculate/index.js +6 -0
  28. package/dist/calendar/index.d.ts +4 -0
  29. package/dist/calendar/index.js +5 -0
  30. package/dist/calendar/validate/index.d.ts +4 -0
  31. package/dist/calendar/validate/index.js +4 -0
  32. package/dist/calendar/validate/isValidBusinessCalendar.d.ts +31 -0
  33. package/dist/calendar/validate/isValidBusinessCalendar.js +40 -0
  34. package/dist/calendar/validate/isValidFiscalPattern.d.ts +25 -0
  35. package/dist/calendar/validate/isValidFiscalPattern.js +29 -0
  36. package/dist/calendar/validate/isValidRollConvention.d.ts +28 -0
  37. package/dist/calendar/validate/isValidRollConvention.js +38 -0
  38. package/dist/calendar/validate/isValidZoneBucketUnit.d.ts +31 -0
  39. package/dist/calendar/validate/isValidZoneBucketUnit.js +39 -0
  40. package/dist/duration/calculate/durationAs.d.ts +27 -3
  41. package/dist/duration/calculate/durationAs.js +34 -8
  42. package/dist/duration/calculate/getDurationUnit.d.ts +5 -2
  43. package/dist/duration/calculate/getDurationUnit.js +7 -3
  44. package/dist/duration/compare/compareDurations.d.ts +25 -2
  45. package/dist/duration/compare/compareDurations.js +31 -7
  46. package/dist/duration/format/formatDuration.d.ts +14 -5
  47. package/dist/duration/format/formatDuration.js +47 -11
  48. package/dist/duration/index.d.ts +1 -0
  49. package/dist/duration/index.js +2 -0
  50. package/dist/duration/normalize/normalizeDuration.d.ts +33 -6
  51. package/dist/duration/normalize/normalizeDuration.js +41 -12
  52. package/dist/duration/parse/parseDuration.js +4 -0
  53. package/dist/index.d.ts +7 -0
  54. package/dist/index.js +7 -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 +91 -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 +96 -0
  64. package/dist/instant/convert/toOffsetInstant.js +162 -0
  65. package/dist/instant/index.d.ts +2 -0
  66. package/dist/instant/index.js +3 -0
  67. package/dist/intermodal/calculate/billingTimeline.d.ts +94 -0
  68. package/dist/intermodal/calculate/billingTimeline.js +168 -0
  69. package/dist/intermodal/calculate/chargeableDays.d.ts +98 -0
  70. package/dist/intermodal/calculate/chargeableDays.js +101 -0
  71. package/dist/intermodal/calculate/demurrageClock.d.ts +93 -0
  72. package/dist/intermodal/calculate/demurrageClock.js +140 -0
  73. package/dist/intermodal/calculate/freeTimeExpiry.d.ts +66 -0
  74. package/dist/intermodal/calculate/freeTimeExpiry.js +82 -0
  75. package/dist/intermodal/calculate/index.d.ts +4 -0
  76. package/dist/intermodal/calculate/index.js +4 -0
  77. package/dist/intermodal/index.d.ts +2 -0
  78. package/dist/intermodal/index.js +3 -0
  79. package/dist/internal/adjustZonedBusinessDays.js +9 -7
  80. package/dist/internal/businessCalendar.d.ts +46 -0
  81. package/dist/internal/businessCalendar.js +230 -0
  82. package/dist/internal/businessDayValues.d.ts +20 -0
  83. package/dist/internal/businessDayValues.js +54 -0
  84. package/dist/internal/calendarDatePairPolicy.d.ts +10 -12
  85. package/dist/internal/calendarDatePairPolicy.js +13 -19
  86. package/dist/internal/calendarDateString.d.ts +32 -58
  87. package/dist/internal/calendarDateString.js +51 -93
  88. package/dist/internal/calendarSystemIds.d.ts +26 -2
  89. package/dist/internal/calendarSystemIds.js +57 -51
  90. package/dist/internal/calendarValueOfDate.d.ts +10 -12
  91. package/dist/internal/calendarValueOfDate.js +22 -20
  92. package/dist/internal/calendarValueOfZoned.d.ts +14 -17
  93. package/dist/internal/calendarValueOfZoned.js +25 -25
  94. package/dist/internal/calendarZonedPairPolicy.d.ts +11 -18
  95. package/dist/internal/calendarZonedPairPolicy.js +14 -25
  96. package/dist/internal/calendarZonedString.d.ts +41 -65
  97. package/dist/internal/calendarZonedString.js +52 -101
  98. package/dist/internal/compareUnixEpochs.d.ts +14 -0
  99. package/dist/internal/compareUnixEpochs.js +25 -0
  100. package/dist/internal/dateTimeUnitHelpers.d.ts +18 -0
  101. package/dist/internal/dateTimeUnitHelpers.js +27 -0
  102. package/dist/internal/dateUnitHelpers.d.ts +39 -1
  103. package/dist/internal/dateUnitHelpers.js +73 -11
  104. package/dist/internal/defaultFractionalDigits.d.ts +14 -0
  105. package/dist/internal/defaultFractionalDigits.js +23 -0
  106. package/dist/internal/differenceRecord.d.ts +32 -0
  107. package/dist/internal/differenceRecord.js +79 -0
  108. package/dist/internal/divisionBoundary.d.ts +19 -0
  109. package/dist/internal/divisionBoundary.js +23 -0
  110. package/dist/internal/durationUntilString.d.ts +1 -1
  111. package/dist/internal/durationUntilString.js +10 -2
  112. package/dist/internal/englishCalendarNames.d.ts +11 -0
  113. package/dist/internal/englishCalendarNames.js +21 -1
  114. package/dist/internal/epochNanoseconds.d.ts +27 -0
  115. package/dist/internal/epochNanoseconds.js +31 -0
  116. package/dist/internal/fiscalCalendar.d.ts +36 -0
  117. package/dist/internal/fiscalCalendar.js +86 -0
  118. package/dist/internal/floorDivide.d.ts +15 -0
  119. package/dist/internal/floorDivide.js +18 -0
  120. package/dist/internal/foreignEpochs.d.ts +134 -0
  121. package/dist/internal/foreignEpochs.js +139 -0
  122. package/dist/internal/formatCalendarDays.d.ts +28 -0
  123. package/dist/internal/formatCalendarDays.js +49 -0
  124. package/dist/internal/formatDateInCalendar.d.ts +14 -39
  125. package/dist/internal/formatDateInCalendar.js +16 -47
  126. package/dist/internal/formatRelativeDuration.d.ts +27 -0
  127. package/dist/internal/formatRelativeDuration.js +45 -0
  128. package/dist/internal/freeTimeLedger.d.ts +93 -0
  129. package/dist/internal/freeTimeLedger.js +262 -0
  130. package/dist/internal/getLocaleFirstDayOfWeek.d.ts +9 -6
  131. package/dist/internal/getLocaleFirstDayOfWeek.js +9 -10
  132. package/dist/internal/getLocaleWeekYearBounds.d.ts +17 -9
  133. package/dist/internal/getLocaleWeekYearBounds.js +45 -26
  134. package/dist/internal/getLocaleWeekendDays.d.ts +9 -18
  135. package/dist/internal/getLocaleWeekendDays.js +9 -5
  136. package/dist/internal/halfOpenIntervals.d.ts +102 -0
  137. package/dist/internal/halfOpenIntervals.js +180 -0
  138. package/dist/internal/hasCalendarAnnotation.d.ts +20 -20
  139. package/dist/internal/hasCalendarAnnotation.js +23 -21
  140. package/dist/internal/hourDurationString.d.ts +16 -0
  141. package/dist/internal/hourDurationString.js +47 -0
  142. package/dist/internal/httpDateFields.d.ts +24 -0
  143. package/dist/internal/httpDateFields.js +86 -0
  144. package/dist/internal/index.d.ts +30 -9
  145. package/dist/internal/index.js +30 -9
  146. package/dist/internal/instantFormatOptions.d.ts +43 -0
  147. package/dist/internal/instantFormatOptions.js +99 -0
  148. package/dist/internal/instantIntervalText.d.ts +20 -0
  149. package/dist/internal/instantIntervalText.js +25 -0
  150. package/dist/internal/instantNanoseconds.d.ts +25 -0
  151. package/dist/internal/instantNanoseconds.js +41 -0
  152. package/dist/internal/intervalCountHelpers.d.ts +16 -10
  153. package/dist/internal/intervalCountHelpers.js +1 -31
  154. package/dist/internal/intervalNanoseconds.d.ts +47 -0
  155. package/dist/internal/intervalNanoseconds.js +86 -0
  156. package/dist/internal/isObject.d.ts +26 -0
  157. package/dist/internal/isObject.js +30 -0
  158. package/dist/internal/isoStringBody.d.ts +66 -0
  159. package/dist/internal/isoStringBody.js +105 -0
  160. package/dist/internal/joinDateTimeConnector.d.ts +1 -1
  161. package/dist/internal/localeWeekInfo.d.ts +34 -0
  162. package/dist/internal/localeWeekInfo.js +27 -0
  163. package/dist/internal/maxPieces.d.ts +41 -0
  164. package/dist/internal/maxPieces.js +53 -0
  165. package/dist/internal/measureNearRangeEnd.d.ts +26 -0
  166. package/dist/internal/measureNearRangeEnd.js +47 -0
  167. package/dist/internal/monthGridWeekRow.d.ts +4 -1
  168. package/dist/internal/monthGridWeekRow.js +3 -0
  169. package/dist/internal/normalizeTimeZone.d.ts +17 -10
  170. package/dist/internal/normalizeTimeZone.js +25 -15
  171. package/dist/internal/patternToken.d.ts +2 -1
  172. package/dist/internal/patternToken.js +10 -4
  173. package/dist/internal/plainDateAdd.d.ts +20 -0
  174. package/dist/internal/plainDateAdd.js +42 -0
  175. package/dist/internal/plainDateUntil.d.ts +21 -0
  176. package/dist/internal/plainDateUntil.js +48 -0
  177. package/dist/internal/plainFormatOptions.d.ts +59 -0
  178. package/dist/internal/plainFormatOptions.js +165 -0
  179. package/dist/internal/resolveDateTimeUnit.d.ts +4 -1
  180. package/dist/internal/resolveDateTimeUnit.js +2 -12
  181. package/dist/internal/resolveDurationRelativeTo.d.ts +28 -22
  182. package/dist/internal/resolveDurationRelativeTo.js +69 -25
  183. package/dist/internal/resolveDurationUnit.d.ts +4 -1
  184. package/dist/internal/resolveDurationUnit.js +2 -11
  185. package/dist/internal/resolveLocale.d.ts +37 -0
  186. package/dist/internal/resolveLocale.js +59 -0
  187. package/dist/internal/resolveManualRoundingOptions.d.ts +23 -0
  188. package/dist/internal/resolveManualRoundingOptions.js +39 -0
  189. package/dist/internal/resolveMinimalDaysInFirstWeek.d.ts +19 -0
  190. package/dist/internal/resolveMinimalDaysInFirstWeek.js +28 -0
  191. package/dist/internal/resolveOverflow.d.ts +6 -0
  192. package/dist/internal/resolveOverflow.js +7 -1
  193. package/dist/internal/resolveReadingTimeZone.d.ts +11 -0
  194. package/dist/internal/resolveReadingTimeZone.js +18 -0
  195. package/dist/internal/resolveUnixIntervalPair.d.ts +30 -0
  196. package/dist/internal/resolveUnixIntervalPair.js +53 -0
  197. package/dist/internal/resolveWeekStartsOn.d.ts +12 -0
  198. package/dist/internal/resolveWeekStartsOn.js +18 -0
  199. package/dist/internal/rfc5322DateTime.d.ts +26 -0
  200. package/dist/internal/rfc5322DateTime.js +176 -0
  201. package/dist/internal/splitStep.d.ts +81 -0
  202. package/dist/internal/splitStep.js +182 -0
  203. package/dist/internal/startOrEndOfUnix.d.ts +26 -0
  204. package/dist/internal/startOrEndOfUnix.js +47 -0
  205. package/dist/{utc/calculate → internal}/startOrEndOfUtc.d.ts +8 -4
  206. package/dist/{utc/calculate → internal}/startOrEndOfUtc.js +30 -26
  207. package/dist/internal/startOrEndOfZoned.d.ts +22 -0
  208. package/dist/internal/startOrEndOfZoned.js +49 -0
  209. package/dist/internal/temporalCompat/calendarDateArithmetic.d.ts +33 -0
  210. package/dist/internal/temporalCompat/calendarDateArithmetic.js +199 -0
  211. package/dist/internal/temporalCompat/calendarDateFromFields.d.ts +36 -0
  212. package/dist/internal/temporalCompat/calendarDateFromFields.js +120 -0
  213. package/dist/internal/temporalCompat/calendarFields.d.ts +25 -0
  214. package/dist/internal/temporalCompat/calendarFields.js +131 -0
  215. package/dist/internal/temporalCompat/capabilities.d.ts +28 -0
  216. package/dist/internal/temporalCompat/capabilities.js +74 -0
  217. package/dist/internal/temporalCompat/fieldSearch.d.ts +21 -0
  218. package/dist/internal/temporalCompat/fieldSearch.js +83 -0
  219. package/dist/internal/temporalCompat/fixedDay.d.ts +25 -0
  220. package/dist/internal/temporalCompat/fixedDay.js +45 -0
  221. package/dist/internal/temporalCompat/hebrewArithmetic.d.ts +19 -0
  222. package/dist/internal/temporalCompat/hebrewArithmetic.js +150 -0
  223. package/dist/internal/temporalCompat/index.d.ts +4 -0
  224. package/dist/internal/temporalCompat/index.js +5 -0
  225. package/dist/internal/temporalCompat/indianArithmetic.d.ts +16 -0
  226. package/dist/internal/temporalCompat/indianArithmetic.js +87 -0
  227. package/dist/internal/temporalCompat/largeMonthSpan.d.ts +19 -0
  228. package/dist/internal/temporalCompat/largeMonthSpan.js +199 -0
  229. package/dist/internal/temporalCompat/nonIsoArithmetic.d.ts +59 -0
  230. package/dist/internal/temporalCompat/nonIsoArithmetic.js +220 -0
  231. package/dist/internal/temporalCompat/readArithmeticModel.d.ts +3 -0
  232. package/dist/internal/temporalCompat/readArithmeticModel.js +284 -0
  233. package/dist/internal/temporalCompat/repros.d.ts +31 -0
  234. package/dist/internal/temporalCompat/repros.js +556 -0
  235. package/dist/internal/toInstantFromUtc.d.ts +10 -0
  236. package/dist/internal/toInstantFromUtc.js +19 -0
  237. package/dist/internal/unixEpochValue.d.ts +166 -0
  238. package/dist/internal/unixEpochValue.js +245 -0
  239. package/dist/internal/unixFormatReference.d.ts +18 -0
  240. package/dist/internal/unixFormatReference.js +44 -0
  241. package/dist/internal/unixZonedDateTime.d.ts +22 -0
  242. package/dist/internal/unixZonedDateTime.js +32 -0
  243. package/dist/internal/utcOffsetString.d.ts +39 -0
  244. package/dist/internal/utcOffsetString.js +75 -0
  245. package/dist/internal/utcZonedDateTime.d.ts +16 -0
  246. package/dist/internal/utcZonedDateTime.js +28 -0
  247. package/dist/internal/wallClockAtOffset.d.ts +22 -0
  248. package/dist/internal/wallClockAtOffset.js +26 -0
  249. package/dist/internal/zonedBucket.d.ts +91 -0
  250. package/dist/internal/zonedBucket.js +441 -0
  251. package/dist/internal/zonedFormatReference.d.ts +15 -0
  252. package/dist/internal/zonedFormatReference.js +24 -0
  253. package/dist/internal/zonedLocalDates.d.ts +15 -0
  254. package/dist/internal/zonedLocalDates.js +58 -0
  255. package/dist/internal/zonedNowUnitValue.d.ts +24 -0
  256. package/dist/internal/zonedNowUnitValue.js +58 -0
  257. package/dist/internal/zonedWallClock.d.ts +84 -0
  258. package/dist/internal/zonedWallClock.js +427 -0
  259. package/dist/internal/zonedWallClockDifference.d.ts +92 -0
  260. package/dist/internal/zonedWallClockDifference.js +1174 -0
  261. package/dist/internal/zonedWallClockOperations.d.ts +132 -0
  262. package/dist/internal/zonedWallClockOperations.js +553 -0
  263. package/dist/internal/zonelessCalendarDate.d.ts +12 -0
  264. package/dist/internal/zonelessCalendarDate.js +22 -0
  265. package/dist/interval/calculate/clampInterval.d.ts +22 -0
  266. package/dist/interval/calculate/clampInterval.js +31 -0
  267. package/dist/interval/calculate/index.d.ts +6 -0
  268. package/dist/interval/calculate/index.js +6 -0
  269. package/dist/interval/calculate/intersectIntervals.d.ts +23 -0
  270. package/dist/interval/calculate/intersectIntervals.js +43 -0
  271. package/dist/interval/calculate/mergeIntervals.d.ts +28 -0
  272. package/dist/interval/calculate/mergeIntervals.js +44 -0
  273. package/dist/interval/calculate/splitIntervalAt.d.ts +28 -0
  274. package/dist/interval/calculate/splitIntervalAt.js +63 -0
  275. package/dist/interval/calculate/subtractIntervals.d.ts +31 -0
  276. package/dist/interval/calculate/subtractIntervals.js +64 -0
  277. package/dist/interval/calculate/sumIntervals.d.ts +26 -0
  278. package/dist/interval/calculate/sumIntervals.js +40 -0
  279. package/dist/interval/compare/index.d.ts +2 -0
  280. package/dist/interval/compare/index.js +2 -0
  281. package/dist/interval/compare/intervalContains.d.ts +25 -0
  282. package/dist/interval/compare/intervalContains.js +39 -0
  283. package/dist/interval/compare/intervalsOverlap.d.ts +28 -0
  284. package/dist/interval/compare/intervalsOverlap.js +42 -0
  285. package/dist/interval/index.d.ts +4 -0
  286. package/dist/interval/index.js +5 -0
  287. package/dist/interval/validate/index.d.ts +1 -0
  288. package/dist/interval/validate/index.js +1 -0
  289. package/dist/interval/validate/isValidInterval.d.ts +29 -0
  290. package/dist/interval/validate/isValidInterval.js +38 -0
  291. package/dist/plain/calculate/addBusinessDays.d.ts +26 -9
  292. package/dist/plain/calculate/addBusinessDays.js +29 -21
  293. package/dist/plain/calculate/addDate.d.ts +9 -8
  294. package/dist/plain/calculate/addDate.js +35 -22
  295. package/dist/plain/calculate/addDateTime.js +24 -10
  296. package/dist/plain/calculate/addTime.d.ts +5 -8
  297. package/dist/plain/calculate/addTime.js +23 -16
  298. package/dist/plain/calculate/clampDate.js +3 -3
  299. package/dist/plain/calculate/closestDateTo.d.ts +11 -7
  300. package/dist/plain/calculate/closestDateTo.js +36 -24
  301. package/dist/plain/calculate/cycleDate.d.ts +1 -1
  302. package/dist/plain/calculate/cycleDate.js +10 -3
  303. package/dist/plain/calculate/cycleDateTime.d.ts +1 -1
  304. package/dist/plain/calculate/cycleDateTime.js +10 -3
  305. package/dist/plain/calculate/cycleTime.d.ts +6 -8
  306. package/dist/plain/calculate/cycleTime.js +15 -9
  307. package/dist/plain/calculate/diffDate.d.ts +31 -14
  308. package/dist/plain/calculate/diffDate.js +73 -38
  309. package/dist/plain/calculate/diffDateAsDuration.d.ts +13 -8
  310. package/dist/plain/calculate/diffDateAsDuration.js +22 -9
  311. package/dist/plain/calculate/diffDateTime.d.ts +17 -5
  312. package/dist/plain/calculate/diffDateTime.js +67 -28
  313. package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +2 -2
  314. package/dist/plain/calculate/diffDateTimeAsDuration.js +10 -3
  315. package/dist/plain/calculate/diffTime.d.ts +18 -5
  316. package/dist/plain/calculate/diffTime.js +68 -27
  317. package/dist/plain/calculate/endOfDate.d.ts +10 -2
  318. package/dist/plain/calculate/endOfDate.js +52 -27
  319. package/dist/plain/calculate/endOfDateTime.d.ts +17 -2
  320. package/dist/plain/calculate/endOfDateTime.js +126 -103
  321. package/dist/plain/calculate/endOfTime.d.ts +16 -2
  322. package/dist/plain/calculate/endOfTime.js +77 -59
  323. package/dist/plain/calculate/getLargestDateDurationUnit.d.ts +13 -5
  324. package/dist/plain/calculate/getLargestDateDurationUnit.js +26 -10
  325. package/dist/plain/calculate/getLargestDateTimeDurationUnit.d.ts +13 -6
  326. package/dist/plain/calculate/getLargestDateTimeDurationUnit.js +37 -22
  327. package/dist/plain/calculate/getLargestTimeDurationUnit.d.ts +13 -6
  328. package/dist/plain/calculate/getLargestTimeDurationUnit.js +33 -18
  329. package/dist/plain/calculate/getLocaleDayOfWeek.d.ts +8 -4
  330. package/dist/plain/calculate/getLocaleDayOfWeek.js +8 -3
  331. package/dist/plain/calculate/getLocaleEndOfWeek.d.ts +8 -4
  332. package/dist/plain/calculate/getLocaleEndOfWeek.js +8 -3
  333. package/dist/plain/calculate/getLocaleStartOfWeek.d.ts +8 -4
  334. package/dist/plain/calculate/getLocaleStartOfWeek.js +8 -3
  335. package/dist/plain/calculate/getLocaleWeekYear.d.ts +29 -19
  336. package/dist/plain/calculate/getLocaleWeekYear.js +48 -28
  337. package/dist/plain/calculate/getWeekNumber.d.ts +21 -2
  338. package/dist/plain/calculate/getWeekNumber.js +33 -12
  339. package/dist/plain/calculate/getWeekOfMonth.d.ts +4 -2
  340. package/dist/plain/calculate/getWeekOfMonth.js +8 -3
  341. package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +25 -14
  342. package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +45 -25
  343. package/dist/plain/calculate/getWeeksInMonth.d.ts +4 -2
  344. package/dist/plain/calculate/getWeeksInMonth.js +8 -3
  345. package/dist/plain/calculate/getWeeksInYear.d.ts +5 -4
  346. package/dist/plain/calculate/getWeeksInYear.js +9 -14
  347. package/dist/plain/calculate/maxDate.js +19 -12
  348. package/dist/plain/calculate/maxDateTime.js +19 -12
  349. package/dist/plain/calculate/maxTime.js +19 -12
  350. package/dist/plain/calculate/minDate.js +19 -12
  351. package/dist/plain/calculate/minDateTime.js +19 -12
  352. package/dist/plain/calculate/minTime.js +19 -12
  353. package/dist/plain/calculate/nextWeekday.js +5 -0
  354. package/dist/plain/calculate/previousWeekday.js +5 -0
  355. package/dist/plain/calculate/roundDate.d.ts +23 -5
  356. package/dist/plain/calculate/roundDate.js +88 -46
  357. package/dist/plain/calculate/roundDateTime.d.ts +27 -3
  358. package/dist/plain/calculate/roundDateTime.js +128 -69
  359. package/dist/plain/calculate/roundTime.d.ts +8 -1
  360. package/dist/plain/calculate/roundTime.js +32 -17
  361. package/dist/plain/calculate/setDate.js +4 -0
  362. package/dist/plain/calculate/setDateTime.js +4 -0
  363. package/dist/plain/calculate/setTime.d.ts +1 -1
  364. package/dist/plain/calculate/setTime.js +5 -1
  365. package/dist/plain/calculate/sortDateTimes.js +17 -10
  366. package/dist/plain/calculate/sortDates.js +17 -10
  367. package/dist/plain/calculate/sortTimes.js +17 -10
  368. package/dist/plain/calculate/startOfDate.d.ts +7 -2
  369. package/dist/plain/calculate/startOfDate.js +52 -27
  370. package/dist/plain/calculate/startOfDateTime.d.ts +5 -2
  371. package/dist/plain/calculate/startOfDateTime.js +81 -62
  372. package/dist/plain/calculate/startOfQuarterForDateTime.d.ts +2 -0
  373. package/dist/plain/calculate/startOfQuarterForDateTime.js +12 -1
  374. package/dist/plain/calculate/startOfTime.d.ts +15 -2
  375. package/dist/plain/calculate/startOfTime.js +33 -37
  376. package/dist/plain/calculate/subtractBusinessDays.d.ts +25 -10
  377. package/dist/plain/calculate/subtractBusinessDays.js +28 -22
  378. package/dist/plain/calculate/subtractDate.d.ts +8 -7
  379. package/dist/plain/calculate/subtractDate.js +35 -21
  380. package/dist/plain/calculate/subtractDateTime.js +24 -10
  381. package/dist/plain/calculate/subtractTime.d.ts +5 -8
  382. package/dist/plain/calculate/subtractTime.js +23 -16
  383. package/dist/plain/chop/index.d.ts +0 -1
  384. package/dist/plain/chop/index.js +0 -1
  385. package/dist/plain/compare/areDateTimesEqualBy.d.ts +10 -5
  386. package/dist/plain/compare/areDateTimesEqualBy.js +35 -10
  387. package/dist/plain/compare/areDatesEqualBy.d.ts +10 -3
  388. package/dist/plain/compare/areDatesEqualBy.js +41 -14
  389. package/dist/plain/compare/isBetweenDate.js +32 -16
  390. package/dist/plain/compare/isBetweenDateTime.js +34 -18
  391. package/dist/plain/compare/isBetweenTime.js +32 -16
  392. package/dist/plain/compare/isBusinessDay.d.ts +25 -11
  393. package/dist/plain/compare/isBusinessDay.js +36 -15
  394. package/dist/plain/compare/isThisUnit.d.ts +13 -4
  395. package/dist/plain/compare/isThisUnit.js +33 -13
  396. package/dist/plain/compare/isWeekend.d.ts +8 -4
  397. package/dist/plain/compare/isWeekend.js +7 -3
  398. package/dist/plain/convert/convertDateToCalendar.d.ts +34 -33
  399. package/dist/plain/convert/convertDateToCalendar.js +41 -40
  400. package/dist/plain/format/formatCalendar.d.ts +12 -6
  401. package/dist/plain/format/formatCalendar.js +47 -25
  402. package/dist/plain/format/formatDate.d.ts +21 -4
  403. package/dist/plain/format/formatDate.js +37 -5
  404. package/dist/plain/format/formatDateRange.d.ts +17 -4
  405. package/dist/plain/format/formatDateRange.js +29 -5
  406. package/dist/plain/format/formatDateTime.d.ts +22 -4
  407. package/dist/plain/format/formatDateTime.js +31 -5
  408. package/dist/plain/format/formatDateTimeRange.d.ts +20 -4
  409. package/dist/plain/format/formatDateTimeRange.js +29 -5
  410. package/dist/plain/format/formatDateTimeToParts.d.ts +32 -6
  411. package/dist/plain/format/formatDateTimeToParts.js +40 -14
  412. package/dist/plain/format/formatDateToParts.d.ts +24 -3
  413. package/dist/plain/format/formatDateToParts.js +36 -11
  414. package/dist/plain/format/formatRelativeDate.d.ts +7 -3
  415. package/dist/plain/format/formatRelativeDate.js +39 -24
  416. package/dist/plain/format/formatRelativeDateTime.d.ts +15 -6
  417. package/dist/plain/format/formatRelativeDateTime.js +35 -33
  418. package/dist/plain/format/formatRelativeTime.d.ts +8 -4
  419. package/dist/plain/format/formatRelativeTime.js +36 -21
  420. package/dist/plain/format/formatSql.d.ts +15 -10
  421. package/dist/plain/format/formatSql.js +20 -11
  422. package/dist/plain/format/formatTime.d.ts +18 -4
  423. package/dist/plain/format/formatTime.js +32 -5
  424. package/dist/plain/get/getNowUnit.d.ts +3 -0
  425. package/dist/plain/get/getNowUnit.js +14 -29
  426. package/dist/plain/index.js +1 -1
  427. package/dist/plain/interval/intervalAbutsDate.d.ts +12 -7
  428. package/dist/plain/interval/intervalAbutsDate.js +15 -19
  429. package/dist/plain/interval/intervalAbutsDateTime.d.ts +9 -7
  430. package/dist/plain/interval/intervalAbutsDateTime.js +17 -23
  431. package/dist/plain/interval/intervalAbutsTime.d.ts +11 -5
  432. package/dist/plain/interval/intervalAbutsTime.js +19 -21
  433. package/dist/plain/interval/intervalContainsDate.d.ts +17 -10
  434. package/dist/plain/interval/intervalContainsDate.js +20 -15
  435. package/dist/plain/interval/intervalContainsDateTime.d.ts +16 -11
  436. package/dist/plain/interval/intervalContainsDateTime.js +24 -20
  437. package/dist/plain/interval/intervalContainsTime.d.ts +20 -10
  438. package/dist/plain/interval/intervalContainsTime.js +28 -19
  439. package/dist/plain/interval/intervalCountDate.d.ts +13 -8
  440. package/dist/plain/interval/intervalCountDate.js +46 -14
  441. package/dist/plain/interval/intervalCountDateTime.d.ts +6 -4
  442. package/dist/plain/interval/intervalCountDateTime.js +63 -18
  443. package/dist/plain/interval/intervalCountTime.d.ts +3 -4
  444. package/dist/plain/interval/intervalCountTime.js +9 -9
  445. package/dist/plain/interval/intervalDifferenceDate.d.ts +13 -6
  446. package/dist/plain/interval/intervalDifferenceDate.js +19 -32
  447. package/dist/plain/interval/intervalDifferenceDateTime.d.ts +10 -4
  448. package/dist/plain/interval/intervalDifferenceDateTime.js +21 -27
  449. package/dist/plain/interval/intervalDifferenceTime.d.ts +11 -4
  450. package/dist/plain/interval/intervalDifferenceTime.js +22 -27
  451. package/dist/plain/interval/intervalDivideEquallyDate.d.ts +16 -4
  452. package/dist/plain/interval/intervalDivideEquallyDate.js +57 -33
  453. package/dist/plain/interval/intervalDivideEquallyDateTime.d.ts +16 -4
  454. package/dist/plain/interval/intervalDivideEquallyDateTime.js +67 -31
  455. package/dist/plain/interval/intervalDivideEquallyTime.d.ts +16 -4
  456. package/dist/plain/interval/intervalDivideEquallyTime.js +58 -31
  457. package/dist/plain/interval/intervalEngulfsDate.d.ts +16 -9
  458. package/dist/plain/interval/intervalEngulfsDate.js +19 -12
  459. package/dist/plain/interval/intervalEngulfsDateTime.d.ts +16 -11
  460. package/dist/plain/interval/intervalEngulfsDateTime.js +24 -18
  461. package/dist/plain/interval/intervalEngulfsTime.d.ts +18 -8
  462. package/dist/plain/interval/intervalEngulfsTime.js +26 -15
  463. package/dist/plain/interval/intervalFromDurationDate.d.ts +5 -4
  464. package/dist/plain/interval/intervalFromDurationDate.js +11 -8
  465. package/dist/plain/interval/intervalFromDurationDateTime.js +4 -0
  466. package/dist/plain/interval/intervalFromDurationTime.d.ts +10 -12
  467. package/dist/plain/interval/intervalFromDurationTime.js +28 -17
  468. package/dist/plain/interval/intervalIntersectionDate.d.ts +9 -4
  469. package/dist/plain/interval/intervalIntersectionDate.js +14 -9
  470. package/dist/plain/interval/intervalIntersectionDateTime.d.ts +9 -4
  471. package/dist/plain/interval/intervalIntersectionDateTime.js +19 -13
  472. package/dist/plain/interval/intervalIntersectionTime.d.ts +7 -3
  473. package/dist/plain/interval/intervalIntersectionTime.js +17 -12
  474. package/dist/plain/interval/intervalLengthDate.d.ts +9 -6
  475. package/dist/plain/interval/intervalLengthDate.js +40 -8
  476. package/dist/plain/interval/intervalLengthDateTime.js +2 -2
  477. package/dist/plain/interval/intervalOverlappingDaysDate.d.ts +16 -17
  478. package/dist/plain/interval/intervalOverlappingDaysDate.js +30 -30
  479. package/dist/plain/interval/intervalOverlappingDaysDateTime.d.ts +7 -12
  480. package/dist/plain/interval/intervalOverlappingDaysDateTime.js +24 -24
  481. package/dist/plain/interval/intervalSplitAtDate.d.ts +10 -5
  482. package/dist/plain/interval/intervalSplitAtDate.js +48 -36
  483. package/dist/plain/interval/intervalSplitAtDateTime.d.ts +9 -4
  484. package/dist/plain/interval/intervalSplitAtDateTime.js +44 -32
  485. package/dist/plain/interval/intervalSplitAtTime.d.ts +9 -4
  486. package/dist/plain/interval/intervalSplitAtTime.js +44 -32
  487. package/dist/plain/interval/intervalUnionDate.d.ts +14 -6
  488. package/dist/plain/interval/intervalUnionDate.js +19 -11
  489. package/dist/plain/interval/intervalUnionDateTime.d.ts +12 -5
  490. package/dist/plain/interval/intervalUnionDateTime.js +22 -14
  491. package/dist/plain/interval/intervalUnionTime.d.ts +10 -3
  492. package/dist/plain/interval/intervalUnionTime.js +20 -12
  493. package/dist/plain/interval/intervalXorAllDate.d.ts +11 -10
  494. package/dist/plain/interval/intervalXorAllDate.js +37 -59
  495. package/dist/plain/interval/intervalXorAllDateTime.d.ts +7 -5
  496. package/dist/plain/interval/intervalXorAllDateTime.js +28 -48
  497. package/dist/plain/interval/intervalXorAllTime.d.ts +8 -4
  498. package/dist/plain/interval/intervalXorAllTime.js +29 -47
  499. package/dist/plain/interval/intervalXorDate.d.ts +10 -9
  500. package/dist/plain/interval/intervalXorDate.js +19 -54
  501. package/dist/plain/interval/intervalXorDateTime.d.ts +9 -7
  502. package/dist/plain/interval/intervalXorDateTime.js +23 -50
  503. package/dist/plain/interval/intervalXorTime.d.ts +8 -7
  504. package/dist/plain/interval/intervalXorTime.js +22 -50
  505. package/dist/plain/interval/intervalsOverlapDate.d.ts +14 -7
  506. package/dist/plain/interval/intervalsOverlapDate.js +17 -10
  507. package/dist/plain/interval/intervalsOverlapDateTime.d.ts +12 -7
  508. package/dist/plain/interval/intervalsOverlapDateTime.js +20 -14
  509. package/dist/plain/interval/intervalsOverlapTime.d.ts +10 -5
  510. package/dist/plain/interval/intervalsOverlapTime.js +18 -12
  511. package/dist/plain/interval/mergeIntervalsDate.d.ts +9 -5
  512. package/dist/plain/interval/mergeIntervalsDate.js +37 -38
  513. package/dist/plain/interval/mergeIntervalsDateTime.d.ts +7 -3
  514. package/dist/plain/interval/mergeIntervalsDateTime.js +31 -32
  515. package/dist/plain/interval/mergeIntervalsTime.d.ts +7 -3
  516. package/dist/plain/interval/mergeIntervalsTime.js +31 -31
  517. package/dist/plain/interval/splitIntervalByUnitDate.d.ts +26 -6
  518. package/dist/plain/interval/splitIntervalByUnitDate.js +76 -43
  519. package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +22 -2
  520. package/dist/plain/interval/splitIntervalByUnitDateTime.js +65 -39
  521. package/dist/plain/interval/splitIntervalByUnitTime.d.ts +18 -2
  522. package/dist/plain/interval/splitIntervalByUnitTime.js +76 -39
  523. package/dist/plain/interval/validate/isValidDateInterval.d.ts +4 -2
  524. package/dist/plain/interval/validate/isValidDateInterval.js +4 -2
  525. package/dist/plain/interval/validate/isValidDateTimeInterval.d.ts +5 -0
  526. package/dist/plain/interval/validate/isValidDateTimeInterval.js +7 -2
  527. package/dist/plain/interval/validate/isValidTimeInterval.d.ts +5 -0
  528. package/dist/plain/interval/validate/isValidTimeInterval.js +8 -18
  529. package/dist/plain/locale/getLocaleEraNames.d.ts +14 -4
  530. package/dist/plain/locale/getLocaleEraNames.js +56 -41
  531. package/dist/plain/locale/getLocaleMeridiems.d.ts +7 -4
  532. package/dist/plain/locale/getLocaleMeridiems.js +28 -22
  533. package/dist/plain/locale/getLocaleMonthNames.d.ts +14 -4
  534. package/dist/plain/locale/getLocaleMonthNames.js +34 -19
  535. package/dist/plain/locale/getLocaleWeekdayNames.d.ts +14 -7
  536. package/dist/plain/locale/getLocaleWeekdayNames.js +40 -22
  537. package/dist/plain/map/mapDatesInRange.d.ts +18 -1
  538. package/dist/plain/map/mapDatesInRange.js +53 -17
  539. package/dist/plain/parse/parseDateTimeWithPattern.d.ts +3 -2
  540. package/dist/plain/parse/parseDateTimeWithPattern.js +30 -24
  541. package/dist/plain/parse/parseDateWithPattern.d.ts +3 -2
  542. package/dist/plain/parse/parseDateWithPattern.js +22 -16
  543. package/dist/plain/parse/parseMicrosecondFromDateTime.d.ts +2 -1
  544. package/dist/plain/parse/parseMicrosecondFromDateTime.js +2 -1
  545. package/dist/plain/parse/parseMicrosecondFromTime.d.ts +2 -1
  546. package/dist/plain/parse/parseMicrosecondFromTime.js +2 -1
  547. package/dist/plain/parse/parseNanosecondFromDateTime.d.ts +2 -1
  548. package/dist/plain/parse/parseNanosecondFromDateTime.js +2 -1
  549. package/dist/plain/parse/parseNanosecondFromTime.d.ts +2 -1
  550. package/dist/plain/parse/parseNanosecondFromTime.js +2 -1
  551. package/dist/plain/parse/parseSql.d.ts +15 -12
  552. package/dist/plain/parse/parseSql.js +16 -13
  553. package/dist/plain/parse/parseTimeWithPattern.d.ts +3 -2
  554. package/dist/plain/parse/parseTimeWithPattern.js +27 -21
  555. package/dist/plain/parse/parseUnitFromDate.d.ts +9 -2
  556. package/dist/plain/parse/parseUnitFromDate.js +39 -19
  557. package/dist/plain/parse/parseUnitFromDateTime.d.ts +11 -3
  558. package/dist/plain/parse/parseUnitFromDateTime.js +54 -28
  559. package/dist/plain/parse/parseUnitFromTime.d.ts +9 -3
  560. package/dist/plain/parse/parseUnitFromTime.js +13 -3
  561. package/dist/plain/parse/parseWeekFromDate.d.ts +5 -0
  562. package/dist/plain/parse/parseWeekFromDate.js +24 -5
  563. package/dist/plain/parse/parseWeekFromDateTime.d.ts +5 -0
  564. package/dist/plain/parse/parseWeekFromDateTime.js +26 -5
  565. package/dist/plain/validate/isLeapSecond.d.ts +27 -9
  566. package/dist/plain/validate/isLeapSecond.js +30 -9
  567. package/dist/plain/validate/isLeapYear.d.ts +7 -1
  568. package/dist/plain/validate/isLeapYear.js +10 -1
  569. package/dist/plain/validate/isValidCalendarDate.d.ts +37 -6
  570. package/dist/plain/validate/isValidCalendarDate.js +37 -6
  571. package/dist/plain/validate/isValidDate.d.ts +9 -1
  572. package/dist/plain/validate/isValidDate.js +14 -5
  573. package/dist/plain/validate/isValidDateRange.d.ts +11 -4
  574. package/dist/plain/validate/isValidDateRange.js +32 -22
  575. package/dist/plain/validate/isValidDateTime.d.ts +7 -1
  576. package/dist/plain/validate/isValidDateTime.js +12 -5
  577. package/dist/plain/validate/isValidDateTimeRange.d.ts +3 -2
  578. package/dist/plain/validate/isValidDateTimeRange.js +30 -15
  579. package/dist/plain/validate/isValidIsoDateLike.d.ts +6 -1
  580. package/dist/plain/validate/isValidIsoDateLike.js +13 -8
  581. package/dist/plain/validate/isValidTime.d.ts +6 -1
  582. package/dist/plain/validate/isValidTime.js +10 -3
  583. package/dist/plain/validate/isValidTimeRange.d.ts +4 -2
  584. package/dist/plain/validate/isValidTimeRange.js +31 -27
  585. package/dist/precision/calculate/index.d.ts +1 -0
  586. package/dist/precision/calculate/index.js +1 -0
  587. package/dist/precision/calculate/truncateNanoseconds.d.ts +37 -0
  588. package/dist/precision/calculate/truncateNanoseconds.js +41 -0
  589. package/dist/precision/convert/fromDotNetTicks.d.ts +30 -0
  590. package/dist/precision/convert/fromDotNetTicks.js +39 -0
  591. package/dist/precision/convert/fromExcelSerial.d.ts +38 -0
  592. package/dist/precision/convert/fromExcelSerial.js +81 -0
  593. package/dist/precision/convert/fromFileTime.d.ts +30 -0
  594. package/dist/precision/convert/fromFileTime.js +39 -0
  595. package/dist/precision/convert/fromNanoseconds.d.ts +29 -0
  596. package/dist/precision/convert/fromNanoseconds.js +50 -0
  597. package/dist/precision/convert/fromNtpTimestamp.d.ts +43 -0
  598. package/dist/precision/convert/fromNtpTimestamp.js +57 -0
  599. package/dist/precision/convert/fromPgMicroseconds.d.ts +26 -0
  600. package/dist/precision/convert/fromPgMicroseconds.js +33 -0
  601. package/dist/precision/convert/index.d.ts +12 -0
  602. package/dist/precision/convert/index.js +12 -0
  603. package/dist/precision/convert/toDotNetTicks.d.ts +29 -0
  604. package/dist/precision/convert/toDotNetTicks.js +40 -0
  605. package/dist/precision/convert/toExcelSerial.d.ts +56 -0
  606. package/dist/precision/convert/toExcelSerial.js +85 -0
  607. package/dist/precision/convert/toFileTime.d.ts +31 -0
  608. package/dist/precision/convert/toFileTime.js +43 -0
  609. package/dist/precision/convert/toNanoseconds.d.ts +37 -0
  610. package/dist/precision/convert/toNanoseconds.js +40 -0
  611. package/dist/precision/convert/toNtpTimestamp.d.ts +30 -0
  612. package/dist/precision/convert/toNtpTimestamp.js +38 -0
  613. package/dist/precision/convert/toPgMicroseconds.d.ts +29 -0
  614. package/dist/precision/convert/toPgMicroseconds.js +42 -0
  615. package/dist/precision/format/formatNanoseconds.d.ts +26 -0
  616. package/dist/precision/format/formatNanoseconds.js +32 -0
  617. package/dist/precision/format/index.d.ts +1 -0
  618. package/dist/precision/format/index.js +1 -0
  619. package/dist/precision/index.d.ts +6 -0
  620. package/dist/precision/index.js +7 -0
  621. package/dist/precision/parse/index.d.ts +1 -0
  622. package/dist/precision/parse/index.js +1 -0
  623. package/dist/precision/parse/parseNanoseconds.d.ts +27 -0
  624. package/dist/precision/parse/parseNanoseconds.js +32 -0
  625. package/dist/precision/validate/index.d.ts +3 -0
  626. package/dist/precision/validate/index.js +3 -0
  627. package/dist/precision/validate/isValidInstant.d.ts +37 -0
  628. package/dist/precision/validate/isValidInstant.js +40 -0
  629. package/dist/precision/validate/isValidNanoPattern.d.ts +27 -0
  630. package/dist/precision/validate/isValidNanoPattern.js +40 -0
  631. package/dist/precision/validate/isValidNanoseconds.d.ts +25 -0
  632. package/dist/precision/validate/isValidNanoseconds.js +28 -0
  633. package/dist/regex/calendar-date.d.ts +25 -14
  634. package/dist/regex/calendar-date.js +26 -15
  635. package/dist/regex/calendar-zoned-date-time.d.ts +22 -38
  636. package/dist/regex/calendar-zoned-date-time.js +23 -39
  637. package/dist/regex/date-time.d.ts +14 -4
  638. package/dist/regex/date-time.js +15 -5
  639. package/dist/regex/date.d.ts +45 -3
  640. package/dist/regex/date.js +47 -5
  641. package/dist/regex/http-date.d.ts +10 -6
  642. package/dist/regex/http-date.js +10 -6
  643. package/dist/regex/index.d.ts +3 -0
  644. package/dist/regex/index.js +4 -0
  645. package/dist/regex/leap-second.d.ts +41 -8
  646. package/dist/regex/leap-second.js +42 -9
  647. package/dist/regex/nanoseconds.d.ts +20 -0
  648. package/dist/regex/nanoseconds.js +20 -0
  649. package/dist/regex/rfc-2822.d.ts +15 -7
  650. package/dist/regex/rfc-2822.js +15 -7
  651. package/dist/regex/rfc-3339.d.ts +8 -1
  652. package/dist/regex/rfc-3339.js +9 -2
  653. package/dist/regex/sql-date-time.d.ts +27 -8
  654. package/dist/regex/sql-date-time.js +28 -9
  655. package/dist/regex/time-zone-like.d.ts +24 -15
  656. package/dist/regex/time-zone-like.js +25 -16
  657. package/dist/regex/time.d.ts +20 -6
  658. package/dist/regex/time.js +20 -6
  659. package/dist/regex/unix.d.ts +13 -5
  660. package/dist/regex/unix.js +13 -5
  661. package/dist/regex/utc-date-time.d.ts +19 -9
  662. package/dist/regex/utc-date-time.js +20 -10
  663. package/dist/regex/utc-offset.d.ts +24 -0
  664. package/dist/regex/utc-offset.js +24 -0
  665. package/dist/span/calculate/index.d.ts +3 -0
  666. package/dist/span/calculate/index.js +3 -0
  667. package/dist/span/calculate/spanMs.d.ts +52 -0
  668. package/dist/span/calculate/spanMs.js +80 -0
  669. package/dist/span/calculate/spanNs.d.ts +43 -0
  670. package/dist/span/calculate/spanNs.js +51 -0
  671. package/dist/span/calculate/spanWallClock.d.ts +60 -0
  672. package/dist/span/calculate/spanWallClock.js +80 -0
  673. package/dist/span/index.d.ts +3 -0
  674. package/dist/span/index.js +4 -0
  675. package/dist/span/validate/index.d.ts +1 -0
  676. package/dist/span/validate/index.js +1 -0
  677. package/dist/span/validate/isValidSpan.d.ts +37 -0
  678. package/dist/span/validate/isValidSpan.js +41 -0
  679. package/dist/transport/calculate/dwellTime.d.ts +72 -0
  680. package/dist/transport/calculate/dwellTime.js +126 -0
  681. package/dist/transport/calculate/index.d.ts +2 -0
  682. package/dist/transport/calculate/index.js +2 -0
  683. package/dist/transport/calculate/transitTime.d.ts +53 -0
  684. package/dist/transport/calculate/transitTime.js +118 -0
  685. package/dist/transport/convert/etaAtZone.d.ts +36 -0
  686. package/dist/transport/convert/etaAtZone.js +53 -0
  687. package/dist/transport/convert/index.d.ts +1 -0
  688. package/dist/transport/convert/index.js +1 -0
  689. package/dist/transport/index.d.ts +3 -0
  690. package/dist/transport/index.js +4 -0
  691. package/dist/types/business-calendar.d.ts +27 -0
  692. package/dist/types/business-calendar.js +0 -0
  693. package/dist/types/calendar-system.d.ts +9 -1
  694. package/dist/types/fiscal-calendar.d.ts +22 -0
  695. package/dist/types/fiscal-calendar.js +0 -0
  696. package/dist/types/free-time-options.d.ts +34 -0
  697. package/dist/types/free-time-options.js +0 -0
  698. package/dist/types/index.d.ts +7 -0
  699. package/dist/types/index.js +6 -0
  700. package/dist/types/interval.d.ts +18 -0
  701. package/dist/types/interval.js +0 -0
  702. package/dist/types/now-unit.d.ts +1 -1
  703. package/dist/types/roll-convention.d.ts +32 -0
  704. package/dist/types/roll-convention.js +0 -0
  705. package/dist/types/utc-now-unit.d.ts +1 -1
  706. package/dist/types/zone-bucket-unit.d.ts +11 -0
  707. package/dist/types/zone-bucket-unit.js +0 -0
  708. package/dist/unix/calculate/addUnix.d.ts +10 -4
  709. package/dist/unix/calculate/addUnix.js +39 -26
  710. package/dist/unix/calculate/diffUnix.d.ts +38 -11
  711. package/dist/unix/calculate/diffUnix.js +84 -40
  712. package/dist/unix/calculate/diffUnixAsDuration.d.ts +17 -7
  713. package/dist/unix/calculate/diffUnixAsDuration.js +42 -23
  714. package/dist/unix/calculate/endOfQuarterForUnix.d.ts +15 -11
  715. package/dist/unix/calculate/endOfQuarterForUnix.js +20 -39
  716. package/dist/unix/calculate/endOfUnix.d.ts +23 -18
  717. package/dist/unix/calculate/endOfUnix.js +37 -15
  718. package/dist/unix/calculate/isBetweenUnix.d.ts +12 -6
  719. package/dist/unix/calculate/isBetweenUnix.js +34 -23
  720. package/dist/unix/calculate/maxUnix.d.ts +6 -3
  721. package/dist/unix/calculate/maxUnix.js +17 -8
  722. package/dist/unix/calculate/minUnix.d.ts +6 -3
  723. package/dist/unix/calculate/minUnix.js +17 -8
  724. package/dist/unix/calculate/roundUnix.d.ts +24 -10
  725. package/dist/unix/calculate/roundUnix.js +67 -42
  726. package/dist/unix/calculate/setUnix.d.ts +14 -5
  727. package/dist/unix/calculate/setUnix.js +48 -29
  728. package/dist/unix/calculate/sortUnix.d.ts +6 -3
  729. package/dist/unix/calculate/sortUnix.js +19 -11
  730. package/dist/unix/calculate/startOfQuarterForUnix.d.ts +17 -12
  731. package/dist/unix/calculate/startOfQuarterForUnix.js +22 -30
  732. package/dist/unix/calculate/startOfUnix.d.ts +23 -18
  733. package/dist/unix/calculate/startOfUnix.js +37 -15
  734. package/dist/unix/calculate/subtractUnix.d.ts +10 -4
  735. package/dist/unix/calculate/subtractUnix.js +39 -26
  736. package/dist/unix/compare/areUnixEqual.d.ts +9 -5
  737. package/dist/unix/compare/areUnixEqual.js +17 -13
  738. package/dist/unix/compare/areUnixEqualBy.d.ts +14 -7
  739. package/dist/unix/compare/areUnixEqualBy.js +14 -7
  740. package/dist/unix/compare/isAfterUnix.d.ts +8 -4
  741. package/dist/unix/compare/isAfterUnix.js +16 -12
  742. package/dist/unix/compare/isBeforeUnix.d.ts +7 -4
  743. package/dist/unix/compare/isBeforeUnix.js +15 -12
  744. package/dist/unix/convert/convertUnixToPlainDate.d.ts +17 -9
  745. package/dist/unix/convert/convertUnixToPlainDate.js +34 -21
  746. package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +15 -9
  747. package/dist/unix/convert/convertUnixToPlainDateTime.js +32 -21
  748. package/dist/unix/convert/convertUnixToPlainTime.d.ts +15 -9
  749. package/dist/unix/convert/convertUnixToPlainTime.js +32 -21
  750. package/dist/unix/convert/convertUnixToUtc.d.ts +15 -7
  751. package/dist/unix/convert/convertUnixToUtc.js +20 -15
  752. package/dist/unix/convert/convertUnixToZoned.d.ts +17 -10
  753. package/dist/unix/convert/convertUnixToZoned.js +31 -20
  754. package/dist/unix/format/formatCalendarUnix.d.ts +22 -19
  755. package/dist/unix/format/formatCalendarUnix.js +35 -81
  756. package/dist/unix/format/formatRelativeUnix.d.ts +25 -8
  757. package/dist/unix/format/formatRelativeUnix.js +46 -93
  758. package/dist/unix/format/formatUnix.d.ts +26 -4
  759. package/dist/unix/format/formatUnix.js +48 -34
  760. package/dist/unix/get/getUnixNow.d.ts +13 -7
  761. package/dist/unix/get/getUnixNow.js +27 -17
  762. package/dist/unix/get/getUnixNowUnit.d.ts +5 -2
  763. package/dist/unix/get/getUnixNowUnit.js +9 -35
  764. package/dist/unix/index.d.ts +1 -0
  765. package/dist/unix/index.js +2 -0
  766. package/dist/unix/interval/intervalAbutsUnix.d.ts +17 -12
  767. package/dist/unix/interval/intervalAbutsUnix.js +23 -41
  768. package/dist/unix/interval/intervalContainsUnix.d.ts +17 -7
  769. package/dist/unix/interval/intervalContainsUnix.js +25 -37
  770. package/dist/unix/interval/intervalCountUnix.d.ts +30 -13
  771. package/dist/unix/interval/intervalCountUnix.js +49 -23
  772. package/dist/unix/interval/intervalDifferenceUnix.d.ts +19 -10
  773. package/dist/unix/interval/intervalDifferenceUnix.js +25 -43
  774. package/dist/unix/interval/intervalDivideEquallyUnix.d.ts +24 -10
  775. package/dist/unix/interval/intervalDivideEquallyUnix.js +57 -36
  776. package/dist/unix/interval/intervalEngulfsUnix.d.ts +13 -7
  777. package/dist/unix/interval/intervalEngulfsUnix.js +18 -30
  778. package/dist/unix/interval/intervalFromDurationUnix.d.ts +10 -6
  779. package/dist/unix/interval/intervalFromDurationUnix.js +51 -39
  780. package/dist/unix/interval/intervalIntersectionUnix.d.ts +18 -11
  781. package/dist/unix/interval/intervalIntersectionUnix.js +25 -46
  782. package/dist/unix/interval/intervalLengthUnix.d.ts +21 -9
  783. package/dist/unix/interval/intervalLengthUnix.js +41 -18
  784. package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +26 -12
  785. package/dist/unix/interval/intervalOverlappingDaysUnix.js +67 -63
  786. package/dist/unix/interval/intervalSplitAtUnix.d.ts +11 -6
  787. package/dist/unix/interval/intervalSplitAtUnix.js +41 -34
  788. package/dist/unix/interval/intervalUnionUnix.d.ts +15 -9
  789. package/dist/unix/interval/intervalUnionUnix.js +20 -42
  790. package/dist/unix/interval/intervalXorAllUnix.d.ts +8 -6
  791. package/dist/unix/interval/intervalXorAllUnix.js +21 -56
  792. package/dist/unix/interval/intervalXorUnix.d.ts +22 -11
  793. package/dist/unix/interval/intervalXorUnix.js +28 -56
  794. package/dist/unix/interval/intervalsOverlapUnix.d.ts +16 -10
  795. package/dist/unix/interval/intervalsOverlapUnix.js +21 -37
  796. package/dist/unix/interval/mergeIntervalsUnix.d.ts +10 -4
  797. package/dist/unix/interval/mergeIntervalsUnix.js +25 -36
  798. package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +38 -8
  799. package/dist/unix/interval/splitIntervalByUnitUnix.js +72 -56
  800. package/dist/unix/interval/validate/isValidUnixInterval.d.ts +12 -6
  801. package/dist/unix/interval/validate/isValidUnixInterval.js +17 -16
  802. package/dist/unix/parse/index.d.ts +2 -0
  803. package/dist/unix/parse/index.js +2 -0
  804. package/dist/unix/parse/parseDateFromUnix.d.ts +10 -8
  805. package/dist/unix/parse/parseDateFromUnix.js +17 -29
  806. package/dist/unix/parse/parseDayFromUnix.d.ts +6 -4
  807. package/dist/unix/parse/parseDayFromUnix.js +18 -5
  808. package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +8 -5
  809. package/dist/unix/parse/parseDayOfWeekFromUnix.js +15 -28
  810. package/dist/unix/parse/parseHourFromUnix.d.ts +6 -4
  811. package/dist/unix/parse/parseHourFromUnix.js +18 -5
  812. package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +4 -2
  813. package/dist/unix/parse/parseMicrosecondFromUnix.js +16 -3
  814. package/dist/unix/parse/parseMillisecondFromUnix.d.ts +4 -2
  815. package/dist/unix/parse/parseMillisecondFromUnix.js +16 -3
  816. package/dist/unix/parse/parseMinuteFromUnix.d.ts +6 -4
  817. package/dist/unix/parse/parseMinuteFromUnix.js +18 -5
  818. package/dist/unix/parse/parseMonthFromUnix.d.ts +6 -4
  819. package/dist/unix/parse/parseMonthFromUnix.js +18 -5
  820. package/dist/unix/parse/parseNanosecondFromUnix.d.ts +8 -5
  821. package/dist/unix/parse/parseNanosecondFromUnix.js +20 -6
  822. package/dist/unix/parse/parseSecondFromUnix.d.ts +5 -3
  823. package/dist/unix/parse/parseSecondFromUnix.js +17 -4
  824. package/dist/unix/parse/parseTimeFromUnix.d.ts +10 -8
  825. package/dist/unix/parse/parseTimeFromUnix.js +17 -29
  826. package/dist/unix/parse/parseUnitFromUnix.d.ts +18 -11
  827. package/dist/unix/parse/parseUnitFromUnix.js +57 -55
  828. package/dist/unix/parse/parseWeekFromUnix.d.ts +15 -7
  829. package/dist/unix/parse/parseWeekFromUnix.js +32 -30
  830. package/dist/unix/parse/parseYearFromUnix.d.ts +5 -3
  831. package/dist/unix/parse/parseYearFromUnix.js +17 -4
  832. package/dist/unix/validate/isValidUnixMilliseconds.d.ts +8 -5
  833. package/dist/unix/validate/isValidUnixMilliseconds.js +10 -9
  834. package/dist/unix/validate/isValidUnixRange.d.ts +13 -7
  835. package/dist/unix/validate/isValidUnixRange.js +29 -19
  836. package/dist/unix/validate/isValidUnixSeconds.d.ts +8 -5
  837. package/dist/unix/validate/isValidUnixSeconds.js +10 -9
  838. package/dist/unix/validate/isValidUnixUnit.d.ts +9 -7
  839. package/dist/unix/validate/isValidUnixUnit.js +6 -8
  840. package/dist/utc/calculate/addUtc.js +26 -12
  841. package/dist/utc/calculate/diffUtc.d.ts +22 -7
  842. package/dist/utc/calculate/diffUtc.js +75 -31
  843. package/dist/utc/calculate/diffUtcAsDuration.d.ts +2 -2
  844. package/dist/utc/calculate/diffUtcAsDuration.js +10 -3
  845. package/dist/utc/calculate/endOfQuarterForUtc.d.ts +1 -1
  846. package/dist/utc/calculate/endOfQuarterForUtc.js +1 -1
  847. package/dist/utc/calculate/endOfUtc.d.ts +11 -4
  848. package/dist/utc/calculate/endOfUtc.js +22 -5
  849. package/dist/utc/calculate/isBetweenUtc.js +40 -24
  850. package/dist/utc/calculate/maxUtc.js +19 -12
  851. package/dist/utc/calculate/minUtc.js +19 -12
  852. package/dist/utc/calculate/roundUtc.d.ts +16 -2
  853. package/dist/utc/calculate/roundUtc.js +42 -31
  854. package/dist/utc/calculate/setUtc.d.ts +4 -8
  855. package/dist/utc/calculate/setUtc.js +25 -18
  856. package/dist/utc/calculate/sortUtc.js +17 -10
  857. package/dist/utc/calculate/startOfQuarterForUtc.d.ts +2 -0
  858. package/dist/utc/calculate/startOfQuarterForUtc.js +12 -1
  859. package/dist/utc/calculate/startOfUtc.d.ts +6 -4
  860. package/dist/utc/calculate/startOfUtc.js +17 -5
  861. package/dist/utc/calculate/subtractUtc.js +26 -12
  862. package/dist/utc/chop/chopUtc.d.ts +5 -2
  863. package/dist/utc/chop/chopUtc.js +8 -4
  864. package/dist/utc/compare/areUtcEqualBy.d.ts +10 -5
  865. package/dist/utc/compare/areUtcEqualBy.js +34 -11
  866. package/dist/utc/convert/convertUtcToPlainDate.js +22 -10
  867. package/dist/utc/convert/convertUtcToPlainDateTime.js +28 -16
  868. package/dist/utc/convert/convertUtcToPlainTime.js +22 -10
  869. package/dist/utc/convert/convertUtcToUnix.d.ts +12 -5
  870. package/dist/utc/convert/convertUtcToUnix.js +22 -13
  871. package/dist/utc/format/formatCalendarUtc.d.ts +11 -6
  872. package/dist/utc/format/formatCalendarUtc.js +32 -41
  873. package/dist/utc/format/formatHttp.d.ts +9 -3
  874. package/dist/utc/format/formatHttp.js +14 -12
  875. package/dist/utc/format/formatRelativeUtc.d.ts +18 -6
  876. package/dist/utc/format/formatRelativeUtc.js +43 -51
  877. package/dist/utc/format/formatUtc.d.ts +20 -3
  878. package/dist/utc/format/formatUtc.js +41 -12
  879. package/dist/utc/get/getUtcNowUnit.d.ts +3 -0
  880. package/dist/utc/get/getUtcNowUnit.js +11 -33
  881. package/dist/utc/index.d.ts +1 -0
  882. package/dist/utc/index.js +2 -0
  883. package/dist/utc/interval/intervalAbutsUtc.d.ts +10 -7
  884. package/dist/utc/interval/intervalAbutsUtc.js +18 -30
  885. package/dist/utc/interval/intervalContainsUtc.d.ts +19 -11
  886. package/dist/utc/interval/intervalContainsUtc.js +33 -34
  887. package/dist/utc/interval/intervalCountUtc.d.ts +3 -4
  888. package/dist/utc/interval/intervalCountUtc.js +12 -18
  889. package/dist/utc/interval/intervalDifferenceUtc.d.ts +13 -5
  890. package/dist/utc/interval/intervalDifferenceUtc.js +25 -51
  891. package/dist/utc/interval/intervalDivideEquallyUtc.d.ts +16 -3
  892. package/dist/utc/interval/intervalDivideEquallyUtc.js +54 -34
  893. package/dist/utc/interval/intervalEngulfsUtc.d.ts +17 -12
  894. package/dist/utc/interval/intervalEngulfsUtc.js +25 -26
  895. package/dist/utc/interval/intervalFromDurationUtc.js +5 -0
  896. package/dist/utc/interval/intervalIntersectionUtc.d.ts +12 -6
  897. package/dist/utc/interval/intervalIntersectionUtc.js +24 -41
  898. package/dist/utc/interval/intervalLengthUtc.js +5 -7
  899. package/dist/utc/interval/intervalOverlappingDaysUtc.d.ts +7 -13
  900. package/dist/utc/interval/intervalOverlappingDaysUtc.js +25 -36
  901. package/dist/utc/interval/intervalSplitAtUtc.d.ts +7 -2
  902. package/dist/utc/interval/intervalSplitAtUtc.js +39 -33
  903. package/dist/utc/interval/intervalUnionUtc.d.ts +15 -7
  904. package/dist/utc/interval/intervalUnionUtc.js +31 -42
  905. package/dist/utc/interval/intervalXorAllUtc.d.ts +7 -4
  906. package/dist/utc/interval/intervalXorAllUtc.js +30 -52
  907. package/dist/utc/interval/intervalXorUtc.d.ts +8 -6
  908. package/dist/utc/interval/intervalXorUtc.js +22 -56
  909. package/dist/utc/interval/intervalsOverlapUtc.d.ts +15 -9
  910. package/dist/utc/interval/intervalsOverlapUtc.js +23 -39
  911. package/dist/utc/interval/mergeIntervalsUtc.d.ts +9 -2
  912. package/dist/utc/interval/mergeIntervalsUtc.js +23 -36
  913. package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +23 -2
  914. package/dist/utc/interval/splitIntervalByUnitUtc.js +65 -44
  915. package/dist/utc/interval/validate/isValidUtcInterval.d.ts +5 -0
  916. package/dist/utc/interval/validate/isValidUtcInterval.js +7 -6
  917. package/dist/utc/parse/parseDateFromUtc.d.ts +7 -1
  918. package/dist/utc/parse/parseDateFromUtc.js +14 -9
  919. package/dist/utc/parse/parseDayFromUtc.d.ts +7 -1
  920. package/dist/utc/parse/parseDayFromUtc.js +14 -8
  921. package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +7 -1
  922. package/dist/utc/parse/parseDayOfWeekFromUtc.js +24 -6
  923. package/dist/utc/parse/parseHourFromUtc.d.ts +7 -1
  924. package/dist/utc/parse/parseHourFromUtc.js +14 -8
  925. package/dist/utc/parse/parseHttp.d.ts +39 -14
  926. package/dist/utc/parse/parseHttp.js +69 -28
  927. package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +9 -2
  928. package/dist/utc/parse/parseMicrosecondFromUtc.js +18 -9
  929. package/dist/utc/parse/parseMillisecondFromUtc.d.ts +7 -1
  930. package/dist/utc/parse/parseMillisecondFromUtc.js +16 -8
  931. package/dist/utc/parse/parseMinuteFromUtc.d.ts +7 -1
  932. package/dist/utc/parse/parseMinuteFromUtc.js +14 -8
  933. package/dist/utc/parse/parseMonthFromUtc.d.ts +7 -1
  934. package/dist/utc/parse/parseMonthFromUtc.js +14 -8
  935. package/dist/utc/parse/parseNanosecondFromUtc.d.ts +9 -2
  936. package/dist/utc/parse/parseNanosecondFromUtc.js +18 -9
  937. package/dist/utc/parse/parseSecondFromUtc.d.ts +7 -1
  938. package/dist/utc/parse/parseSecondFromUtc.js +14 -8
  939. package/dist/utc/parse/parseTimeFromUtc.js +21 -10
  940. package/dist/utc/parse/parseUnitFromUtc.d.ts +18 -7
  941. package/dist/utc/parse/parseUnitFromUtc.js +58 -31
  942. package/dist/utc/parse/parseWeekFromUtc.d.ts +16 -3
  943. package/dist/utc/parse/parseWeekFromUtc.js +38 -10
  944. package/dist/utc/parse/parseYearFromUtc.d.ts +7 -1
  945. package/dist/utc/parse/parseYearFromUtc.js +14 -8
  946. package/dist/utc/validate/isValidUtc.d.ts +8 -1
  947. package/dist/utc/validate/isValidUtc.js +12 -3
  948. package/dist/utc/validate/isValidUtcRange.d.ts +3 -2
  949. package/dist/utc/validate/isValidUtcRange.js +30 -19
  950. package/dist/zoned/calculate/addZoned.d.ts +40 -27
  951. package/dist/zoned/calculate/addZoned.js +71 -56
  952. package/dist/zoned/calculate/addZonedBusinessDays.d.ts +2 -0
  953. package/dist/zoned/calculate/addZonedBusinessDays.js +5 -2
  954. package/dist/zoned/calculate/clampZoned.js +4 -3
  955. package/dist/zoned/calculate/closestZonedTo.d.ts +6 -6
  956. package/dist/zoned/calculate/closestZonedTo.js +35 -26
  957. package/dist/zoned/calculate/cycleZoned.d.ts +10 -7
  958. package/dist/zoned/calculate/cycleZoned.js +19 -11
  959. package/dist/zoned/calculate/diffZoned.d.ts +39 -17
  960. package/dist/zoned/calculate/diffZoned.js +90 -45
  961. package/dist/zoned/calculate/diffZonedAsDuration.d.ts +19 -9
  962. package/dist/zoned/calculate/diffZonedAsDuration.js +32 -15
  963. package/dist/zoned/calculate/endOfQuarterForZoned.d.ts +11 -11
  964. package/dist/zoned/calculate/endOfQuarterForZoned.js +32 -31
  965. package/dist/zoned/calculate/endOfZoned.d.ts +21 -14
  966. package/dist/zoned/calculate/endOfZoned.js +25 -111
  967. package/dist/zoned/calculate/getHoursInZonedDay.d.ts +8 -1
  968. package/dist/zoned/calculate/getHoursInZonedDay.js +10 -14
  969. package/dist/zoned/calculate/getLocaleZonedDayOfWeek.d.ts +8 -4
  970. package/dist/zoned/calculate/getLocaleZonedDayOfWeek.js +9 -6
  971. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +20 -26
  972. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +40 -44
  973. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +16 -24
  974. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +36 -42
  975. package/dist/zoned/calculate/getQuarterForZoned.js +2 -2
  976. package/dist/zoned/calculate/maxZoned.js +20 -12
  977. package/dist/zoned/calculate/minZoned.d.ts +1 -1
  978. package/dist/zoned/calculate/minZoned.js +21 -13
  979. package/dist/zoned/calculate/roundZoned.d.ts +18 -4
  980. package/dist/zoned/calculate/roundZoned.js +58 -33
  981. package/dist/zoned/calculate/setZoned.d.ts +9 -3
  982. package/dist/zoned/calculate/setZoned.js +39 -18
  983. package/dist/zoned/calculate/sortZoned.js +18 -10
  984. package/dist/zoned/calculate/startOfQuarterForZoned.d.ts +4 -7
  985. package/dist/zoned/calculate/startOfQuarterForZoned.js +23 -17
  986. package/dist/zoned/calculate/startOfZoned.d.ts +17 -13
  987. package/dist/zoned/calculate/startOfZoned.js +21 -103
  988. package/dist/zoned/calculate/subtractZoned.d.ts +36 -24
  989. package/dist/zoned/calculate/subtractZoned.js +66 -50
  990. package/dist/zoned/calculate/subtractZonedBusinessDays.d.ts +2 -0
  991. package/dist/zoned/calculate/subtractZonedBusinessDays.js +5 -2
  992. package/dist/zoned/chop/chopZonedDate.js +2 -2
  993. package/dist/zoned/chop/chopZonedDateTime.js +2 -2
  994. package/dist/zoned/chop/chopZonedMilliseconds.js +2 -2
  995. package/dist/zoned/chop/chopZonedSeconds.js +2 -2
  996. package/dist/zoned/chop/chopZonedTime.js +2 -2
  997. package/dist/zoned/chop/chopZonedTimezone.js +2 -2
  998. package/dist/zoned/compare/areZonedEqual.js +3 -2
  999. package/dist/zoned/compare/areZonedEqualBy.d.ts +15 -2
  1000. package/dist/zoned/compare/areZonedEqualBy.js +45 -12
  1001. package/dist/zoned/compare/isAfterZoned.js +3 -2
  1002. package/dist/zoned/compare/isBeforeZoned.d.ts +1 -1
  1003. package/dist/zoned/compare/isBeforeZoned.js +4 -3
  1004. package/dist/zoned/compare/isBetweenZoned.js +46 -29
  1005. package/dist/zoned/compare/isInDaylightSaving.js +4 -4
  1006. package/dist/zoned/compare/isZonedBusinessDay.d.ts +7 -4
  1007. package/dist/zoned/compare/isZonedBusinessDay.js +9 -6
  1008. package/dist/zoned/compare/isZonedFuture.js +2 -1
  1009. package/dist/zoned/compare/isZonedPast.js +2 -1
  1010. package/dist/zoned/compare/isZonedRelativeDay.js +2 -1
  1011. package/dist/zoned/compare/isZonedThisUnit.d.ts +12 -4
  1012. package/dist/zoned/compare/isZonedThisUnit.js +37 -16
  1013. package/dist/zoned/compare/isZonedWeekend.d.ts +8 -4
  1014. package/dist/zoned/compare/isZonedWeekend.js +9 -6
  1015. package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +10 -5
  1016. package/dist/zoned/convert/convertPlainDateTimeToZoned.js +34 -16
  1017. package/dist/zoned/convert/convertZonedToCalendar.d.ts +26 -38
  1018. package/dist/zoned/convert/convertZonedToCalendar.js +33 -48
  1019. package/dist/zoned/convert/convertZonedToPlainDateTime.d.ts +6 -0
  1020. package/dist/zoned/convert/convertZonedToPlainDateTime.js +8 -2
  1021. package/dist/zoned/convert/convertZonedToUnix.d.ts +12 -6
  1022. package/dist/zoned/convert/convertZonedToUnix.js +23 -16
  1023. package/dist/zoned/convert/convertZonedToUtc.js +2 -2
  1024. package/dist/zoned/convert/convertZonedToZoned.js +2 -2
  1025. package/dist/zoned/format/formatCalendarZoned.d.ts +7 -3
  1026. package/dist/zoned/format/formatCalendarZoned.js +37 -39
  1027. package/dist/zoned/format/formatRelativeZoned.d.ts +15 -6
  1028. package/dist/zoned/format/formatRelativeZoned.js +54 -54
  1029. package/dist/zoned/format/formatRfc2822.d.ts +14 -1
  1030. package/dist/zoned/format/formatRfc2822.js +27 -13
  1031. package/dist/zoned/format/formatRfc3339.d.ts +14 -1
  1032. package/dist/zoned/format/formatRfc3339.js +29 -3
  1033. package/dist/zoned/format/formatTimeZoneName.d.ts +3 -2
  1034. package/dist/zoned/format/formatTimeZoneName.js +28 -18
  1035. package/dist/zoned/format/formatZonedDateTime.d.ts +25 -5
  1036. package/dist/zoned/format/formatZonedDateTime.js +40 -9
  1037. package/dist/zoned/format/formatZonedRange.d.ts +24 -6
  1038. package/dist/zoned/format/formatZonedRange.js +61 -28
  1039. package/dist/zoned/format/formatZonedToParts.d.ts +29 -6
  1040. package/dist/zoned/format/formatZonedToParts.js +42 -13
  1041. package/dist/zoned/get/getDstTransitions.d.ts +6 -1
  1042. package/dist/zoned/get/getDstTransitions.js +17 -15
  1043. package/dist/zoned/get/getTimeZoneOffset.d.ts +11 -1
  1044. package/dist/zoned/get/getTimeZoneOffset.js +19 -2
  1045. package/dist/zoned/get/getZonedNow.js +20 -9
  1046. package/dist/zoned/get/getZonedNowUnit.d.ts +8 -4
  1047. package/dist/zoned/get/getZonedNowUnit.js +15 -31
  1048. package/dist/zoned/index.js +1 -1
  1049. package/dist/zoned/interval/intervalAbutsZoned.d.ts +18 -11
  1050. package/dist/zoned/interval/intervalAbutsZoned.js +24 -25
  1051. package/dist/zoned/interval/intervalContainsZoned.d.ts +16 -7
  1052. package/dist/zoned/interval/intervalContainsZoned.js +22 -14
  1053. package/dist/zoned/interval/intervalCountZoned.d.ts +19 -11
  1054. package/dist/zoned/interval/intervalCountZoned.js +32 -27
  1055. package/dist/zoned/interval/intervalDifferenceZoned.d.ts +13 -7
  1056. package/dist/zoned/interval/intervalDifferenceZoned.js +24 -36
  1057. package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +18 -9
  1058. package/dist/zoned/interval/intervalDivideEquallyZoned.js +67 -46
  1059. package/dist/zoned/interval/intervalEngulfsZoned.d.ts +10 -5
  1060. package/dist/zoned/interval/intervalEngulfsZoned.js +16 -10
  1061. package/dist/zoned/interval/intervalFromDurationZoned.d.ts +25 -11
  1062. package/dist/zoned/interval/intervalFromDurationZoned.js +61 -44
  1063. package/dist/zoned/interval/intervalIntersectionZoned.d.ts +12 -6
  1064. package/dist/zoned/interval/intervalIntersectionZoned.js +24 -18
  1065. package/dist/zoned/interval/intervalLengthZoned.d.ts +15 -6
  1066. package/dist/zoned/interval/intervalLengthZoned.js +23 -9
  1067. package/dist/zoned/interval/intervalOverlappingDaysZoned.d.ts +28 -17
  1068. package/dist/zoned/interval/intervalOverlappingDaysZoned.js +46 -34
  1069. package/dist/zoned/interval/intervalSplitAtZoned.d.ts +6 -3
  1070. package/dist/zoned/interval/intervalSplitAtZoned.js +52 -42
  1071. package/dist/zoned/interval/intervalUnionZoned.d.ts +14 -8
  1072. package/dist/zoned/interval/intervalUnionZoned.js +25 -20
  1073. package/dist/zoned/interval/intervalXorAllZoned.d.ts +9 -7
  1074. package/dist/zoned/interval/intervalXorAllZoned.js +42 -73
  1075. package/dist/zoned/interval/intervalXorZoned.d.ts +20 -12
  1076. package/dist/zoned/interval/intervalXorZoned.js +34 -64
  1077. package/dist/zoned/interval/intervalsOverlapZoned.d.ts +15 -7
  1078. package/dist/zoned/interval/intervalsOverlapZoned.js +21 -12
  1079. package/dist/zoned/interval/mergeIntervalsZoned.d.ts +10 -3
  1080. package/dist/zoned/interval/mergeIntervalsZoned.js +44 -41
  1081. package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +28 -5
  1082. package/dist/zoned/interval/splitIntervalByUnitZoned.js +72 -39
  1083. package/dist/zoned/interval/validate/isValidCalendarZonedInterval.d.ts +13 -10
  1084. package/dist/zoned/interval/validate/isValidCalendarZonedInterval.js +13 -10
  1085. package/dist/zoned/interval/validate/isValidZonedInterval.d.ts +7 -5
  1086. package/dist/zoned/interval/validate/isValidZonedInterval.js +12 -16
  1087. package/dist/zoned/map/mapZonedDatesInRange.d.ts +17 -1
  1088. package/dist/zoned/map/mapZonedDatesInRange.js +62 -26
  1089. package/dist/zoned/map/mapZonedHoursInDay.d.ts +10 -13
  1090. package/dist/zoned/map/mapZonedHoursInDay.js +13 -21
  1091. package/dist/zoned/parse/getZonedOffset.js +2 -2
  1092. package/dist/zoned/parse/getZonedOffsetAs.d.ts +4 -2
  1093. package/dist/zoned/parse/getZonedOffsetAs.js +10 -5
  1094. package/dist/zoned/parse/parseDateFromZoned.js +2 -2
  1095. package/dist/zoned/parse/parseDateTimeFromZoned.js +2 -2
  1096. package/dist/zoned/parse/parseDayFromZoned.js +2 -2
  1097. package/dist/zoned/parse/parseDayOfWeekFromZoned.js +2 -2
  1098. package/dist/zoned/parse/parseHourFromZoned.js +2 -2
  1099. package/dist/zoned/parse/parseMicrosecondFromZoned.d.ts +2 -1
  1100. package/dist/zoned/parse/parseMicrosecondFromZoned.js +4 -3
  1101. package/dist/zoned/parse/parseMillisecondFromZoned.js +2 -2
  1102. package/dist/zoned/parse/parseMinuteFromZoned.js +2 -2
  1103. package/dist/zoned/parse/parseMonthFromZoned.js +2 -2
  1104. package/dist/zoned/parse/parseNanosecondFromZoned.d.ts +2 -1
  1105. package/dist/zoned/parse/parseNanosecondFromZoned.js +4 -3
  1106. package/dist/zoned/parse/parseRfc2822.d.ts +32 -12
  1107. package/dist/zoned/parse/parseRfc2822.js +47 -45
  1108. package/dist/zoned/parse/parseRfc3339.d.ts +6 -0
  1109. package/dist/zoned/parse/parseRfc3339.js +6 -0
  1110. package/dist/zoned/parse/parseSecondFromZoned.js +2 -2
  1111. package/dist/zoned/parse/parseTimeFromZoned.js +2 -2
  1112. package/dist/zoned/parse/parseTimeZoneFromZoned.js +2 -2
  1113. package/dist/zoned/parse/parseUnitFromZoned.d.ts +14 -5
  1114. package/dist/zoned/parse/parseUnitFromZoned.js +59 -33
  1115. package/dist/zoned/parse/parseWeekFromZoned.d.ts +13 -3
  1116. package/dist/zoned/parse/parseWeekFromZoned.js +34 -10
  1117. package/dist/zoned/parse/parseYearFromZoned.js +2 -2
  1118. package/dist/zoned/validate/hasDaylightSaving.js +3 -3
  1119. package/dist/zoned/validate/isValidCalendarZonedDateTime.d.ts +31 -16
  1120. package/dist/zoned/validate/isValidCalendarZonedDateTime.js +31 -16
  1121. package/dist/zoned/validate/isValidTimeZone.d.ts +15 -2
  1122. package/dist/zoned/validate/isValidTimeZone.js +17 -4
  1123. package/dist/zoned/validate/isValidZonedDateTime.d.ts +14 -7
  1124. package/dist/zoned/validate/isValidZonedDateTime.js +20 -12
  1125. package/dist/zoned/validate/isValidZonedRange.d.ts +9 -2
  1126. package/dist/zoned/validate/isValidZonedRange.js +44 -16
  1127. package/package.json +510 -34
  1128. package/skills/gmt-arithmetic/SKILL.md +197 -16
  1129. package/skills/gmt-basics/SKILL.md +61 -14
  1130. package/skills/gmt-integration/SKILL.md +54 -8
  1131. package/skills/gmt-timezone/SKILL.md +208 -24
  1132. package/dist/internal/advanceBusinessDays.d.ts +0 -2
  1133. package/dist/internal/advanceBusinessDays.js +0 -15
  1134. package/dist/internal/ethiopicFamilyCalendar.d.ts +0 -47
  1135. package/dist/internal/ethiopicFamilyCalendar.js +0 -136
  1136. package/dist/internal/getLocaleMinimalDaysInFirstWeek.d.ts +0 -20
  1137. package/dist/internal/getLocaleMinimalDaysInFirstWeek.js +0 -31
  1138. package/dist/internal/resolveUnixTimeZone.d.ts +0 -20
  1139. package/dist/internal/resolveUnixTimeZone.js +0 -30
  1140. package/dist/unix/calculate/startOrEndOfUnix.d.ts +0 -27
  1141. package/dist/unix/calculate/startOrEndOfUnix.js +0 -140
  1142. package/dist/unix/interval/resolveUnixIntervalPair.d.ts +0 -7
  1143. package/dist/unix/interval/resolveUnixIntervalPair.js +0 -36
@@ -2,23 +2,28 @@
2
2
  * Split a Unix epoch interval at arbitrary `points`, producing consecutive sub-intervals.
3
3
  *
4
4
  * - `points` need not be sorted — they are sorted internally before splitting.
5
- * - Points outside `[start, end]` are dropped; they cannot introduce a boundary that isn't
6
- * inside the interval.
5
+ * - Points before `start` or after `end` are dropped; they cannot introduce a boundary that
6
+ * isn't inside the interval.
7
7
  * - Points exactly on `start` or `end` are dropped too — they would only produce a
8
8
  * zero-length sub-interval at the edge.
9
9
  * - Duplicate points collapse to a single boundary.
10
+ * - Returns consecutive half-open `[start, end)` records, the same tiling as `splitIntervalAt`:
11
+ * each record's `end` is the next record's `start` and belongs only to that next record, so the
12
+ * pieces share no value and together cover `[start, end)` exactly once.
10
13
  * - Returns `[{ start, end }]` (the whole interval, unsplit) when no valid in-range point remains.
11
- * - Returns `[]` when `points` is not an array, when any element is not a finite number (or
12
- * numeric string), or on invalid input (non-finite/non-integer start/end, `start > end`).
14
+ * - Returns `[]` when `points` is not an array, or when `start`, `end` or any point is not a safe
15
+ * integer (or numeric string of one) — fractions, empty strings and values beyond ±(2^53 − 1)
16
+ * are invalid even when they would fall outside the interval — or when `start > end`.
13
17
  *
14
- * @param start Unix epoch value (seconds or milliseconds) — interval start
15
- * @param end Unix epoch value (seconds or milliseconds) — interval end
18
+ * @param start Unix epoch value, in the one unit all epoch arguments share — interval start
19
+ * @param end Unix epoch value, in the one unit all epoch arguments share — interval end
16
20
  * @param points array of Unix epoch values to split at
17
21
  * @returns array of `{ start, end }` records, or `[]` on invalid input
18
22
  *
19
23
  * @example intervalSplitAtUnix(0, 100000, [50000]) // [{ start: 0, end: 50000 }, { start: 50000, end: 100000 }]
20
24
  * @example intervalSplitAtUnix(0, 100000, []) // [{ start: 0, end: 100000 }]
21
25
  * @example intervalSplitAtUnix(NaN, 100000, [50000]) // []
26
+ * @example intervalSplitAtUnix(0, 100000, [50000.5]) // [] (fractional point)
22
27
  */
23
28
  export declare function intervalSplitAtUnix(start: number | string, end: number | string, points: Array<number | string>): Array<{
24
29
  start: number;
@@ -1,55 +1,62 @@
1
- import { isValidUnixEpochPair } from "../../internal/resolveUnixTimeZone.js";
1
+ import { parseUnixEpochInterval, parseUnixEpochValue } from "../../internal/index.js";
2
2
  /**
3
3
  * Split a Unix epoch interval at arbitrary `points`, producing consecutive sub-intervals.
4
4
  *
5
5
  * - `points` need not be sorted — they are sorted internally before splitting.
6
- * - Points outside `[start, end]` are dropped; they cannot introduce a boundary that isn't
7
- * inside the interval.
6
+ * - Points before `start` or after `end` are dropped; they cannot introduce a boundary that
7
+ * isn't inside the interval.
8
8
  * - Points exactly on `start` or `end` are dropped too — they would only produce a
9
9
  * zero-length sub-interval at the edge.
10
10
  * - Duplicate points collapse to a single boundary.
11
+ * - Returns consecutive half-open `[start, end)` records, the same tiling as `splitIntervalAt`:
12
+ * each record's `end` is the next record's `start` and belongs only to that next record, so the
13
+ * pieces share no value and together cover `[start, end)` exactly once.
11
14
  * - Returns `[{ start, end }]` (the whole interval, unsplit) when no valid in-range point remains.
12
- * - Returns `[]` when `points` is not an array, when any element is not a finite number (or
13
- * numeric string), or on invalid input (non-finite/non-integer start/end, `start > end`).
15
+ * - Returns `[]` when `points` is not an array, or when `start`, `end` or any point is not a safe
16
+ * integer (or numeric string of one) — fractions, empty strings and values beyond ±(2^53 − 1)
17
+ * are invalid even when they would fall outside the interval — or when `start > end`.
14
18
  *
15
- * @param start Unix epoch value (seconds or milliseconds) — interval start
16
- * @param end Unix epoch value (seconds or milliseconds) — interval end
19
+ * @param start Unix epoch value, in the one unit all epoch arguments share — interval start
20
+ * @param end Unix epoch value, in the one unit all epoch arguments share — interval end
17
21
  * @param points array of Unix epoch values to split at
18
22
  * @returns array of `{ start, end }` records, or `[]` on invalid input
19
23
  *
20
24
  * @example intervalSplitAtUnix(0, 100000, [50000]) // [{ start: 0, end: 50000 }, { start: 50000, end: 100000 }]
21
25
  * @example intervalSplitAtUnix(0, 100000, []) // [{ start: 0, end: 100000 }]
22
26
  * @example intervalSplitAtUnix(NaN, 100000, [50000]) // []
27
+ * @example intervalSplitAtUnix(0, 100000, [50000.5]) // [] (fractional point)
23
28
  */
24
29
  export function intervalSplitAtUnix(start, end, points) {
25
- if (!Array.isArray(points)) {
26
- return [];
27
- }
28
- if (typeof start !== "number" && typeof start !== "string") {
29
- return [];
30
- }
31
- if (typeof end !== "number" && typeof end !== "string") {
32
- return [];
30
+ try {
31
+ if (!Array.isArray(points)) {
32
+ return [];
33
+ }
34
+ const interval = parseUnixEpochInterval(start, end);
35
+ if (interval === null) {
36
+ return [];
37
+ }
38
+ const { start: startMs, end: endMs } = interval;
39
+ const parsedPoints = [];
40
+ for (const point of points) {
41
+ const parsed = parseUnixEpochValue(point);
42
+ if (parsed === null) {
43
+ return [];
44
+ }
45
+ parsedPoints.push(parsed);
46
+ }
47
+ const inRangePoints = parsedPoints.filter((point) => point > startMs && point < endMs);
48
+ inRangePoints.sort((a, b) => a - b);
49
+ const uniquePoints = inRangePoints.filter((point, index) => index === 0 || point !== inRangePoints[index - 1]);
50
+ const boundaries = [startMs, ...uniquePoints, endMs];
51
+ const result = [];
52
+ for (let i = 0; i < boundaries.length - 1; i++) {
53
+ result.push({ start: boundaries[i], end: boundaries[i + 1] });
54
+ }
55
+ return result;
33
56
  }
34
- const startMs = typeof start === "number" ? start : Number(start);
35
- const endMs = typeof end === "number" ? end : Number(end);
36
- if (!isValidUnixEpochPair(startMs, endMs) || startMs > endMs) {
57
+ catch {
58
+ // Never throws (Core Rule 3): a hostile
59
+ // argument is invalid input, not an exception.
37
60
  return [];
38
61
  }
39
- if (!points.every((point) => typeof point === "number" || typeof point === "string")) {
40
- return [];
41
- }
42
- const parsedPoints = points.map((point) => typeof point === "number" ? point : Number(point));
43
- if (!parsedPoints.every((point) => Number.isFinite(point))) {
44
- return [];
45
- }
46
- const inRangePoints = parsedPoints.filter((point) => point > startMs && point < endMs);
47
- inRangePoints.sort((a, b) => a - b);
48
- const uniquePoints = inRangePoints.filter((point, index) => index === 0 || point !== inRangePoints[index - 1]);
49
- const boundaries = [startMs, ...uniquePoints, endMs];
50
- const result = [];
51
- for (let i = 0; i < boundaries.length - 1; i++) {
52
- result.push({ start: boundaries[i], end: boundaries[i + 1] });
53
- }
54
- return result;
55
62
  }
@@ -1,20 +1,26 @@
1
1
  /**
2
- * Return the combined span of two Unix epoch intervals, or null when they are disjoint.
2
+ * Return the combined span of two half-open Unix epoch intervals `[start, end)`, or null when
3
+ * their union is not one non-empty span.
3
4
  *
4
5
  * - Compares numeric Unix epoch values directly.
5
- * - Overlapping intervals return their merged span.
6
- * - Adjacent intervals (e.g. `aEnd === bStart`) share one instant and ARE merged.
6
+ * - The result is the single run `mergeIntervalsUnix([a, b])` produces, the same rule as
7
+ * `mergeIntervals`. Overlapping intervals return their merged span.
8
+ * - Touching intervals (e.g. `aEnd === bStart`) leave no gap between them and ARE merged.
9
+ * - An empty interval (`start === end`) holds no instant, so it never changes the result: with a
10
+ * non-empty interval the answer is that interval, and two empty intervals give `null`.
7
11
  * - Returns `null` if either interval is invalid (`start > end`).
8
- * - Returns `null` on invalid input (non-numeric types, non-finite values).
12
+ * - Returns `null` on invalid input: non-numeric types, empty strings, and values that are not
13
+ * safe integers (fractions, `NaN`, `±Infinity`, beyond ±(2^53 − 1)).
9
14
  *
10
- * @param aStart Unix epoch value (seconds or milliseconds) — first interval start
11
- * @param aEnd Unix epoch value (seconds or milliseconds) — first interval end
12
- * @param bStart Unix epoch value (seconds or milliseconds) — second interval start
13
- * @param bEnd Unix epoch value (seconds or milliseconds) — second interval end
15
+ * @param aStart Unix epoch value, in the one unit all epoch arguments share — first interval start
16
+ * @param aEnd Unix epoch value, in the one unit all epoch arguments share — first interval end
17
+ * @param bStart Unix epoch value, in the one unit all epoch arguments share — second interval start
18
+ * @param bEnd Unix epoch value, in the one unit all epoch arguments share — second interval end
14
19
  * @returns `{ start, end }` with the merged span, or null on invalid input / disjoint intervals
15
20
  *
16
21
  * @example intervalUnionUnix(0, 1700000000, 1000000, 2000000) // { start: 0, end: 1700000000 }
17
- * @example intervalUnionUnix(0, 1000000, 1000000, 2000000) // { start: 0, end: 2000000 }
22
+ * @example intervalUnionUnix(0, 1000000, 1000000, 2000000) // { start: 0, end: 2000000 } (touching)
23
+ * @example intervalUnionUnix(0, 1000000, 3000000, 3000000) // { start: 0, end: 1000000 } (an empty interval adds nothing)
18
24
  * @example intervalUnionUnix(0, 1000000, 1000001, 2000000) // null
19
25
  * @example intervalUnionUnix(NaN, 1700000000, 1000000, 2000000) // null
20
26
  * @example intervalUnionUnix("0", "1700000000", "1000000", "2000000") // { start: 0, end: 1700000000 }
@@ -1,58 +1,36 @@
1
+ import { halfOpenUnion, parseUnixEpochIntervalPair } from "../../internal/index.js";
1
2
  /**
2
- * Return the combined span of two Unix epoch intervals, or null when they are disjoint.
3
+ * Return the combined span of two half-open Unix epoch intervals `[start, end)`, or null when
4
+ * their union is not one non-empty span.
3
5
  *
4
6
  * - Compares numeric Unix epoch values directly.
5
- * - Overlapping intervals return their merged span.
6
- * - Adjacent intervals (e.g. `aEnd === bStart`) share one instant and ARE merged.
7
+ * - The result is the single run `mergeIntervalsUnix([a, b])` produces, the same rule as
8
+ * `mergeIntervals`. Overlapping intervals return their merged span.
9
+ * - Touching intervals (e.g. `aEnd === bStart`) leave no gap between them and ARE merged.
10
+ * - An empty interval (`start === end`) holds no instant, so it never changes the result: with a
11
+ * non-empty interval the answer is that interval, and two empty intervals give `null`.
7
12
  * - Returns `null` if either interval is invalid (`start > end`).
8
- * - Returns `null` on invalid input (non-numeric types, non-finite values).
13
+ * - Returns `null` on invalid input: non-numeric types, empty strings, and values that are not
14
+ * safe integers (fractions, `NaN`, `±Infinity`, beyond ±(2^53 − 1)).
9
15
  *
10
- * @param aStart Unix epoch value (seconds or milliseconds) — first interval start
11
- * @param aEnd Unix epoch value (seconds or milliseconds) — first interval end
12
- * @param bStart Unix epoch value (seconds or milliseconds) — second interval start
13
- * @param bEnd Unix epoch value (seconds or milliseconds) — second interval end
16
+ * @param aStart Unix epoch value, in the one unit all epoch arguments share — first interval start
17
+ * @param aEnd Unix epoch value, in the one unit all epoch arguments share — first interval end
18
+ * @param bStart Unix epoch value, in the one unit all epoch arguments share — second interval start
19
+ * @param bEnd Unix epoch value, in the one unit all epoch arguments share — second interval end
14
20
  * @returns `{ start, end }` with the merged span, or null on invalid input / disjoint intervals
15
21
  *
16
22
  * @example intervalUnionUnix(0, 1700000000, 1000000, 2000000) // { start: 0, end: 1700000000 }
17
- * @example intervalUnionUnix(0, 1000000, 1000000, 2000000) // { start: 0, end: 2000000 }
23
+ * @example intervalUnionUnix(0, 1000000, 1000000, 2000000) // { start: 0, end: 2000000 } (touching)
24
+ * @example intervalUnionUnix(0, 1000000, 3000000, 3000000) // { start: 0, end: 1000000 } (an empty interval adds nothing)
18
25
  * @example intervalUnionUnix(0, 1000000, 1000001, 2000000) // null
19
26
  * @example intervalUnionUnix(NaN, 1700000000, 1000000, 2000000) // null
20
27
  * @example intervalUnionUnix("0", "1700000000", "1000000", "2000000") // { start: 0, end: 1700000000 }
21
28
  */
22
29
  export function intervalUnionUnix(aStart, aEnd, bStart, bEnd) {
23
- if (typeof aStart !== "number" && typeof aStart !== "string") {
30
+ const pair = parseUnixEpochIntervalPair(aStart, aEnd, bStart, bEnd);
31
+ if (pair === null) {
24
32
  return null;
25
33
  }
26
- if (typeof aEnd !== "number" && typeof aEnd !== "string") {
27
- return null;
28
- }
29
- if (typeof bStart !== "number" && typeof bStart !== "string") {
30
- return null;
31
- }
32
- if (typeof bEnd !== "number" && typeof bEnd !== "string") {
33
- return null;
34
- }
35
- const a1 = typeof aStart === "number" ? aStart : Number(aStart);
36
- const a2 = typeof aEnd === "number" ? aEnd : Number(aEnd);
37
- const b1 = typeof bStart === "number" ? bStart : Number(bStart);
38
- const b2 = typeof bEnd === "number" ? bEnd : Number(bEnd);
39
- if (!Number.isFinite(a1) ||
40
- !Number.isFinite(a2) ||
41
- !Number.isFinite(b1) ||
42
- !Number.isFinite(b2)) {
43
- return null;
44
- }
45
- if (a1 > a2) {
46
- return null;
47
- }
48
- if (b1 > b2) {
49
- return null;
50
- }
51
- if (a2 < b1 || b2 < a1) {
52
- return null;
53
- }
54
- return {
55
- start: Math.min(a1, b1),
56
- end: Math.max(a2, b2),
57
- };
34
+ // One merged run, or null when a gap (or no instant at all) leaves no single span.
35
+ return halfOpenUnion(pair[0], pair[1], (left, right) => left - right);
58
36
  }
@@ -3,20 +3,22 @@
3
3
  * values covered by an odd number of the input intervals.
4
4
  *
5
5
  * - List-form generalization of `intervalXorUnix`, which is pairwise only.
6
- * - Implemented as a coverage sweep: each interval contributes a `+1` at its start and a `-1`
7
- * one epoch unit after its end; the result is every maximal run where the running coverage
8
- * count is odd. For two intervals this reduces to exactly `intervalXorUnix`'s pairwise result.
6
+ * - Intervals are half-open `[start, end)`. The result is every maximal run where the coverage
7
+ * count is odd, so touching runs join and an empty interval (`start === end`) changes nothing.
8
+ * Every boundary is an input's own `start` or `end`; none is stepped by an epoch unit. For two
9
+ * intervals this is exactly `intervalXorUnix`'s pairwise result.
9
10
  * - Order of the input list does not matter; the result is sorted by start.
10
11
  * - Returns `[]` for an empty list, and `[]` when every value is covered an even number of
11
12
  * times (e.g. two identical intervals cancel out).
12
13
  * - Returns `[]` when `intervals` is not an array, when any element is not a
13
- * `{ start, end }` record of finite numeric (or numeric-string) values, or when any element
14
- * has `start > end`.
14
+ * `{ start, end }` record of safe-integer (or numeric-string) values — fractions, empty
15
+ * strings and values beyond ±(2^53 − 1) are invalid — or when any element has `start > end`.
15
16
  *
16
17
  * @param intervals array of `{ start, end }` records
17
18
  * @returns array of `{ start, end }` records covered an odd number of times, or `[]` on invalid input
18
19
  *
19
- * @example intervalXorAllUnix([{ start: 0, end: 1500000000 }, { start: 1400000000, end: 1700000000 }]) // [{ start: 0, end: 1399999999 }, { start: 1500000001, end: 1700000000 }]
20
+ * @example intervalXorAllUnix([{ start: 0, end: 1500000000 }, { start: 1400000000, end: 1700000000 }]) // [{ start: 0, end: 1400000000 }, { start: 1500000000, end: 1700000000 }]
21
+ * @example intervalXorAllUnix([{ start: 0, end: 5 }, { start: 5, end: 10 }]) // [{ start: 0, end: 10 }] (touching runs join)
20
22
  * @example intervalXorAllUnix([]) // []
21
23
  */
22
24
  export declare function intervalXorAllUnix(intervals: Array<{
@@ -1,77 +1,42 @@
1
- import { isValidUnixEpochPair } from "../../internal/resolveUnixTimeZone.js";
1
+ // fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
2
+ import { halfOpenXor, parseUnixEpochIntervalList } from "../../internal/index.js";
2
3
  /**
3
4
  * Return the symmetric difference across a list of Unix epoch intervals — the set of epoch
4
5
  * values covered by an odd number of the input intervals.
5
6
  *
6
7
  * - List-form generalization of `intervalXorUnix`, which is pairwise only.
7
- * - Implemented as a coverage sweep: each interval contributes a `+1` at its start and a `-1`
8
- * one epoch unit after its end; the result is every maximal run where the running coverage
9
- * count is odd. For two intervals this reduces to exactly `intervalXorUnix`'s pairwise result.
8
+ * - Intervals are half-open `[start, end)`. The result is every maximal run where the coverage
9
+ * count is odd, so touching runs join and an empty interval (`start === end`) changes nothing.
10
+ * Every boundary is an input's own `start` or `end`; none is stepped by an epoch unit. For two
11
+ * intervals this is exactly `intervalXorUnix`'s pairwise result.
10
12
  * - Order of the input list does not matter; the result is sorted by start.
11
13
  * - Returns `[]` for an empty list, and `[]` when every value is covered an even number of
12
14
  * times (e.g. two identical intervals cancel out).
13
15
  * - Returns `[]` when `intervals` is not an array, when any element is not a
14
- * `{ start, end }` record of finite numeric (or numeric-string) values, or when any element
15
- * has `start > end`.
16
+ * `{ start, end }` record of safe-integer (or numeric-string) values — fractions, empty
17
+ * strings and values beyond ±(2^53 − 1) are invalid — or when any element has `start > end`.
16
18
  *
17
19
  * @param intervals array of `{ start, end }` records
18
20
  * @returns array of `{ start, end }` records covered an odd number of times, or `[]` on invalid input
19
21
  *
20
- * @example intervalXorAllUnix([{ start: 0, end: 1500000000 }, { start: 1400000000, end: 1700000000 }]) // [{ start: 0, end: 1399999999 }, { start: 1500000001, end: 1700000000 }]
22
+ * @example intervalXorAllUnix([{ start: 0, end: 1500000000 }, { start: 1400000000, end: 1700000000 }]) // [{ start: 0, end: 1400000000 }, { start: 1500000000, end: 1700000000 }]
23
+ * @example intervalXorAllUnix([{ start: 0, end: 5 }, { start: 5, end: 10 }]) // [{ start: 0, end: 10 }] (touching runs join)
21
24
  * @example intervalXorAllUnix([]) // []
22
25
  */
23
26
  export function intervalXorAllUnix(intervals) {
24
- if (!Array.isArray(intervals) || intervals.length === 0) {
25
- return [];
26
- }
27
- if (!intervals.every((interval) => interval &&
28
- typeof interval === "object" &&
29
- (typeof interval.start === "number" ||
30
- typeof interval.start === "string") &&
31
- (typeof interval.end === "number" || typeof interval.end === "string"))) {
32
- return [];
33
- }
34
- const parsed = intervals.map((interval) => ({
35
- start: typeof interval.start === "number"
36
- ? interval.start
37
- : Number(interval.start),
38
- end: typeof interval.end === "number" ? interval.end : Number(interval.end),
39
- }));
40
- if (!parsed.every((interval) => isValidUnixEpochPair(interval.start, interval.end) &&
41
- interval.start <= interval.end)) {
42
- return [];
43
- }
44
- const events = [];
45
- for (const interval of parsed) {
46
- events.push({ point: interval.start, delta: 1 });
47
- events.push({ point: interval.end + 1, delta: -1 });
48
- }
49
- events.sort((a, b) => a.point - b.point);
50
- const grouped = [];
51
- for (const event of events) {
52
- const last = grouped[grouped.length - 1];
53
- if (last && last.point === event.point) {
54
- last.delta += event.delta;
27
+ try {
28
+ if (!Array.isArray(intervals) || intervals.length === 0) {
29
+ return [];
55
30
  }
56
- else {
57
- grouped.push(event);
31
+ const parsed = parseUnixEpochIntervalList(intervals);
32
+ if (parsed === null) {
33
+ return [];
58
34
  }
35
+ return halfOpenXor(parsed, (left, right) => left - right);
59
36
  }
60
- const result = [];
61
- let coverage = 0;
62
- let runStart = null;
63
- for (const group of grouped) {
64
- const previousCoverage = coverage;
65
- coverage += group.delta;
66
- if (previousCoverage % 2 === 0 && coverage % 2 === 1) {
67
- runStart = group.point;
68
- }
69
- else if (previousCoverage % 2 === 1 &&
70
- coverage % 2 === 0 &&
71
- runStart !== null) {
72
- result.push({ start: runStart, end: group.point - 1 });
73
- runStart = null;
74
- }
37
+ catch {
38
+ // Never throws (Core Rule 3): a hostile
39
+ // argument is invalid input, not an exception.
40
+ return [];
75
41
  }
76
- return result;
77
42
  }
@@ -1,23 +1,34 @@
1
1
  /**
2
- * Return the symmetric difference of two Unix intervals — time covered by exactly one interval.
2
+ * Return the symmetric difference of two half-open Unix intervals `[start, end)` — the values
3
+ * covered by exactly one interval.
3
4
  *
4
5
  * - Compares numeric Unix epoch values directly.
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.
6
+ * - The result is every maximal run covered by exactly one interval, sorted by start — the same
7
+ * as `mergeIntervals` of `subtractIntervals(a, [b])` and `subtractIntervals(b, [a])`, and the
8
+ * same as `intervalXorAllUnix([a, b])`.
9
+ * - Every boundary is an input's own `start` or `end`; no boundary is stepped by an epoch unit.
10
+ * - Touching intervals share no value, so they join into one run (`[0, 5)` xor `[5, 10)` is
11
+ * `[0, 10)`). An empty interval (`start === end`) holds no value and changes nothing.
12
+ * - Returns `[]` when the intervals are identical.
13
+ * - Returns `[{ start, end }]` when the intervals share a start or an end, or touch.
14
+ * - Returns `[{ start, end }, { start, end }]` when they partially overlap, when one strictly
15
+ * contains the other, or when they are disjoint with a gap.
8
16
  * - Returns `[]` if either interval is invalid (`start > end`).
9
- * - Returns `[]` on invalid input (non-numeric types, non-finite values).
17
+ * - Returns `[]` on invalid input: non-numeric types, empty strings, and values that are not safe
18
+ * integers (fractions, `NaN`, `±Infinity`, beyond ±(2^53 − 1)).
10
19
  *
11
- * @param aStart Unix epoch value (seconds or milliseconds) — first interval start
12
- * @param aEnd Unix epoch value (seconds or milliseconds) — first interval end
13
- * @param bStart Unix epoch value (seconds or milliseconds) — second interval start
14
- * @param bEnd Unix epoch value (seconds or milliseconds) — second interval end
20
+ * @param aStart Unix epoch value, in the one unit all epoch arguments share — first interval start
21
+ * @param aEnd Unix epoch value, in the one unit all epoch arguments share — first interval end
22
+ * @param bStart Unix epoch value, in the one unit all epoch arguments share — second interval start
23
+ * @param bEnd Unix epoch value, in the one unit all epoch arguments share — second interval end
15
24
  * @returns array of `{ start, end }` records representing the symmetric difference, or `[]` on invalid input
16
25
  *
17
- * @example intervalXorUnix(0, 1500000000, 1400000000, 1700000000) // [{ start: 0, end: 1399999999 }, { start: 1500000001, end: 1700000000 }]
18
- * @example intervalXorUnix(0, 1700000000, 1400000000, 1500000000) // [{ start: 0, end: 1399999999 }, { start: 1500000001, end: 1700000000 }]
26
+ * @example intervalXorUnix(0, 1500000000, 1400000000, 1700000000) // [{ start: 0, end: 1400000000 }, { start: 1500000000, end: 1700000000 }]
27
+ * @example intervalXorUnix(0, 1700000000, 1400000000, 1500000000) // [{ start: 0, end: 1400000000 }, { start: 1500000000, end: 1700000000 }]
28
+ * @example intervalXorUnix(0, 1500000000, 1500000000, 1700000000) // [{ start: 0, end: 1700000000 }] (touching intervals join)
19
29
  * @example intervalXorUnix(0, 1700000000, 0, 1700000000) // []
20
30
  * @example intervalXorUnix(NaN, 1500000000, 1400000000, 1700000000) // []
31
+ * @example intervalXorUnix(0, 1, 0.5, 2) // [] (fractional epoch)
21
32
  */
22
33
  export declare function intervalXorUnix(aStart: number | string, aEnd: number | string, bStart: number | string, bEnd: number | string): Array<{
23
34
  start: number;
@@ -1,70 +1,42 @@
1
+ // fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
2
+ import { halfOpenXor, parseUnixEpochIntervalPair } from "../../internal/index.js";
1
3
  /**
2
- * Return the symmetric difference of two Unix intervals — time covered by exactly one interval.
4
+ * Return the symmetric difference of two half-open Unix intervals `[start, end)` — the values
5
+ * covered by exactly one interval.
3
6
  *
4
7
  * - Compares numeric Unix epoch values directly.
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.
8
+ * - The result is every maximal run covered by exactly one interval, sorted by start — the same
9
+ * as `mergeIntervals` of `subtractIntervals(a, [b])` and `subtractIntervals(b, [a])`, and the
10
+ * same as `intervalXorAllUnix([a, b])`.
11
+ * - Every boundary is an input's own `start` or `end`; no boundary is stepped by an epoch unit.
12
+ * - Touching intervals share no value, so they join into one run (`[0, 5)` xor `[5, 10)` is
13
+ * `[0, 10)`). An empty interval (`start === end`) holds no value and changes nothing.
14
+ * - Returns `[]` when the intervals are identical.
15
+ * - Returns `[{ start, end }]` when the intervals share a start or an end, or touch.
16
+ * - Returns `[{ start, end }, { start, end }]` when they partially overlap, when one strictly
17
+ * contains the other, or when they are disjoint with a gap.
8
18
  * - Returns `[]` if either interval is invalid (`start > end`).
9
- * - Returns `[]` on invalid input (non-numeric types, non-finite values).
19
+ * - Returns `[]` on invalid input: non-numeric types, empty strings, and values that are not safe
20
+ * integers (fractions, `NaN`, `±Infinity`, beyond ±(2^53 − 1)).
10
21
  *
11
- * @param aStart Unix epoch value (seconds or milliseconds) — first interval start
12
- * @param aEnd Unix epoch value (seconds or milliseconds) — first interval end
13
- * @param bStart Unix epoch value (seconds or milliseconds) — second interval start
14
- * @param bEnd Unix epoch value (seconds or milliseconds) — second interval end
22
+ * @param aStart Unix epoch value, in the one unit all epoch arguments share — first interval start
23
+ * @param aEnd Unix epoch value, in the one unit all epoch arguments share — first interval end
24
+ * @param bStart Unix epoch value, in the one unit all epoch arguments share — second interval start
25
+ * @param bEnd Unix epoch value, in the one unit all epoch arguments share — second interval end
15
26
  * @returns array of `{ start, end }` records representing the symmetric difference, or `[]` on invalid input
16
27
  *
17
- * @example intervalXorUnix(0, 1500000000, 1400000000, 1700000000) // [{ start: 0, end: 1399999999 }, { start: 1500000001, end: 1700000000 }]
18
- * @example intervalXorUnix(0, 1700000000, 1400000000, 1500000000) // [{ start: 0, end: 1399999999 }, { start: 1500000001, end: 1700000000 }]
28
+ * @example intervalXorUnix(0, 1500000000, 1400000000, 1700000000) // [{ start: 0, end: 1400000000 }, { start: 1500000000, end: 1700000000 }]
29
+ * @example intervalXorUnix(0, 1700000000, 1400000000, 1500000000) // [{ start: 0, end: 1400000000 }, { start: 1500000000, end: 1700000000 }]
30
+ * @example intervalXorUnix(0, 1500000000, 1500000000, 1700000000) // [{ start: 0, end: 1700000000 }] (touching intervals join)
19
31
  * @example intervalXorUnix(0, 1700000000, 0, 1700000000) // []
20
32
  * @example intervalXorUnix(NaN, 1500000000, 1400000000, 1700000000) // []
33
+ * @example intervalXorUnix(0, 1, 0.5, 2) // [] (fractional epoch)
21
34
  */
22
35
  export function intervalXorUnix(aStart, aEnd, bStart, bEnd) {
23
- if ((typeof aStart !== "number" && typeof aStart !== "string") ||
24
- (typeof aEnd !== "number" && typeof aEnd !== "string") ||
25
- (typeof bStart !== "number" && typeof bStart !== "string") ||
26
- (typeof bEnd !== "number" && typeof bEnd !== "string")) {
36
+ const pair = parseUnixEpochIntervalPair(aStart, aEnd, bStart, bEnd);
37
+ if (pair === null) {
27
38
  return [];
28
39
  }
29
- const n1 = typeof aStart === "number" ? aStart : Number(aStart);
30
- const n2 = typeof aEnd === "number" ? aEnd : Number(aEnd);
31
- const n3 = typeof bStart === "number" ? bStart : Number(bStart);
32
- const n4 = typeof bEnd === "number" ? bEnd : Number(bEnd);
33
- if (!Number.isFinite(n1) ||
34
- !Number.isFinite(n2) ||
35
- !Number.isFinite(n3) ||
36
- !Number.isFinite(n4)) {
37
- return [];
38
- }
39
- if (n1 > n2) {
40
- return [];
41
- }
42
- if (n3 > n4) {
43
- return [];
44
- }
45
- const result = [];
46
- // If intervals don't overlap, return both as-is
47
- if (n2 < n3 || n4 < n1) {
48
- return [
49
- { start: n1, end: n2 },
50
- { start: n3, end: n4 },
51
- ];
52
- }
53
- // Left piece: A before B starts
54
- if (n1 < n3) {
55
- result.push({ start: n1, end: n3 - 1 });
56
- }
57
- // Right piece: A after B ends
58
- if (n2 > n4) {
59
- result.push({ start: n4 + 1, end: n2 });
60
- }
61
- // Left piece: B before A starts
62
- if (n3 < n1) {
63
- result.push({ start: n3, end: n1 - 1 });
64
- }
65
- // Right piece: B after A ends
66
- if (n4 > n2) {
67
- result.push({ start: n2 + 1, end: n4 });
68
- }
69
- return result;
40
+ // Maximal runs covered an odd number of times (exactly once, for two intervals).
41
+ return halfOpenXor(pair, (left, right) => left - right);
70
42
  }
@@ -1,20 +1,26 @@
1
1
  /**
2
- * Return true when intervals `[aStart, aEnd]` and `[bStart, bEnd]` share at least one instant.
2
+ * Return true when the half-open intervals `[aStart, aEnd)` and `[bStart, bEnd)` share at least
3
+ * one instant.
3
4
  *
4
- * - Compares numeric Unix epoch values directly.
5
- * - Adjacent intervals (e.g. `aEnd === bStart`) do NOT overlap — returns `false`.
5
+ * - Compares numeric Unix epoch values directly: `aStart < bEnd && bStart < aEnd`, the same rule as
6
+ * `intervalsOverlap` (SQL:2011 `OVERLAPS` on closed-open periods).
7
+ * - An interval excludes its `end`, so touching intervals (`aEnd` equal to `bStart`) do NOT
8
+ * overlap — returns `false`.
9
+ * - An empty interval (`start === end`) overlaps an interval only when it lies strictly inside it;
10
+ * at either edge, or against another empty interval, it returns `false`.
6
11
  * - Returns `false` if either interval is invalid (`start > end`).
7
- * - Returns `false` on invalid input (non-numeric types, non-finite values).
12
+ * - Returns `false` on invalid input: non-numeric types, empty strings, and values that are not
13
+ * safe integers (fractions, `NaN`, `±Infinity`, beyond ±(2^53 − 1)).
8
14
  *
9
- * @param aStart Unix epoch value (seconds or milliseconds) — first interval start
10
- * @param aEnd Unix epoch value (seconds or milliseconds) — first interval end
11
- * @param bStart Unix epoch value (seconds or milliseconds) — second interval start
12
- * @param bEnd Unix epoch value (seconds or milliseconds) — second interval end
15
+ * @param aStart Unix epoch value, in the one unit all epoch arguments share — first interval start
16
+ * @param aEnd Unix epoch value, in the one unit all epoch arguments share — first interval end
17
+ * @param bStart Unix epoch value, in the one unit all epoch arguments share — second interval start
18
+ * @param bEnd Unix epoch value, in the one unit all epoch arguments share — second interval end
13
19
  * @returns true if intervals overlap, or false on invalid input
14
20
  *
15
21
  * @example intervalsOverlapUnix(0, 1700000000, 1000000, 2000000) // true
16
- * @example intervalsOverlapUnix(0, 1000000, 1000000, 2000000) // false (adjacent)
17
- * @example intervalsOverlapUnix(0, 1000000, 1000001, 2000000) // false (disjoint)
22
+ * @example intervalsOverlapUnix(0, 1000000, 1000000, 2000000) // false (touching: [0, 1000000) excludes 1000000)
23
+ * @example intervalsOverlapUnix(0, 1000001, 1000000, 2000000) // true (one unit shared)
18
24
  * @example intervalsOverlapUnix(NaN, 1700000000, 1000000, 2000000) // false
19
25
  * @example intervalsOverlapUnix("0", "1700000000", "1000000", "2000000") // true
20
26
  */