@northguild/gmt 1.15.0 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1113) hide show
  1. package/README.md +852 -272
  2. package/dist/calendar/business/businessDaysBetween.d.ts +37 -0
  3. package/dist/calendar/business/businessDaysBetween.js +89 -0
  4. package/dist/calendar/business/index.d.ts +7 -0
  5. package/dist/calendar/business/index.js +10 -0
  6. package/dist/calendar/business/mergeCalendars.d.ts +33 -0
  7. package/dist/calendar/business/mergeCalendars.js +68 -0
  8. package/dist/calendar/business/nextBusinessDay.d.ts +30 -0
  9. package/dist/calendar/business/nextBusinessDay.js +39 -0
  10. package/dist/calendar/business/previousBusinessDay.d.ts +30 -0
  11. package/dist/calendar/business/previousBusinessDay.js +39 -0
  12. package/dist/calendar/business/rollDate.d.ts +59 -0
  13. package/dist/calendar/business/rollDate.js +116 -0
  14. package/dist/calendar/calculate/bucketRange.d.ts +49 -0
  15. package/dist/calendar/calculate/bucketRange.js +169 -0
  16. package/dist/calendar/calculate/floorToZone.d.ts +42 -0
  17. package/dist/calendar/calculate/floorToZone.js +62 -0
  18. package/dist/calendar/calculate/getFiscalPeriod.d.ts +64 -0
  19. package/dist/calendar/calculate/getFiscalPeriod.js +96 -0
  20. package/dist/calendar/calculate/getIsoWeekDate.d.ts +35 -0
  21. package/dist/calendar/calculate/getIsoWeekDate.js +41 -0
  22. package/dist/calendar/calculate/getOrdinalDate.d.ts +25 -0
  23. package/dist/calendar/calculate/getOrdinalDate.js +28 -0
  24. package/dist/calendar/calculate/getQuarter.d.ts +36 -0
  25. package/dist/calendar/calculate/getQuarter.js +64 -0
  26. package/dist/calendar/calculate/index.d.ts +6 -0
  27. package/dist/calendar/calculate/index.js +6 -0
  28. package/dist/calendar/index.d.ts +4 -0
  29. package/dist/calendar/index.js +5 -0
  30. package/dist/calendar/validate/index.d.ts +4 -0
  31. package/dist/calendar/validate/index.js +4 -0
  32. package/dist/calendar/validate/isValidBusinessCalendar.d.ts +31 -0
  33. package/dist/calendar/validate/isValidBusinessCalendar.js +40 -0
  34. package/dist/calendar/validate/isValidFiscalPattern.d.ts +25 -0
  35. package/dist/calendar/validate/isValidFiscalPattern.js +29 -0
  36. package/dist/calendar/validate/isValidRollConvention.d.ts +28 -0
  37. package/dist/calendar/validate/isValidRollConvention.js +38 -0
  38. package/dist/calendar/validate/isValidZoneBucketUnit.d.ts +31 -0
  39. package/dist/calendar/validate/isValidZoneBucketUnit.js +39 -0
  40. package/dist/duration/calculate/durationAs.d.ts +27 -3
  41. package/dist/duration/calculate/durationAs.js +34 -8
  42. package/dist/duration/calculate/getDurationUnit.d.ts +5 -2
  43. package/dist/duration/calculate/getDurationUnit.js +7 -3
  44. package/dist/duration/compare/compareDurations.d.ts +25 -2
  45. package/dist/duration/compare/compareDurations.js +31 -7
  46. package/dist/duration/format/formatDuration.d.ts +14 -5
  47. package/dist/duration/format/formatDuration.js +47 -11
  48. package/dist/duration/index.d.ts +1 -0
  49. package/dist/duration/index.js +2 -0
  50. package/dist/duration/normalize/normalizeDuration.d.ts +33 -6
  51. package/dist/duration/normalize/normalizeDuration.js +41 -12
  52. package/dist/duration/parse/parseDuration.js +4 -0
  53. package/dist/index.d.ts +5 -0
  54. package/dist/index.js +5 -0
  55. package/dist/instant/convert/classifyLocal.d.ts +50 -0
  56. package/dist/instant/convert/classifyLocal.js +60 -0
  57. package/dist/instant/convert/fromOffsetInstant.d.ts +47 -0
  58. package/dist/instant/convert/fromOffsetInstant.js +99 -0
  59. package/dist/instant/convert/index.d.ts +4 -0
  60. package/dist/instant/convert/index.js +4 -0
  61. package/dist/instant/convert/resolveLocal.d.ts +40 -0
  62. package/dist/instant/convert/resolveLocal.js +76 -0
  63. package/dist/instant/convert/toOffsetInstant.d.ts +73 -0
  64. package/dist/instant/convert/toOffsetInstant.js +185 -0
  65. package/dist/instant/index.d.ts +2 -0
  66. package/dist/instant/index.js +3 -0
  67. package/dist/internal/adjustZonedBusinessDays.js +9 -7
  68. package/dist/internal/businessCalendar.d.ts +46 -0
  69. package/dist/internal/businessCalendar.js +230 -0
  70. package/dist/internal/businessDayValues.d.ts +20 -0
  71. package/dist/internal/businessDayValues.js +54 -0
  72. package/dist/internal/calendarDatePairPolicy.d.ts +10 -12
  73. package/dist/internal/calendarDatePairPolicy.js +13 -19
  74. package/dist/internal/calendarDateString.d.ts +32 -58
  75. package/dist/internal/calendarDateString.js +51 -93
  76. package/dist/internal/calendarSystemIds.d.ts +26 -2
  77. package/dist/internal/calendarSystemIds.js +57 -51
  78. package/dist/internal/calendarValueOfDate.d.ts +10 -12
  79. package/dist/internal/calendarValueOfDate.js +22 -20
  80. package/dist/internal/calendarValueOfZoned.d.ts +14 -17
  81. package/dist/internal/calendarValueOfZoned.js +25 -25
  82. package/dist/internal/calendarZonedPairPolicy.d.ts +11 -18
  83. package/dist/internal/calendarZonedPairPolicy.js +14 -25
  84. package/dist/internal/calendarZonedString.d.ts +41 -65
  85. package/dist/internal/calendarZonedString.js +52 -101
  86. package/dist/internal/compareUnixEpochs.d.ts +14 -0
  87. package/dist/internal/compareUnixEpochs.js +25 -0
  88. package/dist/internal/dateTimeUnitHelpers.d.ts +18 -0
  89. package/dist/internal/dateTimeUnitHelpers.js +27 -0
  90. package/dist/internal/dateUnitHelpers.d.ts +39 -1
  91. package/dist/internal/dateUnitHelpers.js +73 -11
  92. package/dist/internal/defaultFractionalDigits.d.ts +14 -0
  93. package/dist/internal/defaultFractionalDigits.js +23 -0
  94. package/dist/internal/differenceRecord.d.ts +32 -0
  95. package/dist/internal/differenceRecord.js +79 -0
  96. package/dist/internal/divisionBoundary.d.ts +19 -0
  97. package/dist/internal/divisionBoundary.js +23 -0
  98. package/dist/internal/durationUntilString.d.ts +1 -1
  99. package/dist/internal/durationUntilString.js +10 -2
  100. package/dist/internal/englishCalendarNames.d.ts +11 -0
  101. package/dist/internal/englishCalendarNames.js +21 -1
  102. package/dist/internal/epochNanoseconds.d.ts +27 -0
  103. package/dist/internal/epochNanoseconds.js +31 -0
  104. package/dist/internal/fiscalCalendar.d.ts +36 -0
  105. package/dist/internal/fiscalCalendar.js +86 -0
  106. package/dist/internal/floorDivide.d.ts +15 -0
  107. package/dist/internal/floorDivide.js +18 -0
  108. package/dist/internal/foreignEpochs.d.ts +134 -0
  109. package/dist/internal/foreignEpochs.js +139 -0
  110. package/dist/internal/formatCalendarDays.d.ts +28 -0
  111. package/dist/internal/formatCalendarDays.js +49 -0
  112. package/dist/internal/formatDateInCalendar.d.ts +14 -39
  113. package/dist/internal/formatDateInCalendar.js +16 -47
  114. package/dist/internal/formatRelativeDuration.d.ts +27 -0
  115. package/dist/internal/formatRelativeDuration.js +45 -0
  116. package/dist/internal/getLocaleFirstDayOfWeek.d.ts +9 -6
  117. package/dist/internal/getLocaleFirstDayOfWeek.js +9 -10
  118. package/dist/internal/getLocaleWeekYearBounds.d.ts +17 -9
  119. package/dist/internal/getLocaleWeekYearBounds.js +45 -26
  120. package/dist/internal/getLocaleWeekendDays.d.ts +9 -18
  121. package/dist/internal/getLocaleWeekendDays.js +9 -5
  122. package/dist/internal/halfOpenIntervals.d.ts +102 -0
  123. package/dist/internal/halfOpenIntervals.js +180 -0
  124. package/dist/internal/hasCalendarAnnotation.d.ts +20 -20
  125. package/dist/internal/hasCalendarAnnotation.js +23 -21
  126. package/dist/internal/hourDurationString.d.ts +16 -0
  127. package/dist/internal/hourDurationString.js +47 -0
  128. package/dist/internal/httpDateFields.d.ts +24 -0
  129. package/dist/internal/httpDateFields.js +86 -0
  130. package/dist/internal/index.d.ts +28 -9
  131. package/dist/internal/index.js +28 -9
  132. package/dist/internal/instantFormatOptions.d.ts +43 -0
  133. package/dist/internal/instantFormatOptions.js +99 -0
  134. package/dist/internal/instantIntervalText.d.ts +20 -0
  135. package/dist/internal/instantIntervalText.js +25 -0
  136. package/dist/internal/instantNanoseconds.d.ts +25 -0
  137. package/dist/internal/instantNanoseconds.js +41 -0
  138. package/dist/internal/intervalCountHelpers.d.ts +16 -10
  139. package/dist/internal/intervalCountHelpers.js +1 -31
  140. package/dist/internal/intervalNanoseconds.d.ts +47 -0
  141. package/dist/internal/intervalNanoseconds.js +86 -0
  142. package/dist/internal/isObject.d.ts +26 -0
  143. package/dist/internal/isObject.js +30 -0
  144. package/dist/internal/isoStringBody.d.ts +40 -0
  145. package/dist/internal/isoStringBody.js +85 -0
  146. package/dist/internal/joinDateTimeConnector.d.ts +1 -1
  147. package/dist/internal/localeWeekInfo.d.ts +34 -0
  148. package/dist/internal/localeWeekInfo.js +27 -0
  149. package/dist/internal/maxPieces.d.ts +41 -0
  150. package/dist/internal/maxPieces.js +53 -0
  151. package/dist/internal/measureNearRangeEnd.d.ts +26 -0
  152. package/dist/internal/measureNearRangeEnd.js +47 -0
  153. package/dist/internal/monthGridWeekRow.d.ts +4 -1
  154. package/dist/internal/monthGridWeekRow.js +3 -0
  155. package/dist/internal/normalizeTimeZone.d.ts +17 -10
  156. package/dist/internal/normalizeTimeZone.js +25 -15
  157. package/dist/internal/patternToken.d.ts +2 -1
  158. package/dist/internal/patternToken.js +10 -4
  159. package/dist/internal/plainDateAdd.d.ts +20 -0
  160. package/dist/internal/plainDateAdd.js +42 -0
  161. package/dist/internal/plainDateUntil.d.ts +21 -0
  162. package/dist/internal/plainDateUntil.js +48 -0
  163. package/dist/internal/plainFormatOptions.d.ts +59 -0
  164. package/dist/internal/plainFormatOptions.js +165 -0
  165. package/dist/internal/resolveDateTimeUnit.d.ts +4 -1
  166. package/dist/internal/resolveDateTimeUnit.js +2 -12
  167. package/dist/internal/resolveDurationRelativeTo.d.ts +28 -22
  168. package/dist/internal/resolveDurationRelativeTo.js +69 -25
  169. package/dist/internal/resolveDurationUnit.d.ts +4 -1
  170. package/dist/internal/resolveDurationUnit.js +2 -11
  171. package/dist/internal/resolveLocale.d.ts +37 -0
  172. package/dist/internal/resolveLocale.js +59 -0
  173. package/dist/internal/resolveManualRoundingOptions.d.ts +23 -0
  174. package/dist/internal/resolveManualRoundingOptions.js +39 -0
  175. package/dist/internal/resolveMinimalDaysInFirstWeek.d.ts +19 -0
  176. package/dist/internal/resolveMinimalDaysInFirstWeek.js +28 -0
  177. package/dist/internal/resolveOverflow.d.ts +6 -0
  178. package/dist/internal/resolveOverflow.js +7 -1
  179. package/dist/internal/resolveReadingTimeZone.d.ts +11 -0
  180. package/dist/internal/resolveReadingTimeZone.js +18 -0
  181. package/dist/internal/resolveUnixIntervalPair.d.ts +30 -0
  182. package/dist/internal/resolveUnixIntervalPair.js +53 -0
  183. package/dist/internal/resolveWeekStartsOn.d.ts +12 -0
  184. package/dist/internal/resolveWeekStartsOn.js +18 -0
  185. package/dist/internal/rfc5322DateTime.d.ts +26 -0
  186. package/dist/internal/rfc5322DateTime.js +176 -0
  187. package/dist/internal/splitStep.d.ts +81 -0
  188. package/dist/internal/splitStep.js +182 -0
  189. package/dist/internal/startOrEndOfUnix.d.ts +26 -0
  190. package/dist/internal/startOrEndOfUnix.js +47 -0
  191. package/dist/{utc/calculate → internal}/startOrEndOfUtc.d.ts +8 -4
  192. package/dist/{utc/calculate → internal}/startOrEndOfUtc.js +30 -26
  193. package/dist/internal/startOrEndOfZoned.d.ts +22 -0
  194. package/dist/internal/startOrEndOfZoned.js +49 -0
  195. package/dist/internal/temporalCompat/calendarDateArithmetic.d.ts +33 -0
  196. package/dist/internal/temporalCompat/calendarDateArithmetic.js +199 -0
  197. package/dist/internal/temporalCompat/calendarDateFromFields.d.ts +36 -0
  198. package/dist/internal/temporalCompat/calendarDateFromFields.js +120 -0
  199. package/dist/internal/temporalCompat/calendarFields.d.ts +25 -0
  200. package/dist/internal/temporalCompat/calendarFields.js +131 -0
  201. package/dist/internal/temporalCompat/capabilities.d.ts +28 -0
  202. package/dist/internal/temporalCompat/capabilities.js +74 -0
  203. package/dist/internal/temporalCompat/fieldSearch.d.ts +21 -0
  204. package/dist/internal/temporalCompat/fieldSearch.js +83 -0
  205. package/dist/internal/temporalCompat/fixedDay.d.ts +25 -0
  206. package/dist/internal/temporalCompat/fixedDay.js +45 -0
  207. package/dist/internal/temporalCompat/hebrewArithmetic.d.ts +19 -0
  208. package/dist/internal/temporalCompat/hebrewArithmetic.js +150 -0
  209. package/dist/internal/temporalCompat/index.d.ts +4 -0
  210. package/dist/internal/temporalCompat/index.js +5 -0
  211. package/dist/internal/temporalCompat/indianArithmetic.d.ts +16 -0
  212. package/dist/internal/temporalCompat/indianArithmetic.js +87 -0
  213. package/dist/internal/temporalCompat/largeMonthSpan.d.ts +19 -0
  214. package/dist/internal/temporalCompat/largeMonthSpan.js +199 -0
  215. package/dist/internal/temporalCompat/nonIsoArithmetic.d.ts +59 -0
  216. package/dist/internal/temporalCompat/nonIsoArithmetic.js +220 -0
  217. package/dist/internal/temporalCompat/readArithmeticModel.d.ts +3 -0
  218. package/dist/internal/temporalCompat/readArithmeticModel.js +284 -0
  219. package/dist/internal/temporalCompat/repros.d.ts +31 -0
  220. package/dist/internal/temporalCompat/repros.js +556 -0
  221. package/dist/internal/toInstantFromUtc.d.ts +10 -0
  222. package/dist/internal/toInstantFromUtc.js +19 -0
  223. package/dist/internal/unixEpochValue.d.ts +166 -0
  224. package/dist/internal/unixEpochValue.js +245 -0
  225. package/dist/internal/unixFormatReference.d.ts +18 -0
  226. package/dist/internal/unixFormatReference.js +44 -0
  227. package/dist/internal/unixZonedDateTime.d.ts +22 -0
  228. package/dist/internal/unixZonedDateTime.js +32 -0
  229. package/dist/internal/utcOffsetString.d.ts +39 -0
  230. package/dist/internal/utcOffsetString.js +75 -0
  231. package/dist/internal/utcZonedDateTime.d.ts +16 -0
  232. package/dist/internal/utcZonedDateTime.js +28 -0
  233. package/dist/internal/zonedBucket.d.ts +91 -0
  234. package/dist/internal/zonedBucket.js +441 -0
  235. package/dist/internal/zonedFormatReference.d.ts +15 -0
  236. package/dist/internal/zonedFormatReference.js +24 -0
  237. package/dist/internal/zonedLocalDates.d.ts +15 -0
  238. package/dist/internal/zonedLocalDates.js +58 -0
  239. package/dist/internal/zonedNowUnitValue.d.ts +24 -0
  240. package/dist/internal/zonedNowUnitValue.js +58 -0
  241. package/dist/internal/zonedWallClock.d.ts +84 -0
  242. package/dist/internal/zonedWallClock.js +427 -0
  243. package/dist/internal/zonedWallClockDifference.d.ts +92 -0
  244. package/dist/internal/zonedWallClockDifference.js +1173 -0
  245. package/dist/internal/zonedWallClockOperations.d.ts +132 -0
  246. package/dist/internal/zonedWallClockOperations.js +553 -0
  247. package/dist/internal/zonelessCalendarDate.d.ts +12 -0
  248. package/dist/internal/zonelessCalendarDate.js +22 -0
  249. package/dist/interval/calculate/clampInterval.d.ts +22 -0
  250. package/dist/interval/calculate/clampInterval.js +31 -0
  251. package/dist/interval/calculate/index.d.ts +6 -0
  252. package/dist/interval/calculate/index.js +6 -0
  253. package/dist/interval/calculate/intersectIntervals.d.ts +23 -0
  254. package/dist/interval/calculate/intersectIntervals.js +43 -0
  255. package/dist/interval/calculate/mergeIntervals.d.ts +28 -0
  256. package/dist/interval/calculate/mergeIntervals.js +44 -0
  257. package/dist/interval/calculate/splitIntervalAt.d.ts +28 -0
  258. package/dist/interval/calculate/splitIntervalAt.js +63 -0
  259. package/dist/interval/calculate/subtractIntervals.d.ts +31 -0
  260. package/dist/interval/calculate/subtractIntervals.js +64 -0
  261. package/dist/interval/calculate/sumIntervals.d.ts +26 -0
  262. package/dist/interval/calculate/sumIntervals.js +40 -0
  263. package/dist/interval/compare/index.d.ts +2 -0
  264. package/dist/interval/compare/index.js +2 -0
  265. package/dist/interval/compare/intervalContains.d.ts +25 -0
  266. package/dist/interval/compare/intervalContains.js +39 -0
  267. package/dist/interval/compare/intervalsOverlap.d.ts +28 -0
  268. package/dist/interval/compare/intervalsOverlap.js +42 -0
  269. package/dist/interval/index.d.ts +4 -0
  270. package/dist/interval/index.js +5 -0
  271. package/dist/interval/validate/index.d.ts +1 -0
  272. package/dist/interval/validate/index.js +1 -0
  273. package/dist/interval/validate/isValidInterval.d.ts +29 -0
  274. package/dist/interval/validate/isValidInterval.js +38 -0
  275. package/dist/plain/calculate/addBusinessDays.d.ts +26 -9
  276. package/dist/plain/calculate/addBusinessDays.js +29 -21
  277. package/dist/plain/calculate/addDate.d.ts +9 -8
  278. package/dist/plain/calculate/addDate.js +35 -22
  279. package/dist/plain/calculate/addDateTime.js +24 -10
  280. package/dist/plain/calculate/addTime.d.ts +5 -8
  281. package/dist/plain/calculate/addTime.js +23 -16
  282. package/dist/plain/calculate/clampDate.js +3 -3
  283. package/dist/plain/calculate/closestDateTo.d.ts +11 -7
  284. package/dist/plain/calculate/closestDateTo.js +36 -24
  285. package/dist/plain/calculate/cycleDate.d.ts +1 -1
  286. package/dist/plain/calculate/cycleDate.js +10 -3
  287. package/dist/plain/calculate/cycleDateTime.d.ts +1 -1
  288. package/dist/plain/calculate/cycleDateTime.js +10 -3
  289. package/dist/plain/calculate/cycleTime.d.ts +6 -8
  290. package/dist/plain/calculate/cycleTime.js +15 -9
  291. package/dist/plain/calculate/diffDate.d.ts +31 -14
  292. package/dist/plain/calculate/diffDate.js +73 -38
  293. package/dist/plain/calculate/diffDateAsDuration.d.ts +13 -8
  294. package/dist/plain/calculate/diffDateAsDuration.js +22 -9
  295. package/dist/plain/calculate/diffDateTime.d.ts +17 -5
  296. package/dist/plain/calculate/diffDateTime.js +67 -28
  297. package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +2 -2
  298. package/dist/plain/calculate/diffDateTimeAsDuration.js +10 -3
  299. package/dist/plain/calculate/diffTime.d.ts +18 -5
  300. package/dist/plain/calculate/diffTime.js +68 -27
  301. package/dist/plain/calculate/endOfDate.d.ts +10 -2
  302. package/dist/plain/calculate/endOfDate.js +52 -27
  303. package/dist/plain/calculate/endOfDateTime.d.ts +17 -2
  304. package/dist/plain/calculate/endOfDateTime.js +126 -103
  305. package/dist/plain/calculate/endOfTime.d.ts +16 -2
  306. package/dist/plain/calculate/endOfTime.js +77 -59
  307. package/dist/plain/calculate/getLargestDateDurationUnit.d.ts +13 -5
  308. package/dist/plain/calculate/getLargestDateDurationUnit.js +26 -10
  309. package/dist/plain/calculate/getLargestDateTimeDurationUnit.d.ts +13 -6
  310. package/dist/plain/calculate/getLargestDateTimeDurationUnit.js +37 -22
  311. package/dist/plain/calculate/getLargestTimeDurationUnit.d.ts +13 -6
  312. package/dist/plain/calculate/getLargestTimeDurationUnit.js +33 -18
  313. package/dist/plain/calculate/getLocaleDayOfWeek.d.ts +8 -4
  314. package/dist/plain/calculate/getLocaleDayOfWeek.js +8 -3
  315. package/dist/plain/calculate/getLocaleEndOfWeek.d.ts +8 -4
  316. package/dist/plain/calculate/getLocaleEndOfWeek.js +8 -3
  317. package/dist/plain/calculate/getLocaleStartOfWeek.d.ts +8 -4
  318. package/dist/plain/calculate/getLocaleStartOfWeek.js +8 -3
  319. package/dist/plain/calculate/getLocaleWeekYear.d.ts +29 -19
  320. package/dist/plain/calculate/getLocaleWeekYear.js +48 -28
  321. package/dist/plain/calculate/getWeekNumber.d.ts +21 -2
  322. package/dist/plain/calculate/getWeekNumber.js +33 -12
  323. package/dist/plain/calculate/getWeekOfMonth.d.ts +4 -2
  324. package/dist/plain/calculate/getWeekOfMonth.js +8 -3
  325. package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +25 -14
  326. package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +45 -25
  327. package/dist/plain/calculate/getWeeksInMonth.d.ts +4 -2
  328. package/dist/plain/calculate/getWeeksInMonth.js +8 -3
  329. package/dist/plain/calculate/getWeeksInYear.d.ts +5 -4
  330. package/dist/plain/calculate/getWeeksInYear.js +9 -14
  331. package/dist/plain/calculate/maxDate.js +19 -12
  332. package/dist/plain/calculate/maxDateTime.js +19 -12
  333. package/dist/plain/calculate/maxTime.js +19 -12
  334. package/dist/plain/calculate/minDate.js +19 -12
  335. package/dist/plain/calculate/minDateTime.js +19 -12
  336. package/dist/plain/calculate/minTime.js +19 -12
  337. package/dist/plain/calculate/nextWeekday.js +5 -0
  338. package/dist/plain/calculate/previousWeekday.js +5 -0
  339. package/dist/plain/calculate/roundDate.d.ts +23 -5
  340. package/dist/plain/calculate/roundDate.js +88 -46
  341. package/dist/plain/calculate/roundDateTime.d.ts +27 -3
  342. package/dist/plain/calculate/roundDateTime.js +128 -69
  343. package/dist/plain/calculate/roundTime.d.ts +8 -1
  344. package/dist/plain/calculate/roundTime.js +32 -17
  345. package/dist/plain/calculate/setDate.js +4 -0
  346. package/dist/plain/calculate/setDateTime.js +4 -0
  347. package/dist/plain/calculate/setTime.d.ts +1 -1
  348. package/dist/plain/calculate/setTime.js +5 -1
  349. package/dist/plain/calculate/sortDateTimes.js +17 -10
  350. package/dist/plain/calculate/sortDates.js +17 -10
  351. package/dist/plain/calculate/sortTimes.js +17 -10
  352. package/dist/plain/calculate/startOfDate.d.ts +7 -2
  353. package/dist/plain/calculate/startOfDate.js +52 -27
  354. package/dist/plain/calculate/startOfDateTime.d.ts +5 -2
  355. package/dist/plain/calculate/startOfDateTime.js +81 -62
  356. package/dist/plain/calculate/startOfQuarterForDateTime.d.ts +2 -0
  357. package/dist/plain/calculate/startOfQuarterForDateTime.js +12 -1
  358. package/dist/plain/calculate/startOfTime.d.ts +15 -2
  359. package/dist/plain/calculate/startOfTime.js +33 -37
  360. package/dist/plain/calculate/subtractBusinessDays.d.ts +25 -10
  361. package/dist/plain/calculate/subtractBusinessDays.js +28 -22
  362. package/dist/plain/calculate/subtractDate.d.ts +8 -7
  363. package/dist/plain/calculate/subtractDate.js +35 -21
  364. package/dist/plain/calculate/subtractDateTime.js +24 -10
  365. package/dist/plain/calculate/subtractTime.d.ts +5 -8
  366. package/dist/plain/calculate/subtractTime.js +23 -16
  367. package/dist/plain/chop/index.d.ts +0 -1
  368. package/dist/plain/chop/index.js +0 -1
  369. package/dist/plain/compare/areDateTimesEqualBy.d.ts +10 -5
  370. package/dist/plain/compare/areDateTimesEqualBy.js +35 -10
  371. package/dist/plain/compare/areDatesEqualBy.d.ts +10 -3
  372. package/dist/plain/compare/areDatesEqualBy.js +41 -14
  373. package/dist/plain/compare/isBetweenDate.js +32 -16
  374. package/dist/plain/compare/isBetweenDateTime.js +34 -18
  375. package/dist/plain/compare/isBetweenTime.js +32 -16
  376. package/dist/plain/compare/isBusinessDay.d.ts +25 -11
  377. package/dist/plain/compare/isBusinessDay.js +36 -15
  378. package/dist/plain/compare/isThisUnit.d.ts +13 -4
  379. package/dist/plain/compare/isThisUnit.js +33 -13
  380. package/dist/plain/compare/isWeekend.d.ts +8 -4
  381. package/dist/plain/compare/isWeekend.js +7 -3
  382. package/dist/plain/convert/convertDateToCalendar.d.ts +34 -33
  383. package/dist/plain/convert/convertDateToCalendar.js +41 -40
  384. package/dist/plain/format/formatCalendar.d.ts +12 -6
  385. package/dist/plain/format/formatCalendar.js +47 -25
  386. package/dist/plain/format/formatDate.d.ts +21 -4
  387. package/dist/plain/format/formatDate.js +37 -5
  388. package/dist/plain/format/formatDateRange.d.ts +17 -4
  389. package/dist/plain/format/formatDateRange.js +29 -5
  390. package/dist/plain/format/formatDateTime.d.ts +22 -4
  391. package/dist/plain/format/formatDateTime.js +31 -5
  392. package/dist/plain/format/formatDateTimeRange.d.ts +20 -4
  393. package/dist/plain/format/formatDateTimeRange.js +29 -5
  394. package/dist/plain/format/formatDateTimeToParts.d.ts +32 -6
  395. package/dist/plain/format/formatDateTimeToParts.js +40 -14
  396. package/dist/plain/format/formatDateToParts.d.ts +24 -3
  397. package/dist/plain/format/formatDateToParts.js +36 -11
  398. package/dist/plain/format/formatRelativeDate.d.ts +7 -3
  399. package/dist/plain/format/formatRelativeDate.js +39 -24
  400. package/dist/plain/format/formatRelativeDateTime.d.ts +15 -6
  401. package/dist/plain/format/formatRelativeDateTime.js +35 -33
  402. package/dist/plain/format/formatRelativeTime.d.ts +8 -4
  403. package/dist/plain/format/formatRelativeTime.js +36 -21
  404. package/dist/plain/format/formatSql.d.ts +15 -10
  405. package/dist/plain/format/formatSql.js +20 -11
  406. package/dist/plain/format/formatTime.d.ts +18 -4
  407. package/dist/plain/format/formatTime.js +32 -5
  408. package/dist/plain/get/getNowUnit.d.ts +3 -0
  409. package/dist/plain/get/getNowUnit.js +14 -29
  410. package/dist/plain/index.js +1 -1
  411. package/dist/plain/interval/intervalAbutsDate.d.ts +12 -7
  412. package/dist/plain/interval/intervalAbutsDate.js +15 -19
  413. package/dist/plain/interval/intervalAbutsDateTime.d.ts +9 -7
  414. package/dist/plain/interval/intervalAbutsDateTime.js +17 -23
  415. package/dist/plain/interval/intervalAbutsTime.d.ts +11 -5
  416. package/dist/plain/interval/intervalAbutsTime.js +19 -21
  417. package/dist/plain/interval/intervalContainsDate.d.ts +17 -10
  418. package/dist/plain/interval/intervalContainsDate.js +20 -15
  419. package/dist/plain/interval/intervalContainsDateTime.d.ts +16 -11
  420. package/dist/plain/interval/intervalContainsDateTime.js +24 -20
  421. package/dist/plain/interval/intervalContainsTime.d.ts +20 -10
  422. package/dist/plain/interval/intervalContainsTime.js +28 -19
  423. package/dist/plain/interval/intervalCountDate.d.ts +13 -8
  424. package/dist/plain/interval/intervalCountDate.js +46 -14
  425. package/dist/plain/interval/intervalCountDateTime.d.ts +6 -4
  426. package/dist/plain/interval/intervalCountDateTime.js +63 -18
  427. package/dist/plain/interval/intervalCountTime.d.ts +3 -4
  428. package/dist/plain/interval/intervalCountTime.js +9 -9
  429. package/dist/plain/interval/intervalDifferenceDate.d.ts +13 -6
  430. package/dist/plain/interval/intervalDifferenceDate.js +19 -32
  431. package/dist/plain/interval/intervalDifferenceDateTime.d.ts +10 -4
  432. package/dist/plain/interval/intervalDifferenceDateTime.js +21 -27
  433. package/dist/plain/interval/intervalDifferenceTime.d.ts +11 -4
  434. package/dist/plain/interval/intervalDifferenceTime.js +22 -27
  435. package/dist/plain/interval/intervalDivideEquallyDate.d.ts +16 -4
  436. package/dist/plain/interval/intervalDivideEquallyDate.js +57 -33
  437. package/dist/plain/interval/intervalDivideEquallyDateTime.d.ts +16 -4
  438. package/dist/plain/interval/intervalDivideEquallyDateTime.js +67 -31
  439. package/dist/plain/interval/intervalDivideEquallyTime.d.ts +16 -4
  440. package/dist/plain/interval/intervalDivideEquallyTime.js +58 -31
  441. package/dist/plain/interval/intervalEngulfsDate.d.ts +16 -9
  442. package/dist/plain/interval/intervalEngulfsDate.js +19 -12
  443. package/dist/plain/interval/intervalEngulfsDateTime.d.ts +16 -11
  444. package/dist/plain/interval/intervalEngulfsDateTime.js +24 -18
  445. package/dist/plain/interval/intervalEngulfsTime.d.ts +18 -8
  446. package/dist/plain/interval/intervalEngulfsTime.js +26 -15
  447. package/dist/plain/interval/intervalFromDurationDate.d.ts +5 -4
  448. package/dist/plain/interval/intervalFromDurationDate.js +11 -8
  449. package/dist/plain/interval/intervalFromDurationDateTime.js +4 -0
  450. package/dist/plain/interval/intervalFromDurationTime.d.ts +10 -12
  451. package/dist/plain/interval/intervalFromDurationTime.js +28 -17
  452. package/dist/plain/interval/intervalIntersectionDate.d.ts +9 -4
  453. package/dist/plain/interval/intervalIntersectionDate.js +14 -9
  454. package/dist/plain/interval/intervalIntersectionDateTime.d.ts +9 -4
  455. package/dist/plain/interval/intervalIntersectionDateTime.js +19 -13
  456. package/dist/plain/interval/intervalIntersectionTime.d.ts +7 -3
  457. package/dist/plain/interval/intervalIntersectionTime.js +17 -12
  458. package/dist/plain/interval/intervalLengthDate.d.ts +9 -6
  459. package/dist/plain/interval/intervalLengthDate.js +40 -8
  460. package/dist/plain/interval/intervalLengthDateTime.js +2 -2
  461. package/dist/plain/interval/intervalOverlappingDaysDate.d.ts +16 -17
  462. package/dist/plain/interval/intervalOverlappingDaysDate.js +30 -30
  463. package/dist/plain/interval/intervalOverlappingDaysDateTime.d.ts +7 -12
  464. package/dist/plain/interval/intervalOverlappingDaysDateTime.js +24 -24
  465. package/dist/plain/interval/intervalSplitAtDate.d.ts +10 -5
  466. package/dist/plain/interval/intervalSplitAtDate.js +48 -36
  467. package/dist/plain/interval/intervalSplitAtDateTime.d.ts +9 -4
  468. package/dist/plain/interval/intervalSplitAtDateTime.js +44 -32
  469. package/dist/plain/interval/intervalSplitAtTime.d.ts +9 -4
  470. package/dist/plain/interval/intervalSplitAtTime.js +44 -32
  471. package/dist/plain/interval/intervalUnionDate.d.ts +14 -6
  472. package/dist/plain/interval/intervalUnionDate.js +19 -11
  473. package/dist/plain/interval/intervalUnionDateTime.d.ts +12 -5
  474. package/dist/plain/interval/intervalUnionDateTime.js +22 -14
  475. package/dist/plain/interval/intervalUnionTime.d.ts +10 -3
  476. package/dist/plain/interval/intervalUnionTime.js +20 -12
  477. package/dist/plain/interval/intervalXorAllDate.d.ts +11 -10
  478. package/dist/plain/interval/intervalXorAllDate.js +37 -59
  479. package/dist/plain/interval/intervalXorAllDateTime.d.ts +7 -5
  480. package/dist/plain/interval/intervalXorAllDateTime.js +28 -48
  481. package/dist/plain/interval/intervalXorAllTime.d.ts +8 -4
  482. package/dist/plain/interval/intervalXorAllTime.js +29 -47
  483. package/dist/plain/interval/intervalXorDate.d.ts +10 -9
  484. package/dist/plain/interval/intervalXorDate.js +19 -54
  485. package/dist/plain/interval/intervalXorDateTime.d.ts +9 -7
  486. package/dist/plain/interval/intervalXorDateTime.js +23 -50
  487. package/dist/plain/interval/intervalXorTime.d.ts +8 -7
  488. package/dist/plain/interval/intervalXorTime.js +22 -50
  489. package/dist/plain/interval/intervalsOverlapDate.d.ts +14 -7
  490. package/dist/plain/interval/intervalsOverlapDate.js +17 -10
  491. package/dist/plain/interval/intervalsOverlapDateTime.d.ts +12 -7
  492. package/dist/plain/interval/intervalsOverlapDateTime.js +20 -14
  493. package/dist/plain/interval/intervalsOverlapTime.d.ts +10 -5
  494. package/dist/plain/interval/intervalsOverlapTime.js +18 -12
  495. package/dist/plain/interval/mergeIntervalsDate.d.ts +9 -5
  496. package/dist/plain/interval/mergeIntervalsDate.js +37 -38
  497. package/dist/plain/interval/mergeIntervalsDateTime.d.ts +7 -3
  498. package/dist/plain/interval/mergeIntervalsDateTime.js +31 -32
  499. package/dist/plain/interval/mergeIntervalsTime.d.ts +7 -3
  500. package/dist/plain/interval/mergeIntervalsTime.js +31 -31
  501. package/dist/plain/interval/splitIntervalByUnitDate.d.ts +26 -6
  502. package/dist/plain/interval/splitIntervalByUnitDate.js +76 -43
  503. package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +22 -2
  504. package/dist/plain/interval/splitIntervalByUnitDateTime.js +65 -39
  505. package/dist/plain/interval/splitIntervalByUnitTime.d.ts +18 -2
  506. package/dist/plain/interval/splitIntervalByUnitTime.js +76 -39
  507. package/dist/plain/interval/validate/isValidDateInterval.d.ts +4 -2
  508. package/dist/plain/interval/validate/isValidDateInterval.js +4 -2
  509. package/dist/plain/interval/validate/isValidDateTimeInterval.d.ts +5 -0
  510. package/dist/plain/interval/validate/isValidDateTimeInterval.js +7 -2
  511. package/dist/plain/interval/validate/isValidTimeInterval.d.ts +5 -0
  512. package/dist/plain/interval/validate/isValidTimeInterval.js +8 -18
  513. package/dist/plain/locale/getLocaleEraNames.d.ts +14 -4
  514. package/dist/plain/locale/getLocaleEraNames.js +56 -41
  515. package/dist/plain/locale/getLocaleMeridiems.d.ts +7 -4
  516. package/dist/plain/locale/getLocaleMeridiems.js +28 -22
  517. package/dist/plain/locale/getLocaleMonthNames.d.ts +14 -4
  518. package/dist/plain/locale/getLocaleMonthNames.js +34 -19
  519. package/dist/plain/locale/getLocaleWeekdayNames.d.ts +14 -7
  520. package/dist/plain/locale/getLocaleWeekdayNames.js +40 -22
  521. package/dist/plain/map/mapDatesInRange.d.ts +18 -1
  522. package/dist/plain/map/mapDatesInRange.js +53 -17
  523. package/dist/plain/parse/parseDateTimeWithPattern.d.ts +3 -2
  524. package/dist/plain/parse/parseDateTimeWithPattern.js +30 -24
  525. package/dist/plain/parse/parseDateWithPattern.d.ts +3 -2
  526. package/dist/plain/parse/parseDateWithPattern.js +22 -16
  527. package/dist/plain/parse/parseMicrosecondFromDateTime.d.ts +2 -1
  528. package/dist/plain/parse/parseMicrosecondFromDateTime.js +2 -1
  529. package/dist/plain/parse/parseMicrosecondFromTime.d.ts +2 -1
  530. package/dist/plain/parse/parseMicrosecondFromTime.js +2 -1
  531. package/dist/plain/parse/parseNanosecondFromDateTime.d.ts +2 -1
  532. package/dist/plain/parse/parseNanosecondFromDateTime.js +2 -1
  533. package/dist/plain/parse/parseNanosecondFromTime.d.ts +2 -1
  534. package/dist/plain/parse/parseNanosecondFromTime.js +2 -1
  535. package/dist/plain/parse/parseSql.d.ts +15 -12
  536. package/dist/plain/parse/parseSql.js +16 -13
  537. package/dist/plain/parse/parseTimeWithPattern.d.ts +3 -2
  538. package/dist/plain/parse/parseTimeWithPattern.js +27 -21
  539. package/dist/plain/parse/parseUnitFromDate.d.ts +9 -2
  540. package/dist/plain/parse/parseUnitFromDate.js +39 -19
  541. package/dist/plain/parse/parseUnitFromDateTime.d.ts +11 -3
  542. package/dist/plain/parse/parseUnitFromDateTime.js +54 -28
  543. package/dist/plain/parse/parseUnitFromTime.d.ts +9 -3
  544. package/dist/plain/parse/parseUnitFromTime.js +13 -3
  545. package/dist/plain/parse/parseWeekFromDate.d.ts +5 -0
  546. package/dist/plain/parse/parseWeekFromDate.js +24 -5
  547. package/dist/plain/parse/parseWeekFromDateTime.d.ts +5 -0
  548. package/dist/plain/parse/parseWeekFromDateTime.js +26 -5
  549. package/dist/plain/validate/isLeapSecond.d.ts +27 -9
  550. package/dist/plain/validate/isLeapSecond.js +30 -9
  551. package/dist/plain/validate/isLeapYear.d.ts +7 -1
  552. package/dist/plain/validate/isLeapYear.js +10 -1
  553. package/dist/plain/validate/isValidCalendarDate.d.ts +37 -6
  554. package/dist/plain/validate/isValidCalendarDate.js +37 -6
  555. package/dist/plain/validate/isValidDate.d.ts +9 -1
  556. package/dist/plain/validate/isValidDate.js +14 -5
  557. package/dist/plain/validate/isValidDateRange.d.ts +11 -4
  558. package/dist/plain/validate/isValidDateRange.js +32 -22
  559. package/dist/plain/validate/isValidDateTime.d.ts +7 -1
  560. package/dist/plain/validate/isValidDateTime.js +12 -5
  561. package/dist/plain/validate/isValidDateTimeRange.d.ts +3 -2
  562. package/dist/plain/validate/isValidDateTimeRange.js +30 -15
  563. package/dist/plain/validate/isValidIsoDateLike.d.ts +6 -1
  564. package/dist/plain/validate/isValidIsoDateLike.js +13 -8
  565. package/dist/plain/validate/isValidTime.d.ts +6 -1
  566. package/dist/plain/validate/isValidTime.js +10 -3
  567. package/dist/plain/validate/isValidTimeRange.d.ts +4 -2
  568. package/dist/plain/validate/isValidTimeRange.js +31 -27
  569. package/dist/precision/calculate/index.d.ts +1 -0
  570. package/dist/precision/calculate/index.js +1 -0
  571. package/dist/precision/calculate/truncateNanoseconds.d.ts +37 -0
  572. package/dist/precision/calculate/truncateNanoseconds.js +41 -0
  573. package/dist/precision/convert/fromDotNetTicks.d.ts +30 -0
  574. package/dist/precision/convert/fromDotNetTicks.js +39 -0
  575. package/dist/precision/convert/fromExcelSerial.d.ts +38 -0
  576. package/dist/precision/convert/fromExcelSerial.js +81 -0
  577. package/dist/precision/convert/fromFileTime.d.ts +30 -0
  578. package/dist/precision/convert/fromFileTime.js +39 -0
  579. package/dist/precision/convert/fromNanoseconds.d.ts +29 -0
  580. package/dist/precision/convert/fromNanoseconds.js +50 -0
  581. package/dist/precision/convert/fromNtpTimestamp.d.ts +43 -0
  582. package/dist/precision/convert/fromNtpTimestamp.js +57 -0
  583. package/dist/precision/convert/fromPgMicroseconds.d.ts +26 -0
  584. package/dist/precision/convert/fromPgMicroseconds.js +33 -0
  585. package/dist/precision/convert/index.d.ts +12 -0
  586. package/dist/precision/convert/index.js +12 -0
  587. package/dist/precision/convert/toDotNetTicks.d.ts +29 -0
  588. package/dist/precision/convert/toDotNetTicks.js +40 -0
  589. package/dist/precision/convert/toExcelSerial.d.ts +56 -0
  590. package/dist/precision/convert/toExcelSerial.js +85 -0
  591. package/dist/precision/convert/toFileTime.d.ts +31 -0
  592. package/dist/precision/convert/toFileTime.js +43 -0
  593. package/dist/precision/convert/toNanoseconds.d.ts +37 -0
  594. package/dist/precision/convert/toNanoseconds.js +40 -0
  595. package/dist/precision/convert/toNtpTimestamp.d.ts +30 -0
  596. package/dist/precision/convert/toNtpTimestamp.js +38 -0
  597. package/dist/precision/convert/toPgMicroseconds.d.ts +29 -0
  598. package/dist/precision/convert/toPgMicroseconds.js +42 -0
  599. package/dist/precision/format/formatNanoseconds.d.ts +26 -0
  600. package/dist/precision/format/formatNanoseconds.js +32 -0
  601. package/dist/precision/format/index.d.ts +1 -0
  602. package/dist/precision/format/index.js +1 -0
  603. package/dist/precision/index.d.ts +6 -0
  604. package/dist/precision/index.js +7 -0
  605. package/dist/precision/parse/index.d.ts +1 -0
  606. package/dist/precision/parse/index.js +1 -0
  607. package/dist/precision/parse/parseNanoseconds.d.ts +27 -0
  608. package/dist/precision/parse/parseNanoseconds.js +32 -0
  609. package/dist/precision/validate/index.d.ts +3 -0
  610. package/dist/precision/validate/index.js +3 -0
  611. package/dist/precision/validate/isValidInstant.d.ts +37 -0
  612. package/dist/precision/validate/isValidInstant.js +40 -0
  613. package/dist/precision/validate/isValidNanoPattern.d.ts +27 -0
  614. package/dist/precision/validate/isValidNanoPattern.js +40 -0
  615. package/dist/precision/validate/isValidNanoseconds.d.ts +25 -0
  616. package/dist/precision/validate/isValidNanoseconds.js +28 -0
  617. package/dist/regex/calendar-date.d.ts +25 -14
  618. package/dist/regex/calendar-date.js +26 -15
  619. package/dist/regex/calendar-zoned-date-time.d.ts +22 -38
  620. package/dist/regex/calendar-zoned-date-time.js +23 -39
  621. package/dist/regex/date-time.d.ts +14 -4
  622. package/dist/regex/date-time.js +15 -5
  623. package/dist/regex/date.d.ts +45 -3
  624. package/dist/regex/date.js +47 -5
  625. package/dist/regex/http-date.d.ts +10 -6
  626. package/dist/regex/http-date.js +10 -6
  627. package/dist/regex/index.d.ts +3 -0
  628. package/dist/regex/index.js +4 -0
  629. package/dist/regex/leap-second.d.ts +41 -8
  630. package/dist/regex/leap-second.js +42 -9
  631. package/dist/regex/nanoseconds.d.ts +20 -0
  632. package/dist/regex/nanoseconds.js +20 -0
  633. package/dist/regex/rfc-2822.d.ts +15 -7
  634. package/dist/regex/rfc-2822.js +15 -7
  635. package/dist/regex/rfc-3339.d.ts +8 -1
  636. package/dist/regex/rfc-3339.js +9 -2
  637. package/dist/regex/sql-date-time.d.ts +27 -8
  638. package/dist/regex/sql-date-time.js +28 -9
  639. package/dist/regex/time-zone-like.d.ts +24 -15
  640. package/dist/regex/time-zone-like.js +25 -16
  641. package/dist/regex/time.d.ts +20 -6
  642. package/dist/regex/time.js +20 -6
  643. package/dist/regex/unix.d.ts +13 -5
  644. package/dist/regex/unix.js +13 -5
  645. package/dist/regex/utc-date-time.d.ts +19 -9
  646. package/dist/regex/utc-date-time.js +20 -10
  647. package/dist/regex/utc-offset.d.ts +24 -0
  648. package/dist/regex/utc-offset.js +24 -0
  649. package/dist/span/calculate/index.d.ts +3 -0
  650. package/dist/span/calculate/index.js +3 -0
  651. package/dist/span/calculate/spanMs.d.ts +52 -0
  652. package/dist/span/calculate/spanMs.js +80 -0
  653. package/dist/span/calculate/spanNs.d.ts +43 -0
  654. package/dist/span/calculate/spanNs.js +51 -0
  655. package/dist/span/calculate/spanWallClock.d.ts +60 -0
  656. package/dist/span/calculate/spanWallClock.js +80 -0
  657. package/dist/span/index.d.ts +3 -0
  658. package/dist/span/index.js +4 -0
  659. package/dist/span/validate/index.d.ts +1 -0
  660. package/dist/span/validate/index.js +1 -0
  661. package/dist/span/validate/isValidSpan.d.ts +37 -0
  662. package/dist/span/validate/isValidSpan.js +41 -0
  663. package/dist/types/business-calendar.d.ts +27 -0
  664. package/dist/types/business-calendar.js +0 -0
  665. package/dist/types/calendar-system.d.ts +9 -1
  666. package/dist/types/fiscal-calendar.d.ts +22 -0
  667. package/dist/types/fiscal-calendar.js +0 -0
  668. package/dist/types/index.d.ts +6 -0
  669. package/dist/types/index.js +5 -0
  670. package/dist/types/interval.d.ts +18 -0
  671. package/dist/types/interval.js +0 -0
  672. package/dist/types/now-unit.d.ts +1 -1
  673. package/dist/types/roll-convention.d.ts +32 -0
  674. package/dist/types/roll-convention.js +0 -0
  675. package/dist/types/utc-now-unit.d.ts +1 -1
  676. package/dist/types/zone-bucket-unit.d.ts +11 -0
  677. package/dist/types/zone-bucket-unit.js +0 -0
  678. package/dist/unix/calculate/addUnix.d.ts +10 -4
  679. package/dist/unix/calculate/addUnix.js +39 -26
  680. package/dist/unix/calculate/diffUnix.d.ts +38 -11
  681. package/dist/unix/calculate/diffUnix.js +84 -40
  682. package/dist/unix/calculate/diffUnixAsDuration.d.ts +17 -7
  683. package/dist/unix/calculate/diffUnixAsDuration.js +42 -23
  684. package/dist/unix/calculate/endOfQuarterForUnix.d.ts +15 -11
  685. package/dist/unix/calculate/endOfQuarterForUnix.js +20 -39
  686. package/dist/unix/calculate/endOfUnix.d.ts +23 -18
  687. package/dist/unix/calculate/endOfUnix.js +37 -15
  688. package/dist/unix/calculate/isBetweenUnix.d.ts +12 -6
  689. package/dist/unix/calculate/isBetweenUnix.js +34 -23
  690. package/dist/unix/calculate/maxUnix.d.ts +6 -3
  691. package/dist/unix/calculate/maxUnix.js +17 -8
  692. package/dist/unix/calculate/minUnix.d.ts +6 -3
  693. package/dist/unix/calculate/minUnix.js +17 -8
  694. package/dist/unix/calculate/roundUnix.d.ts +24 -10
  695. package/dist/unix/calculate/roundUnix.js +67 -42
  696. package/dist/unix/calculate/setUnix.d.ts +14 -5
  697. package/dist/unix/calculate/setUnix.js +48 -29
  698. package/dist/unix/calculate/sortUnix.d.ts +6 -3
  699. package/dist/unix/calculate/sortUnix.js +19 -11
  700. package/dist/unix/calculate/startOfQuarterForUnix.d.ts +17 -12
  701. package/dist/unix/calculate/startOfQuarterForUnix.js +22 -30
  702. package/dist/unix/calculate/startOfUnix.d.ts +23 -18
  703. package/dist/unix/calculate/startOfUnix.js +37 -15
  704. package/dist/unix/calculate/subtractUnix.d.ts +10 -4
  705. package/dist/unix/calculate/subtractUnix.js +39 -26
  706. package/dist/unix/compare/areUnixEqual.d.ts +9 -5
  707. package/dist/unix/compare/areUnixEqual.js +17 -13
  708. package/dist/unix/compare/areUnixEqualBy.d.ts +14 -7
  709. package/dist/unix/compare/areUnixEqualBy.js +14 -7
  710. package/dist/unix/compare/isAfterUnix.d.ts +8 -4
  711. package/dist/unix/compare/isAfterUnix.js +16 -12
  712. package/dist/unix/compare/isBeforeUnix.d.ts +7 -4
  713. package/dist/unix/compare/isBeforeUnix.js +15 -12
  714. package/dist/unix/convert/convertUnixToPlainDate.d.ts +17 -9
  715. package/dist/unix/convert/convertUnixToPlainDate.js +34 -21
  716. package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +15 -9
  717. package/dist/unix/convert/convertUnixToPlainDateTime.js +32 -21
  718. package/dist/unix/convert/convertUnixToPlainTime.d.ts +15 -9
  719. package/dist/unix/convert/convertUnixToPlainTime.js +32 -21
  720. package/dist/unix/convert/convertUnixToUtc.d.ts +15 -7
  721. package/dist/unix/convert/convertUnixToUtc.js +20 -15
  722. package/dist/unix/convert/convertUnixToZoned.d.ts +17 -10
  723. package/dist/unix/convert/convertUnixToZoned.js +31 -20
  724. package/dist/unix/format/formatCalendarUnix.d.ts +22 -19
  725. package/dist/unix/format/formatCalendarUnix.js +35 -81
  726. package/dist/unix/format/formatRelativeUnix.d.ts +25 -8
  727. package/dist/unix/format/formatRelativeUnix.js +46 -93
  728. package/dist/unix/format/formatUnix.d.ts +26 -4
  729. package/dist/unix/format/formatUnix.js +48 -34
  730. package/dist/unix/get/getUnixNow.d.ts +13 -7
  731. package/dist/unix/get/getUnixNow.js +27 -17
  732. package/dist/unix/get/getUnixNowUnit.d.ts +5 -2
  733. package/dist/unix/get/getUnixNowUnit.js +9 -35
  734. package/dist/unix/index.d.ts +1 -0
  735. package/dist/unix/index.js +2 -0
  736. package/dist/unix/interval/intervalAbutsUnix.d.ts +17 -12
  737. package/dist/unix/interval/intervalAbutsUnix.js +23 -41
  738. package/dist/unix/interval/intervalContainsUnix.d.ts +17 -7
  739. package/dist/unix/interval/intervalContainsUnix.js +25 -37
  740. package/dist/unix/interval/intervalCountUnix.d.ts +30 -13
  741. package/dist/unix/interval/intervalCountUnix.js +49 -23
  742. package/dist/unix/interval/intervalDifferenceUnix.d.ts +19 -10
  743. package/dist/unix/interval/intervalDifferenceUnix.js +25 -43
  744. package/dist/unix/interval/intervalDivideEquallyUnix.d.ts +24 -10
  745. package/dist/unix/interval/intervalDivideEquallyUnix.js +57 -36
  746. package/dist/unix/interval/intervalEngulfsUnix.d.ts +13 -7
  747. package/dist/unix/interval/intervalEngulfsUnix.js +18 -30
  748. package/dist/unix/interval/intervalFromDurationUnix.d.ts +10 -6
  749. package/dist/unix/interval/intervalFromDurationUnix.js +51 -39
  750. package/dist/unix/interval/intervalIntersectionUnix.d.ts +18 -11
  751. package/dist/unix/interval/intervalIntersectionUnix.js +25 -46
  752. package/dist/unix/interval/intervalLengthUnix.d.ts +21 -9
  753. package/dist/unix/interval/intervalLengthUnix.js +41 -18
  754. package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +26 -12
  755. package/dist/unix/interval/intervalOverlappingDaysUnix.js +67 -63
  756. package/dist/unix/interval/intervalSplitAtUnix.d.ts +11 -6
  757. package/dist/unix/interval/intervalSplitAtUnix.js +41 -34
  758. package/dist/unix/interval/intervalUnionUnix.d.ts +15 -9
  759. package/dist/unix/interval/intervalUnionUnix.js +20 -42
  760. package/dist/unix/interval/intervalXorAllUnix.d.ts +8 -6
  761. package/dist/unix/interval/intervalXorAllUnix.js +21 -56
  762. package/dist/unix/interval/intervalXorUnix.d.ts +22 -11
  763. package/dist/unix/interval/intervalXorUnix.js +28 -56
  764. package/dist/unix/interval/intervalsOverlapUnix.d.ts +16 -10
  765. package/dist/unix/interval/intervalsOverlapUnix.js +21 -37
  766. package/dist/unix/interval/mergeIntervalsUnix.d.ts +10 -4
  767. package/dist/unix/interval/mergeIntervalsUnix.js +25 -36
  768. package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +38 -8
  769. package/dist/unix/interval/splitIntervalByUnitUnix.js +72 -56
  770. package/dist/unix/interval/validate/isValidUnixInterval.d.ts +12 -6
  771. package/dist/unix/interval/validate/isValidUnixInterval.js +17 -16
  772. package/dist/unix/parse/index.d.ts +2 -0
  773. package/dist/unix/parse/index.js +2 -0
  774. package/dist/unix/parse/parseDateFromUnix.d.ts +10 -8
  775. package/dist/unix/parse/parseDateFromUnix.js +17 -29
  776. package/dist/unix/parse/parseDayFromUnix.d.ts +6 -4
  777. package/dist/unix/parse/parseDayFromUnix.js +18 -5
  778. package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +8 -5
  779. package/dist/unix/parse/parseDayOfWeekFromUnix.js +15 -28
  780. package/dist/unix/parse/parseHourFromUnix.d.ts +6 -4
  781. package/dist/unix/parse/parseHourFromUnix.js +18 -5
  782. package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +4 -2
  783. package/dist/unix/parse/parseMicrosecondFromUnix.js +16 -3
  784. package/dist/unix/parse/parseMillisecondFromUnix.d.ts +4 -2
  785. package/dist/unix/parse/parseMillisecondFromUnix.js +16 -3
  786. package/dist/unix/parse/parseMinuteFromUnix.d.ts +6 -4
  787. package/dist/unix/parse/parseMinuteFromUnix.js +18 -5
  788. package/dist/unix/parse/parseMonthFromUnix.d.ts +6 -4
  789. package/dist/unix/parse/parseMonthFromUnix.js +18 -5
  790. package/dist/unix/parse/parseNanosecondFromUnix.d.ts +8 -5
  791. package/dist/unix/parse/parseNanosecondFromUnix.js +20 -6
  792. package/dist/unix/parse/parseSecondFromUnix.d.ts +5 -3
  793. package/dist/unix/parse/parseSecondFromUnix.js +17 -4
  794. package/dist/unix/parse/parseTimeFromUnix.d.ts +10 -8
  795. package/dist/unix/parse/parseTimeFromUnix.js +17 -29
  796. package/dist/unix/parse/parseUnitFromUnix.d.ts +18 -11
  797. package/dist/unix/parse/parseUnitFromUnix.js +57 -55
  798. package/dist/unix/parse/parseWeekFromUnix.d.ts +15 -7
  799. package/dist/unix/parse/parseWeekFromUnix.js +32 -30
  800. package/dist/unix/parse/parseYearFromUnix.d.ts +5 -3
  801. package/dist/unix/parse/parseYearFromUnix.js +17 -4
  802. package/dist/unix/validate/isValidUnixMilliseconds.d.ts +8 -5
  803. package/dist/unix/validate/isValidUnixMilliseconds.js +10 -9
  804. package/dist/unix/validate/isValidUnixRange.d.ts +13 -7
  805. package/dist/unix/validate/isValidUnixRange.js +29 -19
  806. package/dist/unix/validate/isValidUnixSeconds.d.ts +8 -5
  807. package/dist/unix/validate/isValidUnixSeconds.js +10 -9
  808. package/dist/unix/validate/isValidUnixUnit.d.ts +9 -7
  809. package/dist/unix/validate/isValidUnixUnit.js +6 -8
  810. package/dist/utc/calculate/addUtc.js +26 -12
  811. package/dist/utc/calculate/diffUtc.d.ts +22 -7
  812. package/dist/utc/calculate/diffUtc.js +75 -31
  813. package/dist/utc/calculate/diffUtcAsDuration.d.ts +2 -2
  814. package/dist/utc/calculate/diffUtcAsDuration.js +10 -3
  815. package/dist/utc/calculate/endOfQuarterForUtc.d.ts +1 -1
  816. package/dist/utc/calculate/endOfQuarterForUtc.js +1 -1
  817. package/dist/utc/calculate/endOfUtc.d.ts +11 -4
  818. package/dist/utc/calculate/endOfUtc.js +22 -5
  819. package/dist/utc/calculate/isBetweenUtc.js +40 -24
  820. package/dist/utc/calculate/maxUtc.js +19 -12
  821. package/dist/utc/calculate/minUtc.js +19 -12
  822. package/dist/utc/calculate/roundUtc.d.ts +16 -2
  823. package/dist/utc/calculate/roundUtc.js +42 -31
  824. package/dist/utc/calculate/setUtc.d.ts +4 -8
  825. package/dist/utc/calculate/setUtc.js +25 -18
  826. package/dist/utc/calculate/sortUtc.js +17 -10
  827. package/dist/utc/calculate/startOfQuarterForUtc.d.ts +2 -0
  828. package/dist/utc/calculate/startOfQuarterForUtc.js +12 -1
  829. package/dist/utc/calculate/startOfUtc.d.ts +6 -4
  830. package/dist/utc/calculate/startOfUtc.js +17 -5
  831. package/dist/utc/calculate/subtractUtc.js +26 -12
  832. package/dist/utc/chop/chopUtc.d.ts +5 -2
  833. package/dist/utc/chop/chopUtc.js +8 -4
  834. package/dist/utc/compare/areUtcEqualBy.d.ts +10 -5
  835. package/dist/utc/compare/areUtcEqualBy.js +34 -11
  836. package/dist/utc/convert/convertUtcToPlainDate.js +22 -10
  837. package/dist/utc/convert/convertUtcToPlainDateTime.js +28 -16
  838. package/dist/utc/convert/convertUtcToPlainTime.js +22 -10
  839. package/dist/utc/convert/convertUtcToUnix.d.ts +12 -5
  840. package/dist/utc/convert/convertUtcToUnix.js +22 -13
  841. package/dist/utc/format/formatCalendarUtc.d.ts +11 -6
  842. package/dist/utc/format/formatCalendarUtc.js +32 -41
  843. package/dist/utc/format/formatHttp.d.ts +9 -3
  844. package/dist/utc/format/formatHttp.js +14 -12
  845. package/dist/utc/format/formatRelativeUtc.d.ts +18 -6
  846. package/dist/utc/format/formatRelativeUtc.js +43 -51
  847. package/dist/utc/format/formatUtc.d.ts +20 -3
  848. package/dist/utc/format/formatUtc.js +41 -12
  849. package/dist/utc/get/getUtcNowUnit.d.ts +3 -0
  850. package/dist/utc/get/getUtcNowUnit.js +11 -33
  851. package/dist/utc/index.d.ts +1 -0
  852. package/dist/utc/index.js +2 -0
  853. package/dist/utc/interval/intervalAbutsUtc.d.ts +10 -7
  854. package/dist/utc/interval/intervalAbutsUtc.js +18 -30
  855. package/dist/utc/interval/intervalContainsUtc.d.ts +19 -11
  856. package/dist/utc/interval/intervalContainsUtc.js +33 -34
  857. package/dist/utc/interval/intervalCountUtc.d.ts +3 -4
  858. package/dist/utc/interval/intervalCountUtc.js +12 -18
  859. package/dist/utc/interval/intervalDifferenceUtc.d.ts +13 -5
  860. package/dist/utc/interval/intervalDifferenceUtc.js +25 -51
  861. package/dist/utc/interval/intervalDivideEquallyUtc.d.ts +16 -3
  862. package/dist/utc/interval/intervalDivideEquallyUtc.js +54 -34
  863. package/dist/utc/interval/intervalEngulfsUtc.d.ts +17 -12
  864. package/dist/utc/interval/intervalEngulfsUtc.js +25 -26
  865. package/dist/utc/interval/intervalFromDurationUtc.js +5 -0
  866. package/dist/utc/interval/intervalIntersectionUtc.d.ts +12 -6
  867. package/dist/utc/interval/intervalIntersectionUtc.js +24 -41
  868. package/dist/utc/interval/intervalLengthUtc.js +5 -7
  869. package/dist/utc/interval/intervalOverlappingDaysUtc.d.ts +7 -13
  870. package/dist/utc/interval/intervalOverlappingDaysUtc.js +25 -36
  871. package/dist/utc/interval/intervalSplitAtUtc.d.ts +7 -2
  872. package/dist/utc/interval/intervalSplitAtUtc.js +39 -33
  873. package/dist/utc/interval/intervalUnionUtc.d.ts +15 -7
  874. package/dist/utc/interval/intervalUnionUtc.js +31 -42
  875. package/dist/utc/interval/intervalXorAllUtc.d.ts +7 -4
  876. package/dist/utc/interval/intervalXorAllUtc.js +30 -52
  877. package/dist/utc/interval/intervalXorUtc.d.ts +8 -6
  878. package/dist/utc/interval/intervalXorUtc.js +22 -56
  879. package/dist/utc/interval/intervalsOverlapUtc.d.ts +15 -9
  880. package/dist/utc/interval/intervalsOverlapUtc.js +23 -39
  881. package/dist/utc/interval/mergeIntervalsUtc.d.ts +9 -2
  882. package/dist/utc/interval/mergeIntervalsUtc.js +23 -36
  883. package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +23 -2
  884. package/dist/utc/interval/splitIntervalByUnitUtc.js +65 -44
  885. package/dist/utc/interval/validate/isValidUtcInterval.d.ts +5 -0
  886. package/dist/utc/interval/validate/isValidUtcInterval.js +7 -6
  887. package/dist/utc/parse/parseDateFromUtc.d.ts +7 -1
  888. package/dist/utc/parse/parseDateFromUtc.js +14 -9
  889. package/dist/utc/parse/parseDayFromUtc.d.ts +7 -1
  890. package/dist/utc/parse/parseDayFromUtc.js +14 -8
  891. package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +7 -1
  892. package/dist/utc/parse/parseDayOfWeekFromUtc.js +24 -6
  893. package/dist/utc/parse/parseHourFromUtc.d.ts +7 -1
  894. package/dist/utc/parse/parseHourFromUtc.js +14 -8
  895. package/dist/utc/parse/parseHttp.d.ts +39 -14
  896. package/dist/utc/parse/parseHttp.js +69 -28
  897. package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +9 -2
  898. package/dist/utc/parse/parseMicrosecondFromUtc.js +18 -9
  899. package/dist/utc/parse/parseMillisecondFromUtc.d.ts +7 -1
  900. package/dist/utc/parse/parseMillisecondFromUtc.js +16 -8
  901. package/dist/utc/parse/parseMinuteFromUtc.d.ts +7 -1
  902. package/dist/utc/parse/parseMinuteFromUtc.js +14 -8
  903. package/dist/utc/parse/parseMonthFromUtc.d.ts +7 -1
  904. package/dist/utc/parse/parseMonthFromUtc.js +14 -8
  905. package/dist/utc/parse/parseNanosecondFromUtc.d.ts +9 -2
  906. package/dist/utc/parse/parseNanosecondFromUtc.js +18 -9
  907. package/dist/utc/parse/parseSecondFromUtc.d.ts +7 -1
  908. package/dist/utc/parse/parseSecondFromUtc.js +14 -8
  909. package/dist/utc/parse/parseTimeFromUtc.js +21 -10
  910. package/dist/utc/parse/parseUnitFromUtc.d.ts +18 -7
  911. package/dist/utc/parse/parseUnitFromUtc.js +58 -31
  912. package/dist/utc/parse/parseWeekFromUtc.d.ts +16 -3
  913. package/dist/utc/parse/parseWeekFromUtc.js +38 -10
  914. package/dist/utc/parse/parseYearFromUtc.d.ts +7 -1
  915. package/dist/utc/parse/parseYearFromUtc.js +14 -8
  916. package/dist/utc/validate/isValidUtc.d.ts +8 -1
  917. package/dist/utc/validate/isValidUtc.js +12 -3
  918. package/dist/utc/validate/isValidUtcRange.d.ts +3 -2
  919. package/dist/utc/validate/isValidUtcRange.js +30 -19
  920. package/dist/zoned/calculate/addZoned.d.ts +40 -27
  921. package/dist/zoned/calculate/addZoned.js +71 -56
  922. package/dist/zoned/calculate/addZonedBusinessDays.d.ts +2 -0
  923. package/dist/zoned/calculate/addZonedBusinessDays.js +5 -2
  924. package/dist/zoned/calculate/clampZoned.js +4 -3
  925. package/dist/zoned/calculate/closestZonedTo.d.ts +6 -6
  926. package/dist/zoned/calculate/closestZonedTo.js +35 -26
  927. package/dist/zoned/calculate/cycleZoned.d.ts +10 -7
  928. package/dist/zoned/calculate/cycleZoned.js +19 -11
  929. package/dist/zoned/calculate/diffZoned.d.ts +39 -17
  930. package/dist/zoned/calculate/diffZoned.js +90 -45
  931. package/dist/zoned/calculate/diffZonedAsDuration.d.ts +19 -9
  932. package/dist/zoned/calculate/diffZonedAsDuration.js +32 -15
  933. package/dist/zoned/calculate/endOfQuarterForZoned.d.ts +11 -11
  934. package/dist/zoned/calculate/endOfQuarterForZoned.js +32 -31
  935. package/dist/zoned/calculate/endOfZoned.d.ts +21 -14
  936. package/dist/zoned/calculate/endOfZoned.js +25 -111
  937. package/dist/zoned/calculate/getHoursInZonedDay.d.ts +8 -1
  938. package/dist/zoned/calculate/getHoursInZonedDay.js +10 -14
  939. package/dist/zoned/calculate/getLocaleZonedDayOfWeek.d.ts +8 -4
  940. package/dist/zoned/calculate/getLocaleZonedDayOfWeek.js +9 -6
  941. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +20 -26
  942. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +40 -44
  943. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +16 -24
  944. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +36 -42
  945. package/dist/zoned/calculate/getQuarterForZoned.js +2 -2
  946. package/dist/zoned/calculate/maxZoned.js +20 -12
  947. package/dist/zoned/calculate/minZoned.d.ts +1 -1
  948. package/dist/zoned/calculate/minZoned.js +21 -13
  949. package/dist/zoned/calculate/roundZoned.d.ts +18 -4
  950. package/dist/zoned/calculate/roundZoned.js +58 -33
  951. package/dist/zoned/calculate/setZoned.d.ts +9 -3
  952. package/dist/zoned/calculate/setZoned.js +39 -18
  953. package/dist/zoned/calculate/sortZoned.js +18 -10
  954. package/dist/zoned/calculate/startOfQuarterForZoned.d.ts +4 -7
  955. package/dist/zoned/calculate/startOfQuarterForZoned.js +23 -17
  956. package/dist/zoned/calculate/startOfZoned.d.ts +17 -13
  957. package/dist/zoned/calculate/startOfZoned.js +21 -103
  958. package/dist/zoned/calculate/subtractZoned.d.ts +36 -24
  959. package/dist/zoned/calculate/subtractZoned.js +66 -50
  960. package/dist/zoned/calculate/subtractZonedBusinessDays.d.ts +2 -0
  961. package/dist/zoned/calculate/subtractZonedBusinessDays.js +5 -2
  962. package/dist/zoned/chop/chopZonedDate.js +2 -2
  963. package/dist/zoned/chop/chopZonedDateTime.js +2 -2
  964. package/dist/zoned/chop/chopZonedMilliseconds.js +2 -2
  965. package/dist/zoned/chop/chopZonedSeconds.js +2 -2
  966. package/dist/zoned/chop/chopZonedTime.js +2 -2
  967. package/dist/zoned/chop/chopZonedTimezone.js +2 -2
  968. package/dist/zoned/compare/areZonedEqual.js +3 -2
  969. package/dist/zoned/compare/areZonedEqualBy.d.ts +15 -2
  970. package/dist/zoned/compare/areZonedEqualBy.js +45 -12
  971. package/dist/zoned/compare/isAfterZoned.js +3 -2
  972. package/dist/zoned/compare/isBeforeZoned.d.ts +1 -1
  973. package/dist/zoned/compare/isBeforeZoned.js +4 -3
  974. package/dist/zoned/compare/isBetweenZoned.js +46 -29
  975. package/dist/zoned/compare/isInDaylightSaving.js +4 -4
  976. package/dist/zoned/compare/isZonedBusinessDay.d.ts +7 -4
  977. package/dist/zoned/compare/isZonedBusinessDay.js +9 -6
  978. package/dist/zoned/compare/isZonedFuture.js +2 -1
  979. package/dist/zoned/compare/isZonedPast.js +2 -1
  980. package/dist/zoned/compare/isZonedRelativeDay.js +2 -1
  981. package/dist/zoned/compare/isZonedThisUnit.d.ts +12 -4
  982. package/dist/zoned/compare/isZonedThisUnit.js +37 -16
  983. package/dist/zoned/compare/isZonedWeekend.d.ts +8 -4
  984. package/dist/zoned/compare/isZonedWeekend.js +9 -6
  985. package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +10 -5
  986. package/dist/zoned/convert/convertPlainDateTimeToZoned.js +34 -16
  987. package/dist/zoned/convert/convertZonedToCalendar.d.ts +26 -38
  988. package/dist/zoned/convert/convertZonedToCalendar.js +33 -48
  989. package/dist/zoned/convert/convertZonedToPlainDateTime.d.ts +6 -0
  990. package/dist/zoned/convert/convertZonedToPlainDateTime.js +8 -2
  991. package/dist/zoned/convert/convertZonedToUnix.d.ts +12 -6
  992. package/dist/zoned/convert/convertZonedToUnix.js +23 -16
  993. package/dist/zoned/convert/convertZonedToUtc.js +2 -2
  994. package/dist/zoned/convert/convertZonedToZoned.js +2 -2
  995. package/dist/zoned/format/formatCalendarZoned.d.ts +7 -3
  996. package/dist/zoned/format/formatCalendarZoned.js +37 -39
  997. package/dist/zoned/format/formatRelativeZoned.d.ts +15 -6
  998. package/dist/zoned/format/formatRelativeZoned.js +54 -54
  999. package/dist/zoned/format/formatRfc2822.d.ts +14 -1
  1000. package/dist/zoned/format/formatRfc2822.js +27 -13
  1001. package/dist/zoned/format/formatRfc3339.d.ts +14 -1
  1002. package/dist/zoned/format/formatRfc3339.js +29 -3
  1003. package/dist/zoned/format/formatTimeZoneName.d.ts +3 -2
  1004. package/dist/zoned/format/formatTimeZoneName.js +28 -18
  1005. package/dist/zoned/format/formatZonedDateTime.d.ts +25 -5
  1006. package/dist/zoned/format/formatZonedDateTime.js +40 -9
  1007. package/dist/zoned/format/formatZonedRange.d.ts +24 -6
  1008. package/dist/zoned/format/formatZonedRange.js +61 -28
  1009. package/dist/zoned/format/formatZonedToParts.d.ts +29 -6
  1010. package/dist/zoned/format/formatZonedToParts.js +42 -13
  1011. package/dist/zoned/get/getDstTransitions.d.ts +6 -1
  1012. package/dist/zoned/get/getDstTransitions.js +17 -15
  1013. package/dist/zoned/get/getTimeZoneOffset.d.ts +11 -1
  1014. package/dist/zoned/get/getTimeZoneOffset.js +19 -2
  1015. package/dist/zoned/get/getZonedNow.js +20 -9
  1016. package/dist/zoned/get/getZonedNowUnit.d.ts +8 -4
  1017. package/dist/zoned/get/getZonedNowUnit.js +15 -31
  1018. package/dist/zoned/index.js +1 -1
  1019. package/dist/zoned/interval/intervalAbutsZoned.d.ts +18 -11
  1020. package/dist/zoned/interval/intervalAbutsZoned.js +24 -25
  1021. package/dist/zoned/interval/intervalContainsZoned.d.ts +16 -7
  1022. package/dist/zoned/interval/intervalContainsZoned.js +22 -14
  1023. package/dist/zoned/interval/intervalCountZoned.d.ts +19 -11
  1024. package/dist/zoned/interval/intervalCountZoned.js +32 -27
  1025. package/dist/zoned/interval/intervalDifferenceZoned.d.ts +13 -7
  1026. package/dist/zoned/interval/intervalDifferenceZoned.js +24 -36
  1027. package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +18 -9
  1028. package/dist/zoned/interval/intervalDivideEquallyZoned.js +67 -46
  1029. package/dist/zoned/interval/intervalEngulfsZoned.d.ts +10 -5
  1030. package/dist/zoned/interval/intervalEngulfsZoned.js +16 -10
  1031. package/dist/zoned/interval/intervalFromDurationZoned.d.ts +25 -11
  1032. package/dist/zoned/interval/intervalFromDurationZoned.js +61 -44
  1033. package/dist/zoned/interval/intervalIntersectionZoned.d.ts +12 -6
  1034. package/dist/zoned/interval/intervalIntersectionZoned.js +24 -18
  1035. package/dist/zoned/interval/intervalLengthZoned.d.ts +15 -6
  1036. package/dist/zoned/interval/intervalLengthZoned.js +23 -9
  1037. package/dist/zoned/interval/intervalOverlappingDaysZoned.d.ts +28 -17
  1038. package/dist/zoned/interval/intervalOverlappingDaysZoned.js +46 -34
  1039. package/dist/zoned/interval/intervalSplitAtZoned.d.ts +6 -3
  1040. package/dist/zoned/interval/intervalSplitAtZoned.js +52 -42
  1041. package/dist/zoned/interval/intervalUnionZoned.d.ts +14 -8
  1042. package/dist/zoned/interval/intervalUnionZoned.js +25 -20
  1043. package/dist/zoned/interval/intervalXorAllZoned.d.ts +9 -7
  1044. package/dist/zoned/interval/intervalXorAllZoned.js +42 -73
  1045. package/dist/zoned/interval/intervalXorZoned.d.ts +20 -12
  1046. package/dist/zoned/interval/intervalXorZoned.js +34 -64
  1047. package/dist/zoned/interval/intervalsOverlapZoned.d.ts +15 -7
  1048. package/dist/zoned/interval/intervalsOverlapZoned.js +21 -12
  1049. package/dist/zoned/interval/mergeIntervalsZoned.d.ts +10 -3
  1050. package/dist/zoned/interval/mergeIntervalsZoned.js +44 -41
  1051. package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +28 -5
  1052. package/dist/zoned/interval/splitIntervalByUnitZoned.js +72 -39
  1053. package/dist/zoned/interval/validate/isValidCalendarZonedInterval.d.ts +13 -10
  1054. package/dist/zoned/interval/validate/isValidCalendarZonedInterval.js +13 -10
  1055. package/dist/zoned/interval/validate/isValidZonedInterval.d.ts +7 -5
  1056. package/dist/zoned/interval/validate/isValidZonedInterval.js +12 -16
  1057. package/dist/zoned/map/mapZonedDatesInRange.d.ts +17 -1
  1058. package/dist/zoned/map/mapZonedDatesInRange.js +62 -26
  1059. package/dist/zoned/map/mapZonedHoursInDay.d.ts +10 -13
  1060. package/dist/zoned/map/mapZonedHoursInDay.js +13 -21
  1061. package/dist/zoned/parse/getZonedOffset.js +2 -2
  1062. package/dist/zoned/parse/getZonedOffsetAs.d.ts +4 -2
  1063. package/dist/zoned/parse/getZonedOffsetAs.js +10 -5
  1064. package/dist/zoned/parse/parseDateFromZoned.js +2 -2
  1065. package/dist/zoned/parse/parseDateTimeFromZoned.js +2 -2
  1066. package/dist/zoned/parse/parseDayFromZoned.js +2 -2
  1067. package/dist/zoned/parse/parseDayOfWeekFromZoned.js +2 -2
  1068. package/dist/zoned/parse/parseHourFromZoned.js +2 -2
  1069. package/dist/zoned/parse/parseMicrosecondFromZoned.d.ts +2 -1
  1070. package/dist/zoned/parse/parseMicrosecondFromZoned.js +4 -3
  1071. package/dist/zoned/parse/parseMillisecondFromZoned.js +2 -2
  1072. package/dist/zoned/parse/parseMinuteFromZoned.js +2 -2
  1073. package/dist/zoned/parse/parseMonthFromZoned.js +2 -2
  1074. package/dist/zoned/parse/parseNanosecondFromZoned.d.ts +2 -1
  1075. package/dist/zoned/parse/parseNanosecondFromZoned.js +4 -3
  1076. package/dist/zoned/parse/parseRfc2822.d.ts +32 -12
  1077. package/dist/zoned/parse/parseRfc2822.js +47 -45
  1078. package/dist/zoned/parse/parseRfc3339.d.ts +6 -0
  1079. package/dist/zoned/parse/parseRfc3339.js +6 -0
  1080. package/dist/zoned/parse/parseSecondFromZoned.js +2 -2
  1081. package/dist/zoned/parse/parseTimeFromZoned.js +2 -2
  1082. package/dist/zoned/parse/parseTimeZoneFromZoned.js +2 -2
  1083. package/dist/zoned/parse/parseUnitFromZoned.d.ts +14 -5
  1084. package/dist/zoned/parse/parseUnitFromZoned.js +59 -33
  1085. package/dist/zoned/parse/parseWeekFromZoned.d.ts +13 -3
  1086. package/dist/zoned/parse/parseWeekFromZoned.js +34 -10
  1087. package/dist/zoned/parse/parseYearFromZoned.js +2 -2
  1088. package/dist/zoned/validate/hasDaylightSaving.js +3 -3
  1089. package/dist/zoned/validate/isValidCalendarZonedDateTime.d.ts +31 -16
  1090. package/dist/zoned/validate/isValidCalendarZonedDateTime.js +31 -16
  1091. package/dist/zoned/validate/isValidTimeZone.d.ts +15 -2
  1092. package/dist/zoned/validate/isValidTimeZone.js +17 -4
  1093. package/dist/zoned/validate/isValidZonedDateTime.d.ts +14 -7
  1094. package/dist/zoned/validate/isValidZonedDateTime.js +20 -12
  1095. package/dist/zoned/validate/isValidZonedRange.d.ts +9 -2
  1096. package/dist/zoned/validate/isValidZonedRange.js +44 -16
  1097. package/package.json +475 -34
  1098. package/skills/gmt-arithmetic/SKILL.md +197 -16
  1099. package/skills/gmt-basics/SKILL.md +61 -14
  1100. package/skills/gmt-integration/SKILL.md +54 -8
  1101. package/skills/gmt-timezone/SKILL.md +141 -24
  1102. package/dist/internal/advanceBusinessDays.d.ts +0 -2
  1103. package/dist/internal/advanceBusinessDays.js +0 -15
  1104. package/dist/internal/ethiopicFamilyCalendar.d.ts +0 -47
  1105. package/dist/internal/ethiopicFamilyCalendar.js +0 -136
  1106. package/dist/internal/getLocaleMinimalDaysInFirstWeek.d.ts +0 -20
  1107. package/dist/internal/getLocaleMinimalDaysInFirstWeek.js +0 -31
  1108. package/dist/internal/resolveUnixTimeZone.d.ts +0 -20
  1109. package/dist/internal/resolveUnixTimeZone.js +0 -30
  1110. package/dist/unix/calculate/startOrEndOfUnix.d.ts +0 -27
  1111. package/dist/unix/calculate/startOrEndOfUnix.js +0 -140
  1112. package/dist/unix/interval/resolveUnixIntervalPair.d.ts +0 -7
  1113. package/dist/unix/interval/resolveUnixIntervalPair.js +0 -36
@@ -0,0 +1,80 @@
1
+ import { spanNs } from "./spanNs.js";
2
+ /** Nanoseconds in a millisecond. */
3
+ const NANOSECONDS_PER_MILLISECOND = 1000000n;
4
+ /**
5
+ * The largest span, in nanoseconds, whose exact millisecond value a `number` still holds.
6
+ *
7
+ * Guarding here rather than on the truncated whole-millisecond part matters: a span of
8
+ * `MAX_SAFE_INTEGER` milliseconds *plus* a fraction passes a whole-millisecond check and
9
+ * then rounds up to 2^53 on recombination, returning an unsafe integer from a function
10
+ * documented to return the sentinel past the safe range.
11
+ */
12
+ const MAX_SAFE_NANOSECONDS = BigInt(Number.MAX_SAFE_INTEGER) * NANOSECONDS_PER_MILLISECOND;
13
+ /**
14
+ * Return the exact elapsed milliseconds between two ISO 8601 instant strings.
15
+ *
16
+ * The universal span primitive for profiling and observability. Fractional, like
17
+ * `performance.now()` — a sub-millisecond span is reported as a fraction, not rounded away.
18
+ *
19
+ * - Signed: negative when `start` is after `end`, so `spanMs(b, a)` is exactly
20
+ * `-spanMs(a, b)`.
21
+ * - Measures **exact elapsed time**, never calendar distance. A wall-clock day containing a
22
+ * DST transition is 23 or 25 hours (or 24.5, in `Australia/Lord_Howe`), and `spanMs`
23
+ * reports the hours that actually elapsed. `spanWallClock` answers the calendar question;
24
+ * conflating the two is the most common span bug there is.
25
+ * - Accepts anything `toNanoseconds` does: the full RFC 9557 instant grammar, no leap
26
+ * seconds; calendar and elective annotations are ignored, as `Temporal.Instant.from` ignores
27
+ * them. An offset designator (`Z`, `±HH:MM`) is
28
+ * required, optionally followed by a bracketed IANA zone — a bracket alone is not enough,
29
+ * which is the one string shape `spanWallClock` accepts and these two do not. The
30
+ * endpoints need not share a zone; an instant is an instant.
31
+ * - **A bracketed zone annotation is syntactic only.** As in `Temporal.Instant.from`, it is
32
+ * ignored: each offset alone fixes its instant, and a zone that does not exist or disagrees
33
+ * with the offset is not checked. `spanWallClock`, by contrast, rejects a mismatched offset.
34
+ * - Returns `null` on invalid input, not `0` — `0` is the span between an instant and itself.
35
+ * `null`, not `NaN`, because that is GMT's sentinel for every number-returning function:
36
+ * it is the one a caller already checks for, and the only one `strictNullChecks` forces
37
+ * them to handle. A `NaN` would type as plain `number` and propagate silently through
38
+ * arithmetic. `spanNs` and `spanWallClock` return `null` for the same reason.
39
+ * - **Safe range.** Returns `null` when the exact span exceeds `Number.MAX_SAFE_INTEGER`
40
+ * milliseconds (±9_007_199_254_740_991 ms, about ±285,000 years), which two instants at
41
+ * opposite ends of `Temporal.Instant`'s range do. A sub-millisecond fraction counts
42
+ * toward that ceiling, so any number returned is a safe integer or below. Use `spanNs`
43
+ * past it — it carries the exact value as a `bigint`.
44
+ * Sub-millisecond fidelity goes first, long before the ceiling: a double carries the
45
+ * nanosecond digits exactly only while the span is under 2^53 ns, roughly 104 days.
46
+ * - Leap seconds are not counted. UTC repeats a second rather than numbering a 61st one, so
47
+ * a span across one is a second short of the physical elapsed time; against a smeared
48
+ * clock (Google, AWS, Meta) the error is up to a second spread over the smear window.
49
+ * Leap-second-exact spans need a TAI scale, which GMT does not yet ship.
50
+ *
51
+ * @param start ISO 8601 instant string the span is measured from
52
+ * @param end ISO 8601 instant string the span is measured to
53
+ * @returns exact elapsed milliseconds, negative when start is after end, or null on invalid input
54
+ *
55
+ * @example spanMs("2024-03-10T12:00:00Z", "2024-03-10T12:00:01Z") // 1000
56
+ * @example spanMs("2024-03-10T12:00:01Z", "2024-03-10T12:00:00Z") // -1000
57
+ * @example spanMs("2024-03-10T12:00:00Z", "2024-03-10T12:00:00Z") // 0
58
+ * @example spanMs("2024-03-10T12:00:00Z", "2024-03-10T12:00:00.123456789Z") // 123.456789
59
+ * @example spanMs("2024-03-09T12:00:00-05:00[America/New_York]", "2024-03-10T12:00:00-04:00[America/New_York]") // 82800000 — 23 hours, not 24
60
+ * @example spanMs("2024-03-10T12:00:00+05:00[America/New_York]", "2024-03-10T12:00:00-04:00[America/New_York]") // 32400000 — offsets decide, the zone is ignored
61
+ * @example spanMs("-271821-04-20T00:00:00Z", "+275760-09-13T00:00:00Z") // null — past the safe integer range, use spanNs
62
+ * @example spanMs("2024-03-10T12:00:00Z", "invalid") // null
63
+ */
64
+ export function spanMs(start, end) {
65
+ const nanoseconds = spanNs(start, end);
66
+ if (nanoseconds === null) {
67
+ return null;
68
+ }
69
+ if (nanoseconds > MAX_SAFE_NANOSECONDS ||
70
+ nanoseconds < -MAX_SAFE_NANOSECONDS) {
71
+ return null;
72
+ }
73
+ // Split rather than dividing the whole bigint through a double: Number(nanoseconds) is
74
+ // already lossy past 2^53 ns (~104 days), which would corrupt the millisecond part too.
75
+ // BigInt division truncates toward zero and `%` keeps the dividend's sign, so both halves
76
+ // flip together and spanMs(b, a) === -spanMs(a, b) holds exactly.
77
+ const milliseconds = nanoseconds / NANOSECONDS_PER_MILLISECOND;
78
+ const remainder = nanoseconds % NANOSECONDS_PER_MILLISECOND;
79
+ return Number(milliseconds) + Number(remainder) / 1e6;
80
+ }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Return the exact elapsed nanoseconds between two ISO 8601 instant strings.
3
+ *
4
+ * The precise form of `spanMs`, and the one to reach for past a `number`'s safe range.
5
+ *
6
+ * - Signed: negative when `start` is after `end`, so `spanNs(b, a)` is exactly
7
+ * `-spanNs(a, b)`.
8
+ * - Measures **exact elapsed time**, never calendar distance. Across a DST transition
9
+ * "one day later" and "24 hours later" are different spans — `spanWallClock` answers
10
+ * the calendar question.
11
+ * - Accepts anything `toNanoseconds` does: the full RFC 9557 instant grammar, no leap
12
+ * seconds; calendar and elective annotations are ignored, as `Temporal.Instant.from` ignores
13
+ * them. An offset designator (`Z`, `±HH:MM`) is
14
+ * required, optionally followed by a bracketed IANA zone — a bracket alone is not enough,
15
+ * which is the one string shape `spanWallClock` accepts and these two do not. The
16
+ * endpoints need not share a zone; an instant is an instant.
17
+ * - **A bracketed zone annotation is syntactic only.** As in `Temporal.Instant.from`, it is
18
+ * ignored: each offset alone fixes its instant, and a zone that does not exist or disagrees
19
+ * with the offset is not checked. `spanWallClock`, by contrast, rejects a mismatched offset.
20
+ * - Returns `null` on invalid input, not `0n` — `0n` is the span between an instant and
21
+ * itself. This is why it does not simply subtract two `toNanoseconds` results, which
22
+ * return `0n` for both the epoch and a rejected string.
23
+ * - The result is a **duration**, not an instant: it ranges up to
24
+ * ±17_280_000_000_000_000_000_000n, twice what `Temporal.Instant` can represent. Do not
25
+ * feed it to `fromNanoseconds`.
26
+ * - Leap seconds are not counted. UTC repeats a second rather than numbering a 61st one, so
27
+ * a span across one is a second short of the physical elapsed time; against a smeared
28
+ * clock (Google, AWS, Meta) the error is up to a second spread over the smear window.
29
+ * Leap-second-exact spans need a TAI scale, which GMT does not yet ship.
30
+ *
31
+ * @param start ISO 8601 instant string the span is measured from
32
+ * @param end ISO 8601 instant string the span is measured to
33
+ * @returns exact elapsed nanoseconds as a bigint, negative when start is after end, or null on invalid input
34
+ *
35
+ * @example spanNs("2024-03-10T12:00:00Z", "2024-03-10T12:00:01Z") // 1000000000n
36
+ * @example spanNs("2024-03-10T12:00:01Z", "2024-03-10T12:00:00Z") // -1000000000n
37
+ * @example spanNs("2024-03-10T12:00:00Z", "2024-03-10T12:00:00Z") // 0n
38
+ * @example spanNs("2024-03-10T12:00:00.123456789Z", "2024-03-10T12:00:00.123456790Z") // 1n
39
+ * @example spanNs("2024-03-10T07:00:00-05:00[America/New_York]", "2024-03-10T12:00:00Z") // 0n — same instant, different zones
40
+ * @example spanNs("2024-03-10T12:00:00+05:00[America/New_York]", "2024-03-10T12:00:00-04:00[America/New_York]") // 32400000000000n — offsets decide, the zone is ignored
41
+ * @example spanNs("2024-03-10T12:00:00Z", "invalid") // null
42
+ */
43
+ export declare function spanNs(start: string, end: string): bigint | null;
@@ -0,0 +1,51 @@
1
+ import { parseInstantNanoseconds } from "../../internal/index.js";
2
+ /**
3
+ * Return the exact elapsed nanoseconds between two ISO 8601 instant strings.
4
+ *
5
+ * The precise form of `spanMs`, and the one to reach for past a `number`'s safe range.
6
+ *
7
+ * - Signed: negative when `start` is after `end`, so `spanNs(b, a)` is exactly
8
+ * `-spanNs(a, b)`.
9
+ * - Measures **exact elapsed time**, never calendar distance. Across a DST transition
10
+ * "one day later" and "24 hours later" are different spans — `spanWallClock` answers
11
+ * the calendar question.
12
+ * - Accepts anything `toNanoseconds` does: the full RFC 9557 instant grammar, no leap
13
+ * seconds; calendar and elective annotations are ignored, as `Temporal.Instant.from` ignores
14
+ * them. An offset designator (`Z`, `±HH:MM`) is
15
+ * required, optionally followed by a bracketed IANA zone — a bracket alone is not enough,
16
+ * which is the one string shape `spanWallClock` accepts and these two do not. The
17
+ * endpoints need not share a zone; an instant is an instant.
18
+ * - **A bracketed zone annotation is syntactic only.** As in `Temporal.Instant.from`, it is
19
+ * ignored: each offset alone fixes its instant, and a zone that does not exist or disagrees
20
+ * with the offset is not checked. `spanWallClock`, by contrast, rejects a mismatched offset.
21
+ * - Returns `null` on invalid input, not `0n` — `0n` is the span between an instant and
22
+ * itself. This is why it does not simply subtract two `toNanoseconds` results, which
23
+ * return `0n` for both the epoch and a rejected string.
24
+ * - The result is a **duration**, not an instant: it ranges up to
25
+ * ±17_280_000_000_000_000_000_000n, twice what `Temporal.Instant` can represent. Do not
26
+ * feed it to `fromNanoseconds`.
27
+ * - Leap seconds are not counted. UTC repeats a second rather than numbering a 61st one, so
28
+ * a span across one is a second short of the physical elapsed time; against a smeared
29
+ * clock (Google, AWS, Meta) the error is up to a second spread over the smear window.
30
+ * Leap-second-exact spans need a TAI scale, which GMT does not yet ship.
31
+ *
32
+ * @param start ISO 8601 instant string the span is measured from
33
+ * @param end ISO 8601 instant string the span is measured to
34
+ * @returns exact elapsed nanoseconds as a bigint, negative when start is after end, or null on invalid input
35
+ *
36
+ * @example spanNs("2024-03-10T12:00:00Z", "2024-03-10T12:00:01Z") // 1000000000n
37
+ * @example spanNs("2024-03-10T12:00:01Z", "2024-03-10T12:00:00Z") // -1000000000n
38
+ * @example spanNs("2024-03-10T12:00:00Z", "2024-03-10T12:00:00Z") // 0n
39
+ * @example spanNs("2024-03-10T12:00:00.123456789Z", "2024-03-10T12:00:00.123456790Z") // 1n
40
+ * @example spanNs("2024-03-10T07:00:00-05:00[America/New_York]", "2024-03-10T12:00:00Z") // 0n — same instant, different zones
41
+ * @example spanNs("2024-03-10T12:00:00+05:00[America/New_York]", "2024-03-10T12:00:00-04:00[America/New_York]") // 32400000000000n — offsets decide, the zone is ignored
42
+ * @example spanNs("2024-03-10T12:00:00Z", "invalid") // null
43
+ */
44
+ export function spanNs(start, end) {
45
+ const startNanoseconds = parseInstantNanoseconds(start);
46
+ const endNanoseconds = parseInstantNanoseconds(end);
47
+ if (startNanoseconds === null || endNanoseconds === null) {
48
+ return null;
49
+ }
50
+ return endNanoseconds - startNanoseconds;
51
+ }
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Units `spanWallClock` measures a calendar distance in.
3
+ *
4
+ * | Unit | Meaning |
5
+ * | --- | --- |
6
+ * | `days` | Whole wall-clock days — a calendar day, whatever number of hours it happened to last. |
7
+ * | `hours` | Whole wall-clock hours — the hours a clock face advanced, not the hours that elapsed. |
8
+ * | `day`, `hour` | The singular names, accepted as Temporal accepts them. |
9
+ */
10
+ export type WallClockSpanUnit = "days" | "hours" | "day" | "hour";
11
+ /**
12
+ * Return the wall-clock distance between two zoned datetime strings — calendar time, not
13
+ * elapsed time.
14
+ *
15
+ * The counterpart to `spanMs`. Both are correct answers to different questions, and
16
+ * conflating them is the most common span bug there is: across a DST transition "one day
17
+ * later" and "24 hours later" are not the same moment.
18
+ *
19
+ * - Reads each endpoint's own local wall clock and measures between them, so a calendar day
20
+ * is 1 day and 24 hours in every zone, including one whose offset shifted in between.
21
+ * `spanMs` over the same pair reports the 23, 24.5 or 25 hours that actually elapsed.
22
+ * - Truncates toward zero, so the result is a whole count and `spanWallClock(b, a, unit)` is
23
+ * `-spanWallClock(a, b, unit)`. Noon Friday to 18:00 Saturday is 1 day, or 30 hours — ask
24
+ * for `hours` when the remainder matters.
25
+ * - **Not a count of boundaries crossed.** 23:00 to 01:00 the next calendar day is `0` days,
26
+ * not `1`; that question is about local midnights, and is `startOfZoned`'s to answer.
27
+ * - **No disambiguation policy applies, because no local time is converted to an instant.**
28
+ * The wall clock is read straight off the string with `Temporal.PlainDateTime.from`. Going
29
+ * via `ZonedDateTime` would be a local → instant → local round trip, and that round trip is
30
+ * lossy at exactly the DST edges this function exists to get right: an offset-less
31
+ * `"2024-03-10T02:30:00[America/New_York]"` names a wall time that never occurred, and
32
+ * Temporal's default `compatible` disambiguation would silently advance it to `03:30`,
33
+ * turning a 24-hour answer into 23. A nonexistent or ambiguous local time is measured as
34
+ * written instead — for a clock-face question, the digits in the string *are* the answer.
35
+ * - Requires a bracketed IANA time zone on both endpoints, as `isValidZonedDateTime` does —
36
+ * an instant string (`Z`) or a bare offset carries no zone whose wall clock could shift.
37
+ * The offset is optional, but a present one must match the zone. Leap seconds and
38
+ * `[u-ca=...]` calendar annotations are rejected; `days` and `hours` mean the same thing in
39
+ * every calendar system, so the annotation would change nothing.
40
+ * - The endpoints need not share a zone. When they differ, this is the distance between two
41
+ * local wall clocks — a flight leaving New York at 23:00 and landing in Berlin at 11:00 the
42
+ * next local day is 12 wall-clock hours, and 7 elapsed hours by `spanMs`.
43
+ * - Returns `null` on invalid input, not `0` — `0` is the span between a wall time and itself.
44
+ *
45
+ * @param start zoned ISO 8601 datetime string the span is measured from
46
+ * @param end zoned ISO 8601 datetime string the span is measured to
47
+ * @param unit "days" or "hours" (or the singular "day" or "hour") of wall-clock distance
48
+ * @returns whole wall-clock units, negative when start is after end, or null on invalid input
49
+ *
50
+ * @example spanWallClock("2024-03-09T12:00:00-05:00[America/New_York]", "2024-03-10T12:00:00-04:00[America/New_York]", "hours") // 24 — spanMs reports 82800000 (23 hours)
51
+ * @example spanWallClock("2024-11-02T12:00:00-04:00[America/New_York]", "2024-11-03T12:00:00-05:00[America/New_York]", "days") // 1 — spanMs reports 90000000 (25 hours)
52
+ * @example spanWallClock("2024-03-01T12:00:00-05:00[America/New_York]", "2024-03-02T18:00:00-05:00[America/New_York]", "days") // 1 — truncated toward zero
53
+ * @example spanWallClock("2024-03-02T18:00:00-05:00[America/New_York]", "2024-03-01T12:00:00-05:00[America/New_York]", "hours") // -30
54
+ * @example spanWallClock("2024-03-10T23:00:00-04:00[America/New_York]", "2024-03-11T11:00:00+01:00[Europe/Berlin]", "hours") // 12 — each endpoint's own wall clock
55
+ * @example spanWallClock("2024-03-10T02:30:00[America/New_York]", "2024-03-11T02:30:00[America/New_York]", "hours") // 24 — a wall time that never occurred is measured as written
56
+ * @example spanWallClock("2024-03-01T12:00:00-05:00[America/New_York]", "2024-03-02T12:00:00-05:00[America/New_York]", "day") // 1 — singular unit name
57
+ * @example spanWallClock("2024-03-10T12:00:00Z", "2024-03-11T12:00:00Z", "days") // null — no bracketed time zone
58
+ * @example spanWallClock("2024-03-01T12:00:00-05:00[America/New_York]", "2024-03-02T12:00:00-05:00[America/New_York]", "minutes") // null
59
+ */
60
+ export declare function spanWallClock(start: string, end: string, unit: WallClockSpanUnit): number | null;
@@ -0,0 +1,80 @@
1
+ import { Temporal } from "@js-temporal/polyfill";
2
+ import { isValidZonedDateTime } from "../../zoned/validate/index.js";
3
+ const WALL_CLOCK_SPAN_UNITS = {
4
+ days: "day",
5
+ hours: "hour",
6
+ day: "day",
7
+ hour: "hour",
8
+ };
9
+ /**
10
+ * Return the wall-clock distance between two zoned datetime strings — calendar time, not
11
+ * elapsed time.
12
+ *
13
+ * The counterpart to `spanMs`. Both are correct answers to different questions, and
14
+ * conflating them is the most common span bug there is: across a DST transition "one day
15
+ * later" and "24 hours later" are not the same moment.
16
+ *
17
+ * - Reads each endpoint's own local wall clock and measures between them, so a calendar day
18
+ * is 1 day and 24 hours in every zone, including one whose offset shifted in between.
19
+ * `spanMs` over the same pair reports the 23, 24.5 or 25 hours that actually elapsed.
20
+ * - Truncates toward zero, so the result is a whole count and `spanWallClock(b, a, unit)` is
21
+ * `-spanWallClock(a, b, unit)`. Noon Friday to 18:00 Saturday is 1 day, or 30 hours — ask
22
+ * for `hours` when the remainder matters.
23
+ * - **Not a count of boundaries crossed.** 23:00 to 01:00 the next calendar day is `0` days,
24
+ * not `1`; that question is about local midnights, and is `startOfZoned`'s to answer.
25
+ * - **No disambiguation policy applies, because no local time is converted to an instant.**
26
+ * The wall clock is read straight off the string with `Temporal.PlainDateTime.from`. Going
27
+ * via `ZonedDateTime` would be a local → instant → local round trip, and that round trip is
28
+ * lossy at exactly the DST edges this function exists to get right: an offset-less
29
+ * `"2024-03-10T02:30:00[America/New_York]"` names a wall time that never occurred, and
30
+ * Temporal's default `compatible` disambiguation would silently advance it to `03:30`,
31
+ * turning a 24-hour answer into 23. A nonexistent or ambiguous local time is measured as
32
+ * written instead — for a clock-face question, the digits in the string *are* the answer.
33
+ * - Requires a bracketed IANA time zone on both endpoints, as `isValidZonedDateTime` does —
34
+ * an instant string (`Z`) or a bare offset carries no zone whose wall clock could shift.
35
+ * The offset is optional, but a present one must match the zone. Leap seconds and
36
+ * `[u-ca=...]` calendar annotations are rejected; `days` and `hours` mean the same thing in
37
+ * every calendar system, so the annotation would change nothing.
38
+ * - The endpoints need not share a zone. When they differ, this is the distance between two
39
+ * local wall clocks — a flight leaving New York at 23:00 and landing in Berlin at 11:00 the
40
+ * next local day is 12 wall-clock hours, and 7 elapsed hours by `spanMs`.
41
+ * - Returns `null` on invalid input, not `0` — `0` is the span between a wall time and itself.
42
+ *
43
+ * @param start zoned ISO 8601 datetime string the span is measured from
44
+ * @param end zoned ISO 8601 datetime string the span is measured to
45
+ * @param unit "days" or "hours" (or the singular "day" or "hour") of wall-clock distance
46
+ * @returns whole wall-clock units, negative when start is after end, or null on invalid input
47
+ *
48
+ * @example spanWallClock("2024-03-09T12:00:00-05:00[America/New_York]", "2024-03-10T12:00:00-04:00[America/New_York]", "hours") // 24 — spanMs reports 82800000 (23 hours)
49
+ * @example spanWallClock("2024-11-02T12:00:00-04:00[America/New_York]", "2024-11-03T12:00:00-05:00[America/New_York]", "days") // 1 — spanMs reports 90000000 (25 hours)
50
+ * @example spanWallClock("2024-03-01T12:00:00-05:00[America/New_York]", "2024-03-02T18:00:00-05:00[America/New_York]", "days") // 1 — truncated toward zero
51
+ * @example spanWallClock("2024-03-02T18:00:00-05:00[America/New_York]", "2024-03-01T12:00:00-05:00[America/New_York]", "hours") // -30
52
+ * @example spanWallClock("2024-03-10T23:00:00-04:00[America/New_York]", "2024-03-11T11:00:00+01:00[Europe/Berlin]", "hours") // 12 — each endpoint's own wall clock
53
+ * @example spanWallClock("2024-03-10T02:30:00[America/New_York]", "2024-03-11T02:30:00[America/New_York]", "hours") // 24 — a wall time that never occurred is measured as written
54
+ * @example spanWallClock("2024-03-01T12:00:00-05:00[America/New_York]", "2024-03-02T12:00:00-05:00[America/New_York]", "day") // 1 — singular unit name
55
+ * @example spanWallClock("2024-03-10T12:00:00Z", "2024-03-11T12:00:00Z", "days") // null — no bracketed time zone
56
+ * @example spanWallClock("2024-03-01T12:00:00-05:00[America/New_York]", "2024-03-02T12:00:00-05:00[America/New_York]", "minutes") // null
57
+ */
58
+ export function spanWallClock(start, end, unit) {
59
+ if (typeof unit !== "string") {
60
+ return null;
61
+ }
62
+ if (!Object.hasOwn(WALL_CLOCK_SPAN_UNITS, unit) ||
63
+ !isValidZonedDateTime(start) ||
64
+ !isValidZonedDateTime(end)) {
65
+ return null;
66
+ }
67
+ try {
68
+ const startWallClock = Temporal.PlainDateTime.from(start);
69
+ const endWallClock = Temporal.PlainDateTime.from(end);
70
+ const duration = startWallClock.until(endWallClock, {
71
+ largestUnit: WALL_CLOCK_SPAN_UNITS[unit],
72
+ });
73
+ return WALL_CLOCK_SPAN_UNITS[unit] === "day"
74
+ ? duration.days
75
+ : duration.hours;
76
+ }
77
+ catch {
78
+ return null;
79
+ }
80
+ }
@@ -0,0 +1,3 @@
1
+ export * from "@js-temporal/polyfill";
2
+ export * from "./calculate/index.js";
3
+ export * from "./validate/index.js";
@@ -0,0 +1,4 @@
1
+ // Re-export the Temporal polyfill (`Temporal`, `Intl`, `toTemporalInstant`) so every namespace subpath offers it
2
+ export * from "@js-temporal/polyfill";
3
+ export * from "./calculate/index.js";
4
+ export * from "./validate/index.js";
@@ -0,0 +1 @@
1
+ export * from "./isValidSpan.js";
@@ -0,0 +1 @@
1
+ export * from "./isValidSpan.js";
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Validate whether two ISO 8601 instant strings form a measurable span.
3
+ *
4
+ * True exactly when `spanMs` and `spanNs` will return a value rather than `null` — the
5
+ * endpoints both parse, so there is an elapsed time between them.
6
+ *
7
+ * - Accepts what `toNanoseconds` does on both sides: an offset designator is required,
8
+ * optionally followed by a bracketed IANA zone; no leap seconds. Calendar and elective
9
+ * annotations are ignored, as `Temporal.Instant.from` ignores them. The two endpoints need not
10
+ * share a zone.
11
+ * - **A bracketed zone annotation is syntactic only.** As in `Temporal.Instant.from`, it is
12
+ * ignored: each offset alone fixes its instant, and a zone that does not exist or disagrees
13
+ * with the offset is not checked.
14
+ * - Order does not matter. A span is signed, not invalid, when `start` is after `end`, so
15
+ * this is symmetric.
16
+ * - **`spanMs` can still return `null` on a pair this accepts** — a span wider than
17
+ * `Number.MAX_SAFE_INTEGER` milliseconds has no `number` to return. That is a range
18
+ * limit on the result, not a defect in the inputs, and `spanNs` returns the exact
19
+ * `bigint` for the same pair.
20
+ * - Does **not** validate `spanWallClock`, which needs a bracketed IANA zone on both
21
+ * endpoints rather than a bare offset — that is `isValidZonedDateTime`.
22
+ * - Returns `false` for non-strings and empty strings.
23
+ *
24
+ * @param start candidate ISO 8601 instant string the span would be measured from
25
+ * @param end candidate ISO 8601 instant string the span would be measured to
26
+ * @returns boolean indicating whether spanMs/spanNs will measure this pair
27
+ *
28
+ * @example isValidSpan("2024-03-10T12:00:00Z", "2024-03-10T12:00:01Z") // true
29
+ * @example isValidSpan("2024-03-10T12:00:00Z", "2024-03-10T12:00:00Z") // true — a zero span is a span
30
+ * @example isValidSpan("2024-03-10T12:00:01Z", "2024-03-10T12:00:00Z") // true — spans are signed
31
+ * @example isValidSpan("2024-03-10T07:00:00-05:00[America/New_York]", "2024-03-10T12:00:00Z") // true
32
+ * @example isValidSpan("2024-03-10T12:00:00+05:00[America/New_York]", "2024-03-10T12:00:00Z[Not/AZone]") // true — zone annotations are not checked
33
+ * @example isValidSpan("-271821-04-20T00:00:00Z", "+275760-09-13T00:00:00Z") // true — but spanMs returns null, use spanNs
34
+ * @example isValidSpan("2024-03-10T12:00:00Z", "invalid") // false
35
+ * @example isValidSpan("2024-03-10T12:00:00[America/New_York]", "2024-03-11T12:00:00[America/New_York]") // false — no offset designator
36
+ */
37
+ export declare function isValidSpan(start: string, end: string): boolean;
@@ -0,0 +1,41 @@
1
+ import { parseInstantNanoseconds } from "../../internal/index.js";
2
+ /**
3
+ * Validate whether two ISO 8601 instant strings form a measurable span.
4
+ *
5
+ * True exactly when `spanMs` and `spanNs` will return a value rather than `null` — the
6
+ * endpoints both parse, so there is an elapsed time between them.
7
+ *
8
+ * - Accepts what `toNanoseconds` does on both sides: an offset designator is required,
9
+ * optionally followed by a bracketed IANA zone; no leap seconds. Calendar and elective
10
+ * annotations are ignored, as `Temporal.Instant.from` ignores them. The two endpoints need not
11
+ * share a zone.
12
+ * - **A bracketed zone annotation is syntactic only.** As in `Temporal.Instant.from`, it is
13
+ * ignored: each offset alone fixes its instant, and a zone that does not exist or disagrees
14
+ * with the offset is not checked.
15
+ * - Order does not matter. A span is signed, not invalid, when `start` is after `end`, so
16
+ * this is symmetric.
17
+ * - **`spanMs` can still return `null` on a pair this accepts** — a span wider than
18
+ * `Number.MAX_SAFE_INTEGER` milliseconds has no `number` to return. That is a range
19
+ * limit on the result, not a defect in the inputs, and `spanNs` returns the exact
20
+ * `bigint` for the same pair.
21
+ * - Does **not** validate `spanWallClock`, which needs a bracketed IANA zone on both
22
+ * endpoints rather than a bare offset — that is `isValidZonedDateTime`.
23
+ * - Returns `false` for non-strings and empty strings.
24
+ *
25
+ * @param start candidate ISO 8601 instant string the span would be measured from
26
+ * @param end candidate ISO 8601 instant string the span would be measured to
27
+ * @returns boolean indicating whether spanMs/spanNs will measure this pair
28
+ *
29
+ * @example isValidSpan("2024-03-10T12:00:00Z", "2024-03-10T12:00:01Z") // true
30
+ * @example isValidSpan("2024-03-10T12:00:00Z", "2024-03-10T12:00:00Z") // true — a zero span is a span
31
+ * @example isValidSpan("2024-03-10T12:00:01Z", "2024-03-10T12:00:00Z") // true — spans are signed
32
+ * @example isValidSpan("2024-03-10T07:00:00-05:00[America/New_York]", "2024-03-10T12:00:00Z") // true
33
+ * @example isValidSpan("2024-03-10T12:00:00+05:00[America/New_York]", "2024-03-10T12:00:00Z[Not/AZone]") // true — zone annotations are not checked
34
+ * @example isValidSpan("-271821-04-20T00:00:00Z", "+275760-09-13T00:00:00Z") // true — but spanMs returns null, use spanNs
35
+ * @example isValidSpan("2024-03-10T12:00:00Z", "invalid") // false
36
+ * @example isValidSpan("2024-03-10T12:00:00[America/New_York]", "2024-03-11T12:00:00[America/New_York]") // false — no offset designator
37
+ */
38
+ export function isValidSpan(start, end) {
39
+ return (parseInstantNanoseconds(start) !== null &&
40
+ parseInstantNanoseconds(end) !== null);
41
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * A jurisdiction's working week: which weekdays are weekend, which dates are holidays, and
3
+ * which locality the answer is for.
4
+ *
5
+ * - `weekend` is ISO weekday numbers, 1 (Monday) through 7 (Sunday). It is explicit because
6
+ * Saturday–Sunday is not universal: much of the Middle East is Friday–Saturday (`[5, 6]`),
7
+ * and some markets keep a one-day weekend (`[7]`). `[]` means no weekly closure at all.
8
+ * Duplicates are ignored; all seven days being weekend leaves no business day and is invalid.
9
+ * - `holidays` is ISO PlainDate strings (`"2024-07-04"`), never datetimes. Order does not
10
+ * matter and duplicates are ignored. GMT bundles no holiday table — holiday data is
11
+ * jurisdictional, changes annually and sometimes with days of notice, so the caller supplies
12
+ * it. No exchange or currency calendar ships either; an opt-in data subpath for them is
13
+ * planned, not published.
14
+ * - `timeZone` is an IANA identifier recording which locality the calendar describes. The
15
+ * business-day functions never read it: they take and return local dates, so the answer is
16
+ * the same whatever it says. It is what a caller holding an *instant* needs, to reduce that
17
+ * instant to a local date first — with `floorToZone` or `getZonedDateTimeFields` — before
18
+ * asking a business-day question.
19
+ *
20
+ * Narrow a candidate with `isValidBusinessCalendar`. Compose two jurisdictions' calendars with
21
+ * `mergeCalendars`.
22
+ */
23
+ export type BusinessCalendar = {
24
+ weekend: number[];
25
+ holidays: string[];
26
+ timeZone: string;
27
+ };
File without changes
@@ -1 +1,9 @@
1
- export type CalendarSystem = "gregorian" | "hebrew" | "islamic-civil" | "islamic-tabular" | "islamic-umalqura" | "japanese" | "buddhist" | "taiwan" | "persian" | "indian" | "ethiopic" | "ethiopic-amete-alem" | "coptic";
1
+ /**
2
+ * A calendar GMT's calendar functions support, named by its canonical calendar id: the CLDR
3
+ * `common/bcp47/calendar.xml` type that Temporal's `CanonicalizeCalendar` returns, and that
4
+ * RFC 9557's `[u-ca=<id>]` annotation carries.
5
+ *
6
+ * The set is `"iso8601"` plus the rows of the Intl Era and Month Code proposal's
7
+ * `table-calendar-types` that GMT supports; `"chinese"` and `"dangi"` are not supported.
8
+ */
9
+ export type CalendarSystem = "iso8601" | "gregory" | "hebrew" | "islamic-civil" | "islamic-tbla" | "islamic-umalqura" | "japanese" | "buddhist" | "roc" | "persian" | "indian" | "ethiopic" | "ethioaa" | "coptic";
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Week-per-period shape of a 52/53-week fiscal year, one entry per month of a quarter.
3
+ *
4
+ * - `"4-5-4"` — the NRF retail calendar, the US retail standard.
5
+ * - `"4-4-5"` — the longer month falls at the end of the quarter.
6
+ * - `"5-4-4"` — the longer month falls at the start of the quarter.
7
+ *
8
+ * Narrow a candidate — a pattern out of config, an env var or a form — with
9
+ * `isValidFiscalPattern`.
10
+ */
11
+ export type FiscalPattern = "4-5-4" | "4-4-5" | "5-4-4";
12
+ /** Caller-supplied 52/53-week fiscal calendar. GMT bundles none. */
13
+ export interface FiscalCalendar {
14
+ /** Weeks per period within each quarter. */
15
+ pattern: FiscalPattern;
16
+ /**
17
+ * The year-end rule, stated as one ISO date: fiscal years end on this date's **weekday**,
18
+ * on the occurrence nearest this date's **month and day**. For the NRF retail calendar —
19
+ * "the Saturday nearest to January 31" — that is `"2026-01-31"`.
20
+ */
21
+ yearEndsOn: string;
22
+ }
File without changes
@@ -1,3 +1,4 @@
1
+ export * from "./business-calendar.js";
1
2
  export * from "./calendar-options.js";
2
3
  export * from "./calendar-system.js";
3
4
  export * from "./date-cycle-field.js";
@@ -11,7 +12,9 @@ export * from "./disambiguation.js";
11
12
  export * from "./duration-relative-to.js";
12
13
  export * from "./duration-string-options.js";
13
14
  export * from "./duration-unit.js";
15
+ export * from "./fiscal-calendar.js";
14
16
  export * from "./fractional-digit.js";
17
+ export * from "./interval.js";
15
18
  export * from "./now-unit.js";
16
19
  export * from "./offset.js";
17
20
  export * from "./overflow.js";
@@ -21,9 +24,12 @@ export * from "./relative-rounding-method.js";
21
24
  export * from "./relative-time-options.js";
22
25
  export * from "./relative-time-unit.js";
23
26
  export * from "./relative-unit.js";
27
+ export * from "./roll-convention.js";
24
28
  export * from "./rounding-options.js";
25
29
  export * from "./time-cycle-field.js";
26
30
  export * from "./time-duration-unit.js";
27
31
  export * from "./time-unit.js";
28
32
  export * from "./unix-now-unit.js";
29
33
  export * from "./utc-now-unit.js";
34
+ export * from "./zone-bucket-unit.js";
35
+ export type { UnixUnit } from "../unix/validate/isValidUnixUnit.js";
@@ -1,3 +1,4 @@
1
+ export * from "./business-calendar.js";
1
2
  export * from "./calendar-options.js";
2
3
  export * from "./calendar-system.js";
3
4
  export * from "./date-cycle-field.js";
@@ -11,7 +12,9 @@ export * from "./disambiguation.js";
11
12
  export * from "./duration-relative-to.js";
12
13
  export * from "./duration-string-options.js";
13
14
  export * from "./duration-unit.js";
15
+ export * from "./fiscal-calendar.js";
14
16
  export * from "./fractional-digit.js";
17
+ export * from "./interval.js";
15
18
  export * from "./now-unit.js";
16
19
  export * from "./offset.js";
17
20
  export * from "./overflow.js";
@@ -21,9 +24,11 @@ export * from "./relative-rounding-method.js";
21
24
  export * from "./relative-time-options.js";
22
25
  export * from "./relative-time-unit.js";
23
26
  export * from "./relative-unit.js";
27
+ export * from "./roll-convention.js";
24
28
  export * from "./rounding-options.js";
25
29
  export * from "./time-cycle-field.js";
26
30
  export * from "./time-duration-unit.js";
27
31
  export * from "./time-unit.js";
28
32
  export * from "./unix-now-unit.js";
29
33
  export * from "./utc-now-unit.js";
34
+ export * from "./zone-bucket-unit.js";
@@ -0,0 +1,18 @@
1
+ /**
2
+ * A span of time between two ISO 8601 instant strings, half-open: `[start, end)`.
3
+ *
4
+ * - An instant `t` is inside when `start ≤ t < end` (EWD831; SQL:2011 closed-open `PERIOD`;
5
+ * RFC 5545 `DTEND` is non-inclusive). Intervals that touch share no instant.
6
+ * - Both endpoints are instants: an offset (`Z`, `±HH:MM`) is required, a bracketed IANA zone is
7
+ * optional, and the two may name different zones. Leap seconds are rejected; a `[u-ca=...]`
8
+ * annotation is ignored, as `Temporal.Instant.from` ignores it.
9
+ * - `start === end` (as instants) is a valid, empty interval: it has a position but contains no
10
+ * instant. `start` after `end` is invalid.
11
+ *
12
+ * Narrow a candidate with `isValidInterval`. Used by the `interval/` namespace; the older
13
+ * `plain|utc|zoned|unix/interval` functions take positional strings and a different model.
14
+ */
15
+ export type Interval = {
16
+ start: string;
17
+ end: string;
18
+ };
File without changes
@@ -2,4 +2,4 @@
2
2
  * Units extractable from the current system local time via `getNowUnit`.
3
3
  * Defined as `DateTimeUnit | "dayOfWeek"`.
4
4
  */
5
- export type NowUnit = import("./date-time-unit.js").DateTimeUnit | "dayOfWeek";
5
+ export type NowUnit = import("@js-temporal/polyfill").Temporal.SmallestUnit<import("./date-time-unit.js").DateTimeUnit> | "dayOfWeek";
@@ -0,0 +1,32 @@
1
+ /**
2
+ * What `rollDate` does when a date lands on a non-business day.
3
+ *
4
+ * Every industry has an answer and they differ, so the convention is always explicit.
5
+ *
6
+ * No TC39, ECMA or RFC standard governs these, so each cites the domain text that does.
7
+ * `"following"`, `"modifiedFollowing"` and `"preceding"` are the three conventions
8
+ * [ISDA 2006 Definitions §4.12(a)](https://www.isda.org/a/smMDE/Blackline-2000-v-2006-ISDA-Definitions.pdf) defines, in (i), (ii)
9
+ * and (iii): "if 'Following' is specified …", "if 'Modified Following' or 'Modified' is
10
+ * specified …" and "if 'Preceding' is specified, that date will be the first preceding day
11
+ * that is a Business Day". §4.12(a) defines no Modified Preceding: `"modifiedPreceding"` is
12
+ * FpML's `BusinessDayConventionEnum` `MODPRECEDING`, "adjusted to the first preceding day
13
+ * that is a business day unless that day falls in the previous calendar month, in which
14
+ * case … the first following day". `"none"` is what
15
+ * [OpenGamma Strata](https://strata.opengamma.io/apidocs/com/opengamma/strata/basics/date/BusinessDayConventions.html)
16
+ * calls `NO_ADJUST`.
17
+ *
18
+ * - `"following"` — forward to the next business day, or the date itself if it is one.
19
+ * - `"modifiedFollowing"` — forward, unless that crosses into the next month, then backward.
20
+ * - `"preceding"` — backward to the previous business day, or the date itself if it is one.
21
+ * - `"modifiedPreceding"` — backward, unless that crosses into the previous month, then forward.
22
+ * - `"endOfMonth"` — the last business day of the date's own month, wherever in the month the
23
+ * date falls; it leaves the month only if that whole month is closed. **GMT's own, not
24
+ * ISDA's**, and not the industry "EOM rule" — that is a *schedule* rule, holding every date
25
+ * in a schedule to its month's last day once the anchor is one. Build that rule from this
26
+ * one by testing the anchor for month-end yourself and applying `"endOfMonth"` to the
27
+ * unadjusted target date.
28
+ * - `"none"` — return the date unadjusted, business day or not.
29
+ *
30
+ * Narrow a candidate with `isValidRollConvention`.
31
+ */
32
+ export type RollConvention = "following" | "modifiedFollowing" | "preceding" | "modifiedPreceding" | "endOfMonth" | "none";
File without changes
@@ -2,4 +2,4 @@
2
2
  * Units extractable from the current UTC instant via `getUtcNowUnit`.
3
3
  * Defined as `DateTimeUnit | "dayOfWeek"`.
4
4
  */
5
- export type UtcNowUnit = import("./date-time-unit.js").DateTimeUnit | "dayOfWeek";
5
+ export type UtcNowUnit = import("@js-temporal/polyfill").Temporal.SmallestUnit<import("./date-time-unit.js").DateTimeUnit> | "dayOfWeek";
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Units `floorToZone` and `bucketRange` floor an instant to, in a target time zone.
3
+ *
4
+ * Narrower than `DateTimeUnit` on purpose: these are the boundaries a calendar in a zone
5
+ * actually has. Sub-hour units need no zone (a minute boundary is the same instant
6
+ * everywhere a zone's offset is a whole minute), and `year` is left out because the fiscal
7
+ * and calendar year questions are `getFiscalPeriod`'s and `getQuarter`'s.
8
+ *
9
+ * Narrow a candidate unit with `isValidZoneBucketUnit`.
10
+ */
11
+ export type ZoneBucketUnit = "hour" | "day" | "week" | "month";