@northguild/gmt 1.14.2 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1163) hide show
  1. package/README.md +887 -277
  2. package/dist/calendar/business/businessDaysBetween.d.ts +37 -0
  3. package/dist/calendar/business/businessDaysBetween.js +89 -0
  4. package/dist/calendar/business/index.d.ts +7 -0
  5. package/dist/calendar/business/index.js +10 -0
  6. package/dist/calendar/business/mergeCalendars.d.ts +33 -0
  7. package/dist/calendar/business/mergeCalendars.js +68 -0
  8. package/dist/calendar/business/nextBusinessDay.d.ts +30 -0
  9. package/dist/calendar/business/nextBusinessDay.js +39 -0
  10. package/dist/calendar/business/previousBusinessDay.d.ts +30 -0
  11. package/dist/calendar/business/previousBusinessDay.js +39 -0
  12. package/dist/calendar/business/rollDate.d.ts +59 -0
  13. package/dist/calendar/business/rollDate.js +116 -0
  14. package/dist/calendar/calculate/bucketRange.d.ts +49 -0
  15. package/dist/calendar/calculate/bucketRange.js +169 -0
  16. package/dist/calendar/calculate/floorToZone.d.ts +42 -0
  17. package/dist/calendar/calculate/floorToZone.js +62 -0
  18. package/dist/calendar/calculate/getFiscalPeriod.d.ts +64 -0
  19. package/dist/calendar/calculate/getFiscalPeriod.js +96 -0
  20. package/dist/calendar/calculate/getIsoWeekDate.d.ts +35 -0
  21. package/dist/calendar/calculate/getIsoWeekDate.js +41 -0
  22. package/dist/calendar/calculate/getOrdinalDate.d.ts +25 -0
  23. package/dist/calendar/calculate/getOrdinalDate.js +28 -0
  24. package/dist/calendar/calculate/getQuarter.d.ts +36 -0
  25. package/dist/calendar/calculate/getQuarter.js +64 -0
  26. package/dist/calendar/calculate/index.d.ts +6 -0
  27. package/dist/calendar/calculate/index.js +6 -0
  28. package/dist/calendar/index.d.ts +4 -0
  29. package/dist/calendar/index.js +5 -0
  30. package/dist/calendar/validate/index.d.ts +4 -0
  31. package/dist/calendar/validate/index.js +4 -0
  32. package/dist/calendar/validate/isValidBusinessCalendar.d.ts +31 -0
  33. package/dist/calendar/validate/isValidBusinessCalendar.js +40 -0
  34. package/dist/calendar/validate/isValidFiscalPattern.d.ts +25 -0
  35. package/dist/calendar/validate/isValidFiscalPattern.js +29 -0
  36. package/dist/calendar/validate/isValidRollConvention.d.ts +28 -0
  37. package/dist/calendar/validate/isValidRollConvention.js +38 -0
  38. package/dist/calendar/validate/isValidZoneBucketUnit.d.ts +31 -0
  39. package/dist/calendar/validate/isValidZoneBucketUnit.js +39 -0
  40. package/dist/duration/calculate/durationAs.d.ts +27 -3
  41. package/dist/duration/calculate/durationAs.js +34 -8
  42. package/dist/duration/calculate/getDurationUnit.d.ts +5 -2
  43. package/dist/duration/calculate/getDurationUnit.js +7 -3
  44. package/dist/duration/compare/compareDurations.d.ts +25 -2
  45. package/dist/duration/compare/compareDurations.js +31 -7
  46. package/dist/duration/format/formatDuration.d.ts +14 -5
  47. package/dist/duration/format/formatDuration.js +47 -11
  48. package/dist/duration/index.d.ts +1 -0
  49. package/dist/duration/index.js +2 -0
  50. package/dist/duration/normalize/normalizeDuration.d.ts +33 -6
  51. package/dist/duration/normalize/normalizeDuration.js +41 -12
  52. package/dist/duration/parse/parseDuration.js +4 -0
  53. package/dist/index.d.ts +6 -0
  54. package/dist/index.js +6 -0
  55. package/dist/instant/convert/classifyLocal.d.ts +50 -0
  56. package/dist/instant/convert/classifyLocal.js +60 -0
  57. package/dist/instant/convert/fromOffsetInstant.d.ts +47 -0
  58. package/dist/instant/convert/fromOffsetInstant.js +99 -0
  59. package/dist/instant/convert/index.d.ts +4 -0
  60. package/dist/instant/convert/index.js +4 -0
  61. package/dist/instant/convert/resolveLocal.d.ts +40 -0
  62. package/dist/instant/convert/resolveLocal.js +76 -0
  63. package/dist/instant/convert/toOffsetInstant.d.ts +73 -0
  64. package/dist/instant/convert/toOffsetInstant.js +185 -0
  65. package/dist/instant/index.d.ts +2 -0
  66. package/dist/instant/index.js +3 -0
  67. package/dist/internal/adjustZonedBusinessDays.js +9 -7
  68. package/dist/internal/businessCalendar.d.ts +46 -0
  69. package/dist/internal/businessCalendar.js +230 -0
  70. package/dist/internal/businessDayValues.d.ts +20 -0
  71. package/dist/internal/businessDayValues.js +54 -0
  72. package/dist/internal/calendarDatePairPolicy.d.ts +10 -12
  73. package/dist/internal/calendarDatePairPolicy.js +13 -19
  74. package/dist/internal/calendarDateString.d.ts +32 -58
  75. package/dist/internal/calendarDateString.js +51 -93
  76. package/dist/internal/calendarSystemIds.d.ts +26 -2
  77. package/dist/internal/calendarSystemIds.js +57 -51
  78. package/dist/internal/calendarValueOfDate.d.ts +10 -12
  79. package/dist/internal/calendarValueOfDate.js +22 -20
  80. package/dist/internal/calendarValueOfZoned.d.ts +14 -17
  81. package/dist/internal/calendarValueOfZoned.js +25 -25
  82. package/dist/internal/calendarZonedPairPolicy.d.ts +11 -18
  83. package/dist/internal/calendarZonedPairPolicy.js +14 -25
  84. package/dist/internal/calendarZonedString.d.ts +41 -65
  85. package/dist/internal/calendarZonedString.js +52 -101
  86. package/dist/internal/compareUnixEpochs.d.ts +14 -0
  87. package/dist/internal/compareUnixEpochs.js +25 -0
  88. package/dist/internal/dateTimeUnitHelpers.d.ts +18 -0
  89. package/dist/internal/dateTimeUnitHelpers.js +27 -0
  90. package/dist/internal/dateUnitHelpers.d.ts +39 -1
  91. package/dist/internal/dateUnitHelpers.js +73 -11
  92. package/dist/internal/defaultFractionalDigits.d.ts +14 -0
  93. package/dist/internal/defaultFractionalDigits.js +23 -0
  94. package/dist/internal/differenceRecord.d.ts +32 -0
  95. package/dist/internal/differenceRecord.js +79 -0
  96. package/dist/internal/divisionBoundary.d.ts +19 -0
  97. package/dist/internal/divisionBoundary.js +23 -0
  98. package/dist/internal/durationUntilString.d.ts +1 -1
  99. package/dist/internal/durationUntilString.js +10 -2
  100. package/dist/internal/englishCalendarNames.d.ts +11 -0
  101. package/dist/internal/englishCalendarNames.js +21 -1
  102. package/dist/internal/epochNanoseconds.d.ts +27 -0
  103. package/dist/internal/epochNanoseconds.js +31 -0
  104. package/dist/internal/fiscalCalendar.d.ts +36 -0
  105. package/dist/internal/fiscalCalendar.js +86 -0
  106. package/dist/internal/floorDivide.d.ts +15 -0
  107. package/dist/internal/floorDivide.js +18 -0
  108. package/dist/internal/foreignEpochs.d.ts +134 -0
  109. package/dist/internal/foreignEpochs.js +139 -0
  110. package/dist/internal/formatCalendarDays.d.ts +28 -0
  111. package/dist/internal/formatCalendarDays.js +49 -0
  112. package/dist/internal/formatDateInCalendar.d.ts +14 -39
  113. package/dist/internal/formatDateInCalendar.js +16 -47
  114. package/dist/internal/formatRelativeDuration.d.ts +27 -0
  115. package/dist/internal/formatRelativeDuration.js +45 -0
  116. package/dist/internal/getLocaleFirstDayOfWeek.d.ts +9 -6
  117. package/dist/internal/getLocaleFirstDayOfWeek.js +9 -10
  118. package/dist/internal/getLocaleWeekYearBounds.d.ts +17 -9
  119. package/dist/internal/getLocaleWeekYearBounds.js +45 -26
  120. package/dist/internal/getLocaleWeekendDays.d.ts +9 -18
  121. package/dist/internal/getLocaleWeekendDays.js +9 -5
  122. package/dist/internal/halfOpenIntervals.d.ts +102 -0
  123. package/dist/internal/halfOpenIntervals.js +180 -0
  124. package/dist/internal/hasCalendarAnnotation.d.ts +20 -20
  125. package/dist/internal/hasCalendarAnnotation.js +23 -21
  126. package/dist/internal/hourDurationString.d.ts +16 -0
  127. package/dist/internal/hourDurationString.js +47 -0
  128. package/dist/internal/httpDateFields.d.ts +24 -0
  129. package/dist/internal/httpDateFields.js +86 -0
  130. package/dist/internal/index.d.ts +28 -9
  131. package/dist/internal/index.js +28 -9
  132. package/dist/internal/instantFormatOptions.d.ts +43 -0
  133. package/dist/internal/instantFormatOptions.js +99 -0
  134. package/dist/internal/instantIntervalText.d.ts +20 -0
  135. package/dist/internal/instantIntervalText.js +25 -0
  136. package/dist/internal/instantNanoseconds.d.ts +25 -0
  137. package/dist/internal/instantNanoseconds.js +41 -0
  138. package/dist/internal/intervalCountHelpers.d.ts +16 -10
  139. package/dist/internal/intervalCountHelpers.js +1 -31
  140. package/dist/internal/intervalNanoseconds.d.ts +47 -0
  141. package/dist/internal/intervalNanoseconds.js +86 -0
  142. package/dist/internal/isObject.d.ts +26 -0
  143. package/dist/internal/isObject.js +30 -0
  144. package/dist/internal/isoStringBody.d.ts +40 -0
  145. package/dist/internal/isoStringBody.js +85 -0
  146. package/dist/internal/joinDateTimeConnector.d.ts +1 -1
  147. package/dist/internal/localeWeekInfo.d.ts +34 -0
  148. package/dist/internal/localeWeekInfo.js +27 -0
  149. package/dist/internal/maxPieces.d.ts +41 -0
  150. package/dist/internal/maxPieces.js +53 -0
  151. package/dist/internal/measureNearRangeEnd.d.ts +26 -0
  152. package/dist/internal/measureNearRangeEnd.js +47 -0
  153. package/dist/internal/monthGridWeekRow.d.ts +4 -1
  154. package/dist/internal/monthGridWeekRow.js +3 -0
  155. package/dist/internal/normalizeTimeZone.d.ts +17 -10
  156. package/dist/internal/normalizeTimeZone.js +25 -15
  157. package/dist/internal/patternToken.d.ts +2 -1
  158. package/dist/internal/patternToken.js +10 -4
  159. package/dist/internal/plainDateAdd.d.ts +20 -0
  160. package/dist/internal/plainDateAdd.js +42 -0
  161. package/dist/internal/plainDateUntil.d.ts +21 -0
  162. package/dist/internal/plainDateUntil.js +48 -0
  163. package/dist/internal/plainFormatOptions.d.ts +59 -0
  164. package/dist/internal/plainFormatOptions.js +165 -0
  165. package/dist/internal/resolveDateTimeUnit.d.ts +4 -1
  166. package/dist/internal/resolveDateTimeUnit.js +2 -12
  167. package/dist/internal/resolveDurationRelativeTo.d.ts +28 -22
  168. package/dist/internal/resolveDurationRelativeTo.js +69 -25
  169. package/dist/internal/resolveDurationUnit.d.ts +4 -1
  170. package/dist/internal/resolveDurationUnit.js +2 -11
  171. package/dist/internal/resolveLocale.d.ts +37 -0
  172. package/dist/internal/resolveLocale.js +59 -0
  173. package/dist/internal/resolveManualRoundingOptions.d.ts +23 -0
  174. package/dist/internal/resolveManualRoundingOptions.js +39 -0
  175. package/dist/internal/resolveMinimalDaysInFirstWeek.d.ts +19 -0
  176. package/dist/internal/resolveMinimalDaysInFirstWeek.js +28 -0
  177. package/dist/internal/resolveOverflow.d.ts +6 -0
  178. package/dist/internal/resolveOverflow.js +7 -1
  179. package/dist/internal/resolveReadingTimeZone.d.ts +11 -0
  180. package/dist/internal/resolveReadingTimeZone.js +18 -0
  181. package/dist/internal/resolveUnixIntervalPair.d.ts +30 -0
  182. package/dist/internal/resolveUnixIntervalPair.js +53 -0
  183. package/dist/internal/resolveWeekStartsOn.d.ts +12 -0
  184. package/dist/internal/resolveWeekStartsOn.js +18 -0
  185. package/dist/internal/rfc5322DateTime.d.ts +26 -0
  186. package/dist/internal/rfc5322DateTime.js +176 -0
  187. package/dist/internal/splitStep.d.ts +81 -0
  188. package/dist/internal/splitStep.js +182 -0
  189. package/dist/internal/startOrEndOfUnix.d.ts +26 -0
  190. package/dist/internal/startOrEndOfUnix.js +47 -0
  191. package/dist/internal/startOrEndOfUtc.d.ts +27 -0
  192. package/dist/{utc/calculate → internal}/startOrEndOfUtc.js +45 -24
  193. package/dist/internal/startOrEndOfZoned.d.ts +22 -0
  194. package/dist/internal/startOrEndOfZoned.js +49 -0
  195. package/dist/internal/temporalCompat/calendarDateArithmetic.d.ts +33 -0
  196. package/dist/internal/temporalCompat/calendarDateArithmetic.js +199 -0
  197. package/dist/internal/temporalCompat/calendarDateFromFields.d.ts +36 -0
  198. package/dist/internal/temporalCompat/calendarDateFromFields.js +120 -0
  199. package/dist/internal/temporalCompat/calendarFields.d.ts +25 -0
  200. package/dist/internal/temporalCompat/calendarFields.js +131 -0
  201. package/dist/internal/temporalCompat/capabilities.d.ts +28 -0
  202. package/dist/internal/temporalCompat/capabilities.js +74 -0
  203. package/dist/internal/temporalCompat/fieldSearch.d.ts +21 -0
  204. package/dist/internal/temporalCompat/fieldSearch.js +83 -0
  205. package/dist/internal/temporalCompat/fixedDay.d.ts +25 -0
  206. package/dist/internal/temporalCompat/fixedDay.js +45 -0
  207. package/dist/internal/temporalCompat/hebrewArithmetic.d.ts +19 -0
  208. package/dist/internal/temporalCompat/hebrewArithmetic.js +150 -0
  209. package/dist/internal/temporalCompat/index.d.ts +4 -0
  210. package/dist/internal/temporalCompat/index.js +5 -0
  211. package/dist/internal/temporalCompat/indianArithmetic.d.ts +16 -0
  212. package/dist/internal/temporalCompat/indianArithmetic.js +87 -0
  213. package/dist/internal/temporalCompat/largeMonthSpan.d.ts +19 -0
  214. package/dist/internal/temporalCompat/largeMonthSpan.js +199 -0
  215. package/dist/internal/temporalCompat/nonIsoArithmetic.d.ts +59 -0
  216. package/dist/internal/temporalCompat/nonIsoArithmetic.js +220 -0
  217. package/dist/internal/temporalCompat/readArithmeticModel.d.ts +3 -0
  218. package/dist/internal/temporalCompat/readArithmeticModel.js +284 -0
  219. package/dist/internal/temporalCompat/repros.d.ts +31 -0
  220. package/dist/internal/temporalCompat/repros.js +556 -0
  221. package/dist/internal/toInstantFromUtc.d.ts +10 -0
  222. package/dist/internal/toInstantFromUtc.js +19 -0
  223. package/dist/internal/unixEpochValue.d.ts +166 -0
  224. package/dist/internal/unixEpochValue.js +245 -0
  225. package/dist/internal/unixFormatReference.d.ts +18 -0
  226. package/dist/internal/unixFormatReference.js +44 -0
  227. package/dist/internal/unixZonedDateTime.d.ts +22 -0
  228. package/dist/internal/unixZonedDateTime.js +32 -0
  229. package/dist/internal/utcOffsetString.d.ts +39 -0
  230. package/dist/internal/utcOffsetString.js +75 -0
  231. package/dist/internal/utcZonedDateTime.d.ts +16 -0
  232. package/dist/internal/utcZonedDateTime.js +28 -0
  233. package/dist/internal/zonedBucket.d.ts +91 -0
  234. package/dist/internal/zonedBucket.js +441 -0
  235. package/dist/internal/zonedFormatReference.d.ts +15 -0
  236. package/dist/internal/zonedFormatReference.js +24 -0
  237. package/dist/internal/zonedLocalDates.d.ts +15 -0
  238. package/dist/internal/zonedLocalDates.js +58 -0
  239. package/dist/internal/zonedNowUnitValue.d.ts +24 -0
  240. package/dist/internal/zonedNowUnitValue.js +58 -0
  241. package/dist/internal/zonedWallClock.d.ts +84 -0
  242. package/dist/internal/zonedWallClock.js +427 -0
  243. package/dist/internal/zonedWallClockDifference.d.ts +92 -0
  244. package/dist/internal/zonedWallClockDifference.js +1173 -0
  245. package/dist/internal/zonedWallClockOperations.d.ts +132 -0
  246. package/dist/internal/zonedWallClockOperations.js +553 -0
  247. package/dist/internal/zonelessCalendarDate.d.ts +12 -0
  248. package/dist/internal/zonelessCalendarDate.js +22 -0
  249. package/dist/interval/calculate/clampInterval.d.ts +22 -0
  250. package/dist/interval/calculate/clampInterval.js +31 -0
  251. package/dist/interval/calculate/index.d.ts +6 -0
  252. package/dist/interval/calculate/index.js +6 -0
  253. package/dist/interval/calculate/intersectIntervals.d.ts +23 -0
  254. package/dist/interval/calculate/intersectIntervals.js +43 -0
  255. package/dist/interval/calculate/mergeIntervals.d.ts +28 -0
  256. package/dist/interval/calculate/mergeIntervals.js +44 -0
  257. package/dist/interval/calculate/splitIntervalAt.d.ts +28 -0
  258. package/dist/interval/calculate/splitIntervalAt.js +63 -0
  259. package/dist/interval/calculate/subtractIntervals.d.ts +31 -0
  260. package/dist/interval/calculate/subtractIntervals.js +64 -0
  261. package/dist/interval/calculate/sumIntervals.d.ts +26 -0
  262. package/dist/interval/calculate/sumIntervals.js +40 -0
  263. package/dist/interval/compare/index.d.ts +2 -0
  264. package/dist/interval/compare/index.js +2 -0
  265. package/dist/interval/compare/intervalContains.d.ts +25 -0
  266. package/dist/interval/compare/intervalContains.js +39 -0
  267. package/dist/interval/compare/intervalsOverlap.d.ts +28 -0
  268. package/dist/interval/compare/intervalsOverlap.js +42 -0
  269. package/dist/interval/index.d.ts +4 -0
  270. package/dist/interval/index.js +5 -0
  271. package/dist/interval/validate/index.d.ts +1 -0
  272. package/dist/interval/validate/index.js +1 -0
  273. package/dist/interval/validate/isValidInterval.d.ts +29 -0
  274. package/dist/interval/validate/isValidInterval.js +38 -0
  275. package/dist/plain/calculate/addBusinessDays.d.ts +26 -9
  276. package/dist/plain/calculate/addBusinessDays.js +29 -21
  277. package/dist/plain/calculate/addDate.d.ts +9 -8
  278. package/dist/plain/calculate/addDate.js +35 -22
  279. package/dist/plain/calculate/addDateTime.js +24 -10
  280. package/dist/plain/calculate/addTime.d.ts +5 -8
  281. package/dist/plain/calculate/addTime.js +23 -16
  282. package/dist/plain/calculate/clampDate.js +3 -3
  283. package/dist/plain/calculate/closestDateTo.d.ts +11 -7
  284. package/dist/plain/calculate/closestDateTo.js +36 -24
  285. package/dist/plain/calculate/cycleDate.d.ts +1 -1
  286. package/dist/plain/calculate/cycleDate.js +10 -3
  287. package/dist/plain/calculate/cycleDateTime.d.ts +1 -1
  288. package/dist/plain/calculate/cycleDateTime.js +10 -3
  289. package/dist/plain/calculate/cycleTime.d.ts +6 -8
  290. package/dist/plain/calculate/cycleTime.js +15 -9
  291. package/dist/plain/calculate/diffDate.d.ts +31 -14
  292. package/dist/plain/calculate/diffDate.js +73 -38
  293. package/dist/plain/calculate/diffDateAsDuration.d.ts +13 -8
  294. package/dist/plain/calculate/diffDateAsDuration.js +23 -10
  295. package/dist/plain/calculate/diffDateTime.d.ts +17 -5
  296. package/dist/plain/calculate/diffDateTime.js +67 -28
  297. package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +2 -2
  298. package/dist/plain/calculate/diffDateTimeAsDuration.js +10 -3
  299. package/dist/plain/calculate/diffTime.d.ts +18 -5
  300. package/dist/plain/calculate/diffTime.js +68 -27
  301. package/dist/plain/calculate/endOfDate.d.ts +10 -2
  302. package/dist/plain/calculate/endOfDate.js +52 -27
  303. package/dist/plain/calculate/endOfDateTime.d.ts +17 -2
  304. package/dist/plain/calculate/endOfDateTime.js +126 -103
  305. package/dist/plain/calculate/endOfTime.d.ts +16 -2
  306. package/dist/plain/calculate/endOfTime.js +77 -59
  307. package/dist/plain/calculate/getLargestDateDurationUnit.d.ts +13 -5
  308. package/dist/plain/calculate/getLargestDateDurationUnit.js +26 -10
  309. package/dist/plain/calculate/getLargestDateTimeDurationUnit.d.ts +13 -6
  310. package/dist/plain/calculate/getLargestDateTimeDurationUnit.js +37 -22
  311. package/dist/plain/calculate/getLargestTimeDurationUnit.d.ts +13 -6
  312. package/dist/plain/calculate/getLargestTimeDurationUnit.js +33 -18
  313. package/dist/plain/calculate/getLocaleDayOfWeek.d.ts +8 -4
  314. package/dist/plain/calculate/getLocaleDayOfWeek.js +8 -3
  315. package/dist/plain/calculate/getLocaleEndOfWeek.d.ts +8 -4
  316. package/dist/plain/calculate/getLocaleEndOfWeek.js +8 -3
  317. package/dist/plain/calculate/getLocaleStartOfWeek.d.ts +8 -4
  318. package/dist/plain/calculate/getLocaleStartOfWeek.js +8 -3
  319. package/dist/plain/calculate/getLocaleWeekYear.d.ts +29 -19
  320. package/dist/plain/calculate/getLocaleWeekYear.js +48 -28
  321. package/dist/plain/calculate/getWeekNumber.d.ts +21 -2
  322. package/dist/plain/calculate/getWeekNumber.js +33 -12
  323. package/dist/plain/calculate/getWeekOfMonth.d.ts +4 -2
  324. package/dist/plain/calculate/getWeekOfMonth.js +8 -3
  325. package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +25 -14
  326. package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +45 -25
  327. package/dist/plain/calculate/getWeeksInMonth.d.ts +4 -2
  328. package/dist/plain/calculate/getWeeksInMonth.js +8 -3
  329. package/dist/plain/calculate/getWeeksInYear.d.ts +5 -4
  330. package/dist/plain/calculate/getWeeksInYear.js +9 -14
  331. package/dist/plain/calculate/index.d.ts +2 -1
  332. package/dist/plain/calculate/index.js +2 -1
  333. package/dist/plain/calculate/maxDate.js +19 -12
  334. package/dist/plain/calculate/maxDateTime.js +19 -12
  335. package/dist/plain/calculate/maxTime.js +19 -12
  336. package/dist/plain/calculate/minDate.js +19 -12
  337. package/dist/plain/calculate/minDateTime.js +19 -12
  338. package/dist/plain/calculate/minTime.js +19 -12
  339. package/dist/plain/calculate/nextWeekday.js +5 -0
  340. package/dist/plain/calculate/previousWeekday.js +5 -0
  341. package/dist/plain/calculate/roundDate.d.ts +23 -5
  342. package/dist/plain/calculate/roundDate.js +88 -46
  343. package/dist/plain/calculate/roundDateTime.d.ts +27 -3
  344. package/dist/plain/calculate/roundDateTime.js +128 -69
  345. package/dist/plain/calculate/roundTime.d.ts +8 -1
  346. package/dist/plain/calculate/roundTime.js +32 -17
  347. package/dist/plain/calculate/setDate.js +4 -0
  348. package/dist/plain/calculate/setDateTime.js +4 -0
  349. package/dist/plain/calculate/setTime.d.ts +1 -1
  350. package/dist/plain/calculate/setTime.js +5 -1
  351. package/dist/plain/calculate/sortDateTimes.js +17 -10
  352. package/dist/plain/calculate/sortDates.js +17 -10
  353. package/dist/plain/calculate/sortTimes.js +17 -10
  354. package/dist/plain/calculate/startOfDate.d.ts +7 -2
  355. package/dist/plain/calculate/startOfDate.js +52 -27
  356. package/dist/plain/calculate/startOfDateTime.d.ts +5 -2
  357. package/dist/plain/calculate/startOfDateTime.js +81 -62
  358. package/dist/plain/calculate/startOfQuarterForDateTime.d.ts +2 -0
  359. package/dist/plain/calculate/startOfQuarterForDateTime.js +12 -1
  360. package/dist/plain/calculate/startOfTime.d.ts +15 -2
  361. package/dist/plain/calculate/startOfTime.js +33 -37
  362. package/dist/plain/calculate/subtractBusinessDays.d.ts +25 -10
  363. package/dist/plain/calculate/subtractBusinessDays.js +28 -22
  364. package/dist/plain/calculate/subtractDate.d.ts +8 -7
  365. package/dist/plain/calculate/subtractDate.js +35 -21
  366. package/dist/plain/calculate/subtractDateTime.js +24 -10
  367. package/dist/plain/calculate/subtractTime.d.ts +5 -8
  368. package/dist/plain/calculate/subtractTime.js +23 -16
  369. package/dist/plain/calculate/{weekOfYear.d.ts → weekOfYearForDate.d.ts} +0 -14
  370. package/dist/plain/calculate/weekOfYearForDate.js +28 -0
  371. package/dist/plain/calculate/weekOfYearForDateTime.d.ts +14 -0
  372. package/dist/plain/calculate/{weekOfYear.js → weekOfYearForDateTime.js} +1 -27
  373. package/dist/plain/chop/index.d.ts +0 -1
  374. package/dist/plain/chop/index.js +0 -1
  375. package/dist/plain/compare/areDateTimesEqualBy.d.ts +10 -5
  376. package/dist/plain/compare/areDateTimesEqualBy.js +35 -10
  377. package/dist/plain/compare/areDatesEqualBy.d.ts +10 -3
  378. package/dist/plain/compare/areDatesEqualBy.js +41 -14
  379. package/dist/plain/compare/isBetweenDate.js +32 -16
  380. package/dist/plain/compare/isBetweenDateTime.js +34 -18
  381. package/dist/plain/compare/isBetweenTime.js +32 -16
  382. package/dist/plain/compare/isBusinessDay.d.ts +25 -11
  383. package/dist/plain/compare/isBusinessDay.js +36 -15
  384. package/dist/plain/compare/isThisUnit.d.ts +13 -4
  385. package/dist/plain/compare/isThisUnit.js +33 -13
  386. package/dist/plain/compare/isWeekend.d.ts +8 -4
  387. package/dist/plain/compare/isWeekend.js +7 -3
  388. package/dist/plain/convert/convertDateToCalendar.d.ts +34 -33
  389. package/dist/plain/convert/convertDateToCalendar.js +41 -40
  390. package/dist/plain/format/formatCalendar.d.ts +14 -8
  391. package/dist/plain/format/formatCalendar.js +47 -25
  392. package/dist/plain/format/formatDate.d.ts +22 -4
  393. package/dist/plain/format/formatDate.js +37 -5
  394. package/dist/plain/format/formatDateRange.d.ts +18 -4
  395. package/dist/plain/format/formatDateRange.js +29 -5
  396. package/dist/plain/format/formatDateTime.d.ts +23 -4
  397. package/dist/plain/format/formatDateTime.js +31 -5
  398. package/dist/plain/format/formatDateTimeRange.d.ts +21 -4
  399. package/dist/plain/format/formatDateTimeRange.js +29 -5
  400. package/dist/plain/format/formatDateTimeToParts.d.ts +33 -6
  401. package/dist/plain/format/formatDateTimeToParts.js +40 -14
  402. package/dist/plain/format/formatDateToParts.d.ts +25 -3
  403. package/dist/plain/format/formatDateToParts.js +36 -11
  404. package/dist/plain/format/formatRelativeDate.d.ts +10 -17
  405. package/dist/plain/format/formatRelativeDate.js +39 -24
  406. package/dist/plain/format/formatRelativeDateTime.d.ts +18 -20
  407. package/dist/plain/format/formatRelativeDateTime.js +35 -33
  408. package/dist/plain/format/formatRelativeTime.d.ts +11 -18
  409. package/dist/plain/format/formatRelativeTime.js +36 -21
  410. package/dist/plain/format/formatSql.d.ts +15 -10
  411. package/dist/plain/format/formatSql.js +20 -11
  412. package/dist/plain/format/formatTime.d.ts +19 -4
  413. package/dist/plain/format/formatTime.js +32 -5
  414. package/dist/plain/get/getNowUnit.d.ts +5 -3
  415. package/dist/plain/get/getNowUnit.js +14 -29
  416. package/dist/plain/index.js +1 -1
  417. package/dist/plain/interval/intervalAbutsDate.d.ts +12 -7
  418. package/dist/plain/interval/intervalAbutsDate.js +15 -19
  419. package/dist/plain/interval/intervalAbutsDateTime.d.ts +9 -7
  420. package/dist/plain/interval/intervalAbutsDateTime.js +17 -23
  421. package/dist/plain/interval/intervalAbutsTime.d.ts +11 -5
  422. package/dist/plain/interval/intervalAbutsTime.js +19 -21
  423. package/dist/plain/interval/intervalContainsDate.d.ts +17 -10
  424. package/dist/plain/interval/intervalContainsDate.js +20 -15
  425. package/dist/plain/interval/intervalContainsDateTime.d.ts +16 -11
  426. package/dist/plain/interval/intervalContainsDateTime.js +24 -20
  427. package/dist/plain/interval/intervalContainsTime.d.ts +20 -10
  428. package/dist/plain/interval/intervalContainsTime.js +28 -19
  429. package/dist/plain/interval/intervalCountDate.d.ts +13 -8
  430. package/dist/plain/interval/intervalCountDate.js +46 -14
  431. package/dist/plain/interval/intervalCountDateTime.d.ts +6 -4
  432. package/dist/plain/interval/intervalCountDateTime.js +63 -18
  433. package/dist/plain/interval/intervalCountTime.d.ts +3 -4
  434. package/dist/plain/interval/intervalCountTime.js +9 -9
  435. package/dist/plain/interval/intervalDifferenceDate.d.ts +13 -6
  436. package/dist/plain/interval/intervalDifferenceDate.js +19 -32
  437. package/dist/plain/interval/intervalDifferenceDateTime.d.ts +10 -4
  438. package/dist/plain/interval/intervalDifferenceDateTime.js +21 -27
  439. package/dist/plain/interval/intervalDifferenceTime.d.ts +11 -4
  440. package/dist/plain/interval/intervalDifferenceTime.js +22 -27
  441. package/dist/plain/interval/intervalDivideEquallyDate.d.ts +16 -4
  442. package/dist/plain/interval/intervalDivideEquallyDate.js +57 -33
  443. package/dist/plain/interval/intervalDivideEquallyDateTime.d.ts +16 -4
  444. package/dist/plain/interval/intervalDivideEquallyDateTime.js +67 -31
  445. package/dist/plain/interval/intervalDivideEquallyTime.d.ts +16 -4
  446. package/dist/plain/interval/intervalDivideEquallyTime.js +58 -31
  447. package/dist/plain/interval/intervalEngulfsDate.d.ts +16 -9
  448. package/dist/plain/interval/intervalEngulfsDate.js +19 -12
  449. package/dist/plain/interval/intervalEngulfsDateTime.d.ts +16 -11
  450. package/dist/plain/interval/intervalEngulfsDateTime.js +24 -18
  451. package/dist/plain/interval/intervalEngulfsTime.d.ts +18 -8
  452. package/dist/plain/interval/intervalEngulfsTime.js +26 -15
  453. package/dist/plain/interval/intervalFromDurationDate.d.ts +5 -4
  454. package/dist/plain/interval/intervalFromDurationDate.js +11 -8
  455. package/dist/plain/interval/intervalFromDurationDateTime.js +4 -0
  456. package/dist/plain/interval/intervalFromDurationTime.d.ts +10 -12
  457. package/dist/plain/interval/intervalFromDurationTime.js +28 -17
  458. package/dist/plain/interval/intervalIntersectionDate.d.ts +9 -4
  459. package/dist/plain/interval/intervalIntersectionDate.js +14 -9
  460. package/dist/plain/interval/intervalIntersectionDateTime.d.ts +9 -4
  461. package/dist/plain/interval/intervalIntersectionDateTime.js +19 -13
  462. package/dist/plain/interval/intervalIntersectionTime.d.ts +7 -3
  463. package/dist/plain/interval/intervalIntersectionTime.js +17 -12
  464. package/dist/plain/interval/intervalLengthDate.d.ts +9 -6
  465. package/dist/plain/interval/intervalLengthDate.js +40 -8
  466. package/dist/plain/interval/intervalLengthDateTime.js +2 -2
  467. package/dist/plain/interval/intervalOverlappingDaysDate.d.ts +16 -17
  468. package/dist/plain/interval/intervalOverlappingDaysDate.js +30 -30
  469. package/dist/plain/interval/intervalOverlappingDaysDateTime.d.ts +7 -12
  470. package/dist/plain/interval/intervalOverlappingDaysDateTime.js +24 -24
  471. package/dist/plain/interval/intervalSplitAtDate.d.ts +10 -5
  472. package/dist/plain/interval/intervalSplitAtDate.js +48 -36
  473. package/dist/plain/interval/intervalSplitAtDateTime.d.ts +9 -4
  474. package/dist/plain/interval/intervalSplitAtDateTime.js +44 -32
  475. package/dist/plain/interval/intervalSplitAtTime.d.ts +9 -4
  476. package/dist/plain/interval/intervalSplitAtTime.js +44 -32
  477. package/dist/plain/interval/intervalUnionDate.d.ts +14 -6
  478. package/dist/plain/interval/intervalUnionDate.js +19 -11
  479. package/dist/plain/interval/intervalUnionDateTime.d.ts +12 -5
  480. package/dist/plain/interval/intervalUnionDateTime.js +22 -14
  481. package/dist/plain/interval/intervalUnionTime.d.ts +10 -3
  482. package/dist/plain/interval/intervalUnionTime.js +20 -12
  483. package/dist/plain/interval/intervalXorAllDate.d.ts +11 -10
  484. package/dist/plain/interval/intervalXorAllDate.js +37 -59
  485. package/dist/plain/interval/intervalXorAllDateTime.d.ts +7 -5
  486. package/dist/plain/interval/intervalXorAllDateTime.js +28 -48
  487. package/dist/plain/interval/intervalXorAllTime.d.ts +8 -4
  488. package/dist/plain/interval/intervalXorAllTime.js +29 -47
  489. package/dist/plain/interval/intervalXorDate.d.ts +10 -9
  490. package/dist/plain/interval/intervalXorDate.js +19 -54
  491. package/dist/plain/interval/intervalXorDateTime.d.ts +9 -7
  492. package/dist/plain/interval/intervalXorDateTime.js +23 -50
  493. package/dist/plain/interval/intervalXorTime.d.ts +8 -7
  494. package/dist/plain/interval/intervalXorTime.js +22 -50
  495. package/dist/plain/interval/intervalsOverlapDate.d.ts +14 -7
  496. package/dist/plain/interval/intervalsOverlapDate.js +17 -10
  497. package/dist/plain/interval/intervalsOverlapDateTime.d.ts +12 -7
  498. package/dist/plain/interval/intervalsOverlapDateTime.js +20 -14
  499. package/dist/plain/interval/intervalsOverlapTime.d.ts +10 -5
  500. package/dist/plain/interval/intervalsOverlapTime.js +18 -12
  501. package/dist/plain/interval/mergeIntervalsDate.d.ts +9 -5
  502. package/dist/plain/interval/mergeIntervalsDate.js +37 -38
  503. package/dist/plain/interval/mergeIntervalsDateTime.d.ts +7 -3
  504. package/dist/plain/interval/mergeIntervalsDateTime.js +31 -32
  505. package/dist/plain/interval/mergeIntervalsTime.d.ts +7 -3
  506. package/dist/plain/interval/mergeIntervalsTime.js +31 -31
  507. package/dist/plain/interval/splitIntervalByUnitDate.d.ts +26 -6
  508. package/dist/plain/interval/splitIntervalByUnitDate.js +76 -43
  509. package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +22 -2
  510. package/dist/plain/interval/splitIntervalByUnitDateTime.js +65 -39
  511. package/dist/plain/interval/splitIntervalByUnitTime.d.ts +18 -2
  512. package/dist/plain/interval/splitIntervalByUnitTime.js +76 -39
  513. package/dist/plain/interval/validate/isValidDateInterval.d.ts +4 -2
  514. package/dist/plain/interval/validate/isValidDateInterval.js +4 -2
  515. package/dist/plain/interval/validate/isValidDateTimeInterval.d.ts +5 -0
  516. package/dist/plain/interval/validate/isValidDateTimeInterval.js +7 -2
  517. package/dist/plain/interval/validate/isValidTimeInterval.d.ts +5 -0
  518. package/dist/plain/interval/validate/isValidTimeInterval.js +8 -18
  519. package/dist/plain/locale/getLocaleEraNames.d.ts +14 -4
  520. package/dist/plain/locale/getLocaleEraNames.js +56 -41
  521. package/dist/plain/locale/getLocaleMeridiems.d.ts +7 -4
  522. package/dist/plain/locale/getLocaleMeridiems.js +28 -22
  523. package/dist/plain/locale/getLocaleMonthNames.d.ts +14 -4
  524. package/dist/plain/locale/getLocaleMonthNames.js +34 -19
  525. package/dist/plain/locale/getLocaleWeekdayNames.d.ts +14 -7
  526. package/dist/plain/locale/getLocaleWeekdayNames.js +40 -22
  527. package/dist/plain/map/mapDatesInRange.d.ts +18 -1
  528. package/dist/plain/map/mapDatesInRange.js +53 -17
  529. package/dist/plain/parse/parseDateTimeWithPattern.d.ts +3 -2
  530. package/dist/plain/parse/parseDateTimeWithPattern.js +30 -24
  531. package/dist/plain/parse/parseDateWithPattern.d.ts +3 -2
  532. package/dist/plain/parse/parseDateWithPattern.js +22 -16
  533. package/dist/plain/parse/parseMicrosecondFromDateTime.d.ts +2 -1
  534. package/dist/plain/parse/parseMicrosecondFromDateTime.js +2 -1
  535. package/dist/plain/parse/parseMicrosecondFromTime.d.ts +2 -1
  536. package/dist/plain/parse/parseMicrosecondFromTime.js +2 -1
  537. package/dist/plain/parse/parseNanosecondFromDateTime.d.ts +2 -1
  538. package/dist/plain/parse/parseNanosecondFromDateTime.js +2 -1
  539. package/dist/plain/parse/parseNanosecondFromTime.d.ts +2 -1
  540. package/dist/plain/parse/parseNanosecondFromTime.js +2 -1
  541. package/dist/plain/parse/parseSql.d.ts +15 -12
  542. package/dist/plain/parse/parseSql.js +16 -13
  543. package/dist/plain/parse/parseTimeWithPattern.d.ts +3 -2
  544. package/dist/plain/parse/parseTimeWithPattern.js +27 -21
  545. package/dist/plain/parse/parseUnitFromDate.d.ts +9 -2
  546. package/dist/plain/parse/parseUnitFromDate.js +39 -19
  547. package/dist/plain/parse/parseUnitFromDateTime.d.ts +11 -3
  548. package/dist/plain/parse/parseUnitFromDateTime.js +54 -28
  549. package/dist/plain/parse/parseUnitFromTime.d.ts +9 -3
  550. package/dist/plain/parse/parseUnitFromTime.js +13 -3
  551. package/dist/plain/parse/parseWeekFromDate.d.ts +5 -0
  552. package/dist/plain/parse/parseWeekFromDate.js +24 -5
  553. package/dist/plain/parse/parseWeekFromDateTime.d.ts +5 -0
  554. package/dist/plain/parse/parseWeekFromDateTime.js +26 -5
  555. package/dist/plain/validate/isLeapSecond.d.ts +27 -9
  556. package/dist/plain/validate/isLeapSecond.js +30 -9
  557. package/dist/plain/validate/isLeapYear.d.ts +7 -1
  558. package/dist/plain/validate/isLeapYear.js +10 -1
  559. package/dist/plain/validate/isValidCalendarDate.d.ts +37 -6
  560. package/dist/plain/validate/isValidCalendarDate.js +37 -6
  561. package/dist/plain/validate/isValidDate.d.ts +9 -1
  562. package/dist/plain/validate/isValidDate.js +14 -5
  563. package/dist/plain/validate/isValidDateRange.d.ts +11 -4
  564. package/dist/plain/validate/isValidDateRange.js +32 -22
  565. package/dist/plain/validate/isValidDateTime.d.ts +7 -1
  566. package/dist/plain/validate/isValidDateTime.js +12 -5
  567. package/dist/plain/validate/isValidDateTimeRange.d.ts +3 -2
  568. package/dist/plain/validate/isValidDateTimeRange.js +30 -15
  569. package/dist/plain/validate/isValidIsoDateLike.d.ts +6 -1
  570. package/dist/plain/validate/isValidIsoDateLike.js +13 -8
  571. package/dist/plain/validate/isValidTime.d.ts +6 -1
  572. package/dist/plain/validate/isValidTime.js +10 -3
  573. package/dist/plain/validate/isValidTimeRange.d.ts +4 -2
  574. package/dist/plain/validate/isValidTimeRange.js +31 -27
  575. package/dist/precision/calculate/index.d.ts +1 -0
  576. package/dist/precision/calculate/index.js +1 -0
  577. package/dist/precision/calculate/truncateNanoseconds.d.ts +37 -0
  578. package/dist/precision/calculate/truncateNanoseconds.js +41 -0
  579. package/dist/precision/convert/fromDotNetTicks.d.ts +30 -0
  580. package/dist/precision/convert/fromDotNetTicks.js +39 -0
  581. package/dist/precision/convert/fromExcelSerial.d.ts +38 -0
  582. package/dist/precision/convert/fromExcelSerial.js +81 -0
  583. package/dist/precision/convert/fromFileTime.d.ts +30 -0
  584. package/dist/precision/convert/fromFileTime.js +39 -0
  585. package/dist/precision/convert/fromNanoseconds.d.ts +29 -0
  586. package/dist/precision/convert/fromNanoseconds.js +50 -0
  587. package/dist/precision/convert/fromNtpTimestamp.d.ts +43 -0
  588. package/dist/precision/convert/fromNtpTimestamp.js +57 -0
  589. package/dist/precision/convert/fromPgMicroseconds.d.ts +26 -0
  590. package/dist/precision/convert/fromPgMicroseconds.js +33 -0
  591. package/dist/precision/convert/index.d.ts +12 -0
  592. package/dist/precision/convert/index.js +12 -0
  593. package/dist/precision/convert/toDotNetTicks.d.ts +29 -0
  594. package/dist/precision/convert/toDotNetTicks.js +40 -0
  595. package/dist/precision/convert/toExcelSerial.d.ts +56 -0
  596. package/dist/precision/convert/toExcelSerial.js +85 -0
  597. package/dist/precision/convert/toFileTime.d.ts +31 -0
  598. package/dist/precision/convert/toFileTime.js +43 -0
  599. package/dist/precision/convert/toNanoseconds.d.ts +37 -0
  600. package/dist/precision/convert/toNanoseconds.js +40 -0
  601. package/dist/precision/convert/toNtpTimestamp.d.ts +30 -0
  602. package/dist/precision/convert/toNtpTimestamp.js +38 -0
  603. package/dist/precision/convert/toPgMicroseconds.d.ts +29 -0
  604. package/dist/precision/convert/toPgMicroseconds.js +42 -0
  605. package/dist/precision/format/formatNanoseconds.d.ts +26 -0
  606. package/dist/precision/format/formatNanoseconds.js +32 -0
  607. package/dist/precision/format/index.d.ts +1 -0
  608. package/dist/precision/format/index.js +1 -0
  609. package/dist/precision/index.d.ts +6 -0
  610. package/dist/precision/index.js +7 -0
  611. package/dist/precision/parse/index.d.ts +1 -0
  612. package/dist/precision/parse/index.js +1 -0
  613. package/dist/precision/parse/parseNanoseconds.d.ts +27 -0
  614. package/dist/precision/parse/parseNanoseconds.js +32 -0
  615. package/dist/precision/validate/index.d.ts +3 -0
  616. package/dist/precision/validate/index.js +3 -0
  617. package/dist/precision/validate/isValidInstant.d.ts +37 -0
  618. package/dist/precision/validate/isValidInstant.js +40 -0
  619. package/dist/precision/validate/isValidNanoPattern.d.ts +27 -0
  620. package/dist/precision/validate/isValidNanoPattern.js +40 -0
  621. package/dist/precision/validate/isValidNanoseconds.d.ts +25 -0
  622. package/dist/precision/validate/isValidNanoseconds.js +28 -0
  623. package/dist/regex/calendar-date.d.ts +30 -0
  624. package/dist/regex/calendar-date.js +31 -11
  625. package/dist/regex/calendar-zoned-date-time.d.ts +29 -0
  626. package/dist/regex/calendar-zoned-date-time.js +30 -41
  627. package/dist/regex/date-time.d.ts +28 -0
  628. package/dist/regex/date-time.js +29 -2
  629. package/dist/regex/date.d.ts +58 -0
  630. package/dist/regex/date.js +60 -3
  631. package/dist/regex/http-date.d.ts +19 -0
  632. package/dist/regex/http-date.js +19 -6
  633. package/dist/regex/index.d.ts +3 -0
  634. package/dist/regex/index.js +4 -0
  635. package/dist/regex/leap-second.d.ts +45 -0
  636. package/dist/regex/leap-second.js +46 -2
  637. package/dist/regex/nanoseconds.d.ts +20 -0
  638. package/dist/regex/nanoseconds.js +20 -0
  639. package/dist/regex/rfc-2822.d.ts +26 -0
  640. package/dist/regex/rfc-2822.js +26 -8
  641. package/dist/regex/rfc-3339.d.ts +26 -0
  642. package/dist/regex/rfc-3339.js +27 -7
  643. package/dist/regex/sql-date-time.d.ts +33 -0
  644. package/dist/regex/sql-date-time.js +34 -7
  645. package/dist/regex/time-zone-like.d.ts +30 -0
  646. package/dist/regex/time-zone-like.js +31 -1
  647. package/dist/regex/time.d.ts +73 -0
  648. package/dist/regex/time.js +73 -3
  649. package/dist/regex/unix.d.ts +29 -0
  650. package/dist/regex/unix.js +29 -0
  651. package/dist/regex/utc-date-time.d.ts +30 -0
  652. package/dist/regex/utc-date-time.js +31 -2
  653. package/dist/regex/utc-offset.d.ts +24 -0
  654. package/dist/regex/utc-offset.js +24 -0
  655. package/dist/span/calculate/index.d.ts +3 -0
  656. package/dist/span/calculate/index.js +3 -0
  657. package/dist/span/calculate/spanMs.d.ts +52 -0
  658. package/dist/span/calculate/spanMs.js +80 -0
  659. package/dist/span/calculate/spanNs.d.ts +43 -0
  660. package/dist/span/calculate/spanNs.js +51 -0
  661. package/dist/span/calculate/spanWallClock.d.ts +60 -0
  662. package/dist/span/calculate/spanWallClock.js +80 -0
  663. package/dist/span/index.d.ts +3 -0
  664. package/dist/span/index.js +4 -0
  665. package/dist/span/validate/index.d.ts +1 -0
  666. package/dist/span/validate/index.js +1 -0
  667. package/dist/span/validate/isValidSpan.d.ts +37 -0
  668. package/dist/span/validate/isValidSpan.js +41 -0
  669. package/dist/types/business-calendar.d.ts +27 -0
  670. package/dist/types/business-calendar.js +0 -0
  671. package/dist/types/calendar-options.d.ts +11 -0
  672. package/dist/types/calendar-options.js +0 -0
  673. package/dist/types/calendar-system.d.ts +9 -1
  674. package/dist/types/datetime-format-options.d.ts +6 -0
  675. package/dist/types/datetime-format-options.js +0 -0
  676. package/dist/types/duration-unit.d.ts +5 -0
  677. package/dist/types/duration-unit.js +0 -0
  678. package/dist/types/fiscal-calendar.d.ts +22 -0
  679. package/dist/types/fiscal-calendar.js +0 -0
  680. package/dist/types/index.d.ts +17 -0
  681. package/dist/types/index.js +16 -0
  682. package/dist/types/interval.d.ts +18 -0
  683. package/dist/types/interval.js +0 -0
  684. package/dist/types/now-unit.d.ts +5 -0
  685. package/dist/types/now-unit.js +0 -0
  686. package/dist/types/relative-date-time-unit.d.ts +6 -0
  687. package/dist/types/relative-date-time-unit.js +0 -0
  688. package/dist/types/relative-date-unit.d.ts +5 -0
  689. package/dist/types/relative-date-unit.js +0 -0
  690. package/dist/types/relative-time-options.d.ts +18 -0
  691. package/dist/types/relative-time-options.js +0 -0
  692. package/dist/types/relative-time-unit.d.ts +5 -0
  693. package/dist/types/relative-time-unit.js +0 -0
  694. package/dist/types/relative-unit.d.ts +6 -0
  695. package/dist/types/relative-unit.js +0 -0
  696. package/dist/types/roll-convention.d.ts +32 -0
  697. package/dist/types/roll-convention.js +0 -0
  698. package/dist/types/unix-now-unit.d.ts +5 -0
  699. package/dist/types/unix-now-unit.js +0 -0
  700. package/dist/types/utc-now-unit.d.ts +5 -0
  701. package/dist/types/utc-now-unit.js +0 -0
  702. package/dist/types/zone-bucket-unit.d.ts +11 -0
  703. package/dist/types/zone-bucket-unit.js +0 -0
  704. package/dist/unix/calculate/addUnix.d.ts +10 -4
  705. package/dist/unix/calculate/addUnix.js +39 -26
  706. package/dist/unix/calculate/diffUnix.d.ts +38 -11
  707. package/dist/unix/calculate/diffUnix.js +84 -40
  708. package/dist/unix/calculate/diffUnixAsDuration.d.ts +17 -7
  709. package/dist/unix/calculate/diffUnixAsDuration.js +42 -23
  710. package/dist/unix/calculate/endOfQuarterForUnix.d.ts +15 -11
  711. package/dist/unix/calculate/endOfQuarterForUnix.js +20 -39
  712. package/dist/unix/calculate/endOfUnix.d.ts +23 -18
  713. package/dist/unix/calculate/endOfUnix.js +37 -15
  714. package/dist/unix/calculate/isBetweenUnix.d.ts +12 -6
  715. package/dist/unix/calculate/isBetweenUnix.js +34 -23
  716. package/dist/unix/calculate/maxUnix.d.ts +6 -3
  717. package/dist/unix/calculate/maxUnix.js +17 -8
  718. package/dist/unix/calculate/minUnix.d.ts +6 -3
  719. package/dist/unix/calculate/minUnix.js +17 -8
  720. package/dist/unix/calculate/roundUnix.d.ts +24 -10
  721. package/dist/unix/calculate/roundUnix.js +67 -42
  722. package/dist/unix/calculate/setUnix.d.ts +14 -5
  723. package/dist/unix/calculate/setUnix.js +48 -29
  724. package/dist/unix/calculate/sortUnix.d.ts +6 -3
  725. package/dist/unix/calculate/sortUnix.js +19 -11
  726. package/dist/unix/calculate/startOfQuarterForUnix.d.ts +17 -12
  727. package/dist/unix/calculate/startOfQuarterForUnix.js +22 -30
  728. package/dist/unix/calculate/startOfUnix.d.ts +23 -18
  729. package/dist/unix/calculate/startOfUnix.js +37 -15
  730. package/dist/unix/calculate/subtractUnix.d.ts +10 -4
  731. package/dist/unix/calculate/subtractUnix.js +39 -26
  732. package/dist/unix/compare/areUnixEqual.d.ts +9 -5
  733. package/dist/unix/compare/areUnixEqual.js +17 -13
  734. package/dist/unix/compare/areUnixEqualBy.d.ts +14 -7
  735. package/dist/unix/compare/areUnixEqualBy.js +14 -7
  736. package/dist/unix/compare/isAfterUnix.d.ts +8 -4
  737. package/dist/unix/compare/isAfterUnix.js +16 -12
  738. package/dist/unix/compare/isBeforeUnix.d.ts +7 -4
  739. package/dist/unix/compare/isBeforeUnix.js +15 -12
  740. package/dist/unix/convert/convertUnixToPlainDate.d.ts +17 -9
  741. package/dist/unix/convert/convertUnixToPlainDate.js +34 -21
  742. package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +15 -9
  743. package/dist/unix/convert/convertUnixToPlainDateTime.js +32 -21
  744. package/dist/unix/convert/convertUnixToPlainTime.d.ts +15 -9
  745. package/dist/unix/convert/convertUnixToPlainTime.js +32 -21
  746. package/dist/unix/convert/convertUnixToUtc.d.ts +15 -7
  747. package/dist/unix/convert/convertUnixToUtc.js +20 -15
  748. package/dist/unix/convert/convertUnixToZoned.d.ts +17 -10
  749. package/dist/unix/convert/convertUnixToZoned.js +31 -20
  750. package/dist/unix/format/formatCalendarUnix.d.ts +35 -6
  751. package/dist/unix/format/formatCalendarUnix.js +35 -81
  752. package/dist/unix/format/formatRelativeUnix.d.ts +26 -16
  753. package/dist/unix/format/formatRelativeUnix.js +46 -93
  754. package/dist/unix/format/formatUnix.d.ts +43 -2
  755. package/dist/unix/format/formatUnix.js +65 -32
  756. package/dist/unix/get/getUnixNow.d.ts +13 -7
  757. package/dist/unix/get/getUnixNow.js +27 -17
  758. package/dist/unix/get/getUnixNowUnit.d.ts +7 -5
  759. package/dist/unix/get/getUnixNowUnit.js +9 -35
  760. package/dist/unix/index.d.ts +1 -0
  761. package/dist/unix/index.js +2 -0
  762. package/dist/unix/interval/intervalAbutsUnix.d.ts +17 -12
  763. package/dist/unix/interval/intervalAbutsUnix.js +23 -41
  764. package/dist/unix/interval/intervalContainsUnix.d.ts +17 -7
  765. package/dist/unix/interval/intervalContainsUnix.js +25 -37
  766. package/dist/unix/interval/intervalCountUnix.d.ts +30 -13
  767. package/dist/unix/interval/intervalCountUnix.js +49 -23
  768. package/dist/unix/interval/intervalDifferenceUnix.d.ts +19 -10
  769. package/dist/unix/interval/intervalDifferenceUnix.js +25 -43
  770. package/dist/unix/interval/intervalDivideEquallyUnix.d.ts +24 -10
  771. package/dist/unix/interval/intervalDivideEquallyUnix.js +57 -36
  772. package/dist/unix/interval/intervalEngulfsUnix.d.ts +13 -7
  773. package/dist/unix/interval/intervalEngulfsUnix.js +18 -30
  774. package/dist/unix/interval/intervalFromDurationUnix.d.ts +10 -6
  775. package/dist/unix/interval/intervalFromDurationUnix.js +51 -39
  776. package/dist/unix/interval/intervalIntersectionUnix.d.ts +18 -11
  777. package/dist/unix/interval/intervalIntersectionUnix.js +25 -46
  778. package/dist/unix/interval/intervalLengthUnix.d.ts +21 -9
  779. package/dist/unix/interval/intervalLengthUnix.js +41 -18
  780. package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +26 -12
  781. package/dist/unix/interval/intervalOverlappingDaysUnix.js +67 -63
  782. package/dist/unix/interval/intervalSplitAtUnix.d.ts +11 -6
  783. package/dist/unix/interval/intervalSplitAtUnix.js +41 -34
  784. package/dist/unix/interval/intervalUnionUnix.d.ts +15 -9
  785. package/dist/unix/interval/intervalUnionUnix.js +20 -42
  786. package/dist/unix/interval/intervalXorAllUnix.d.ts +8 -6
  787. package/dist/unix/interval/intervalXorAllUnix.js +21 -56
  788. package/dist/unix/interval/intervalXorUnix.d.ts +22 -11
  789. package/dist/unix/interval/intervalXorUnix.js +28 -56
  790. package/dist/unix/interval/intervalsOverlapUnix.d.ts +16 -10
  791. package/dist/unix/interval/intervalsOverlapUnix.js +21 -37
  792. package/dist/unix/interval/mergeIntervalsUnix.d.ts +10 -4
  793. package/dist/unix/interval/mergeIntervalsUnix.js +25 -36
  794. package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +38 -8
  795. package/dist/unix/interval/splitIntervalByUnitUnix.js +72 -56
  796. package/dist/unix/interval/validate/isValidUnixInterval.d.ts +12 -6
  797. package/dist/unix/interval/validate/isValidUnixInterval.js +17 -16
  798. package/dist/unix/parse/index.d.ts +2 -0
  799. package/dist/unix/parse/index.js +2 -0
  800. package/dist/unix/parse/parseDateFromUnix.d.ts +10 -8
  801. package/dist/unix/parse/parseDateFromUnix.js +17 -29
  802. package/dist/unix/parse/parseDayFromUnix.d.ts +6 -4
  803. package/dist/unix/parse/parseDayFromUnix.js +18 -5
  804. package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +8 -5
  805. package/dist/unix/parse/parseDayOfWeekFromUnix.js +15 -28
  806. package/dist/unix/parse/parseHourFromUnix.d.ts +6 -4
  807. package/dist/unix/parse/parseHourFromUnix.js +18 -5
  808. package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +4 -2
  809. package/dist/unix/parse/parseMicrosecondFromUnix.js +16 -3
  810. package/dist/unix/parse/parseMillisecondFromUnix.d.ts +4 -2
  811. package/dist/unix/parse/parseMillisecondFromUnix.js +16 -3
  812. package/dist/unix/parse/parseMinuteFromUnix.d.ts +6 -4
  813. package/dist/unix/parse/parseMinuteFromUnix.js +18 -5
  814. package/dist/unix/parse/parseMonthFromUnix.d.ts +6 -4
  815. package/dist/unix/parse/parseMonthFromUnix.js +18 -5
  816. package/dist/unix/parse/parseNanosecondFromUnix.d.ts +8 -5
  817. package/dist/unix/parse/parseNanosecondFromUnix.js +20 -6
  818. package/dist/unix/parse/parseSecondFromUnix.d.ts +5 -3
  819. package/dist/unix/parse/parseSecondFromUnix.js +17 -4
  820. package/dist/unix/parse/parseTimeFromUnix.d.ts +10 -8
  821. package/dist/unix/parse/parseTimeFromUnix.js +17 -29
  822. package/dist/unix/parse/parseUnitFromUnix.d.ts +40 -9
  823. package/dist/unix/parse/parseUnitFromUnix.js +57 -55
  824. package/dist/unix/parse/parseWeekFromUnix.d.ts +15 -7
  825. package/dist/unix/parse/parseWeekFromUnix.js +32 -30
  826. package/dist/unix/parse/parseYearFromUnix.d.ts +5 -3
  827. package/dist/unix/parse/parseYearFromUnix.js +17 -4
  828. package/dist/unix/validate/isValidUnixMilliseconds.d.ts +8 -5
  829. package/dist/unix/validate/isValidUnixMilliseconds.js +10 -9
  830. package/dist/unix/validate/isValidUnixRange.d.ts +13 -7
  831. package/dist/unix/validate/isValidUnixRange.js +29 -19
  832. package/dist/unix/validate/isValidUnixSeconds.d.ts +8 -5
  833. package/dist/unix/validate/isValidUnixSeconds.js +10 -9
  834. package/dist/unix/validate/isValidUnixUnit.d.ts +22 -5
  835. package/dist/unix/validate/isValidUnixUnit.js +6 -8
  836. package/dist/utc/calculate/addUtc.js +26 -12
  837. package/dist/utc/calculate/diffUtc.d.ts +22 -7
  838. package/dist/utc/calculate/diffUtc.js +75 -31
  839. package/dist/utc/calculate/diffUtcAsDuration.d.ts +2 -2
  840. package/dist/utc/calculate/diffUtcAsDuration.js +10 -3
  841. package/dist/utc/calculate/endOfQuarterForUtc.d.ts +1 -1
  842. package/dist/utc/calculate/endOfQuarterForUtc.js +1 -1
  843. package/dist/utc/calculate/endOfUtc.d.ts +11 -4
  844. package/dist/utc/calculate/endOfUtc.js +22 -5
  845. package/dist/utc/calculate/isBetweenUtc.js +40 -24
  846. package/dist/utc/calculate/maxUtc.js +19 -12
  847. package/dist/utc/calculate/minUtc.js +19 -12
  848. package/dist/utc/calculate/roundUtc.d.ts +16 -2
  849. package/dist/utc/calculate/roundUtc.js +42 -31
  850. package/dist/utc/calculate/setUtc.d.ts +4 -8
  851. package/dist/utc/calculate/setUtc.js +25 -18
  852. package/dist/utc/calculate/sortUtc.js +17 -10
  853. package/dist/utc/calculate/startOfQuarterForUtc.d.ts +2 -0
  854. package/dist/utc/calculate/startOfQuarterForUtc.js +12 -1
  855. package/dist/utc/calculate/startOfUtc.d.ts +6 -4
  856. package/dist/utc/calculate/startOfUtc.js +17 -5
  857. package/dist/utc/calculate/subtractUtc.js +26 -12
  858. package/dist/utc/chop/chopUtc.d.ts +5 -2
  859. package/dist/utc/chop/chopUtc.js +8 -4
  860. package/dist/utc/compare/areUtcEqualBy.d.ts +10 -5
  861. package/dist/utc/compare/areUtcEqualBy.js +34 -11
  862. package/dist/utc/convert/convertUtcToPlainDate.js +22 -10
  863. package/dist/utc/convert/convertUtcToPlainDateTime.js +28 -16
  864. package/dist/utc/convert/convertUtcToPlainTime.js +22 -10
  865. package/dist/utc/convert/convertUtcToUnix.d.ts +12 -5
  866. package/dist/utc/convert/convertUtcToUnix.js +22 -13
  867. package/dist/utc/format/formatCalendarUtc.d.ts +13 -8
  868. package/dist/utc/format/formatCalendarUtc.js +32 -41
  869. package/dist/utc/format/formatHttp.d.ts +9 -3
  870. package/dist/utc/format/formatHttp.js +14 -12
  871. package/dist/utc/format/formatRelativeUtc.d.ts +20 -18
  872. package/dist/utc/format/formatRelativeUtc.js +43 -51
  873. package/dist/utc/format/formatUtc.d.ts +51 -1
  874. package/dist/utc/format/formatUtc.js +57 -11
  875. package/dist/utc/get/getUtcNowUnit.d.ts +5 -3
  876. package/dist/utc/get/getUtcNowUnit.js +11 -33
  877. package/dist/utc/index.d.ts +1 -0
  878. package/dist/utc/index.js +2 -0
  879. package/dist/utc/interval/intervalAbutsUtc.d.ts +10 -7
  880. package/dist/utc/interval/intervalAbutsUtc.js +18 -30
  881. package/dist/utc/interval/intervalContainsUtc.d.ts +19 -11
  882. package/dist/utc/interval/intervalContainsUtc.js +33 -34
  883. package/dist/utc/interval/intervalCountUtc.d.ts +3 -4
  884. package/dist/utc/interval/intervalCountUtc.js +12 -18
  885. package/dist/utc/interval/intervalDifferenceUtc.d.ts +13 -5
  886. package/dist/utc/interval/intervalDifferenceUtc.js +25 -51
  887. package/dist/utc/interval/intervalDivideEquallyUtc.d.ts +16 -3
  888. package/dist/utc/interval/intervalDivideEquallyUtc.js +54 -34
  889. package/dist/utc/interval/intervalEngulfsUtc.d.ts +17 -12
  890. package/dist/utc/interval/intervalEngulfsUtc.js +25 -26
  891. package/dist/utc/interval/intervalFromDurationUtc.js +5 -0
  892. package/dist/utc/interval/intervalIntersectionUtc.d.ts +12 -6
  893. package/dist/utc/interval/intervalIntersectionUtc.js +24 -41
  894. package/dist/utc/interval/intervalLengthUtc.js +5 -7
  895. package/dist/utc/interval/intervalOverlappingDaysUtc.d.ts +7 -13
  896. package/dist/utc/interval/intervalOverlappingDaysUtc.js +25 -36
  897. package/dist/utc/interval/intervalSplitAtUtc.d.ts +7 -2
  898. package/dist/utc/interval/intervalSplitAtUtc.js +39 -33
  899. package/dist/utc/interval/intervalUnionUtc.d.ts +15 -7
  900. package/dist/utc/interval/intervalUnionUtc.js +31 -42
  901. package/dist/utc/interval/intervalXorAllUtc.d.ts +7 -4
  902. package/dist/utc/interval/intervalXorAllUtc.js +30 -52
  903. package/dist/utc/interval/intervalXorUtc.d.ts +8 -6
  904. package/dist/utc/interval/intervalXorUtc.js +22 -56
  905. package/dist/utc/interval/intervalsOverlapUtc.d.ts +15 -9
  906. package/dist/utc/interval/intervalsOverlapUtc.js +23 -39
  907. package/dist/utc/interval/mergeIntervalsUtc.d.ts +9 -2
  908. package/dist/utc/interval/mergeIntervalsUtc.js +23 -36
  909. package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +23 -2
  910. package/dist/utc/interval/splitIntervalByUnitUtc.js +65 -44
  911. package/dist/utc/interval/validate/isValidUtcInterval.d.ts +5 -0
  912. package/dist/utc/interval/validate/isValidUtcInterval.js +7 -6
  913. package/dist/utc/parse/parseDateFromUtc.d.ts +7 -1
  914. package/dist/utc/parse/parseDateFromUtc.js +14 -9
  915. package/dist/utc/parse/parseDayFromUtc.d.ts +7 -1
  916. package/dist/utc/parse/parseDayFromUtc.js +14 -8
  917. package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +7 -1
  918. package/dist/utc/parse/parseDayOfWeekFromUtc.js +24 -6
  919. package/dist/utc/parse/parseHourFromUtc.d.ts +7 -1
  920. package/dist/utc/parse/parseHourFromUtc.js +14 -8
  921. package/dist/utc/parse/parseHttp.d.ts +39 -14
  922. package/dist/utc/parse/parseHttp.js +69 -28
  923. package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +9 -2
  924. package/dist/utc/parse/parseMicrosecondFromUtc.js +18 -9
  925. package/dist/utc/parse/parseMillisecondFromUtc.d.ts +7 -1
  926. package/dist/utc/parse/parseMillisecondFromUtc.js +16 -8
  927. package/dist/utc/parse/parseMinuteFromUtc.d.ts +7 -1
  928. package/dist/utc/parse/parseMinuteFromUtc.js +14 -8
  929. package/dist/utc/parse/parseMonthFromUtc.d.ts +7 -1
  930. package/dist/utc/parse/parseMonthFromUtc.js +14 -8
  931. package/dist/utc/parse/parseNanosecondFromUtc.d.ts +9 -2
  932. package/dist/utc/parse/parseNanosecondFromUtc.js +18 -9
  933. package/dist/utc/parse/parseSecondFromUtc.d.ts +7 -1
  934. package/dist/utc/parse/parseSecondFromUtc.js +14 -8
  935. package/dist/utc/parse/parseTimeFromUtc.js +21 -10
  936. package/dist/utc/parse/parseUnitFromUtc.d.ts +39 -5
  937. package/dist/utc/parse/parseUnitFromUtc.js +58 -31
  938. package/dist/utc/parse/parseWeekFromUtc.d.ts +16 -3
  939. package/dist/utc/parse/parseWeekFromUtc.js +38 -10
  940. package/dist/utc/parse/parseYearFromUtc.d.ts +7 -1
  941. package/dist/utc/parse/parseYearFromUtc.js +14 -8
  942. package/dist/utc/validate/isValidUtc.d.ts +8 -1
  943. package/dist/utc/validate/isValidUtc.js +12 -3
  944. package/dist/utc/validate/isValidUtcRange.d.ts +3 -2
  945. package/dist/utc/validate/isValidUtcRange.js +30 -19
  946. package/dist/zoned/calculate/addZoned.d.ts +40 -27
  947. package/dist/zoned/calculate/addZoned.js +71 -56
  948. package/dist/zoned/calculate/addZonedBusinessDays.d.ts +2 -0
  949. package/dist/zoned/calculate/addZonedBusinessDays.js +5 -2
  950. package/dist/zoned/calculate/clampZoned.js +4 -3
  951. package/dist/zoned/calculate/closestZonedTo.d.ts +6 -6
  952. package/dist/zoned/calculate/closestZonedTo.js +35 -26
  953. package/dist/zoned/calculate/cycleZoned.d.ts +10 -7
  954. package/dist/zoned/calculate/cycleZoned.js +19 -11
  955. package/dist/zoned/calculate/diffZoned.d.ts +39 -17
  956. package/dist/zoned/calculate/diffZoned.js +90 -45
  957. package/dist/zoned/calculate/diffZonedAsDuration.d.ts +19 -9
  958. package/dist/zoned/calculate/diffZonedAsDuration.js +32 -15
  959. package/dist/zoned/calculate/endOfQuarterForZoned.d.ts +11 -11
  960. package/dist/zoned/calculate/endOfQuarterForZoned.js +32 -31
  961. package/dist/zoned/calculate/endOfZoned.d.ts +21 -14
  962. package/dist/zoned/calculate/endOfZoned.js +25 -111
  963. package/dist/zoned/calculate/getHoursInZonedDay.d.ts +8 -1
  964. package/dist/zoned/calculate/getHoursInZonedDay.js +10 -14
  965. package/dist/zoned/calculate/getLocaleZonedDayOfWeek.d.ts +8 -4
  966. package/dist/zoned/calculate/getLocaleZonedDayOfWeek.js +9 -6
  967. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +20 -26
  968. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +40 -44
  969. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +16 -24
  970. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +36 -42
  971. package/dist/zoned/calculate/getQuarterForZoned.js +2 -2
  972. package/dist/zoned/calculate/maxZoned.js +20 -12
  973. package/dist/zoned/calculate/minZoned.d.ts +1 -1
  974. package/dist/zoned/calculate/minZoned.js +21 -13
  975. package/dist/zoned/calculate/roundZoned.d.ts +18 -4
  976. package/dist/zoned/calculate/roundZoned.js +58 -33
  977. package/dist/zoned/calculate/setZoned.d.ts +9 -3
  978. package/dist/zoned/calculate/setZoned.js +39 -18
  979. package/dist/zoned/calculate/sortZoned.js +18 -10
  980. package/dist/zoned/calculate/startOfQuarterForZoned.d.ts +4 -7
  981. package/dist/zoned/calculate/startOfQuarterForZoned.js +23 -17
  982. package/dist/zoned/calculate/startOfZoned.d.ts +17 -13
  983. package/dist/zoned/calculate/startOfZoned.js +21 -103
  984. package/dist/zoned/calculate/subtractZoned.d.ts +36 -24
  985. package/dist/zoned/calculate/subtractZoned.js +66 -50
  986. package/dist/zoned/calculate/subtractZonedBusinessDays.d.ts +2 -0
  987. package/dist/zoned/calculate/subtractZonedBusinessDays.js +5 -2
  988. package/dist/zoned/chop/chopZonedDate.js +2 -2
  989. package/dist/zoned/chop/chopZonedDateTime.js +2 -2
  990. package/dist/zoned/chop/chopZonedMilliseconds.js +2 -2
  991. package/dist/zoned/chop/chopZonedSeconds.js +2 -2
  992. package/dist/zoned/chop/chopZonedTime.js +2 -2
  993. package/dist/zoned/chop/chopZonedTimezone.js +2 -2
  994. package/dist/zoned/compare/areZonedEqual.js +3 -2
  995. package/dist/zoned/compare/areZonedEqualBy.d.ts +15 -2
  996. package/dist/zoned/compare/areZonedEqualBy.js +45 -12
  997. package/dist/zoned/compare/isAfterZoned.js +3 -2
  998. package/dist/zoned/compare/isBeforeZoned.d.ts +1 -1
  999. package/dist/zoned/compare/isBeforeZoned.js +4 -3
  1000. package/dist/zoned/compare/isBetweenZoned.js +46 -29
  1001. package/dist/zoned/compare/isInDaylightSaving.js +4 -4
  1002. package/dist/zoned/compare/isZonedBusinessDay.d.ts +7 -4
  1003. package/dist/zoned/compare/isZonedBusinessDay.js +9 -6
  1004. package/dist/zoned/compare/isZonedFuture.js +2 -1
  1005. package/dist/zoned/compare/isZonedPast.js +2 -1
  1006. package/dist/zoned/compare/isZonedRelativeDay.js +2 -1
  1007. package/dist/zoned/compare/isZonedThisUnit.d.ts +12 -4
  1008. package/dist/zoned/compare/isZonedThisUnit.js +37 -16
  1009. package/dist/zoned/compare/isZonedWeekend.d.ts +8 -4
  1010. package/dist/zoned/compare/isZonedWeekend.js +9 -6
  1011. package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +10 -5
  1012. package/dist/zoned/convert/convertPlainDateTimeToZoned.js +34 -16
  1013. package/dist/zoned/convert/convertZonedToCalendar.d.ts +26 -38
  1014. package/dist/zoned/convert/convertZonedToCalendar.js +33 -48
  1015. package/dist/zoned/convert/convertZonedToPlainDateTime.d.ts +6 -0
  1016. package/dist/zoned/convert/convertZonedToPlainDateTime.js +8 -2
  1017. package/dist/zoned/convert/convertZonedToUnix.d.ts +12 -6
  1018. package/dist/zoned/convert/convertZonedToUnix.js +23 -16
  1019. package/dist/zoned/convert/convertZonedToUtc.js +2 -2
  1020. package/dist/zoned/convert/convertZonedToZoned.js +2 -2
  1021. package/dist/zoned/format/formatCalendarZoned.d.ts +7 -3
  1022. package/dist/zoned/format/formatCalendarZoned.js +37 -39
  1023. package/dist/zoned/format/formatRelativeZoned.d.ts +16 -14
  1024. package/dist/zoned/format/formatRelativeZoned.js +54 -54
  1025. package/dist/zoned/format/formatRfc2822.d.ts +14 -1
  1026. package/dist/zoned/format/formatRfc2822.js +27 -13
  1027. package/dist/zoned/format/formatRfc3339.d.ts +14 -1
  1028. package/dist/zoned/format/formatRfc3339.js +29 -3
  1029. package/dist/zoned/format/formatTimeZoneName.d.ts +18 -2
  1030. package/dist/zoned/format/formatTimeZoneName.js +28 -18
  1031. package/dist/zoned/format/formatZonedDateTime.d.ts +26 -5
  1032. package/dist/zoned/format/formatZonedDateTime.js +40 -9
  1033. package/dist/zoned/format/formatZonedRange.d.ts +25 -6
  1034. package/dist/zoned/format/formatZonedRange.js +61 -28
  1035. package/dist/zoned/format/formatZonedToParts.d.ts +30 -6
  1036. package/dist/zoned/format/formatZonedToParts.js +42 -13
  1037. package/dist/zoned/get/getDstTransitions.d.ts +24 -3
  1038. package/dist/zoned/get/getDstTransitions.js +17 -15
  1039. package/dist/zoned/get/getTimeZoneOffset.d.ts +11 -1
  1040. package/dist/zoned/get/getTimeZoneOffset.js +19 -2
  1041. package/dist/zoned/get/getZonedNow.js +20 -9
  1042. package/dist/zoned/get/getZonedNowUnit.d.ts +30 -2
  1043. package/dist/zoned/get/getZonedNowUnit.js +15 -31
  1044. package/dist/zoned/index.js +1 -1
  1045. package/dist/zoned/interval/intervalAbutsZoned.d.ts +18 -11
  1046. package/dist/zoned/interval/intervalAbutsZoned.js +24 -25
  1047. package/dist/zoned/interval/intervalContainsZoned.d.ts +16 -7
  1048. package/dist/zoned/interval/intervalContainsZoned.js +22 -14
  1049. package/dist/zoned/interval/intervalCountZoned.d.ts +19 -11
  1050. package/dist/zoned/interval/intervalCountZoned.js +32 -27
  1051. package/dist/zoned/interval/intervalDifferenceZoned.d.ts +14 -8
  1052. package/dist/zoned/interval/intervalDifferenceZoned.js +25 -37
  1053. package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +18 -9
  1054. package/dist/zoned/interval/intervalDivideEquallyZoned.js +67 -46
  1055. package/dist/zoned/interval/intervalEngulfsZoned.d.ts +10 -5
  1056. package/dist/zoned/interval/intervalEngulfsZoned.js +16 -10
  1057. package/dist/zoned/interval/intervalFromDurationZoned.d.ts +25 -11
  1058. package/dist/zoned/interval/intervalFromDurationZoned.js +61 -44
  1059. package/dist/zoned/interval/intervalIntersectionZoned.d.ts +12 -6
  1060. package/dist/zoned/interval/intervalIntersectionZoned.js +24 -18
  1061. package/dist/zoned/interval/intervalLengthZoned.d.ts +15 -6
  1062. package/dist/zoned/interval/intervalLengthZoned.js +23 -9
  1063. package/dist/zoned/interval/intervalOverlappingDaysZoned.d.ts +28 -17
  1064. package/dist/zoned/interval/intervalOverlappingDaysZoned.js +46 -34
  1065. package/dist/zoned/interval/intervalSplitAtZoned.d.ts +6 -3
  1066. package/dist/zoned/interval/intervalSplitAtZoned.js +52 -42
  1067. package/dist/zoned/interval/intervalUnionZoned.d.ts +14 -8
  1068. package/dist/zoned/interval/intervalUnionZoned.js +25 -20
  1069. package/dist/zoned/interval/intervalXorAllZoned.d.ts +9 -7
  1070. package/dist/zoned/interval/intervalXorAllZoned.js +42 -73
  1071. package/dist/zoned/interval/intervalXorZoned.d.ts +20 -10
  1072. package/dist/zoned/interval/intervalXorZoned.js +34 -62
  1073. package/dist/zoned/interval/intervalsOverlapZoned.d.ts +15 -7
  1074. package/dist/zoned/interval/intervalsOverlapZoned.js +21 -12
  1075. package/dist/zoned/interval/mergeIntervalsZoned.d.ts +10 -3
  1076. package/dist/zoned/interval/mergeIntervalsZoned.js +44 -41
  1077. package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +28 -5
  1078. package/dist/zoned/interval/splitIntervalByUnitZoned.js +72 -39
  1079. package/dist/zoned/interval/validate/isValidCalendarZonedInterval.d.ts +13 -10
  1080. package/dist/zoned/interval/validate/isValidCalendarZonedInterval.js +13 -10
  1081. package/dist/zoned/interval/validate/isValidZonedInterval.d.ts +7 -5
  1082. package/dist/zoned/interval/validate/isValidZonedInterval.js +12 -16
  1083. package/dist/zoned/map/mapZonedDatesInRange.d.ts +17 -1
  1084. package/dist/zoned/map/mapZonedDatesInRange.js +62 -26
  1085. package/dist/zoned/map/mapZonedHoursInDay.d.ts +10 -13
  1086. package/dist/zoned/map/mapZonedHoursInDay.js +13 -21
  1087. package/dist/zoned/parse/getZonedOffset.js +2 -2
  1088. package/dist/zoned/parse/getZonedOffsetAs.d.ts +15 -2
  1089. package/dist/zoned/parse/getZonedOffsetAs.js +10 -5
  1090. package/dist/zoned/parse/parseDateFromZoned.js +2 -2
  1091. package/dist/zoned/parse/parseDateTimeFromZoned.js +2 -2
  1092. package/dist/zoned/parse/parseDayFromZoned.js +2 -2
  1093. package/dist/zoned/parse/parseDayOfWeekFromZoned.js +2 -2
  1094. package/dist/zoned/parse/parseHourFromZoned.js +2 -2
  1095. package/dist/zoned/parse/parseMicrosecondFromZoned.d.ts +2 -1
  1096. package/dist/zoned/parse/parseMicrosecondFromZoned.js +4 -3
  1097. package/dist/zoned/parse/parseMillisecondFromZoned.js +2 -2
  1098. package/dist/zoned/parse/parseMinuteFromZoned.js +2 -2
  1099. package/dist/zoned/parse/parseMonthFromZoned.js +2 -2
  1100. package/dist/zoned/parse/parseNanosecondFromZoned.d.ts +2 -1
  1101. package/dist/zoned/parse/parseNanosecondFromZoned.js +4 -3
  1102. package/dist/zoned/parse/parseRfc2822.d.ts +32 -12
  1103. package/dist/zoned/parse/parseRfc2822.js +47 -45
  1104. package/dist/zoned/parse/parseRfc3339.d.ts +6 -0
  1105. package/dist/zoned/parse/parseRfc3339.js +6 -0
  1106. package/dist/zoned/parse/parseSecondFromZoned.js +2 -2
  1107. package/dist/zoned/parse/parseTimeFromZoned.js +2 -2
  1108. package/dist/zoned/parse/parseTimeZoneFromZoned.js +2 -2
  1109. package/dist/zoned/parse/parseUnitFromZoned.d.ts +36 -3
  1110. package/dist/zoned/parse/parseUnitFromZoned.js +59 -33
  1111. package/dist/zoned/parse/parseWeekFromZoned.d.ts +13 -3
  1112. package/dist/zoned/parse/parseWeekFromZoned.js +34 -10
  1113. package/dist/zoned/parse/parseYearFromZoned.js +2 -2
  1114. package/dist/zoned/validate/hasDaylightSaving.js +3 -3
  1115. package/dist/zoned/validate/isValidCalendarZonedDateTime.d.ts +31 -16
  1116. package/dist/zoned/validate/isValidCalendarZonedDateTime.js +31 -16
  1117. package/dist/zoned/validate/isValidTimeZone.d.ts +15 -2
  1118. package/dist/zoned/validate/isValidTimeZone.js +17 -4
  1119. package/dist/zoned/validate/isValidZonedDateTime.d.ts +14 -7
  1120. package/dist/zoned/validate/isValidZonedDateTime.js +20 -12
  1121. package/dist/zoned/validate/isValidZonedRange.d.ts +9 -2
  1122. package/dist/zoned/validate/isValidZonedRange.js +44 -16
  1123. package/package.json +487 -28
  1124. package/skills/gmt-arithmetic/SKILL.md +264 -0
  1125. package/skills/gmt-basics/SKILL.md +127 -0
  1126. package/skills/gmt-integration/SKILL.md +119 -0
  1127. package/skills/gmt-timezone/SKILL.md +197 -0
  1128. package/dist/internal/advanceBusinessDays.d.ts +0 -2
  1129. package/dist/internal/advanceBusinessDays.js +0 -15
  1130. package/dist/internal/ethiopicFamilyCalendar.d.ts +0 -47
  1131. package/dist/internal/ethiopicFamilyCalendar.js +0 -136
  1132. package/dist/internal/getLocaleMinimalDaysInFirstWeek.d.ts +0 -20
  1133. package/dist/internal/getLocaleMinimalDaysInFirstWeek.js +0 -31
  1134. package/dist/internal/resolveUnixTimeZone.d.ts +0 -20
  1135. package/dist/internal/resolveUnixTimeZone.js +0 -30
  1136. package/dist/unix/calculate/startOrEndOfUnix.d.ts +0 -9
  1137. package/dist/unix/calculate/startOrEndOfUnix.js +0 -122
  1138. package/dist/unix/interval/resolveUnixIntervalPair.d.ts +0 -7
  1139. package/dist/unix/interval/resolveUnixIntervalPair.js +0 -36
  1140. package/dist/utc/calculate/startOrEndOfUtc.d.ts +0 -6
  1141. package/skills/_artifacts/domain_map.yaml +0 -547
  1142. package/skills/_artifacts/skill_spec.md +0 -67
  1143. package/skills/_artifacts/skill_tree.yaml +0 -278
  1144. package/skills/api-expansion-workflow/SKILL.md +0 -52
  1145. package/skills/app-integration/SKILL.md +0 -38
  1146. package/skills/calculate-dates/SKILL.md +0 -432
  1147. package/skills/compare-dates/SKILL.md +0 -412
  1148. package/skills/convert-types/SKILL.md +0 -305
  1149. package/skills/durations/SKILL.md +0 -418
  1150. package/skills/format-date-time/SKILL.md +0 -486
  1151. package/skills/format-date-time/references/format-api.md +0 -34
  1152. package/skills/format-relative-time/SKILL.md +0 -223
  1153. package/skills/get-current/SKILL.md +0 -229
  1154. package/skills/interval-ops/SKILL.md +0 -432
  1155. package/skills/issue-creation/SKILL.md +0 -118
  1156. package/skills/lint-package-suggestion/SKILL.md +0 -37
  1157. package/skills/new-method-implementation/SKILL.md +0 -71
  1158. package/skills/parse-date-time/SKILL.md +0 -349
  1159. package/skills/pr-contribution/SKILL.md +0 -180
  1160. package/skills/unit-test-generation/SKILL.md +0 -56
  1161. package/skills/validate-dates/SKILL.md +0 -438
  1162. package/skills/zoned-date-ops/SKILL.md +0 -422
  1163. package/skills/zoned-date-ops/references/timezones.md +0 -13
@@ -1,7 +1,34 @@
1
- // ANSI SQL / ODBC timestamp literal: space-separated (never "T"), always
2
- // zero-padded (unlike RFC 2822's lenient 1-2 digit day), with an optional
3
- // fractional-seconds component. This checks *shape* only — `parseSql` still
4
- // hands the extracted string to `Temporal.PlainDateTime.from` for real
5
- // calendar validation, same as GMT's other `isValid*` + `Temporal.*.from`
6
- // pairs.
7
- export const sqlDateTime = /^(?:\d{4}|[+-]\d{6})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01]) (0[0-9]|1[0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\.[0-9]{1,9})?)?$/;
1
+ /**
2
+ * RegExp matching a SQL timestamp literal without a time zone: `YYYY-MM-DD HH:MM:SS[.fffffffff]`.
3
+ *
4
+ * The grammar is SQL-92 §5.3 `<timestamp string>` and the ODBC `ts` escape
5
+ * (`yyyy-mm-dd hh:mm:ss[.f...]`):
6
+ *
7
+ * - `<date value> <space> <time value>`: a single space separator, never `T`.
8
+ * - Syntax Rule 21: the year is four digits and every other field two digits, zero-padded. No
9
+ * sign and no expanded year.
10
+ * - Table 10: YEAR `0001`–`9999`, MONTH `01`–`12`, DAY `01`–`31`, HOUR `00`–`23`, MINUTE
11
+ * `00`–`59`.
12
+ * - Seconds are required (`<time value>` is `<hours value>:<minutes value>:<seconds value>`).
13
+ * - `<seconds value> ::= <seconds integer value> [ <period> [ <seconds fraction> ] ]`: an optional
14
+ * `.` then up to 9 fraction digits. SQL-92 leaves the precision to the implementation; 9 is
15
+ * Temporal's nanosecond.
16
+ * - SECOND `60`–`61` does not match, although Table 10 allows them: GMT rejects leap seconds
17
+ * because Temporal would read one as `:59`.
18
+ * - Shape-only validation; the calendar date is checked by `Temporal.PlainDateTime.from` in
19
+ * `parseSql`.
20
+ *
21
+ * Capture groups: 1 month, 2 day, 3 hour. The year, minute, second and fraction are not
22
+ * captured.
23
+ *
24
+ * @example sqlDateTime.test("2024-03-15 14:30:00.123456789") // true
25
+ * @example sqlDateTime.test("0001-01-01 00:00:00") // true (the first year SQL allows)
26
+ * @example sqlDateTime.test("2024-03-15 14:30:00.") // true (period with no fraction)
27
+ * @example sqlDateTime.test("2024-03-15 14:30") // false (seconds are required)
28
+ * @example sqlDateTime.test("0000-01-01 00:00:00") // false (year outside 0001–9999)
29
+ * @example sqlDateTime.test("+002024-03-15 14:30:00") // false (expanded year)
30
+ * @example sqlDateTime.test("2024-03-15T14:30:00") // false (T separator)
31
+ * @example sqlDateTime.test("2024-3-5 14:30:00") // false (unpadded)
32
+ * @example sqlDateTime.test("2024-03-15 14:30:60") // false (leap second; GMT rejects it)
33
+ */
34
+ export const sqlDateTime = /^(?!0000)\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01]) (0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:\.[0-9]{0,9})?$/;
@@ -1 +1,31 @@
1
+ /**
2
+ * RegExp matching the shape of a time zone identifier: Temporal's `TimeZoneIdentifier` grammar
3
+ * (§14.6.2 Time Zone Identifiers), `UTCOffset[~SubMinutePrecision] | TimeZoneIANAName`.
4
+ *
5
+ * - An offset identifier (`UTCOffset[~SubMinutePrecision]`): an ASCII sign and a two-digit hour
6
+ * `00`–`23`, optionally followed by two minute digits `00`–`59`, with or without `:` (`+05`,
7
+ * `+0530`, `-08:00`). No seconds and no fraction. `Intl.DateTimeFormat` accepts the same
8
+ * offsets (ECMA-402 `IsTimeZoneOffsetString`).
9
+ * - An IANA name (`TimeZoneIANAName`): one or more `/`-separated components. Each starts with a
10
+ * letter, `.` or `_` (`TZLeadingChar`) and continues with letters, digits, `.`, `_`, `-` or `+`
11
+ * (`TZChar`). So single-component names match (`UTC`, `Japan`, `Zulu`, `EST5EDT`, `GMT+0`,
12
+ * `NZ-CHAT`), as do `Area/Location` names at any depth (`America/Argentina/Buenos_Aires`,
13
+ * `Etc/GMT+5`). Temporal must accept every Zone and Link name in the IANA database, and tzdb's
14
+ * `backward` file has more than forty slash-less ones.
15
+ * - Letter case is not checked: ECMA-402 matches an identifier ASCII-case-insensitively, so `utc`
16
+ * and `america/new_york` name the same zones as `UTC` and `America/New_York`.
17
+ * - SHAPE ONLY. Whether the name exists is decided by Temporal: its only consumer,
18
+ * `isValidTimeZone`, also requires `Temporal.ZonedDateTime.from` to accept the zone.
19
+ *
20
+ * @example timeZoneLike.test("UTC") // true
21
+ * @example timeZoneLike.test("America/New_York") // true
22
+ * @example timeZoneLike.test("Japan") // true (single-component IANA link)
23
+ * @example timeZoneLike.test("Etc/GMT+5") // true
24
+ * @example timeZoneLike.test("Custom/Zone") // true (shape only; existence is not checked)
25
+ * @example timeZoneLike.test("+05:00") // true (an offset identifier)
26
+ * @example timeZoneLike.test("-0800") // true (a basic-format offset identifier)
27
+ * @example timeZoneLike.test("+05:00:00") // false (no seconds in an offset identifier)
28
+ * @example timeZoneLike.test("-foo/bar") // false (a name cannot start with - or +)
29
+ * @example timeZoneLike.test("UTC+05:00") // false (":" is not a name character)
30
+ */
1
31
  export declare const timeZoneLike: RegExp;
@@ -1 +1,31 @@
1
- export const timeZoneLike = /^(?:UTC|GMT|[A-Za-z_+-]+(?:\/[A-Za-z0-9_+-]+)+)$/;
1
+ /**
2
+ * RegExp matching the shape of a time zone identifier: Temporal's `TimeZoneIdentifier` grammar
3
+ * (§14.6.2 Time Zone Identifiers), `UTCOffset[~SubMinutePrecision] | TimeZoneIANAName`.
4
+ *
5
+ * - An offset identifier (`UTCOffset[~SubMinutePrecision]`): an ASCII sign and a two-digit hour
6
+ * `00`–`23`, optionally followed by two minute digits `00`–`59`, with or without `:` (`+05`,
7
+ * `+0530`, `-08:00`). No seconds and no fraction. `Intl.DateTimeFormat` accepts the same
8
+ * offsets (ECMA-402 `IsTimeZoneOffsetString`).
9
+ * - An IANA name (`TimeZoneIANAName`): one or more `/`-separated components. Each starts with a
10
+ * letter, `.` or `_` (`TZLeadingChar`) and continues with letters, digits, `.`, `_`, `-` or `+`
11
+ * (`TZChar`). So single-component names match (`UTC`, `Japan`, `Zulu`, `EST5EDT`, `GMT+0`,
12
+ * `NZ-CHAT`), as do `Area/Location` names at any depth (`America/Argentina/Buenos_Aires`,
13
+ * `Etc/GMT+5`). Temporal must accept every Zone and Link name in the IANA database, and tzdb's
14
+ * `backward` file has more than forty slash-less ones.
15
+ * - Letter case is not checked: ECMA-402 matches an identifier ASCII-case-insensitively, so `utc`
16
+ * and `america/new_york` name the same zones as `UTC` and `America/New_York`.
17
+ * - SHAPE ONLY. Whether the name exists is decided by Temporal: its only consumer,
18
+ * `isValidTimeZone`, also requires `Temporal.ZonedDateTime.from` to accept the zone.
19
+ *
20
+ * @example timeZoneLike.test("UTC") // true
21
+ * @example timeZoneLike.test("America/New_York") // true
22
+ * @example timeZoneLike.test("Japan") // true (single-component IANA link)
23
+ * @example timeZoneLike.test("Etc/GMT+5") // true
24
+ * @example timeZoneLike.test("Custom/Zone") // true (shape only; existence is not checked)
25
+ * @example timeZoneLike.test("+05:00") // true (an offset identifier)
26
+ * @example timeZoneLike.test("-0800") // true (a basic-format offset identifier)
27
+ * @example timeZoneLike.test("+05:00:00") // false (no seconds in an offset identifier)
28
+ * @example timeZoneLike.test("-foo/bar") // false (a name cannot start with - or +)
29
+ * @example timeZoneLike.test("UTC+05:00") // false (":" is not a name character)
30
+ */
31
+ export const timeZoneLike = /^(?:[+-](?:[01][0-9]|2[0-3])(?::?[0-5][0-9])?|[A-Za-z._][A-Za-z0-9._+-]*(?:\/[A-Za-z._][A-Za-z0-9._+-]*)*)$/;
@@ -1,6 +1,79 @@
1
+ /**
2
+ * RegExp matching an ISO 8601 hour in extended format: `00`–`23`.
3
+ *
4
+ * @example hour.test("00") // true
5
+ * @example hour.test("12") // true
6
+ * @example hour.test("23") // true
7
+ * @example hour.test("24") // false (out of range)
8
+ * @example hour.test("9") // false (not zero-padded)
9
+ */
1
10
  export declare const hour: RegExp;
11
+ /**
12
+ * RegExp matching an ISO 8601 minute: `00`–`59`.
13
+ *
14
+ * @example minute.test("00") // true
15
+ * @example minute.test("30") // true
16
+ * @example minute.test("59") // true
17
+ * @example minute.test("60") // false (out of range)
18
+ */
2
19
  export declare const minute: RegExp;
20
+ /**
21
+ * RegExp matching a second of `00`–`59`.
22
+ *
23
+ * - Temporal's `TimeSecond` and RFC 3339's `time-second` both admit `60` (a leap second). GMT
24
+ * rejects it by decision, because Temporal would read it as `:59`; `leapSecond` detects one.
25
+ *
26
+ * @example second.test("00") // true
27
+ * @example second.test("30") // true
28
+ * @example second.test("59") // true
29
+ * @example second.test("60") // false (a leap second; GMT rejects it, see `leapSecond`)
30
+ */
3
31
  export declare const second: RegExp;
32
+ /**
33
+ * RegExp matching 1–9 fractional-second digits (nanosecond precision).
34
+ *
35
+ * - Used for the fractional portion after `.` or `,` in time strings.
36
+ * - Backward-compatible alias `millisecond` points to this same pattern.
37
+ *
38
+ * @example fractionalSecond.test("123") // true (milliseconds)
39
+ * @example fractionalSecond.test("123456789") // true (nanoseconds)
40
+ * @example fractionalSecond.test("1234567890") // false (more than 9 digits)
41
+ * @example fractionalSecond.test("") // false (empty)
42
+ */
4
43
  export declare const fractionalSecond: RegExp;
44
+ /**
45
+ * Backward-compatible alias for `fractionalSecond`. Prefer `fractionalSecond` for new
46
+ * usage — the pattern matches 1–9 digits of fractional seconds, not just milliseconds.
47
+ *
48
+ * @example millisecond.test("123") // true
49
+ * @example millisecond.test("123456789") // true (nanoseconds, despite the name)
50
+ * @example millisecond.test("1234567890") // false (more than 9 digits)
51
+ */
5
52
  export declare const millisecond: RegExp;
53
+ /**
54
+ * RegExp matching ISO 8601 local time (extended): `HH:mm[:ss[.fffffffff]]`.
55
+ *
56
+ * - Hours: `00`–`23`, zero-padded.
57
+ * - Minutes and seconds: `00`–`59`, zero-padded.
58
+ * - Seconds are optional; fractional seconds use `.` or `,` followed by 1–9 digits.
59
+ * - No timezone designator — this is a plain/local time only.
60
+ * - Second `60` does not match: GMT rejects leap seconds (Temporal's `TimeSecond` admits one
61
+ * and would read it as `:59`).
62
+ * - Shape-only validation; real field validation is delegated to
63
+ * `Temporal.PlainTime.from` in `isValidTime`.
64
+ *
65
+ * Capture groups: 1 hour. The minute, second and fraction are not captured.
66
+ *
67
+ * The written form only, with no RFC 9557 annotation. `isValidTime` reads more: it matches this
68
+ * against the part before the first `[` and lets Temporal read the annotations
69
+ * (`"…[u-ca=iso8601]"`, an elective `"…[foo=bar]"`).
70
+ *
71
+ * @example plainTime.test("14:30") // true
72
+ * @example plainTime.test("14:30:00") // true
73
+ * @example plainTime.test("14:30:00.123") // true (fractional seconds)
74
+ * @example plainTime.test("14:30:00,123") // true (comma separator)
75
+ * @example plainTime.test("24:00:00") // false (hour out of range)
76
+ * @example plainTime.exec("14:30:45.5")?.slice(1) // ["14"] (hour)
77
+ * @example plainTime.test("14:30:60") // false (leap second; GMT rejects it)
78
+ */
6
79
  export declare const plainTime: RegExp;
@@ -1,9 +1,79 @@
1
- // regex patterns exported for usage
1
+ /**
2
+ * RegExp matching an ISO 8601 hour in extended format: `00`–`23`.
3
+ *
4
+ * @example hour.test("00") // true
5
+ * @example hour.test("12") // true
6
+ * @example hour.test("23") // true
7
+ * @example hour.test("24") // false (out of range)
8
+ * @example hour.test("9") // false (not zero-padded)
9
+ */
2
10
  export const hour = /^(0[0-9]|1[0-9]|2[0-3])$/;
11
+ /**
12
+ * RegExp matching an ISO 8601 minute: `00`–`59`.
13
+ *
14
+ * @example minute.test("00") // true
15
+ * @example minute.test("30") // true
16
+ * @example minute.test("59") // true
17
+ * @example minute.test("60") // false (out of range)
18
+ */
3
19
  export const minute = /^[0-5][0-9]$/;
20
+ /**
21
+ * RegExp matching a second of `00`–`59`.
22
+ *
23
+ * - Temporal's `TimeSecond` and RFC 3339's `time-second` both admit `60` (a leap second). GMT
24
+ * rejects it by decision, because Temporal would read it as `:59`; `leapSecond` detects one.
25
+ *
26
+ * @example second.test("00") // true
27
+ * @example second.test("30") // true
28
+ * @example second.test("59") // true
29
+ * @example second.test("60") // false (a leap second; GMT rejects it, see `leapSecond`)
30
+ */
4
31
  export const second = /^[0-5][0-9]$/;
32
+ /**
33
+ * RegExp matching 1–9 fractional-second digits (nanosecond precision).
34
+ *
35
+ * - Used for the fractional portion after `.` or `,` in time strings.
36
+ * - Backward-compatible alias `millisecond` points to this same pattern.
37
+ *
38
+ * @example fractionalSecond.test("123") // true (milliseconds)
39
+ * @example fractionalSecond.test("123456789") // true (nanoseconds)
40
+ * @example fractionalSecond.test("1234567890") // false (more than 9 digits)
41
+ * @example fractionalSecond.test("") // false (empty)
42
+ */
5
43
  export const fractionalSecond = /^[0-9]{1,9}$/;
6
- // Backward-compatible alias; prefer fractionalSecond for new usage.
44
+ /**
45
+ * Backward-compatible alias for `fractionalSecond`. Prefer `fractionalSecond` for new
46
+ * usage — the pattern matches 1–9 digits of fractional seconds, not just milliseconds.
47
+ *
48
+ * @example millisecond.test("123") // true
49
+ * @example millisecond.test("123456789") // true (nanoseconds, despite the name)
50
+ * @example millisecond.test("1234567890") // false (more than 9 digits)
51
+ */
7
52
  export const millisecond = fractionalSecond;
8
- // ISO 8601 local time (extended): HH:mm[:ss[.fffffffff]]
53
+ /**
54
+ * RegExp matching ISO 8601 local time (extended): `HH:mm[:ss[.fffffffff]]`.
55
+ *
56
+ * - Hours: `00`–`23`, zero-padded.
57
+ * - Minutes and seconds: `00`–`59`, zero-padded.
58
+ * - Seconds are optional; fractional seconds use `.` or `,` followed by 1–9 digits.
59
+ * - No timezone designator — this is a plain/local time only.
60
+ * - Second `60` does not match: GMT rejects leap seconds (Temporal's `TimeSecond` admits one
61
+ * and would read it as `:59`).
62
+ * - Shape-only validation; real field validation is delegated to
63
+ * `Temporal.PlainTime.from` in `isValidTime`.
64
+ *
65
+ * Capture groups: 1 hour. The minute, second and fraction are not captured.
66
+ *
67
+ * The written form only, with no RFC 9557 annotation. `isValidTime` reads more: it matches this
68
+ * against the part before the first `[` and lets Temporal read the annotations
69
+ * (`"…[u-ca=iso8601]"`, an elective `"…[foo=bar]"`).
70
+ *
71
+ * @example plainTime.test("14:30") // true
72
+ * @example plainTime.test("14:30:00") // true
73
+ * @example plainTime.test("14:30:00.123") // true (fractional seconds)
74
+ * @example plainTime.test("14:30:00,123") // true (comma separator)
75
+ * @example plainTime.test("24:00:00") // false (hour out of range)
76
+ * @example plainTime.exec("14:30:45.5")?.slice(1) // ["14"] (hour)
77
+ * @example plainTime.test("14:30:60") // false (leap second; GMT rejects it)
78
+ */
9
79
  export const plainTime = /^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:[.,][0-9]{1,9})?)?$/;
@@ -1,2 +1,31 @@
1
+ /**
2
+ * RegExp matching a Unix timestamp in seconds: exactly 10 digits.
3
+ *
4
+ * - Matches `0000000000` (1970-01-01T00:00:00Z) through `9999999999`
5
+ * (2286-11-20T17:46:39Z).
6
+ * - Does not match an unpadded value (`"999999999"`, `"0"`), so every real timestamp before
7
+ * `1000000000` (2001-09-09T01:46:40Z) needs zero-padding to match, and never matches a
8
+ * negative (pre-1970) timestamp.
9
+ *
10
+ * @example unixSeconds.test("1710511800") // true
11
+ * @example unixSeconds.test("0000000000") // true (epoch)
12
+ * @example unixSeconds.test("9999999999") // true (2286-11-20T17:46:39Z)
13
+ * @example unixSeconds.test("999999999") // false (unpadded; 2001-09-09T01:46:39Z)
14
+ * @example unixSeconds.test("-1") // false (negative)
15
+ * @example unixSeconds.test("17105118001") // false (11 digits)
16
+ */
1
17
  export declare const unixSeconds: RegExp;
18
+ /**
19
+ * RegExp matching a Unix timestamp in milliseconds: exactly 13 digits.
20
+ *
21
+ * - Matches `0000000000000` (1970-01-01T00:00:00Z) through `9999999999999`
22
+ * (2286-11-20T17:46:39.999Z).
23
+ * - Does not match an unpadded value, so every real timestamp before `1000000000000`
24
+ * (2001-09-09T01:46:40Z) needs zero-padding to match, and never matches a negative one.
25
+ *
26
+ * @example unixMilliseconds.test("1710511800123") // true
27
+ * @example unixMilliseconds.test("0000000000000") // true (epoch)
28
+ * @example unixMilliseconds.test("999999999999") // false (unpadded, 12 digits)
29
+ * @example unixMilliseconds.test("17105118001") // false (11 digits)
30
+ */
2
31
  export declare const unixMilliseconds: RegExp;
@@ -1,2 +1,31 @@
1
+ /**
2
+ * RegExp matching a Unix timestamp in seconds: exactly 10 digits.
3
+ *
4
+ * - Matches `0000000000` (1970-01-01T00:00:00Z) through `9999999999`
5
+ * (2286-11-20T17:46:39Z).
6
+ * - Does not match an unpadded value (`"999999999"`, `"0"`), so every real timestamp before
7
+ * `1000000000` (2001-09-09T01:46:40Z) needs zero-padding to match, and never matches a
8
+ * negative (pre-1970) timestamp.
9
+ *
10
+ * @example unixSeconds.test("1710511800") // true
11
+ * @example unixSeconds.test("0000000000") // true (epoch)
12
+ * @example unixSeconds.test("9999999999") // true (2286-11-20T17:46:39Z)
13
+ * @example unixSeconds.test("999999999") // false (unpadded; 2001-09-09T01:46:39Z)
14
+ * @example unixSeconds.test("-1") // false (negative)
15
+ * @example unixSeconds.test("17105118001") // false (11 digits)
16
+ */
1
17
  export const unixSeconds = /^\d{10}$/;
18
+ /**
19
+ * RegExp matching a Unix timestamp in milliseconds: exactly 13 digits.
20
+ *
21
+ * - Matches `0000000000000` (1970-01-01T00:00:00Z) through `9999999999999`
22
+ * (2286-11-20T17:46:39.999Z).
23
+ * - Does not match an unpadded value, so every real timestamp before `1000000000000`
24
+ * (2001-09-09T01:46:40Z) needs zero-padding to match, and never matches a negative one.
25
+ *
26
+ * @example unixMilliseconds.test("1710511800123") // true
27
+ * @example unixMilliseconds.test("0000000000000") // true (epoch)
28
+ * @example unixMilliseconds.test("999999999999") // false (unpadded, 12 digits)
29
+ * @example unixMilliseconds.test("17105118001") // false (11 digits)
30
+ */
2
31
  export const unixMilliseconds = /^\d{13}$/;
@@ -1 +1,31 @@
1
+ /**
2
+ * RegExp matching ISO 8601 UTC datetime: `<date>T<time>Z` with optional fractional
3
+ * seconds, in ISO 8601 extended format. The designator is an upper-case `Z`:
4
+ * a lower-case `z`, which RFC 3339 §5.6 and Temporal also read, does not match (`rfc3339DateTime`
5
+ * is the RFC 3339 pattern that accepts it).
6
+ *
7
+ * - Date half: `YYYY-MM-DD` or `±YYYYYY-MM-DD` (6-digit year with sign, never `-000000`,
8
+ * which is a Syntax Error in Temporal's `DateYear`).
9
+ * - Time half: `HH:mm` with optional `:ss[.fffffffff]` (fractional seconds use `.` or `,`).
10
+ * - Second `60` does not match. Temporal's `TimeSecond` admits it, but GMT rejects leap
11
+ * seconds because Temporal would read one as `:59`.
12
+ * - No numeric offset — only the `Z` UTC designator is accepted.
13
+ * - Shape-only validation; real validation is delegated to `Temporal.Instant.from` in
14
+ * `isValidUtc`.
15
+ *
16
+ * Capture groups: 1 month, 2 day, 3 hour. The year, minute, second and fraction are not
17
+ * captured.
18
+ *
19
+ * The written form only, with no RFC 9557 annotation. `isValidUtc` reads more: it matches this
20
+ * against the part before the first `[` and lets Temporal read the annotations
21
+ * (`"…[u-ca=iso8601]"`, an elective `"…[foo=bar]"`).
22
+ *
23
+ * @example utcDateTime.test("2024-03-15T14:30:00Z") // true
24
+ * @example utcDateTime.test("2024-03-15T14:30z") // false (lower-case z)
25
+ * @example utcDateTime.test("2024-03-15T14:30:00.123Z") // true (fractional seconds)
26
+ * @example utcDateTime.exec("2024-03-15T14:30:45.5Z")?.slice(1) // ["03", "15", "14"] (month, day, hour)
27
+ * @example utcDateTime.test("-000000-01-01T00:00Z") // false (negative zero year)
28
+ * @example utcDateTime.test("2024-03-15T14:30:00+00:00") // false (numeric offset)
29
+ * @example utcDateTime.test("2024-03-15T14:30:00") // false (no timezone)
30
+ */
1
31
  export declare const utcDateTime: RegExp;
@@ -1,2 +1,31 @@
1
- // ISO 8601 UTC datetime: <date>T<time>Z with optional fractional seconds
2
- export const utcDateTime = /^(?:\d{4}|[+-]\d{6})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:[.,]\d{1,9})?)?[Zz]$/;
1
+ /**
2
+ * RegExp matching ISO 8601 UTC datetime: `<date>T<time>Z` with optional fractional
3
+ * seconds, in ISO 8601 extended format. The designator is an upper-case `Z`:
4
+ * a lower-case `z`, which RFC 3339 §5.6 and Temporal also read, does not match (`rfc3339DateTime`
5
+ * is the RFC 3339 pattern that accepts it).
6
+ *
7
+ * - Date half: `YYYY-MM-DD` or `±YYYYYY-MM-DD` (6-digit year with sign, never `-000000`,
8
+ * which is a Syntax Error in Temporal's `DateYear`).
9
+ * - Time half: `HH:mm` with optional `:ss[.fffffffff]` (fractional seconds use `.` or `,`).
10
+ * - Second `60` does not match. Temporal's `TimeSecond` admits it, but GMT rejects leap
11
+ * seconds because Temporal would read one as `:59`.
12
+ * - No numeric offset — only the `Z` UTC designator is accepted.
13
+ * - Shape-only validation; real validation is delegated to `Temporal.Instant.from` in
14
+ * `isValidUtc`.
15
+ *
16
+ * Capture groups: 1 month, 2 day, 3 hour. The year, minute, second and fraction are not
17
+ * captured.
18
+ *
19
+ * The written form only, with no RFC 9557 annotation. `isValidUtc` reads more: it matches this
20
+ * against the part before the first `[` and lets Temporal read the annotations
21
+ * (`"…[u-ca=iso8601]"`, an elective `"…[foo=bar]"`).
22
+ *
23
+ * @example utcDateTime.test("2024-03-15T14:30:00Z") // true
24
+ * @example utcDateTime.test("2024-03-15T14:30z") // false (lower-case z)
25
+ * @example utcDateTime.test("2024-03-15T14:30:00.123Z") // true (fractional seconds)
26
+ * @example utcDateTime.exec("2024-03-15T14:30:45.5Z")?.slice(1) // ["03", "15", "14"] (month, day, hour)
27
+ * @example utcDateTime.test("-000000-01-01T00:00Z") // false (negative zero year)
28
+ * @example utcDateTime.test("2024-03-15T14:30:00+00:00") // false (numeric offset)
29
+ * @example utcDateTime.test("2024-03-15T14:30:00") // false (no timezone)
30
+ */
31
+ export const utcDateTime = /^(?:\d{4}|\+\d{6}|-(?!0{6})\d{6})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:[.,]\d{1,9})?)?Z$/;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * RegExp matching an ISO 8601 UTC offset in the extended form GMT's offset-instant pair
3
+ * stores: `±HH:MM`, optionally `±HH:MM:SS`.
4
+ *
5
+ * - Anchored, so it matches a whole offset rather than the offset half of a datetime string.
6
+ * - `Z` is deliberately **not** matched. `Z` is a designator meaning "this string is already
7
+ * UTC"; the pair's `offset` field records where the event happened, and for UTC that is
8
+ * `+00:00`. Accepting both would give one fact two spellings.
9
+ * - Seconds are allowed because IANA offsets were not always whole minutes: `Africa/Monrovia`
10
+ * ran at `-00:44:30` until 1972, and `toOffsetInstant` reports it as written rather than
11
+ * rounding a real offset to a convenient one.
12
+ * - Sub-second offsets are rejected. ISO 8601 permits them and `Temporal.Instant.from` parses
13
+ * them, but no zone, and no standard that stores this pair, has ever used one.
14
+ * - Shape only. Whether the offset is in Temporal's representable range is a separate check —
15
+ * `internal/utcOffsetString.ts` applies both.
16
+ *
17
+ * @example utcOffset.test("-04:00") // true
18
+ * @example utcOffset.test("+05:45") // true
19
+ * @example utcOffset.test("-00:44:30") // true (Africa/Monrovia before 1972)
20
+ * @example utcOffset.test("Z") // false (a designator, not an offset)
21
+ * @example utcOffset.test("-0400") // false (basic format)
22
+ * @example utcOffset.test("+24:00") // false (out of range)
23
+ */
24
+ export declare const utcOffset: RegExp;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * RegExp matching an ISO 8601 UTC offset in the extended form GMT's offset-instant pair
3
+ * stores: `±HH:MM`, optionally `±HH:MM:SS`.
4
+ *
5
+ * - Anchored, so it matches a whole offset rather than the offset half of a datetime string.
6
+ * - `Z` is deliberately **not** matched. `Z` is a designator meaning "this string is already
7
+ * UTC"; the pair's `offset` field records where the event happened, and for UTC that is
8
+ * `+00:00`. Accepting both would give one fact two spellings.
9
+ * - Seconds are allowed because IANA offsets were not always whole minutes: `Africa/Monrovia`
10
+ * ran at `-00:44:30` until 1972, and `toOffsetInstant` reports it as written rather than
11
+ * rounding a real offset to a convenient one.
12
+ * - Sub-second offsets are rejected. ISO 8601 permits them and `Temporal.Instant.from` parses
13
+ * them, but no zone, and no standard that stores this pair, has ever used one.
14
+ * - Shape only. Whether the offset is in Temporal's representable range is a separate check —
15
+ * `internal/utcOffsetString.ts` applies both.
16
+ *
17
+ * @example utcOffset.test("-04:00") // true
18
+ * @example utcOffset.test("+05:45") // true
19
+ * @example utcOffset.test("-00:44:30") // true (Africa/Monrovia before 1972)
20
+ * @example utcOffset.test("Z") // false (a designator, not an offset)
21
+ * @example utcOffset.test("-0400") // false (basic format)
22
+ * @example utcOffset.test("+24:00") // false (out of range)
23
+ */
24
+ export const utcOffset = /^[+-](?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?$/;
@@ -0,0 +1,3 @@
1
+ export * from "./spanMs.js";
2
+ export * from "./spanNs.js";
3
+ export * from "./spanWallClock.js";
@@ -0,0 +1,3 @@
1
+ export * from "./spanMs.js";
2
+ export * from "./spanNs.js";
3
+ export * from "./spanWallClock.js";
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Return the exact elapsed milliseconds between two ISO 8601 instant strings.
3
+ *
4
+ * The universal span primitive for profiling and observability. Fractional, like
5
+ * `performance.now()` — a sub-millisecond span is reported as a fraction, not rounded away.
6
+ *
7
+ * - Signed: negative when `start` is after `end`, so `spanMs(b, a)` is exactly
8
+ * `-spanMs(a, b)`.
9
+ * - Measures **exact elapsed time**, never calendar distance. A wall-clock day containing a
10
+ * DST transition is 23 or 25 hours (or 24.5, in `Australia/Lord_Howe`), and `spanMs`
11
+ * reports the hours that actually elapsed. `spanWallClock` answers the calendar question;
12
+ * conflating the two is the most common span bug there is.
13
+ * - Accepts anything `toNanoseconds` does: the full RFC 9557 instant grammar, no leap
14
+ * seconds; calendar and elective annotations are ignored, as `Temporal.Instant.from` ignores
15
+ * them. An offset designator (`Z`, `±HH:MM`) is
16
+ * required, optionally followed by a bracketed IANA zone — a bracket alone is not enough,
17
+ * which is the one string shape `spanWallClock` accepts and these two do not. The
18
+ * endpoints need not share a zone; an instant is an instant.
19
+ * - **A bracketed zone annotation is syntactic only.** As in `Temporal.Instant.from`, it is
20
+ * ignored: each offset alone fixes its instant, and a zone that does not exist or disagrees
21
+ * with the offset is not checked. `spanWallClock`, by contrast, rejects a mismatched offset.
22
+ * - Returns `null` on invalid input, not `0` — `0` is the span between an instant and itself.
23
+ * `null`, not `NaN`, because that is GMT's sentinel for every number-returning function:
24
+ * it is the one a caller already checks for, and the only one `strictNullChecks` forces
25
+ * them to handle. A `NaN` would type as plain `number` and propagate silently through
26
+ * arithmetic. `spanNs` and `spanWallClock` return `null` for the same reason.
27
+ * - **Safe range.** Returns `null` when the exact span exceeds `Number.MAX_SAFE_INTEGER`
28
+ * milliseconds (±9_007_199_254_740_991 ms, about ±285,000 years), which two instants at
29
+ * opposite ends of `Temporal.Instant`'s range do. A sub-millisecond fraction counts
30
+ * toward that ceiling, so any number returned is a safe integer or below. Use `spanNs`
31
+ * past it — it carries the exact value as a `bigint`.
32
+ * Sub-millisecond fidelity goes first, long before the ceiling: a double carries the
33
+ * nanosecond digits exactly only while the span is under 2^53 ns, roughly 104 days.
34
+ * - Leap seconds are not counted. UTC repeats a second rather than numbering a 61st one, so
35
+ * a span across one is a second short of the physical elapsed time; against a smeared
36
+ * clock (Google, AWS, Meta) the error is up to a second spread over the smear window.
37
+ * Leap-second-exact spans need a TAI scale, which GMT does not yet ship.
38
+ *
39
+ * @param start ISO 8601 instant string the span is measured from
40
+ * @param end ISO 8601 instant string the span is measured to
41
+ * @returns exact elapsed milliseconds, negative when start is after end, or null on invalid input
42
+ *
43
+ * @example spanMs("2024-03-10T12:00:00Z", "2024-03-10T12:00:01Z") // 1000
44
+ * @example spanMs("2024-03-10T12:00:01Z", "2024-03-10T12:00:00Z") // -1000
45
+ * @example spanMs("2024-03-10T12:00:00Z", "2024-03-10T12:00:00Z") // 0
46
+ * @example spanMs("2024-03-10T12:00:00Z", "2024-03-10T12:00:00.123456789Z") // 123.456789
47
+ * @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
48
+ * @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
49
+ * @example spanMs("-271821-04-20T00:00:00Z", "+275760-09-13T00:00:00Z") // null — past the safe integer range, use spanNs
50
+ * @example spanMs("2024-03-10T12:00:00Z", "invalid") // null
51
+ */
52
+ export declare function spanMs(start: string, end: string): number | null;
@@ -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
+ }