@northguild/gmt 1.15.0 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1113) hide show
  1. package/README.md +852 -272
  2. package/dist/calendar/business/businessDaysBetween.d.ts +37 -0
  3. package/dist/calendar/business/businessDaysBetween.js +89 -0
  4. package/dist/calendar/business/index.d.ts +7 -0
  5. package/dist/calendar/business/index.js +10 -0
  6. package/dist/calendar/business/mergeCalendars.d.ts +33 -0
  7. package/dist/calendar/business/mergeCalendars.js +68 -0
  8. package/dist/calendar/business/nextBusinessDay.d.ts +30 -0
  9. package/dist/calendar/business/nextBusinessDay.js +39 -0
  10. package/dist/calendar/business/previousBusinessDay.d.ts +30 -0
  11. package/dist/calendar/business/previousBusinessDay.js +39 -0
  12. package/dist/calendar/business/rollDate.d.ts +59 -0
  13. package/dist/calendar/business/rollDate.js +116 -0
  14. package/dist/calendar/calculate/bucketRange.d.ts +49 -0
  15. package/dist/calendar/calculate/bucketRange.js +169 -0
  16. package/dist/calendar/calculate/floorToZone.d.ts +42 -0
  17. package/dist/calendar/calculate/floorToZone.js +62 -0
  18. package/dist/calendar/calculate/getFiscalPeriod.d.ts +64 -0
  19. package/dist/calendar/calculate/getFiscalPeriod.js +96 -0
  20. package/dist/calendar/calculate/getIsoWeekDate.d.ts +35 -0
  21. package/dist/calendar/calculate/getIsoWeekDate.js +41 -0
  22. package/dist/calendar/calculate/getOrdinalDate.d.ts +25 -0
  23. package/dist/calendar/calculate/getOrdinalDate.js +28 -0
  24. package/dist/calendar/calculate/getQuarter.d.ts +36 -0
  25. package/dist/calendar/calculate/getQuarter.js +64 -0
  26. package/dist/calendar/calculate/index.d.ts +6 -0
  27. package/dist/calendar/calculate/index.js +6 -0
  28. package/dist/calendar/index.d.ts +4 -0
  29. package/dist/calendar/index.js +5 -0
  30. package/dist/calendar/validate/index.d.ts +4 -0
  31. package/dist/calendar/validate/index.js +4 -0
  32. package/dist/calendar/validate/isValidBusinessCalendar.d.ts +31 -0
  33. package/dist/calendar/validate/isValidBusinessCalendar.js +40 -0
  34. package/dist/calendar/validate/isValidFiscalPattern.d.ts +25 -0
  35. package/dist/calendar/validate/isValidFiscalPattern.js +29 -0
  36. package/dist/calendar/validate/isValidRollConvention.d.ts +28 -0
  37. package/dist/calendar/validate/isValidRollConvention.js +38 -0
  38. package/dist/calendar/validate/isValidZoneBucketUnit.d.ts +31 -0
  39. package/dist/calendar/validate/isValidZoneBucketUnit.js +39 -0
  40. package/dist/duration/calculate/durationAs.d.ts +27 -3
  41. package/dist/duration/calculate/durationAs.js +34 -8
  42. package/dist/duration/calculate/getDurationUnit.d.ts +5 -2
  43. package/dist/duration/calculate/getDurationUnit.js +7 -3
  44. package/dist/duration/compare/compareDurations.d.ts +25 -2
  45. package/dist/duration/compare/compareDurations.js +31 -7
  46. package/dist/duration/format/formatDuration.d.ts +14 -5
  47. package/dist/duration/format/formatDuration.js +47 -11
  48. package/dist/duration/index.d.ts +1 -0
  49. package/dist/duration/index.js +2 -0
  50. package/dist/duration/normalize/normalizeDuration.d.ts +33 -6
  51. package/dist/duration/normalize/normalizeDuration.js +41 -12
  52. package/dist/duration/parse/parseDuration.js +4 -0
  53. package/dist/index.d.ts +5 -0
  54. package/dist/index.js +5 -0
  55. package/dist/instant/convert/classifyLocal.d.ts +50 -0
  56. package/dist/instant/convert/classifyLocal.js +60 -0
  57. package/dist/instant/convert/fromOffsetInstant.d.ts +47 -0
  58. package/dist/instant/convert/fromOffsetInstant.js +99 -0
  59. package/dist/instant/convert/index.d.ts +4 -0
  60. package/dist/instant/convert/index.js +4 -0
  61. package/dist/instant/convert/resolveLocal.d.ts +40 -0
  62. package/dist/instant/convert/resolveLocal.js +76 -0
  63. package/dist/instant/convert/toOffsetInstant.d.ts +73 -0
  64. package/dist/instant/convert/toOffsetInstant.js +185 -0
  65. package/dist/instant/index.d.ts +2 -0
  66. package/dist/instant/index.js +3 -0
  67. package/dist/internal/adjustZonedBusinessDays.js +9 -7
  68. package/dist/internal/businessCalendar.d.ts +46 -0
  69. package/dist/internal/businessCalendar.js +230 -0
  70. package/dist/internal/businessDayValues.d.ts +20 -0
  71. package/dist/internal/businessDayValues.js +54 -0
  72. package/dist/internal/calendarDatePairPolicy.d.ts +10 -12
  73. package/dist/internal/calendarDatePairPolicy.js +13 -19
  74. package/dist/internal/calendarDateString.d.ts +32 -58
  75. package/dist/internal/calendarDateString.js +51 -93
  76. package/dist/internal/calendarSystemIds.d.ts +26 -2
  77. package/dist/internal/calendarSystemIds.js +57 -51
  78. package/dist/internal/calendarValueOfDate.d.ts +10 -12
  79. package/dist/internal/calendarValueOfDate.js +22 -20
  80. package/dist/internal/calendarValueOfZoned.d.ts +14 -17
  81. package/dist/internal/calendarValueOfZoned.js +25 -25
  82. package/dist/internal/calendarZonedPairPolicy.d.ts +11 -18
  83. package/dist/internal/calendarZonedPairPolicy.js +14 -25
  84. package/dist/internal/calendarZonedString.d.ts +41 -65
  85. package/dist/internal/calendarZonedString.js +52 -101
  86. package/dist/internal/compareUnixEpochs.d.ts +14 -0
  87. package/dist/internal/compareUnixEpochs.js +25 -0
  88. package/dist/internal/dateTimeUnitHelpers.d.ts +18 -0
  89. package/dist/internal/dateTimeUnitHelpers.js +27 -0
  90. package/dist/internal/dateUnitHelpers.d.ts +39 -1
  91. package/dist/internal/dateUnitHelpers.js +73 -11
  92. package/dist/internal/defaultFractionalDigits.d.ts +14 -0
  93. package/dist/internal/defaultFractionalDigits.js +23 -0
  94. package/dist/internal/differenceRecord.d.ts +32 -0
  95. package/dist/internal/differenceRecord.js +79 -0
  96. package/dist/internal/divisionBoundary.d.ts +19 -0
  97. package/dist/internal/divisionBoundary.js +23 -0
  98. package/dist/internal/durationUntilString.d.ts +1 -1
  99. package/dist/internal/durationUntilString.js +10 -2
  100. package/dist/internal/englishCalendarNames.d.ts +11 -0
  101. package/dist/internal/englishCalendarNames.js +21 -1
  102. package/dist/internal/epochNanoseconds.d.ts +27 -0
  103. package/dist/internal/epochNanoseconds.js +31 -0
  104. package/dist/internal/fiscalCalendar.d.ts +36 -0
  105. package/dist/internal/fiscalCalendar.js +86 -0
  106. package/dist/internal/floorDivide.d.ts +15 -0
  107. package/dist/internal/floorDivide.js +18 -0
  108. package/dist/internal/foreignEpochs.d.ts +134 -0
  109. package/dist/internal/foreignEpochs.js +139 -0
  110. package/dist/internal/formatCalendarDays.d.ts +28 -0
  111. package/dist/internal/formatCalendarDays.js +49 -0
  112. package/dist/internal/formatDateInCalendar.d.ts +14 -39
  113. package/dist/internal/formatDateInCalendar.js +16 -47
  114. package/dist/internal/formatRelativeDuration.d.ts +27 -0
  115. package/dist/internal/formatRelativeDuration.js +45 -0
  116. package/dist/internal/getLocaleFirstDayOfWeek.d.ts +9 -6
  117. package/dist/internal/getLocaleFirstDayOfWeek.js +9 -10
  118. package/dist/internal/getLocaleWeekYearBounds.d.ts +17 -9
  119. package/dist/internal/getLocaleWeekYearBounds.js +45 -26
  120. package/dist/internal/getLocaleWeekendDays.d.ts +9 -18
  121. package/dist/internal/getLocaleWeekendDays.js +9 -5
  122. package/dist/internal/halfOpenIntervals.d.ts +102 -0
  123. package/dist/internal/halfOpenIntervals.js +180 -0
  124. package/dist/internal/hasCalendarAnnotation.d.ts +20 -20
  125. package/dist/internal/hasCalendarAnnotation.js +23 -21
  126. package/dist/internal/hourDurationString.d.ts +16 -0
  127. package/dist/internal/hourDurationString.js +47 -0
  128. package/dist/internal/httpDateFields.d.ts +24 -0
  129. package/dist/internal/httpDateFields.js +86 -0
  130. package/dist/internal/index.d.ts +28 -9
  131. package/dist/internal/index.js +28 -9
  132. package/dist/internal/instantFormatOptions.d.ts +43 -0
  133. package/dist/internal/instantFormatOptions.js +99 -0
  134. package/dist/internal/instantIntervalText.d.ts +20 -0
  135. package/dist/internal/instantIntervalText.js +25 -0
  136. package/dist/internal/instantNanoseconds.d.ts +25 -0
  137. package/dist/internal/instantNanoseconds.js +41 -0
  138. package/dist/internal/intervalCountHelpers.d.ts +16 -10
  139. package/dist/internal/intervalCountHelpers.js +1 -31
  140. package/dist/internal/intervalNanoseconds.d.ts +47 -0
  141. package/dist/internal/intervalNanoseconds.js +86 -0
  142. package/dist/internal/isObject.d.ts +26 -0
  143. package/dist/internal/isObject.js +30 -0
  144. package/dist/internal/isoStringBody.d.ts +40 -0
  145. package/dist/internal/isoStringBody.js +85 -0
  146. package/dist/internal/joinDateTimeConnector.d.ts +1 -1
  147. package/dist/internal/localeWeekInfo.d.ts +34 -0
  148. package/dist/internal/localeWeekInfo.js +27 -0
  149. package/dist/internal/maxPieces.d.ts +41 -0
  150. package/dist/internal/maxPieces.js +53 -0
  151. package/dist/internal/measureNearRangeEnd.d.ts +26 -0
  152. package/dist/internal/measureNearRangeEnd.js +47 -0
  153. package/dist/internal/monthGridWeekRow.d.ts +4 -1
  154. package/dist/internal/monthGridWeekRow.js +3 -0
  155. package/dist/internal/normalizeTimeZone.d.ts +17 -10
  156. package/dist/internal/normalizeTimeZone.js +25 -15
  157. package/dist/internal/patternToken.d.ts +2 -1
  158. package/dist/internal/patternToken.js +10 -4
  159. package/dist/internal/plainDateAdd.d.ts +20 -0
  160. package/dist/internal/plainDateAdd.js +42 -0
  161. package/dist/internal/plainDateUntil.d.ts +21 -0
  162. package/dist/internal/plainDateUntil.js +48 -0
  163. package/dist/internal/plainFormatOptions.d.ts +59 -0
  164. package/dist/internal/plainFormatOptions.js +165 -0
  165. package/dist/internal/resolveDateTimeUnit.d.ts +4 -1
  166. package/dist/internal/resolveDateTimeUnit.js +2 -12
  167. package/dist/internal/resolveDurationRelativeTo.d.ts +28 -22
  168. package/dist/internal/resolveDurationRelativeTo.js +69 -25
  169. package/dist/internal/resolveDurationUnit.d.ts +4 -1
  170. package/dist/internal/resolveDurationUnit.js +2 -11
  171. package/dist/internal/resolveLocale.d.ts +37 -0
  172. package/dist/internal/resolveLocale.js +59 -0
  173. package/dist/internal/resolveManualRoundingOptions.d.ts +23 -0
  174. package/dist/internal/resolveManualRoundingOptions.js +39 -0
  175. package/dist/internal/resolveMinimalDaysInFirstWeek.d.ts +19 -0
  176. package/dist/internal/resolveMinimalDaysInFirstWeek.js +28 -0
  177. package/dist/internal/resolveOverflow.d.ts +6 -0
  178. package/dist/internal/resolveOverflow.js +7 -1
  179. package/dist/internal/resolveReadingTimeZone.d.ts +11 -0
  180. package/dist/internal/resolveReadingTimeZone.js +18 -0
  181. package/dist/internal/resolveUnixIntervalPair.d.ts +30 -0
  182. package/dist/internal/resolveUnixIntervalPair.js +53 -0
  183. package/dist/internal/resolveWeekStartsOn.d.ts +12 -0
  184. package/dist/internal/resolveWeekStartsOn.js +18 -0
  185. package/dist/internal/rfc5322DateTime.d.ts +26 -0
  186. package/dist/internal/rfc5322DateTime.js +176 -0
  187. package/dist/internal/splitStep.d.ts +81 -0
  188. package/dist/internal/splitStep.js +182 -0
  189. package/dist/internal/startOrEndOfUnix.d.ts +26 -0
  190. package/dist/internal/startOrEndOfUnix.js +47 -0
  191. package/dist/{utc/calculate → internal}/startOrEndOfUtc.d.ts +8 -4
  192. package/dist/{utc/calculate → internal}/startOrEndOfUtc.js +30 -26
  193. package/dist/internal/startOrEndOfZoned.d.ts +22 -0
  194. package/dist/internal/startOrEndOfZoned.js +49 -0
  195. package/dist/internal/temporalCompat/calendarDateArithmetic.d.ts +33 -0
  196. package/dist/internal/temporalCompat/calendarDateArithmetic.js +199 -0
  197. package/dist/internal/temporalCompat/calendarDateFromFields.d.ts +36 -0
  198. package/dist/internal/temporalCompat/calendarDateFromFields.js +120 -0
  199. package/dist/internal/temporalCompat/calendarFields.d.ts +25 -0
  200. package/dist/internal/temporalCompat/calendarFields.js +131 -0
  201. package/dist/internal/temporalCompat/capabilities.d.ts +28 -0
  202. package/dist/internal/temporalCompat/capabilities.js +74 -0
  203. package/dist/internal/temporalCompat/fieldSearch.d.ts +21 -0
  204. package/dist/internal/temporalCompat/fieldSearch.js +83 -0
  205. package/dist/internal/temporalCompat/fixedDay.d.ts +25 -0
  206. package/dist/internal/temporalCompat/fixedDay.js +45 -0
  207. package/dist/internal/temporalCompat/hebrewArithmetic.d.ts +19 -0
  208. package/dist/internal/temporalCompat/hebrewArithmetic.js +150 -0
  209. package/dist/internal/temporalCompat/index.d.ts +4 -0
  210. package/dist/internal/temporalCompat/index.js +5 -0
  211. package/dist/internal/temporalCompat/indianArithmetic.d.ts +16 -0
  212. package/dist/internal/temporalCompat/indianArithmetic.js +87 -0
  213. package/dist/internal/temporalCompat/largeMonthSpan.d.ts +19 -0
  214. package/dist/internal/temporalCompat/largeMonthSpan.js +199 -0
  215. package/dist/internal/temporalCompat/nonIsoArithmetic.d.ts +59 -0
  216. package/dist/internal/temporalCompat/nonIsoArithmetic.js +220 -0
  217. package/dist/internal/temporalCompat/readArithmeticModel.d.ts +3 -0
  218. package/dist/internal/temporalCompat/readArithmeticModel.js +284 -0
  219. package/dist/internal/temporalCompat/repros.d.ts +31 -0
  220. package/dist/internal/temporalCompat/repros.js +556 -0
  221. package/dist/internal/toInstantFromUtc.d.ts +10 -0
  222. package/dist/internal/toInstantFromUtc.js +19 -0
  223. package/dist/internal/unixEpochValue.d.ts +166 -0
  224. package/dist/internal/unixEpochValue.js +245 -0
  225. package/dist/internal/unixFormatReference.d.ts +18 -0
  226. package/dist/internal/unixFormatReference.js +44 -0
  227. package/dist/internal/unixZonedDateTime.d.ts +22 -0
  228. package/dist/internal/unixZonedDateTime.js +32 -0
  229. package/dist/internal/utcOffsetString.d.ts +39 -0
  230. package/dist/internal/utcOffsetString.js +75 -0
  231. package/dist/internal/utcZonedDateTime.d.ts +16 -0
  232. package/dist/internal/utcZonedDateTime.js +28 -0
  233. package/dist/internal/zonedBucket.d.ts +91 -0
  234. package/dist/internal/zonedBucket.js +441 -0
  235. package/dist/internal/zonedFormatReference.d.ts +15 -0
  236. package/dist/internal/zonedFormatReference.js +24 -0
  237. package/dist/internal/zonedLocalDates.d.ts +15 -0
  238. package/dist/internal/zonedLocalDates.js +58 -0
  239. package/dist/internal/zonedNowUnitValue.d.ts +24 -0
  240. package/dist/internal/zonedNowUnitValue.js +58 -0
  241. package/dist/internal/zonedWallClock.d.ts +84 -0
  242. package/dist/internal/zonedWallClock.js +427 -0
  243. package/dist/internal/zonedWallClockDifference.d.ts +92 -0
  244. package/dist/internal/zonedWallClockDifference.js +1173 -0
  245. package/dist/internal/zonedWallClockOperations.d.ts +132 -0
  246. package/dist/internal/zonedWallClockOperations.js +553 -0
  247. package/dist/internal/zonelessCalendarDate.d.ts +12 -0
  248. package/dist/internal/zonelessCalendarDate.js +22 -0
  249. package/dist/interval/calculate/clampInterval.d.ts +22 -0
  250. package/dist/interval/calculate/clampInterval.js +31 -0
  251. package/dist/interval/calculate/index.d.ts +6 -0
  252. package/dist/interval/calculate/index.js +6 -0
  253. package/dist/interval/calculate/intersectIntervals.d.ts +23 -0
  254. package/dist/interval/calculate/intersectIntervals.js +43 -0
  255. package/dist/interval/calculate/mergeIntervals.d.ts +28 -0
  256. package/dist/interval/calculate/mergeIntervals.js +44 -0
  257. package/dist/interval/calculate/splitIntervalAt.d.ts +28 -0
  258. package/dist/interval/calculate/splitIntervalAt.js +63 -0
  259. package/dist/interval/calculate/subtractIntervals.d.ts +31 -0
  260. package/dist/interval/calculate/subtractIntervals.js +64 -0
  261. package/dist/interval/calculate/sumIntervals.d.ts +26 -0
  262. package/dist/interval/calculate/sumIntervals.js +40 -0
  263. package/dist/interval/compare/index.d.ts +2 -0
  264. package/dist/interval/compare/index.js +2 -0
  265. package/dist/interval/compare/intervalContains.d.ts +25 -0
  266. package/dist/interval/compare/intervalContains.js +39 -0
  267. package/dist/interval/compare/intervalsOverlap.d.ts +28 -0
  268. package/dist/interval/compare/intervalsOverlap.js +42 -0
  269. package/dist/interval/index.d.ts +4 -0
  270. package/dist/interval/index.js +5 -0
  271. package/dist/interval/validate/index.d.ts +1 -0
  272. package/dist/interval/validate/index.js +1 -0
  273. package/dist/interval/validate/isValidInterval.d.ts +29 -0
  274. package/dist/interval/validate/isValidInterval.js +38 -0
  275. package/dist/plain/calculate/addBusinessDays.d.ts +26 -9
  276. package/dist/plain/calculate/addBusinessDays.js +29 -21
  277. package/dist/plain/calculate/addDate.d.ts +9 -8
  278. package/dist/plain/calculate/addDate.js +35 -22
  279. package/dist/plain/calculate/addDateTime.js +24 -10
  280. package/dist/plain/calculate/addTime.d.ts +5 -8
  281. package/dist/plain/calculate/addTime.js +23 -16
  282. package/dist/plain/calculate/clampDate.js +3 -3
  283. package/dist/plain/calculate/closestDateTo.d.ts +11 -7
  284. package/dist/plain/calculate/closestDateTo.js +36 -24
  285. package/dist/plain/calculate/cycleDate.d.ts +1 -1
  286. package/dist/plain/calculate/cycleDate.js +10 -3
  287. package/dist/plain/calculate/cycleDateTime.d.ts +1 -1
  288. package/dist/plain/calculate/cycleDateTime.js +10 -3
  289. package/dist/plain/calculate/cycleTime.d.ts +6 -8
  290. package/dist/plain/calculate/cycleTime.js +15 -9
  291. package/dist/plain/calculate/diffDate.d.ts +31 -14
  292. package/dist/plain/calculate/diffDate.js +73 -38
  293. package/dist/plain/calculate/diffDateAsDuration.d.ts +13 -8
  294. package/dist/plain/calculate/diffDateAsDuration.js +22 -9
  295. package/dist/plain/calculate/diffDateTime.d.ts +17 -5
  296. package/dist/plain/calculate/diffDateTime.js +67 -28
  297. package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +2 -2
  298. package/dist/plain/calculate/diffDateTimeAsDuration.js +10 -3
  299. package/dist/plain/calculate/diffTime.d.ts +18 -5
  300. package/dist/plain/calculate/diffTime.js +68 -27
  301. package/dist/plain/calculate/endOfDate.d.ts +10 -2
  302. package/dist/plain/calculate/endOfDate.js +52 -27
  303. package/dist/plain/calculate/endOfDateTime.d.ts +17 -2
  304. package/dist/plain/calculate/endOfDateTime.js +126 -103
  305. package/dist/plain/calculate/endOfTime.d.ts +16 -2
  306. package/dist/plain/calculate/endOfTime.js +77 -59
  307. package/dist/plain/calculate/getLargestDateDurationUnit.d.ts +13 -5
  308. package/dist/plain/calculate/getLargestDateDurationUnit.js +26 -10
  309. package/dist/plain/calculate/getLargestDateTimeDurationUnit.d.ts +13 -6
  310. package/dist/plain/calculate/getLargestDateTimeDurationUnit.js +37 -22
  311. package/dist/plain/calculate/getLargestTimeDurationUnit.d.ts +13 -6
  312. package/dist/plain/calculate/getLargestTimeDurationUnit.js +33 -18
  313. package/dist/plain/calculate/getLocaleDayOfWeek.d.ts +8 -4
  314. package/dist/plain/calculate/getLocaleDayOfWeek.js +8 -3
  315. package/dist/plain/calculate/getLocaleEndOfWeek.d.ts +8 -4
  316. package/dist/plain/calculate/getLocaleEndOfWeek.js +8 -3
  317. package/dist/plain/calculate/getLocaleStartOfWeek.d.ts +8 -4
  318. package/dist/plain/calculate/getLocaleStartOfWeek.js +8 -3
  319. package/dist/plain/calculate/getLocaleWeekYear.d.ts +29 -19
  320. package/dist/plain/calculate/getLocaleWeekYear.js +48 -28
  321. package/dist/plain/calculate/getWeekNumber.d.ts +21 -2
  322. package/dist/plain/calculate/getWeekNumber.js +33 -12
  323. package/dist/plain/calculate/getWeekOfMonth.d.ts +4 -2
  324. package/dist/plain/calculate/getWeekOfMonth.js +8 -3
  325. package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +25 -14
  326. package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +45 -25
  327. package/dist/plain/calculate/getWeeksInMonth.d.ts +4 -2
  328. package/dist/plain/calculate/getWeeksInMonth.js +8 -3
  329. package/dist/plain/calculate/getWeeksInYear.d.ts +5 -4
  330. package/dist/plain/calculate/getWeeksInYear.js +9 -14
  331. package/dist/plain/calculate/maxDate.js +19 -12
  332. package/dist/plain/calculate/maxDateTime.js +19 -12
  333. package/dist/plain/calculate/maxTime.js +19 -12
  334. package/dist/plain/calculate/minDate.js +19 -12
  335. package/dist/plain/calculate/minDateTime.js +19 -12
  336. package/dist/plain/calculate/minTime.js +19 -12
  337. package/dist/plain/calculate/nextWeekday.js +5 -0
  338. package/dist/plain/calculate/previousWeekday.js +5 -0
  339. package/dist/plain/calculate/roundDate.d.ts +23 -5
  340. package/dist/plain/calculate/roundDate.js +88 -46
  341. package/dist/plain/calculate/roundDateTime.d.ts +27 -3
  342. package/dist/plain/calculate/roundDateTime.js +128 -69
  343. package/dist/plain/calculate/roundTime.d.ts +8 -1
  344. package/dist/plain/calculate/roundTime.js +32 -17
  345. package/dist/plain/calculate/setDate.js +4 -0
  346. package/dist/plain/calculate/setDateTime.js +4 -0
  347. package/dist/plain/calculate/setTime.d.ts +1 -1
  348. package/dist/plain/calculate/setTime.js +5 -1
  349. package/dist/plain/calculate/sortDateTimes.js +17 -10
  350. package/dist/plain/calculate/sortDates.js +17 -10
  351. package/dist/plain/calculate/sortTimes.js +17 -10
  352. package/dist/plain/calculate/startOfDate.d.ts +7 -2
  353. package/dist/plain/calculate/startOfDate.js +52 -27
  354. package/dist/plain/calculate/startOfDateTime.d.ts +5 -2
  355. package/dist/plain/calculate/startOfDateTime.js +81 -62
  356. package/dist/plain/calculate/startOfQuarterForDateTime.d.ts +2 -0
  357. package/dist/plain/calculate/startOfQuarterForDateTime.js +12 -1
  358. package/dist/plain/calculate/startOfTime.d.ts +15 -2
  359. package/dist/plain/calculate/startOfTime.js +33 -37
  360. package/dist/plain/calculate/subtractBusinessDays.d.ts +25 -10
  361. package/dist/plain/calculate/subtractBusinessDays.js +28 -22
  362. package/dist/plain/calculate/subtractDate.d.ts +8 -7
  363. package/dist/plain/calculate/subtractDate.js +35 -21
  364. package/dist/plain/calculate/subtractDateTime.js +24 -10
  365. package/dist/plain/calculate/subtractTime.d.ts +5 -8
  366. package/dist/plain/calculate/subtractTime.js +23 -16
  367. package/dist/plain/chop/index.d.ts +0 -1
  368. package/dist/plain/chop/index.js +0 -1
  369. package/dist/plain/compare/areDateTimesEqualBy.d.ts +10 -5
  370. package/dist/plain/compare/areDateTimesEqualBy.js +35 -10
  371. package/dist/plain/compare/areDatesEqualBy.d.ts +10 -3
  372. package/dist/plain/compare/areDatesEqualBy.js +41 -14
  373. package/dist/plain/compare/isBetweenDate.js +32 -16
  374. package/dist/plain/compare/isBetweenDateTime.js +34 -18
  375. package/dist/plain/compare/isBetweenTime.js +32 -16
  376. package/dist/plain/compare/isBusinessDay.d.ts +25 -11
  377. package/dist/plain/compare/isBusinessDay.js +36 -15
  378. package/dist/plain/compare/isThisUnit.d.ts +13 -4
  379. package/dist/plain/compare/isThisUnit.js +33 -13
  380. package/dist/plain/compare/isWeekend.d.ts +8 -4
  381. package/dist/plain/compare/isWeekend.js +7 -3
  382. package/dist/plain/convert/convertDateToCalendar.d.ts +34 -33
  383. package/dist/plain/convert/convertDateToCalendar.js +41 -40
  384. package/dist/plain/format/formatCalendar.d.ts +12 -6
  385. package/dist/plain/format/formatCalendar.js +47 -25
  386. package/dist/plain/format/formatDate.d.ts +21 -4
  387. package/dist/plain/format/formatDate.js +37 -5
  388. package/dist/plain/format/formatDateRange.d.ts +17 -4
  389. package/dist/plain/format/formatDateRange.js +29 -5
  390. package/dist/plain/format/formatDateTime.d.ts +22 -4
  391. package/dist/plain/format/formatDateTime.js +31 -5
  392. package/dist/plain/format/formatDateTimeRange.d.ts +20 -4
  393. package/dist/plain/format/formatDateTimeRange.js +29 -5
  394. package/dist/plain/format/formatDateTimeToParts.d.ts +32 -6
  395. package/dist/plain/format/formatDateTimeToParts.js +40 -14
  396. package/dist/plain/format/formatDateToParts.d.ts +24 -3
  397. package/dist/plain/format/formatDateToParts.js +36 -11
  398. package/dist/plain/format/formatRelativeDate.d.ts +7 -3
  399. package/dist/plain/format/formatRelativeDate.js +39 -24
  400. package/dist/plain/format/formatRelativeDateTime.d.ts +15 -6
  401. package/dist/plain/format/formatRelativeDateTime.js +35 -33
  402. package/dist/plain/format/formatRelativeTime.d.ts +8 -4
  403. package/dist/plain/format/formatRelativeTime.js +36 -21
  404. package/dist/plain/format/formatSql.d.ts +15 -10
  405. package/dist/plain/format/formatSql.js +20 -11
  406. package/dist/plain/format/formatTime.d.ts +18 -4
  407. package/dist/plain/format/formatTime.js +32 -5
  408. package/dist/plain/get/getNowUnit.d.ts +3 -0
  409. package/dist/plain/get/getNowUnit.js +14 -29
  410. package/dist/plain/index.js +1 -1
  411. package/dist/plain/interval/intervalAbutsDate.d.ts +12 -7
  412. package/dist/plain/interval/intervalAbutsDate.js +15 -19
  413. package/dist/plain/interval/intervalAbutsDateTime.d.ts +9 -7
  414. package/dist/plain/interval/intervalAbutsDateTime.js +17 -23
  415. package/dist/plain/interval/intervalAbutsTime.d.ts +11 -5
  416. package/dist/plain/interval/intervalAbutsTime.js +19 -21
  417. package/dist/plain/interval/intervalContainsDate.d.ts +17 -10
  418. package/dist/plain/interval/intervalContainsDate.js +20 -15
  419. package/dist/plain/interval/intervalContainsDateTime.d.ts +16 -11
  420. package/dist/plain/interval/intervalContainsDateTime.js +24 -20
  421. package/dist/plain/interval/intervalContainsTime.d.ts +20 -10
  422. package/dist/plain/interval/intervalContainsTime.js +28 -19
  423. package/dist/plain/interval/intervalCountDate.d.ts +13 -8
  424. package/dist/plain/interval/intervalCountDate.js +46 -14
  425. package/dist/plain/interval/intervalCountDateTime.d.ts +6 -4
  426. package/dist/plain/interval/intervalCountDateTime.js +63 -18
  427. package/dist/plain/interval/intervalCountTime.d.ts +3 -4
  428. package/dist/plain/interval/intervalCountTime.js +9 -9
  429. package/dist/plain/interval/intervalDifferenceDate.d.ts +13 -6
  430. package/dist/plain/interval/intervalDifferenceDate.js +19 -32
  431. package/dist/plain/interval/intervalDifferenceDateTime.d.ts +10 -4
  432. package/dist/plain/interval/intervalDifferenceDateTime.js +21 -27
  433. package/dist/plain/interval/intervalDifferenceTime.d.ts +11 -4
  434. package/dist/plain/interval/intervalDifferenceTime.js +22 -27
  435. package/dist/plain/interval/intervalDivideEquallyDate.d.ts +16 -4
  436. package/dist/plain/interval/intervalDivideEquallyDate.js +57 -33
  437. package/dist/plain/interval/intervalDivideEquallyDateTime.d.ts +16 -4
  438. package/dist/plain/interval/intervalDivideEquallyDateTime.js +67 -31
  439. package/dist/plain/interval/intervalDivideEquallyTime.d.ts +16 -4
  440. package/dist/plain/interval/intervalDivideEquallyTime.js +58 -31
  441. package/dist/plain/interval/intervalEngulfsDate.d.ts +16 -9
  442. package/dist/plain/interval/intervalEngulfsDate.js +19 -12
  443. package/dist/plain/interval/intervalEngulfsDateTime.d.ts +16 -11
  444. package/dist/plain/interval/intervalEngulfsDateTime.js +24 -18
  445. package/dist/plain/interval/intervalEngulfsTime.d.ts +18 -8
  446. package/dist/plain/interval/intervalEngulfsTime.js +26 -15
  447. package/dist/plain/interval/intervalFromDurationDate.d.ts +5 -4
  448. package/dist/plain/interval/intervalFromDurationDate.js +11 -8
  449. package/dist/plain/interval/intervalFromDurationDateTime.js +4 -0
  450. package/dist/plain/interval/intervalFromDurationTime.d.ts +10 -12
  451. package/dist/plain/interval/intervalFromDurationTime.js +28 -17
  452. package/dist/plain/interval/intervalIntersectionDate.d.ts +9 -4
  453. package/dist/plain/interval/intervalIntersectionDate.js +14 -9
  454. package/dist/plain/interval/intervalIntersectionDateTime.d.ts +9 -4
  455. package/dist/plain/interval/intervalIntersectionDateTime.js +19 -13
  456. package/dist/plain/interval/intervalIntersectionTime.d.ts +7 -3
  457. package/dist/plain/interval/intervalIntersectionTime.js +17 -12
  458. package/dist/plain/interval/intervalLengthDate.d.ts +9 -6
  459. package/dist/plain/interval/intervalLengthDate.js +40 -8
  460. package/dist/plain/interval/intervalLengthDateTime.js +2 -2
  461. package/dist/plain/interval/intervalOverlappingDaysDate.d.ts +16 -17
  462. package/dist/plain/interval/intervalOverlappingDaysDate.js +30 -30
  463. package/dist/plain/interval/intervalOverlappingDaysDateTime.d.ts +7 -12
  464. package/dist/plain/interval/intervalOverlappingDaysDateTime.js +24 -24
  465. package/dist/plain/interval/intervalSplitAtDate.d.ts +10 -5
  466. package/dist/plain/interval/intervalSplitAtDate.js +48 -36
  467. package/dist/plain/interval/intervalSplitAtDateTime.d.ts +9 -4
  468. package/dist/plain/interval/intervalSplitAtDateTime.js +44 -32
  469. package/dist/plain/interval/intervalSplitAtTime.d.ts +9 -4
  470. package/dist/plain/interval/intervalSplitAtTime.js +44 -32
  471. package/dist/plain/interval/intervalUnionDate.d.ts +14 -6
  472. package/dist/plain/interval/intervalUnionDate.js +19 -11
  473. package/dist/plain/interval/intervalUnionDateTime.d.ts +12 -5
  474. package/dist/plain/interval/intervalUnionDateTime.js +22 -14
  475. package/dist/plain/interval/intervalUnionTime.d.ts +10 -3
  476. package/dist/plain/interval/intervalUnionTime.js +20 -12
  477. package/dist/plain/interval/intervalXorAllDate.d.ts +11 -10
  478. package/dist/plain/interval/intervalXorAllDate.js +37 -59
  479. package/dist/plain/interval/intervalXorAllDateTime.d.ts +7 -5
  480. package/dist/plain/interval/intervalXorAllDateTime.js +28 -48
  481. package/dist/plain/interval/intervalXorAllTime.d.ts +8 -4
  482. package/dist/plain/interval/intervalXorAllTime.js +29 -47
  483. package/dist/plain/interval/intervalXorDate.d.ts +10 -9
  484. package/dist/plain/interval/intervalXorDate.js +19 -54
  485. package/dist/plain/interval/intervalXorDateTime.d.ts +9 -7
  486. package/dist/plain/interval/intervalXorDateTime.js +23 -50
  487. package/dist/plain/interval/intervalXorTime.d.ts +8 -7
  488. package/dist/plain/interval/intervalXorTime.js +22 -50
  489. package/dist/plain/interval/intervalsOverlapDate.d.ts +14 -7
  490. package/dist/plain/interval/intervalsOverlapDate.js +17 -10
  491. package/dist/plain/interval/intervalsOverlapDateTime.d.ts +12 -7
  492. package/dist/plain/interval/intervalsOverlapDateTime.js +20 -14
  493. package/dist/plain/interval/intervalsOverlapTime.d.ts +10 -5
  494. package/dist/plain/interval/intervalsOverlapTime.js +18 -12
  495. package/dist/plain/interval/mergeIntervalsDate.d.ts +9 -5
  496. package/dist/plain/interval/mergeIntervalsDate.js +37 -38
  497. package/dist/plain/interval/mergeIntervalsDateTime.d.ts +7 -3
  498. package/dist/plain/interval/mergeIntervalsDateTime.js +31 -32
  499. package/dist/plain/interval/mergeIntervalsTime.d.ts +7 -3
  500. package/dist/plain/interval/mergeIntervalsTime.js +31 -31
  501. package/dist/plain/interval/splitIntervalByUnitDate.d.ts +26 -6
  502. package/dist/plain/interval/splitIntervalByUnitDate.js +76 -43
  503. package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +22 -2
  504. package/dist/plain/interval/splitIntervalByUnitDateTime.js +65 -39
  505. package/dist/plain/interval/splitIntervalByUnitTime.d.ts +18 -2
  506. package/dist/plain/interval/splitIntervalByUnitTime.js +76 -39
  507. package/dist/plain/interval/validate/isValidDateInterval.d.ts +4 -2
  508. package/dist/plain/interval/validate/isValidDateInterval.js +4 -2
  509. package/dist/plain/interval/validate/isValidDateTimeInterval.d.ts +5 -0
  510. package/dist/plain/interval/validate/isValidDateTimeInterval.js +7 -2
  511. package/dist/plain/interval/validate/isValidTimeInterval.d.ts +5 -0
  512. package/dist/plain/interval/validate/isValidTimeInterval.js +8 -18
  513. package/dist/plain/locale/getLocaleEraNames.d.ts +14 -4
  514. package/dist/plain/locale/getLocaleEraNames.js +56 -41
  515. package/dist/plain/locale/getLocaleMeridiems.d.ts +7 -4
  516. package/dist/plain/locale/getLocaleMeridiems.js +28 -22
  517. package/dist/plain/locale/getLocaleMonthNames.d.ts +14 -4
  518. package/dist/plain/locale/getLocaleMonthNames.js +34 -19
  519. package/dist/plain/locale/getLocaleWeekdayNames.d.ts +14 -7
  520. package/dist/plain/locale/getLocaleWeekdayNames.js +40 -22
  521. package/dist/plain/map/mapDatesInRange.d.ts +18 -1
  522. package/dist/plain/map/mapDatesInRange.js +53 -17
  523. package/dist/plain/parse/parseDateTimeWithPattern.d.ts +3 -2
  524. package/dist/plain/parse/parseDateTimeWithPattern.js +30 -24
  525. package/dist/plain/parse/parseDateWithPattern.d.ts +3 -2
  526. package/dist/plain/parse/parseDateWithPattern.js +22 -16
  527. package/dist/plain/parse/parseMicrosecondFromDateTime.d.ts +2 -1
  528. package/dist/plain/parse/parseMicrosecondFromDateTime.js +2 -1
  529. package/dist/plain/parse/parseMicrosecondFromTime.d.ts +2 -1
  530. package/dist/plain/parse/parseMicrosecondFromTime.js +2 -1
  531. package/dist/plain/parse/parseNanosecondFromDateTime.d.ts +2 -1
  532. package/dist/plain/parse/parseNanosecondFromDateTime.js +2 -1
  533. package/dist/plain/parse/parseNanosecondFromTime.d.ts +2 -1
  534. package/dist/plain/parse/parseNanosecondFromTime.js +2 -1
  535. package/dist/plain/parse/parseSql.d.ts +15 -12
  536. package/dist/plain/parse/parseSql.js +16 -13
  537. package/dist/plain/parse/parseTimeWithPattern.d.ts +3 -2
  538. package/dist/plain/parse/parseTimeWithPattern.js +27 -21
  539. package/dist/plain/parse/parseUnitFromDate.d.ts +9 -2
  540. package/dist/plain/parse/parseUnitFromDate.js +39 -19
  541. package/dist/plain/parse/parseUnitFromDateTime.d.ts +11 -3
  542. package/dist/plain/parse/parseUnitFromDateTime.js +54 -28
  543. package/dist/plain/parse/parseUnitFromTime.d.ts +9 -3
  544. package/dist/plain/parse/parseUnitFromTime.js +13 -3
  545. package/dist/plain/parse/parseWeekFromDate.d.ts +5 -0
  546. package/dist/plain/parse/parseWeekFromDate.js +24 -5
  547. package/dist/plain/parse/parseWeekFromDateTime.d.ts +5 -0
  548. package/dist/plain/parse/parseWeekFromDateTime.js +26 -5
  549. package/dist/plain/validate/isLeapSecond.d.ts +27 -9
  550. package/dist/plain/validate/isLeapSecond.js +30 -9
  551. package/dist/plain/validate/isLeapYear.d.ts +7 -1
  552. package/dist/plain/validate/isLeapYear.js +10 -1
  553. package/dist/plain/validate/isValidCalendarDate.d.ts +37 -6
  554. package/dist/plain/validate/isValidCalendarDate.js +37 -6
  555. package/dist/plain/validate/isValidDate.d.ts +9 -1
  556. package/dist/plain/validate/isValidDate.js +14 -5
  557. package/dist/plain/validate/isValidDateRange.d.ts +11 -4
  558. package/dist/plain/validate/isValidDateRange.js +32 -22
  559. package/dist/plain/validate/isValidDateTime.d.ts +7 -1
  560. package/dist/plain/validate/isValidDateTime.js +12 -5
  561. package/dist/plain/validate/isValidDateTimeRange.d.ts +3 -2
  562. package/dist/plain/validate/isValidDateTimeRange.js +30 -15
  563. package/dist/plain/validate/isValidIsoDateLike.d.ts +6 -1
  564. package/dist/plain/validate/isValidIsoDateLike.js +13 -8
  565. package/dist/plain/validate/isValidTime.d.ts +6 -1
  566. package/dist/plain/validate/isValidTime.js +10 -3
  567. package/dist/plain/validate/isValidTimeRange.d.ts +4 -2
  568. package/dist/plain/validate/isValidTimeRange.js +31 -27
  569. package/dist/precision/calculate/index.d.ts +1 -0
  570. package/dist/precision/calculate/index.js +1 -0
  571. package/dist/precision/calculate/truncateNanoseconds.d.ts +37 -0
  572. package/dist/precision/calculate/truncateNanoseconds.js +41 -0
  573. package/dist/precision/convert/fromDotNetTicks.d.ts +30 -0
  574. package/dist/precision/convert/fromDotNetTicks.js +39 -0
  575. package/dist/precision/convert/fromExcelSerial.d.ts +38 -0
  576. package/dist/precision/convert/fromExcelSerial.js +81 -0
  577. package/dist/precision/convert/fromFileTime.d.ts +30 -0
  578. package/dist/precision/convert/fromFileTime.js +39 -0
  579. package/dist/precision/convert/fromNanoseconds.d.ts +29 -0
  580. package/dist/precision/convert/fromNanoseconds.js +50 -0
  581. package/dist/precision/convert/fromNtpTimestamp.d.ts +43 -0
  582. package/dist/precision/convert/fromNtpTimestamp.js +57 -0
  583. package/dist/precision/convert/fromPgMicroseconds.d.ts +26 -0
  584. package/dist/precision/convert/fromPgMicroseconds.js +33 -0
  585. package/dist/precision/convert/index.d.ts +12 -0
  586. package/dist/precision/convert/index.js +12 -0
  587. package/dist/precision/convert/toDotNetTicks.d.ts +29 -0
  588. package/dist/precision/convert/toDotNetTicks.js +40 -0
  589. package/dist/precision/convert/toExcelSerial.d.ts +56 -0
  590. package/dist/precision/convert/toExcelSerial.js +85 -0
  591. package/dist/precision/convert/toFileTime.d.ts +31 -0
  592. package/dist/precision/convert/toFileTime.js +43 -0
  593. package/dist/precision/convert/toNanoseconds.d.ts +37 -0
  594. package/dist/precision/convert/toNanoseconds.js +40 -0
  595. package/dist/precision/convert/toNtpTimestamp.d.ts +30 -0
  596. package/dist/precision/convert/toNtpTimestamp.js +38 -0
  597. package/dist/precision/convert/toPgMicroseconds.d.ts +29 -0
  598. package/dist/precision/convert/toPgMicroseconds.js +42 -0
  599. package/dist/precision/format/formatNanoseconds.d.ts +26 -0
  600. package/dist/precision/format/formatNanoseconds.js +32 -0
  601. package/dist/precision/format/index.d.ts +1 -0
  602. package/dist/precision/format/index.js +1 -0
  603. package/dist/precision/index.d.ts +6 -0
  604. package/dist/precision/index.js +7 -0
  605. package/dist/precision/parse/index.d.ts +1 -0
  606. package/dist/precision/parse/index.js +1 -0
  607. package/dist/precision/parse/parseNanoseconds.d.ts +27 -0
  608. package/dist/precision/parse/parseNanoseconds.js +32 -0
  609. package/dist/precision/validate/index.d.ts +3 -0
  610. package/dist/precision/validate/index.js +3 -0
  611. package/dist/precision/validate/isValidInstant.d.ts +37 -0
  612. package/dist/precision/validate/isValidInstant.js +40 -0
  613. package/dist/precision/validate/isValidNanoPattern.d.ts +27 -0
  614. package/dist/precision/validate/isValidNanoPattern.js +40 -0
  615. package/dist/precision/validate/isValidNanoseconds.d.ts +25 -0
  616. package/dist/precision/validate/isValidNanoseconds.js +28 -0
  617. package/dist/regex/calendar-date.d.ts +25 -14
  618. package/dist/regex/calendar-date.js +26 -15
  619. package/dist/regex/calendar-zoned-date-time.d.ts +22 -38
  620. package/dist/regex/calendar-zoned-date-time.js +23 -39
  621. package/dist/regex/date-time.d.ts +14 -4
  622. package/dist/regex/date-time.js +15 -5
  623. package/dist/regex/date.d.ts +45 -3
  624. package/dist/regex/date.js +47 -5
  625. package/dist/regex/http-date.d.ts +10 -6
  626. package/dist/regex/http-date.js +10 -6
  627. package/dist/regex/index.d.ts +3 -0
  628. package/dist/regex/index.js +4 -0
  629. package/dist/regex/leap-second.d.ts +41 -8
  630. package/dist/regex/leap-second.js +42 -9
  631. package/dist/regex/nanoseconds.d.ts +20 -0
  632. package/dist/regex/nanoseconds.js +20 -0
  633. package/dist/regex/rfc-2822.d.ts +15 -7
  634. package/dist/regex/rfc-2822.js +15 -7
  635. package/dist/regex/rfc-3339.d.ts +8 -1
  636. package/dist/regex/rfc-3339.js +9 -2
  637. package/dist/regex/sql-date-time.d.ts +27 -8
  638. package/dist/regex/sql-date-time.js +28 -9
  639. package/dist/regex/time-zone-like.d.ts +24 -15
  640. package/dist/regex/time-zone-like.js +25 -16
  641. package/dist/regex/time.d.ts +20 -6
  642. package/dist/regex/time.js +20 -6
  643. package/dist/regex/unix.d.ts +13 -5
  644. package/dist/regex/unix.js +13 -5
  645. package/dist/regex/utc-date-time.d.ts +19 -9
  646. package/dist/regex/utc-date-time.js +20 -10
  647. package/dist/regex/utc-offset.d.ts +24 -0
  648. package/dist/regex/utc-offset.js +24 -0
  649. package/dist/span/calculate/index.d.ts +3 -0
  650. package/dist/span/calculate/index.js +3 -0
  651. package/dist/span/calculate/spanMs.d.ts +52 -0
  652. package/dist/span/calculate/spanMs.js +80 -0
  653. package/dist/span/calculate/spanNs.d.ts +43 -0
  654. package/dist/span/calculate/spanNs.js +51 -0
  655. package/dist/span/calculate/spanWallClock.d.ts +60 -0
  656. package/dist/span/calculate/spanWallClock.js +80 -0
  657. package/dist/span/index.d.ts +3 -0
  658. package/dist/span/index.js +4 -0
  659. package/dist/span/validate/index.d.ts +1 -0
  660. package/dist/span/validate/index.js +1 -0
  661. package/dist/span/validate/isValidSpan.d.ts +37 -0
  662. package/dist/span/validate/isValidSpan.js +41 -0
  663. package/dist/types/business-calendar.d.ts +27 -0
  664. package/dist/types/business-calendar.js +0 -0
  665. package/dist/types/calendar-system.d.ts +9 -1
  666. package/dist/types/fiscal-calendar.d.ts +22 -0
  667. package/dist/types/fiscal-calendar.js +0 -0
  668. package/dist/types/index.d.ts +6 -0
  669. package/dist/types/index.js +5 -0
  670. package/dist/types/interval.d.ts +18 -0
  671. package/dist/types/interval.js +0 -0
  672. package/dist/types/now-unit.d.ts +1 -1
  673. package/dist/types/roll-convention.d.ts +32 -0
  674. package/dist/types/roll-convention.js +0 -0
  675. package/dist/types/utc-now-unit.d.ts +1 -1
  676. package/dist/types/zone-bucket-unit.d.ts +11 -0
  677. package/dist/types/zone-bucket-unit.js +0 -0
  678. package/dist/unix/calculate/addUnix.d.ts +10 -4
  679. package/dist/unix/calculate/addUnix.js +39 -26
  680. package/dist/unix/calculate/diffUnix.d.ts +38 -11
  681. package/dist/unix/calculate/diffUnix.js +84 -40
  682. package/dist/unix/calculate/diffUnixAsDuration.d.ts +17 -7
  683. package/dist/unix/calculate/diffUnixAsDuration.js +42 -23
  684. package/dist/unix/calculate/endOfQuarterForUnix.d.ts +15 -11
  685. package/dist/unix/calculate/endOfQuarterForUnix.js +20 -39
  686. package/dist/unix/calculate/endOfUnix.d.ts +23 -18
  687. package/dist/unix/calculate/endOfUnix.js +37 -15
  688. package/dist/unix/calculate/isBetweenUnix.d.ts +12 -6
  689. package/dist/unix/calculate/isBetweenUnix.js +34 -23
  690. package/dist/unix/calculate/maxUnix.d.ts +6 -3
  691. package/dist/unix/calculate/maxUnix.js +17 -8
  692. package/dist/unix/calculate/minUnix.d.ts +6 -3
  693. package/dist/unix/calculate/minUnix.js +17 -8
  694. package/dist/unix/calculate/roundUnix.d.ts +24 -10
  695. package/dist/unix/calculate/roundUnix.js +67 -42
  696. package/dist/unix/calculate/setUnix.d.ts +14 -5
  697. package/dist/unix/calculate/setUnix.js +48 -29
  698. package/dist/unix/calculate/sortUnix.d.ts +6 -3
  699. package/dist/unix/calculate/sortUnix.js +19 -11
  700. package/dist/unix/calculate/startOfQuarterForUnix.d.ts +17 -12
  701. package/dist/unix/calculate/startOfQuarterForUnix.js +22 -30
  702. package/dist/unix/calculate/startOfUnix.d.ts +23 -18
  703. package/dist/unix/calculate/startOfUnix.js +37 -15
  704. package/dist/unix/calculate/subtractUnix.d.ts +10 -4
  705. package/dist/unix/calculate/subtractUnix.js +39 -26
  706. package/dist/unix/compare/areUnixEqual.d.ts +9 -5
  707. package/dist/unix/compare/areUnixEqual.js +17 -13
  708. package/dist/unix/compare/areUnixEqualBy.d.ts +14 -7
  709. package/dist/unix/compare/areUnixEqualBy.js +14 -7
  710. package/dist/unix/compare/isAfterUnix.d.ts +8 -4
  711. package/dist/unix/compare/isAfterUnix.js +16 -12
  712. package/dist/unix/compare/isBeforeUnix.d.ts +7 -4
  713. package/dist/unix/compare/isBeforeUnix.js +15 -12
  714. package/dist/unix/convert/convertUnixToPlainDate.d.ts +17 -9
  715. package/dist/unix/convert/convertUnixToPlainDate.js +34 -21
  716. package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +15 -9
  717. package/dist/unix/convert/convertUnixToPlainDateTime.js +32 -21
  718. package/dist/unix/convert/convertUnixToPlainTime.d.ts +15 -9
  719. package/dist/unix/convert/convertUnixToPlainTime.js +32 -21
  720. package/dist/unix/convert/convertUnixToUtc.d.ts +15 -7
  721. package/dist/unix/convert/convertUnixToUtc.js +20 -15
  722. package/dist/unix/convert/convertUnixToZoned.d.ts +17 -10
  723. package/dist/unix/convert/convertUnixToZoned.js +31 -20
  724. package/dist/unix/format/formatCalendarUnix.d.ts +22 -19
  725. package/dist/unix/format/formatCalendarUnix.js +35 -81
  726. package/dist/unix/format/formatRelativeUnix.d.ts +25 -8
  727. package/dist/unix/format/formatRelativeUnix.js +46 -93
  728. package/dist/unix/format/formatUnix.d.ts +26 -4
  729. package/dist/unix/format/formatUnix.js +48 -34
  730. package/dist/unix/get/getUnixNow.d.ts +13 -7
  731. package/dist/unix/get/getUnixNow.js +27 -17
  732. package/dist/unix/get/getUnixNowUnit.d.ts +5 -2
  733. package/dist/unix/get/getUnixNowUnit.js +9 -35
  734. package/dist/unix/index.d.ts +1 -0
  735. package/dist/unix/index.js +2 -0
  736. package/dist/unix/interval/intervalAbutsUnix.d.ts +17 -12
  737. package/dist/unix/interval/intervalAbutsUnix.js +23 -41
  738. package/dist/unix/interval/intervalContainsUnix.d.ts +17 -7
  739. package/dist/unix/interval/intervalContainsUnix.js +25 -37
  740. package/dist/unix/interval/intervalCountUnix.d.ts +30 -13
  741. package/dist/unix/interval/intervalCountUnix.js +49 -23
  742. package/dist/unix/interval/intervalDifferenceUnix.d.ts +19 -10
  743. package/dist/unix/interval/intervalDifferenceUnix.js +25 -43
  744. package/dist/unix/interval/intervalDivideEquallyUnix.d.ts +24 -10
  745. package/dist/unix/interval/intervalDivideEquallyUnix.js +57 -36
  746. package/dist/unix/interval/intervalEngulfsUnix.d.ts +13 -7
  747. package/dist/unix/interval/intervalEngulfsUnix.js +18 -30
  748. package/dist/unix/interval/intervalFromDurationUnix.d.ts +10 -6
  749. package/dist/unix/interval/intervalFromDurationUnix.js +51 -39
  750. package/dist/unix/interval/intervalIntersectionUnix.d.ts +18 -11
  751. package/dist/unix/interval/intervalIntersectionUnix.js +25 -46
  752. package/dist/unix/interval/intervalLengthUnix.d.ts +21 -9
  753. package/dist/unix/interval/intervalLengthUnix.js +41 -18
  754. package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +26 -12
  755. package/dist/unix/interval/intervalOverlappingDaysUnix.js +67 -63
  756. package/dist/unix/interval/intervalSplitAtUnix.d.ts +11 -6
  757. package/dist/unix/interval/intervalSplitAtUnix.js +41 -34
  758. package/dist/unix/interval/intervalUnionUnix.d.ts +15 -9
  759. package/dist/unix/interval/intervalUnionUnix.js +20 -42
  760. package/dist/unix/interval/intervalXorAllUnix.d.ts +8 -6
  761. package/dist/unix/interval/intervalXorAllUnix.js +21 -56
  762. package/dist/unix/interval/intervalXorUnix.d.ts +22 -11
  763. package/dist/unix/interval/intervalXorUnix.js +28 -56
  764. package/dist/unix/interval/intervalsOverlapUnix.d.ts +16 -10
  765. package/dist/unix/interval/intervalsOverlapUnix.js +21 -37
  766. package/dist/unix/interval/mergeIntervalsUnix.d.ts +10 -4
  767. package/dist/unix/interval/mergeIntervalsUnix.js +25 -36
  768. package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +38 -8
  769. package/dist/unix/interval/splitIntervalByUnitUnix.js +72 -56
  770. package/dist/unix/interval/validate/isValidUnixInterval.d.ts +12 -6
  771. package/dist/unix/interval/validate/isValidUnixInterval.js +17 -16
  772. package/dist/unix/parse/index.d.ts +2 -0
  773. package/dist/unix/parse/index.js +2 -0
  774. package/dist/unix/parse/parseDateFromUnix.d.ts +10 -8
  775. package/dist/unix/parse/parseDateFromUnix.js +17 -29
  776. package/dist/unix/parse/parseDayFromUnix.d.ts +6 -4
  777. package/dist/unix/parse/parseDayFromUnix.js +18 -5
  778. package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +8 -5
  779. package/dist/unix/parse/parseDayOfWeekFromUnix.js +15 -28
  780. package/dist/unix/parse/parseHourFromUnix.d.ts +6 -4
  781. package/dist/unix/parse/parseHourFromUnix.js +18 -5
  782. package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +4 -2
  783. package/dist/unix/parse/parseMicrosecondFromUnix.js +16 -3
  784. package/dist/unix/parse/parseMillisecondFromUnix.d.ts +4 -2
  785. package/dist/unix/parse/parseMillisecondFromUnix.js +16 -3
  786. package/dist/unix/parse/parseMinuteFromUnix.d.ts +6 -4
  787. package/dist/unix/parse/parseMinuteFromUnix.js +18 -5
  788. package/dist/unix/parse/parseMonthFromUnix.d.ts +6 -4
  789. package/dist/unix/parse/parseMonthFromUnix.js +18 -5
  790. package/dist/unix/parse/parseNanosecondFromUnix.d.ts +8 -5
  791. package/dist/unix/parse/parseNanosecondFromUnix.js +20 -6
  792. package/dist/unix/parse/parseSecondFromUnix.d.ts +5 -3
  793. package/dist/unix/parse/parseSecondFromUnix.js +17 -4
  794. package/dist/unix/parse/parseTimeFromUnix.d.ts +10 -8
  795. package/dist/unix/parse/parseTimeFromUnix.js +17 -29
  796. package/dist/unix/parse/parseUnitFromUnix.d.ts +18 -11
  797. package/dist/unix/parse/parseUnitFromUnix.js +57 -55
  798. package/dist/unix/parse/parseWeekFromUnix.d.ts +15 -7
  799. package/dist/unix/parse/parseWeekFromUnix.js +32 -30
  800. package/dist/unix/parse/parseYearFromUnix.d.ts +5 -3
  801. package/dist/unix/parse/parseYearFromUnix.js +17 -4
  802. package/dist/unix/validate/isValidUnixMilliseconds.d.ts +8 -5
  803. package/dist/unix/validate/isValidUnixMilliseconds.js +10 -9
  804. package/dist/unix/validate/isValidUnixRange.d.ts +13 -7
  805. package/dist/unix/validate/isValidUnixRange.js +29 -19
  806. package/dist/unix/validate/isValidUnixSeconds.d.ts +8 -5
  807. package/dist/unix/validate/isValidUnixSeconds.js +10 -9
  808. package/dist/unix/validate/isValidUnixUnit.d.ts +9 -7
  809. package/dist/unix/validate/isValidUnixUnit.js +6 -8
  810. package/dist/utc/calculate/addUtc.js +26 -12
  811. package/dist/utc/calculate/diffUtc.d.ts +22 -7
  812. package/dist/utc/calculate/diffUtc.js +75 -31
  813. package/dist/utc/calculate/diffUtcAsDuration.d.ts +2 -2
  814. package/dist/utc/calculate/diffUtcAsDuration.js +10 -3
  815. package/dist/utc/calculate/endOfQuarterForUtc.d.ts +1 -1
  816. package/dist/utc/calculate/endOfQuarterForUtc.js +1 -1
  817. package/dist/utc/calculate/endOfUtc.d.ts +11 -4
  818. package/dist/utc/calculate/endOfUtc.js +22 -5
  819. package/dist/utc/calculate/isBetweenUtc.js +40 -24
  820. package/dist/utc/calculate/maxUtc.js +19 -12
  821. package/dist/utc/calculate/minUtc.js +19 -12
  822. package/dist/utc/calculate/roundUtc.d.ts +16 -2
  823. package/dist/utc/calculate/roundUtc.js +42 -31
  824. package/dist/utc/calculate/setUtc.d.ts +4 -8
  825. package/dist/utc/calculate/setUtc.js +25 -18
  826. package/dist/utc/calculate/sortUtc.js +17 -10
  827. package/dist/utc/calculate/startOfQuarterForUtc.d.ts +2 -0
  828. package/dist/utc/calculate/startOfQuarterForUtc.js +12 -1
  829. package/dist/utc/calculate/startOfUtc.d.ts +6 -4
  830. package/dist/utc/calculate/startOfUtc.js +17 -5
  831. package/dist/utc/calculate/subtractUtc.js +26 -12
  832. package/dist/utc/chop/chopUtc.d.ts +5 -2
  833. package/dist/utc/chop/chopUtc.js +8 -4
  834. package/dist/utc/compare/areUtcEqualBy.d.ts +10 -5
  835. package/dist/utc/compare/areUtcEqualBy.js +34 -11
  836. package/dist/utc/convert/convertUtcToPlainDate.js +22 -10
  837. package/dist/utc/convert/convertUtcToPlainDateTime.js +28 -16
  838. package/dist/utc/convert/convertUtcToPlainTime.js +22 -10
  839. package/dist/utc/convert/convertUtcToUnix.d.ts +12 -5
  840. package/dist/utc/convert/convertUtcToUnix.js +22 -13
  841. package/dist/utc/format/formatCalendarUtc.d.ts +11 -6
  842. package/dist/utc/format/formatCalendarUtc.js +32 -41
  843. package/dist/utc/format/formatHttp.d.ts +9 -3
  844. package/dist/utc/format/formatHttp.js +14 -12
  845. package/dist/utc/format/formatRelativeUtc.d.ts +18 -6
  846. package/dist/utc/format/formatRelativeUtc.js +43 -51
  847. package/dist/utc/format/formatUtc.d.ts +20 -3
  848. package/dist/utc/format/formatUtc.js +41 -12
  849. package/dist/utc/get/getUtcNowUnit.d.ts +3 -0
  850. package/dist/utc/get/getUtcNowUnit.js +11 -33
  851. package/dist/utc/index.d.ts +1 -0
  852. package/dist/utc/index.js +2 -0
  853. package/dist/utc/interval/intervalAbutsUtc.d.ts +10 -7
  854. package/dist/utc/interval/intervalAbutsUtc.js +18 -30
  855. package/dist/utc/interval/intervalContainsUtc.d.ts +19 -11
  856. package/dist/utc/interval/intervalContainsUtc.js +33 -34
  857. package/dist/utc/interval/intervalCountUtc.d.ts +3 -4
  858. package/dist/utc/interval/intervalCountUtc.js +12 -18
  859. package/dist/utc/interval/intervalDifferenceUtc.d.ts +13 -5
  860. package/dist/utc/interval/intervalDifferenceUtc.js +25 -51
  861. package/dist/utc/interval/intervalDivideEquallyUtc.d.ts +16 -3
  862. package/dist/utc/interval/intervalDivideEquallyUtc.js +54 -34
  863. package/dist/utc/interval/intervalEngulfsUtc.d.ts +17 -12
  864. package/dist/utc/interval/intervalEngulfsUtc.js +25 -26
  865. package/dist/utc/interval/intervalFromDurationUtc.js +5 -0
  866. package/dist/utc/interval/intervalIntersectionUtc.d.ts +12 -6
  867. package/dist/utc/interval/intervalIntersectionUtc.js +24 -41
  868. package/dist/utc/interval/intervalLengthUtc.js +5 -7
  869. package/dist/utc/interval/intervalOverlappingDaysUtc.d.ts +7 -13
  870. package/dist/utc/interval/intervalOverlappingDaysUtc.js +25 -36
  871. package/dist/utc/interval/intervalSplitAtUtc.d.ts +7 -2
  872. package/dist/utc/interval/intervalSplitAtUtc.js +39 -33
  873. package/dist/utc/interval/intervalUnionUtc.d.ts +15 -7
  874. package/dist/utc/interval/intervalUnionUtc.js +31 -42
  875. package/dist/utc/interval/intervalXorAllUtc.d.ts +7 -4
  876. package/dist/utc/interval/intervalXorAllUtc.js +30 -52
  877. package/dist/utc/interval/intervalXorUtc.d.ts +8 -6
  878. package/dist/utc/interval/intervalXorUtc.js +22 -56
  879. package/dist/utc/interval/intervalsOverlapUtc.d.ts +15 -9
  880. package/dist/utc/interval/intervalsOverlapUtc.js +23 -39
  881. package/dist/utc/interval/mergeIntervalsUtc.d.ts +9 -2
  882. package/dist/utc/interval/mergeIntervalsUtc.js +23 -36
  883. package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +23 -2
  884. package/dist/utc/interval/splitIntervalByUnitUtc.js +65 -44
  885. package/dist/utc/interval/validate/isValidUtcInterval.d.ts +5 -0
  886. package/dist/utc/interval/validate/isValidUtcInterval.js +7 -6
  887. package/dist/utc/parse/parseDateFromUtc.d.ts +7 -1
  888. package/dist/utc/parse/parseDateFromUtc.js +14 -9
  889. package/dist/utc/parse/parseDayFromUtc.d.ts +7 -1
  890. package/dist/utc/parse/parseDayFromUtc.js +14 -8
  891. package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +7 -1
  892. package/dist/utc/parse/parseDayOfWeekFromUtc.js +24 -6
  893. package/dist/utc/parse/parseHourFromUtc.d.ts +7 -1
  894. package/dist/utc/parse/parseHourFromUtc.js +14 -8
  895. package/dist/utc/parse/parseHttp.d.ts +39 -14
  896. package/dist/utc/parse/parseHttp.js +69 -28
  897. package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +9 -2
  898. package/dist/utc/parse/parseMicrosecondFromUtc.js +18 -9
  899. package/dist/utc/parse/parseMillisecondFromUtc.d.ts +7 -1
  900. package/dist/utc/parse/parseMillisecondFromUtc.js +16 -8
  901. package/dist/utc/parse/parseMinuteFromUtc.d.ts +7 -1
  902. package/dist/utc/parse/parseMinuteFromUtc.js +14 -8
  903. package/dist/utc/parse/parseMonthFromUtc.d.ts +7 -1
  904. package/dist/utc/parse/parseMonthFromUtc.js +14 -8
  905. package/dist/utc/parse/parseNanosecondFromUtc.d.ts +9 -2
  906. package/dist/utc/parse/parseNanosecondFromUtc.js +18 -9
  907. package/dist/utc/parse/parseSecondFromUtc.d.ts +7 -1
  908. package/dist/utc/parse/parseSecondFromUtc.js +14 -8
  909. package/dist/utc/parse/parseTimeFromUtc.js +21 -10
  910. package/dist/utc/parse/parseUnitFromUtc.d.ts +18 -7
  911. package/dist/utc/parse/parseUnitFromUtc.js +58 -31
  912. package/dist/utc/parse/parseWeekFromUtc.d.ts +16 -3
  913. package/dist/utc/parse/parseWeekFromUtc.js +38 -10
  914. package/dist/utc/parse/parseYearFromUtc.d.ts +7 -1
  915. package/dist/utc/parse/parseYearFromUtc.js +14 -8
  916. package/dist/utc/validate/isValidUtc.d.ts +8 -1
  917. package/dist/utc/validate/isValidUtc.js +12 -3
  918. package/dist/utc/validate/isValidUtcRange.d.ts +3 -2
  919. package/dist/utc/validate/isValidUtcRange.js +30 -19
  920. package/dist/zoned/calculate/addZoned.d.ts +40 -27
  921. package/dist/zoned/calculate/addZoned.js +71 -56
  922. package/dist/zoned/calculate/addZonedBusinessDays.d.ts +2 -0
  923. package/dist/zoned/calculate/addZonedBusinessDays.js +5 -2
  924. package/dist/zoned/calculate/clampZoned.js +4 -3
  925. package/dist/zoned/calculate/closestZonedTo.d.ts +6 -6
  926. package/dist/zoned/calculate/closestZonedTo.js +35 -26
  927. package/dist/zoned/calculate/cycleZoned.d.ts +10 -7
  928. package/dist/zoned/calculate/cycleZoned.js +19 -11
  929. package/dist/zoned/calculate/diffZoned.d.ts +39 -17
  930. package/dist/zoned/calculate/diffZoned.js +90 -45
  931. package/dist/zoned/calculate/diffZonedAsDuration.d.ts +19 -9
  932. package/dist/zoned/calculate/diffZonedAsDuration.js +32 -15
  933. package/dist/zoned/calculate/endOfQuarterForZoned.d.ts +11 -11
  934. package/dist/zoned/calculate/endOfQuarterForZoned.js +32 -31
  935. package/dist/zoned/calculate/endOfZoned.d.ts +21 -14
  936. package/dist/zoned/calculate/endOfZoned.js +25 -111
  937. package/dist/zoned/calculate/getHoursInZonedDay.d.ts +8 -1
  938. package/dist/zoned/calculate/getHoursInZonedDay.js +10 -14
  939. package/dist/zoned/calculate/getLocaleZonedDayOfWeek.d.ts +8 -4
  940. package/dist/zoned/calculate/getLocaleZonedDayOfWeek.js +9 -6
  941. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +20 -26
  942. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +40 -44
  943. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +16 -24
  944. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +36 -42
  945. package/dist/zoned/calculate/getQuarterForZoned.js +2 -2
  946. package/dist/zoned/calculate/maxZoned.js +20 -12
  947. package/dist/zoned/calculate/minZoned.d.ts +1 -1
  948. package/dist/zoned/calculate/minZoned.js +21 -13
  949. package/dist/zoned/calculate/roundZoned.d.ts +18 -4
  950. package/dist/zoned/calculate/roundZoned.js +58 -33
  951. package/dist/zoned/calculate/setZoned.d.ts +9 -3
  952. package/dist/zoned/calculate/setZoned.js +39 -18
  953. package/dist/zoned/calculate/sortZoned.js +18 -10
  954. package/dist/zoned/calculate/startOfQuarterForZoned.d.ts +4 -7
  955. package/dist/zoned/calculate/startOfQuarterForZoned.js +23 -17
  956. package/dist/zoned/calculate/startOfZoned.d.ts +17 -13
  957. package/dist/zoned/calculate/startOfZoned.js +21 -103
  958. package/dist/zoned/calculate/subtractZoned.d.ts +36 -24
  959. package/dist/zoned/calculate/subtractZoned.js +66 -50
  960. package/dist/zoned/calculate/subtractZonedBusinessDays.d.ts +2 -0
  961. package/dist/zoned/calculate/subtractZonedBusinessDays.js +5 -2
  962. package/dist/zoned/chop/chopZonedDate.js +2 -2
  963. package/dist/zoned/chop/chopZonedDateTime.js +2 -2
  964. package/dist/zoned/chop/chopZonedMilliseconds.js +2 -2
  965. package/dist/zoned/chop/chopZonedSeconds.js +2 -2
  966. package/dist/zoned/chop/chopZonedTime.js +2 -2
  967. package/dist/zoned/chop/chopZonedTimezone.js +2 -2
  968. package/dist/zoned/compare/areZonedEqual.js +3 -2
  969. package/dist/zoned/compare/areZonedEqualBy.d.ts +15 -2
  970. package/dist/zoned/compare/areZonedEqualBy.js +45 -12
  971. package/dist/zoned/compare/isAfterZoned.js +3 -2
  972. package/dist/zoned/compare/isBeforeZoned.d.ts +1 -1
  973. package/dist/zoned/compare/isBeforeZoned.js +4 -3
  974. package/dist/zoned/compare/isBetweenZoned.js +46 -29
  975. package/dist/zoned/compare/isInDaylightSaving.js +4 -4
  976. package/dist/zoned/compare/isZonedBusinessDay.d.ts +7 -4
  977. package/dist/zoned/compare/isZonedBusinessDay.js +9 -6
  978. package/dist/zoned/compare/isZonedFuture.js +2 -1
  979. package/dist/zoned/compare/isZonedPast.js +2 -1
  980. package/dist/zoned/compare/isZonedRelativeDay.js +2 -1
  981. package/dist/zoned/compare/isZonedThisUnit.d.ts +12 -4
  982. package/dist/zoned/compare/isZonedThisUnit.js +37 -16
  983. package/dist/zoned/compare/isZonedWeekend.d.ts +8 -4
  984. package/dist/zoned/compare/isZonedWeekend.js +9 -6
  985. package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +10 -5
  986. package/dist/zoned/convert/convertPlainDateTimeToZoned.js +34 -16
  987. package/dist/zoned/convert/convertZonedToCalendar.d.ts +26 -38
  988. package/dist/zoned/convert/convertZonedToCalendar.js +33 -48
  989. package/dist/zoned/convert/convertZonedToPlainDateTime.d.ts +6 -0
  990. package/dist/zoned/convert/convertZonedToPlainDateTime.js +8 -2
  991. package/dist/zoned/convert/convertZonedToUnix.d.ts +12 -6
  992. package/dist/zoned/convert/convertZonedToUnix.js +23 -16
  993. package/dist/zoned/convert/convertZonedToUtc.js +2 -2
  994. package/dist/zoned/convert/convertZonedToZoned.js +2 -2
  995. package/dist/zoned/format/formatCalendarZoned.d.ts +7 -3
  996. package/dist/zoned/format/formatCalendarZoned.js +37 -39
  997. package/dist/zoned/format/formatRelativeZoned.d.ts +15 -6
  998. package/dist/zoned/format/formatRelativeZoned.js +54 -54
  999. package/dist/zoned/format/formatRfc2822.d.ts +14 -1
  1000. package/dist/zoned/format/formatRfc2822.js +27 -13
  1001. package/dist/zoned/format/formatRfc3339.d.ts +14 -1
  1002. package/dist/zoned/format/formatRfc3339.js +29 -3
  1003. package/dist/zoned/format/formatTimeZoneName.d.ts +3 -2
  1004. package/dist/zoned/format/formatTimeZoneName.js +28 -18
  1005. package/dist/zoned/format/formatZonedDateTime.d.ts +25 -5
  1006. package/dist/zoned/format/formatZonedDateTime.js +40 -9
  1007. package/dist/zoned/format/formatZonedRange.d.ts +24 -6
  1008. package/dist/zoned/format/formatZonedRange.js +61 -28
  1009. package/dist/zoned/format/formatZonedToParts.d.ts +29 -6
  1010. package/dist/zoned/format/formatZonedToParts.js +42 -13
  1011. package/dist/zoned/get/getDstTransitions.d.ts +6 -1
  1012. package/dist/zoned/get/getDstTransitions.js +17 -15
  1013. package/dist/zoned/get/getTimeZoneOffset.d.ts +11 -1
  1014. package/dist/zoned/get/getTimeZoneOffset.js +19 -2
  1015. package/dist/zoned/get/getZonedNow.js +20 -9
  1016. package/dist/zoned/get/getZonedNowUnit.d.ts +8 -4
  1017. package/dist/zoned/get/getZonedNowUnit.js +15 -31
  1018. package/dist/zoned/index.js +1 -1
  1019. package/dist/zoned/interval/intervalAbutsZoned.d.ts +18 -11
  1020. package/dist/zoned/interval/intervalAbutsZoned.js +24 -25
  1021. package/dist/zoned/interval/intervalContainsZoned.d.ts +16 -7
  1022. package/dist/zoned/interval/intervalContainsZoned.js +22 -14
  1023. package/dist/zoned/interval/intervalCountZoned.d.ts +19 -11
  1024. package/dist/zoned/interval/intervalCountZoned.js +32 -27
  1025. package/dist/zoned/interval/intervalDifferenceZoned.d.ts +13 -7
  1026. package/dist/zoned/interval/intervalDifferenceZoned.js +24 -36
  1027. package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +18 -9
  1028. package/dist/zoned/interval/intervalDivideEquallyZoned.js +67 -46
  1029. package/dist/zoned/interval/intervalEngulfsZoned.d.ts +10 -5
  1030. package/dist/zoned/interval/intervalEngulfsZoned.js +16 -10
  1031. package/dist/zoned/interval/intervalFromDurationZoned.d.ts +25 -11
  1032. package/dist/zoned/interval/intervalFromDurationZoned.js +61 -44
  1033. package/dist/zoned/interval/intervalIntersectionZoned.d.ts +12 -6
  1034. package/dist/zoned/interval/intervalIntersectionZoned.js +24 -18
  1035. package/dist/zoned/interval/intervalLengthZoned.d.ts +15 -6
  1036. package/dist/zoned/interval/intervalLengthZoned.js +23 -9
  1037. package/dist/zoned/interval/intervalOverlappingDaysZoned.d.ts +28 -17
  1038. package/dist/zoned/interval/intervalOverlappingDaysZoned.js +46 -34
  1039. package/dist/zoned/interval/intervalSplitAtZoned.d.ts +6 -3
  1040. package/dist/zoned/interval/intervalSplitAtZoned.js +52 -42
  1041. package/dist/zoned/interval/intervalUnionZoned.d.ts +14 -8
  1042. package/dist/zoned/interval/intervalUnionZoned.js +25 -20
  1043. package/dist/zoned/interval/intervalXorAllZoned.d.ts +9 -7
  1044. package/dist/zoned/interval/intervalXorAllZoned.js +42 -73
  1045. package/dist/zoned/interval/intervalXorZoned.d.ts +20 -12
  1046. package/dist/zoned/interval/intervalXorZoned.js +34 -64
  1047. package/dist/zoned/interval/intervalsOverlapZoned.d.ts +15 -7
  1048. package/dist/zoned/interval/intervalsOverlapZoned.js +21 -12
  1049. package/dist/zoned/interval/mergeIntervalsZoned.d.ts +10 -3
  1050. package/dist/zoned/interval/mergeIntervalsZoned.js +44 -41
  1051. package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +28 -5
  1052. package/dist/zoned/interval/splitIntervalByUnitZoned.js +72 -39
  1053. package/dist/zoned/interval/validate/isValidCalendarZonedInterval.d.ts +13 -10
  1054. package/dist/zoned/interval/validate/isValidCalendarZonedInterval.js +13 -10
  1055. package/dist/zoned/interval/validate/isValidZonedInterval.d.ts +7 -5
  1056. package/dist/zoned/interval/validate/isValidZonedInterval.js +12 -16
  1057. package/dist/zoned/map/mapZonedDatesInRange.d.ts +17 -1
  1058. package/dist/zoned/map/mapZonedDatesInRange.js +62 -26
  1059. package/dist/zoned/map/mapZonedHoursInDay.d.ts +10 -13
  1060. package/dist/zoned/map/mapZonedHoursInDay.js +13 -21
  1061. package/dist/zoned/parse/getZonedOffset.js +2 -2
  1062. package/dist/zoned/parse/getZonedOffsetAs.d.ts +4 -2
  1063. package/dist/zoned/parse/getZonedOffsetAs.js +10 -5
  1064. package/dist/zoned/parse/parseDateFromZoned.js +2 -2
  1065. package/dist/zoned/parse/parseDateTimeFromZoned.js +2 -2
  1066. package/dist/zoned/parse/parseDayFromZoned.js +2 -2
  1067. package/dist/zoned/parse/parseDayOfWeekFromZoned.js +2 -2
  1068. package/dist/zoned/parse/parseHourFromZoned.js +2 -2
  1069. package/dist/zoned/parse/parseMicrosecondFromZoned.d.ts +2 -1
  1070. package/dist/zoned/parse/parseMicrosecondFromZoned.js +4 -3
  1071. package/dist/zoned/parse/parseMillisecondFromZoned.js +2 -2
  1072. package/dist/zoned/parse/parseMinuteFromZoned.js +2 -2
  1073. package/dist/zoned/parse/parseMonthFromZoned.js +2 -2
  1074. package/dist/zoned/parse/parseNanosecondFromZoned.d.ts +2 -1
  1075. package/dist/zoned/parse/parseNanosecondFromZoned.js +4 -3
  1076. package/dist/zoned/parse/parseRfc2822.d.ts +32 -12
  1077. package/dist/zoned/parse/parseRfc2822.js +47 -45
  1078. package/dist/zoned/parse/parseRfc3339.d.ts +6 -0
  1079. package/dist/zoned/parse/parseRfc3339.js +6 -0
  1080. package/dist/zoned/parse/parseSecondFromZoned.js +2 -2
  1081. package/dist/zoned/parse/parseTimeFromZoned.js +2 -2
  1082. package/dist/zoned/parse/parseTimeZoneFromZoned.js +2 -2
  1083. package/dist/zoned/parse/parseUnitFromZoned.d.ts +14 -5
  1084. package/dist/zoned/parse/parseUnitFromZoned.js +59 -33
  1085. package/dist/zoned/parse/parseWeekFromZoned.d.ts +13 -3
  1086. package/dist/zoned/parse/parseWeekFromZoned.js +34 -10
  1087. package/dist/zoned/parse/parseYearFromZoned.js +2 -2
  1088. package/dist/zoned/validate/hasDaylightSaving.js +3 -3
  1089. package/dist/zoned/validate/isValidCalendarZonedDateTime.d.ts +31 -16
  1090. package/dist/zoned/validate/isValidCalendarZonedDateTime.js +31 -16
  1091. package/dist/zoned/validate/isValidTimeZone.d.ts +15 -2
  1092. package/dist/zoned/validate/isValidTimeZone.js +17 -4
  1093. package/dist/zoned/validate/isValidZonedDateTime.d.ts +14 -7
  1094. package/dist/zoned/validate/isValidZonedDateTime.js +20 -12
  1095. package/dist/zoned/validate/isValidZonedRange.d.ts +9 -2
  1096. package/dist/zoned/validate/isValidZonedRange.js +44 -16
  1097. package/package.json +475 -34
  1098. package/skills/gmt-arithmetic/SKILL.md +197 -16
  1099. package/skills/gmt-basics/SKILL.md +61 -14
  1100. package/skills/gmt-integration/SKILL.md +54 -8
  1101. package/skills/gmt-timezone/SKILL.md +141 -24
  1102. package/dist/internal/advanceBusinessDays.d.ts +0 -2
  1103. package/dist/internal/advanceBusinessDays.js +0 -15
  1104. package/dist/internal/ethiopicFamilyCalendar.d.ts +0 -47
  1105. package/dist/internal/ethiopicFamilyCalendar.js +0 -136
  1106. package/dist/internal/getLocaleMinimalDaysInFirstWeek.d.ts +0 -20
  1107. package/dist/internal/getLocaleMinimalDaysInFirstWeek.js +0 -31
  1108. package/dist/internal/resolveUnixTimeZone.d.ts +0 -20
  1109. package/dist/internal/resolveUnixTimeZone.js +0 -30
  1110. package/dist/unix/calculate/startOrEndOfUnix.d.ts +0 -27
  1111. package/dist/unix/calculate/startOrEndOfUnix.js +0 -140
  1112. package/dist/unix/interval/resolveUnixIntervalPair.d.ts +0 -7
  1113. package/dist/unix/interval/resolveUnixIntervalPair.js +0 -36
@@ -1,16 +1,23 @@
1
+ import type { Temporal } from "@js-temporal/polyfill";
1
2
  import type { TimeDurationUnit } from "../../types/index.js";
2
3
  /**
3
4
  * Return the largest TimeDurationUnit from the provided array.
4
5
  *
5
6
  * - Returns the largest unit based on Temporal's unit order: hours > minutes > seconds > milliseconds > microseconds > nanoseconds.
6
- * - Defaults to "seconds" if no valid unit is found in the array.
7
+ * - Each unit may be singular or plural (`"day"` or `"days"`), as Temporal accepts; the result is
8
+ * the plural name.
9
+ * - Returns "" when `units` is not an array, is empty, or holds anything that is not a unit of
10
+ * this family.
11
+ * - **Compatibility:** before 1.16.0 an empty or invalid `units` returned a default unit
12
+ * (`"seconds"`).
7
13
  *
8
- * @param units array of TimeDurationUnits to evaluate
9
- * @returns the largest TimeDurationUnit found in the array, or "seconds" if none are valid
14
+ * @param units array of TimeDurationUnits (singular or plural names) to evaluate
15
+ * @returns the largest TimeDurationUnit found in the array, or "" on invalid input
10
16
  *
11
17
  * @example getLargestTimeDurationUnit(["minutes", "seconds"]) // "minutes"
12
18
  * @example getLargestTimeDurationUnit(["seconds", "milliseconds"]) // "seconds"
13
- * @example getLargestTimeDurationUnit(["milliseconds", "microseconds"]) // "milliseconds"
14
- * @example getLargestTimeDurationUnit([]) // "seconds"
19
+ * @example getLargestTimeDurationUnit(["second", "minute"]) // "minutes" (singular names count as their plural)
20
+ * @example getLargestTimeDurationUnit([]) // "" (no unit to choose from)
21
+ * @example getLargestTimeDurationUnit(["seconds", "fortnights"]) // "" (an invalid unit)
15
22
  */
16
- export declare function getLargestTimeDurationUnit(units: TimeDurationUnit[]): TimeDurationUnit;
23
+ export declare function getLargestTimeDurationUnit(units: Array<TimeDurationUnit | Temporal.TimeUnit>): TimeDurationUnit | "";
@@ -1,31 +1,46 @@
1
+ import { resolveDurationUnit } from "../../internal/resolveDurationUnit.js";
2
+ import { isValidTimeDurationUnit } from "../validate/isValidTimeDurationUnit.js";
3
+ const ORDER = [
4
+ "hours",
5
+ "minutes",
6
+ "seconds",
7
+ "milliseconds",
8
+ "microseconds",
9
+ "nanoseconds",
10
+ ];
1
11
  /**
2
12
  * Return the largest TimeDurationUnit from the provided array.
3
13
  *
4
14
  * - Returns the largest unit based on Temporal's unit order: hours > minutes > seconds > milliseconds > microseconds > nanoseconds.
5
- * - Defaults to "seconds" if no valid unit is found in the array.
15
+ * - Each unit may be singular or plural (`"day"` or `"days"`), as Temporal accepts; the result is
16
+ * the plural name.
17
+ * - Returns "" when `units` is not an array, is empty, or holds anything that is not a unit of
18
+ * this family.
19
+ * - **Compatibility:** before 1.16.0 an empty or invalid `units` returned a default unit
20
+ * (`"seconds"`).
6
21
  *
7
- * @param units array of TimeDurationUnits to evaluate
8
- * @returns the largest TimeDurationUnit found in the array, or "seconds" if none are valid
22
+ * @param units array of TimeDurationUnits (singular or plural names) to evaluate
23
+ * @returns the largest TimeDurationUnit found in the array, or "" on invalid input
9
24
  *
10
25
  * @example getLargestTimeDurationUnit(["minutes", "seconds"]) // "minutes"
11
26
  * @example getLargestTimeDurationUnit(["seconds", "milliseconds"]) // "seconds"
12
- * @example getLargestTimeDurationUnit(["milliseconds", "microseconds"]) // "milliseconds"
13
- * @example getLargestTimeDurationUnit([]) // "seconds"
27
+ * @example getLargestTimeDurationUnit(["second", "minute"]) // "minutes" (singular names count as their plural)
28
+ * @example getLargestTimeDurationUnit([]) // "" (no unit to choose from)
29
+ * @example getLargestTimeDurationUnit(["seconds", "fortnights"]) // "" (an invalid unit)
14
30
  */
15
31
  export function getLargestTimeDurationUnit(units) {
16
- const order = [
17
- "hours",
18
- "minutes",
19
- "seconds",
20
- "milliseconds",
21
- "microseconds",
22
- "nanoseconds",
23
- ];
24
- for (const unit of order) {
25
- if (units.includes(unit)) {
26
- return unit;
32
+ try {
33
+ if (!Array.isArray(units) || units.length === 0)
34
+ return "";
35
+ const plurals = units.map((unit) => resolveDurationUnit(unit));
36
+ if (!plurals.every((unit) => typeof unit === "string" && isValidTimeDurationUnit(unit))) {
37
+ return "";
27
38
  }
39
+ return ORDER.find((unit) => plurals.includes(unit)) ?? "";
40
+ }
41
+ catch {
42
+ // Never throws (Core Rule 3): a hostile
43
+ // argument is invalid input, not an exception.
44
+ return "";
28
45
  }
29
- // Default to seconds if no valid unit found, though this case should be prevented by validation
30
- return "seconds";
31
46
  }
@@ -5,16 +5,20 @@
5
5
  * - Resolves the locale's first day of week via `Intl.Locale.prototype.weekInfo`.
6
6
  * - Falls back to Monday if the runtime's `weekInfo` data doesn't resolve
7
7
  * a first day for the locale.
8
- * - Returns `null` if `value` is not a valid ISO date or `locale` is unresolvable.
8
+ * - Returns `null` if `value` is not a valid ISO date or `locale` is not a well-formed BCP 47 tag
9
+ * (ECMA-402 `IsWellFormedLanguageTag`).
10
+ * A well-formed tag with no matching locale data is not an error: it falls back to the host's
11
+ * default locale, as ECMA-402 `ResolveLocale` requires.
9
12
  *
10
13
  * @param value ISO 8601 date string
11
- * @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR")
14
+ * @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR"), or a preference list of tags (ECMA-402; the first with locale data is read). Required: omitted, or an empty list (which ECMA-402 would resolve to the host default), returns null
12
15
  * @returns locale-relative day-of-week index (0–6) or null on invalid input
13
16
  *
14
17
  * @example getLocaleDayOfWeek("2024-02-25", "en-US") // 0 (Sunday)
15
18
  * @example getLocaleDayOfWeek("2024-02-26", "en-US") // 1 (Monday)
16
19
  * @example getLocaleDayOfWeek("2024-02-26", "fr-FR") // 0 (Monday)
17
20
  * @example getLocaleDayOfWeek("invalid-date", "en-US") // null
18
- * @example getLocaleDayOfWeek("2024-02-29", "not-a-locale") // null
21
+ * @example getLocaleDayOfWeek("2024-02-29", "not-a-locale-!!") // null
22
+ * @example getLocaleDayOfWeek("2024-05-15", ["en-US", "fr-FR"]) // 3 (Wednesday in a Sunday-first week)
19
23
  */
20
- export declare function getLocaleDayOfWeek(value: string, locale: string): number | null;
24
+ export declare function getLocaleDayOfWeek(value: string, locale: string | string[]): number | null;
@@ -1,3 +1,4 @@
1
+ // fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
1
2
  import { Temporal } from "@js-temporal/polyfill";
2
3
  import { getLocaleFirstDayOfWeek } from "../../internal/index.js";
3
4
  import { isValidDate } from "../validate/index.js";
@@ -8,17 +9,21 @@ import { isValidDate } from "../validate/index.js";
8
9
  * - Resolves the locale's first day of week via `Intl.Locale.prototype.weekInfo`.
9
10
  * - Falls back to Monday if the runtime's `weekInfo` data doesn't resolve
10
11
  * a first day for the locale.
11
- * - Returns `null` if `value` is not a valid ISO date or `locale` is unresolvable.
12
+ * - Returns `null` if `value` is not a valid ISO date or `locale` is not a well-formed BCP 47 tag
13
+ * (ECMA-402 `IsWellFormedLanguageTag`).
14
+ * A well-formed tag with no matching locale data is not an error: it falls back to the host's
15
+ * default locale, as ECMA-402 `ResolveLocale` requires.
12
16
  *
13
17
  * @param value ISO 8601 date string
14
- * @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR")
18
+ * @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR"), or a preference list of tags (ECMA-402; the first with locale data is read). Required: omitted, or an empty list (which ECMA-402 would resolve to the host default), returns null
15
19
  * @returns locale-relative day-of-week index (0–6) or null on invalid input
16
20
  *
17
21
  * @example getLocaleDayOfWeek("2024-02-25", "en-US") // 0 (Sunday)
18
22
  * @example getLocaleDayOfWeek("2024-02-26", "en-US") // 1 (Monday)
19
23
  * @example getLocaleDayOfWeek("2024-02-26", "fr-FR") // 0 (Monday)
20
24
  * @example getLocaleDayOfWeek("invalid-date", "en-US") // null
21
- * @example getLocaleDayOfWeek("2024-02-29", "not-a-locale") // null
25
+ * @example getLocaleDayOfWeek("2024-02-29", "not-a-locale-!!") // null
26
+ * @example getLocaleDayOfWeek("2024-05-15", ["en-US", "fr-FR"]) // 3 (Wednesday in a Sunday-first week)
22
27
  */
23
28
  export function getLocaleDayOfWeek(value, locale) {
24
29
  if (!isValidDate(value))
@@ -9,15 +9,19 @@
9
9
  * - Distinct from `endOfDate(value, "week", { weekStartsOn })`, which
10
10
  * takes an explicit ISO-biased `weekStartsOn` option instead of deriving
11
11
  * it from a locale.
12
- * - Returns "" if `value` or `locale` is invalid.
12
+ * - Returns "" if `value` is invalid or `locale` is not a well-formed BCP 47 tag
13
+ * (ECMA-402 `IsWellFormedLanguageTag`).
14
+ * A well-formed tag with no matching locale data is not an error: it falls back to the host's
15
+ * default locale, as ECMA-402 `ResolveLocale` requires.
13
16
  *
14
17
  * @param value ISO 8601 date string
15
- * @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR")
18
+ * @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR"), or a preference list of tags (ECMA-402; the first with locale data is read). Required: omitted, or an empty list (which ECMA-402 would resolve to the host default), returns ""
16
19
  * @returns ISO 8601 date string for the end of `value`'s locale-relative week, or "" on invalid input
17
20
  *
18
21
  * @example getLocaleEndOfWeek("2024-02-29", "en-US") // "2024-03-02" (Saturday)
19
22
  * @example getLocaleEndOfWeek("2024-02-29", "fr-FR") // "2024-03-03" (Sunday)
20
23
  * @example getLocaleEndOfWeek("invalid-date", "en-US") // ""
21
- * @example getLocaleEndOfWeek("2024-02-29", "not-a-locale") // ""
24
+ * @example getLocaleEndOfWeek("2024-02-29", "not-a-locale-!!") // ""
25
+ * @example getLocaleEndOfWeek("2024-05-15", ["fr-FR", "en-US"]) // "2024-05-19"
22
26
  */
23
- export declare function getLocaleEndOfWeek(value: string, locale: string): string;
27
+ export declare function getLocaleEndOfWeek(value: string, locale: string | string[]): string;
@@ -1,3 +1,4 @@
1
+ // fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
1
2
  import { Temporal } from "@js-temporal/polyfill";
2
3
  import { getLocaleFirstDayOfWeek } from "../../internal/index.js";
3
4
  import { isValidDate } from "../validate/index.js";
@@ -12,16 +13,20 @@ import { isValidDate } from "../validate/index.js";
12
13
  * - Distinct from `endOfDate(value, "week", { weekStartsOn })`, which
13
14
  * takes an explicit ISO-biased `weekStartsOn` option instead of deriving
14
15
  * it from a locale.
15
- * - Returns "" if `value` or `locale` is invalid.
16
+ * - Returns "" if `value` is invalid or `locale` is not a well-formed BCP 47 tag
17
+ * (ECMA-402 `IsWellFormedLanguageTag`).
18
+ * A well-formed tag with no matching locale data is not an error: it falls back to the host's
19
+ * default locale, as ECMA-402 `ResolveLocale` requires.
16
20
  *
17
21
  * @param value ISO 8601 date string
18
- * @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR")
22
+ * @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR"), or a preference list of tags (ECMA-402; the first with locale data is read). Required: omitted, or an empty list (which ECMA-402 would resolve to the host default), returns ""
19
23
  * @returns ISO 8601 date string for the end of `value`'s locale-relative week, or "" on invalid input
20
24
  *
21
25
  * @example getLocaleEndOfWeek("2024-02-29", "en-US") // "2024-03-02" (Saturday)
22
26
  * @example getLocaleEndOfWeek("2024-02-29", "fr-FR") // "2024-03-03" (Sunday)
23
27
  * @example getLocaleEndOfWeek("invalid-date", "en-US") // ""
24
- * @example getLocaleEndOfWeek("2024-02-29", "not-a-locale") // ""
28
+ * @example getLocaleEndOfWeek("2024-02-29", "not-a-locale-!!") // ""
29
+ * @example getLocaleEndOfWeek("2024-05-15", ["fr-FR", "en-US"]) // "2024-05-19"
25
30
  */
26
31
  export function getLocaleEndOfWeek(value, locale) {
27
32
  if (!isValidDate(value))
@@ -9,15 +9,19 @@
9
9
  * - Distinct from `startOfDate(value, "week", { weekStartsOn })`, which
10
10
  * takes an explicit ISO-biased `weekStartsOn` option instead of deriving
11
11
  * it from a locale.
12
- * - Returns "" if `value` or `locale` is invalid.
12
+ * - Returns "" if `value` is invalid or `locale` is not a well-formed BCP 47 tag
13
+ * (ECMA-402 `IsWellFormedLanguageTag`).
14
+ * A well-formed tag with no matching locale data is not an error: it falls back to the host's
15
+ * default locale, as ECMA-402 `ResolveLocale` requires.
13
16
  *
14
17
  * @param value ISO 8601 date string
15
- * @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR")
18
+ * @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR"), or a preference list of tags (ECMA-402; the first with locale data is read). Required: omitted, or an empty list (which ECMA-402 would resolve to the host default), returns ""
16
19
  * @returns ISO 8601 date string for the start of `value`'s locale-relative week, or "" on invalid input
17
20
  *
18
21
  * @example getLocaleStartOfWeek("2024-02-29", "en-US") // "2024-02-25" (Sunday)
19
22
  * @example getLocaleStartOfWeek("2024-02-29", "fr-FR") // "2024-02-26" (Monday)
20
23
  * @example getLocaleStartOfWeek("invalid-date", "en-US") // ""
21
- * @example getLocaleStartOfWeek("2024-02-29", "not-a-locale") // ""
24
+ * @example getLocaleStartOfWeek("2024-02-29", "not-a-locale-!!") // ""
25
+ * @example getLocaleStartOfWeek("2024-05-15", ["en-US", "fr-FR"]) // "2024-05-12" (en-US, the first listed locale, starts weeks on Sunday)
22
26
  */
23
- export declare function getLocaleStartOfWeek(value: string, locale: string): string;
27
+ export declare function getLocaleStartOfWeek(value: string, locale: string | string[]): string;
@@ -1,3 +1,4 @@
1
+ // fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
1
2
  import { Temporal } from "@js-temporal/polyfill";
2
3
  import { getLocaleFirstDayOfWeek } from "../../internal/index.js";
3
4
  import { isValidDate } from "../validate/index.js";
@@ -12,16 +13,20 @@ import { isValidDate } from "../validate/index.js";
12
13
  * - Distinct from `startOfDate(value, "week", { weekStartsOn })`, which
13
14
  * takes an explicit ISO-biased `weekStartsOn` option instead of deriving
14
15
  * it from a locale.
15
- * - Returns "" if `value` or `locale` is invalid.
16
+ * - Returns "" if `value` is invalid or `locale` is not a well-formed BCP 47 tag
17
+ * (ECMA-402 `IsWellFormedLanguageTag`).
18
+ * A well-formed tag with no matching locale data is not an error: it falls back to the host's
19
+ * default locale, as ECMA-402 `ResolveLocale` requires.
16
20
  *
17
21
  * @param value ISO 8601 date string
18
- * @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR")
22
+ * @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR"), or a preference list of tags (ECMA-402; the first with locale data is read). Required: omitted, or an empty list (which ECMA-402 would resolve to the host default), returns ""
19
23
  * @returns ISO 8601 date string for the start of `value`'s locale-relative week, or "" on invalid input
20
24
  *
21
25
  * @example getLocaleStartOfWeek("2024-02-29", "en-US") // "2024-02-25" (Sunday)
22
26
  * @example getLocaleStartOfWeek("2024-02-29", "fr-FR") // "2024-02-26" (Monday)
23
27
  * @example getLocaleStartOfWeek("invalid-date", "en-US") // ""
24
- * @example getLocaleStartOfWeek("2024-02-29", "not-a-locale") // ""
28
+ * @example getLocaleStartOfWeek("2024-02-29", "not-a-locale-!!") // ""
29
+ * @example getLocaleStartOfWeek("2024-05-15", ["en-US", "fr-FR"]) // "2024-05-12" (en-US, the first listed locale, starts weeks on Sunday)
25
30
  */
26
31
  export function getLocaleStartOfWeek(value, locale) {
27
32
  if (!isValidDate(value))
@@ -1,28 +1,38 @@
1
1
  /**
2
- * Return the locale-relative week-numbering year `value` belongs to,
3
- * using `locale`'s first day of week and minimal-days-in-first-week
4
- * (e.g. en-US: week 1 always contains Jan 1; ISO/most European locales:
5
- * week 1 always contains Jan 4).
2
+ * Return the locale-relative week-numbering year `value` belongs to, from `locale`'s first day of
3
+ * week and a minimal-days-in-first-week rule.
6
4
  *
7
- * - Distinct from `value`'s calendar year, for the same reason
8
- * `getWeekYear` is — late-December/early-January dates can belong to a
9
- * different week-year than their calendar year, and the boundary
10
- * depends on the locale's week-numbering rule.
11
- * - Distinct from `getWeekYear`: this uses the locale's first day of
12
- * week and minimal-days rule (via `Intl.Locale.prototype.weekInfo`)
13
- * instead of the fixed ISO rule (Monday-start, 4 minimal days) — the
14
- * two can disagree on the same date near a year boundary.
15
- * - Resolves `locale`'s week-numbering rule via
16
- * `Intl.Locale.prototype.weekInfo`.
17
- * - Returns null if `value` or `locale` is invalid.
5
+ * - Distinct from `value`'s calendar year, for the same reason `getWeekYear` is: late-December and
6
+ * early-January dates can belong to a neighbouring week-year.
7
+ * - Week 1 is the week starting on `locale`'s first day of week that holds at least `minimalDays`
8
+ * days of January (UTS #35 Part 4, Week Data). The first day of week comes from
9
+ * `Intl.Locale.prototype.getWeekInfo`.
10
+ * - **`minimalDays` defaults to `4`, the ISO 8601 rule, on every runtime.** ECMA-402 does not expose
11
+ * a locale's minimal days: Intl Locale Info returns only `firstDay` and `weekend`
12
+ * (tc39/proposal-intl-locale-info#86), so older runtimes that still reported it disagreed with
13
+ * newer ones about the same date. Pass CLDR's value when you need a locale's own rule: in CLDR 48
14
+ * `weekData`, the world default (`001`) is `1` — week 1 always contains January 1, as in `US`,
15
+ * `CA`, `MX`, `JP` and `CN` — and `4` is set for a list of mostly European regions such as `GB`,
16
+ * `DE` and `FR`, where it matches this default.
17
+ * - Returns null if `value` or `locale` is invalid, or if `minimalDays` is not an integer from 1 to 7.
18
+ * - **Compatibility:** before 1.16.0 the default read the runtime's `minimalDays` where one was
19
+ * exposed (Node 22), so a locale such as `en-US` got `1` there and `4` on Node 24 and later. Pass
20
+ * `{ minimalDays: 1 }` to keep the Node 22 result for such a locale on every runtime.
18
21
  *
19
22
  * @param value ISO PlainDate string
20
- * @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR")
23
+ * @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR"), or a preference list of tags (ECMA-402; the first with locale data is read). Required: omitted, or an empty list (which ECMA-402 would resolve to the host default), returns null
24
+ * @param options optional: minimalDays (integer 1–7, default 4)
21
25
  * @returns locale-relative week-numbering year, or null on invalid input
22
26
  *
23
27
  * @example getLocaleWeekYear("2024-06-15", "en-US") // 2024
24
- * @example getLocaleWeekYear("2022-01-01", "en-US") // 2022 (Jan 1 is always week 1 in en-US)
25
- * @example getLocaleWeekYear("2022-01-01", "de-DE") // 2021 (ISO-style: Jan 1, 2022 is a Saturday, in week 52 of 2021)
28
+ * @example getLocaleWeekYear("2022-01-01", "en-US", { minimalDays: 1 }) // 2022 — Jan 1 is always in week 1
29
+ * @example getLocaleWeekYear("2022-01-01", "en-US") // 2021 — ISO default: the week of Dec 26 holds 1 day of 2022
30
+ * @example getLocaleWeekYear("2022-01-01", "de-DE") // 2021 — Jan 1, 2022 is a Saturday, in week 52 of 2021
31
+ * @example getLocaleWeekYear("2022-01-01", "en-US", { minimalDays: 0 }) // null
32
+ * @example getLocaleWeekYear("+275760-09-13", "en-US") // 275760 (the last PlainDate; the next week 1 lies past the range)
26
33
  * @example getLocaleWeekYear("invalid", "en-US") // null
34
+ * @example getLocaleWeekYear("2024-12-29", ["en-US", "fr-FR"]) // 2025
27
35
  */
28
- export declare function getLocaleWeekYear(value: string, locale: string): number | null;
36
+ export declare function getLocaleWeekYear(value: string, locale: string | string[], options?: {
37
+ minimalDays?: number;
38
+ }): number | null;
@@ -1,45 +1,65 @@
1
+ // fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
1
2
  import { Temporal } from "@js-temporal/polyfill";
2
- import { getLocaleFirstDayOfWeek, getLocaleMinimalDaysInFirstWeek, getLocaleWeekYearBounds, } from "../../internal/index.js";
3
+ import { getLocaleFirstDayOfWeek, getLocaleWeekYearBounds, resolveMinimalDaysInFirstWeek, } from "../../internal/index.js";
3
4
  import { isValidDate } from "../validate/index.js";
5
+ import { isOptionsArgument } from "../../internal/isObject.js";
4
6
  /**
5
- * Return the locale-relative week-numbering year `value` belongs to,
6
- * using `locale`'s first day of week and minimal-days-in-first-week
7
- * (e.g. en-US: week 1 always contains Jan 1; ISO/most European locales:
8
- * week 1 always contains Jan 4).
7
+ * Return the locale-relative week-numbering year `value` belongs to, from `locale`'s first day of
8
+ * week and a minimal-days-in-first-week rule.
9
9
  *
10
- * - Distinct from `value`'s calendar year, for the same reason
11
- * `getWeekYear` is — late-December/early-January dates can belong to a
12
- * different week-year than their calendar year, and the boundary
13
- * depends on the locale's week-numbering rule.
14
- * - Distinct from `getWeekYear`: this uses the locale's first day of
15
- * week and minimal-days rule (via `Intl.Locale.prototype.weekInfo`)
16
- * instead of the fixed ISO rule (Monday-start, 4 minimal days) — the
17
- * two can disagree on the same date near a year boundary.
18
- * - Resolves `locale`'s week-numbering rule via
19
- * `Intl.Locale.prototype.weekInfo`.
20
- * - Returns null if `value` or `locale` is invalid.
10
+ * - Distinct from `value`'s calendar year, for the same reason `getWeekYear` is: late-December and
11
+ * early-January dates can belong to a neighbouring week-year.
12
+ * - Week 1 is the week starting on `locale`'s first day of week that holds at least `minimalDays`
13
+ * days of January (UTS #35 Part 4, Week Data). The first day of week comes from
14
+ * `Intl.Locale.prototype.getWeekInfo`.
15
+ * - **`minimalDays` defaults to `4`, the ISO 8601 rule, on every runtime.** ECMA-402 does not expose
16
+ * a locale's minimal days: Intl Locale Info returns only `firstDay` and `weekend`
17
+ * (tc39/proposal-intl-locale-info#86), so older runtimes that still reported it disagreed with
18
+ * newer ones about the same date. Pass CLDR's value when you need a locale's own rule: in CLDR 48
19
+ * `weekData`, the world default (`001`) is `1` — week 1 always contains January 1, as in `US`,
20
+ * `CA`, `MX`, `JP` and `CN` — and `4` is set for a list of mostly European regions such as `GB`,
21
+ * `DE` and `FR`, where it matches this default.
22
+ * - Returns null if `value` or `locale` is invalid, or if `minimalDays` is not an integer from 1 to 7.
23
+ * - **Compatibility:** before 1.16.0 the default read the runtime's `minimalDays` where one was
24
+ * exposed (Node 22), so a locale such as `en-US` got `1` there and `4` on Node 24 and later. Pass
25
+ * `{ minimalDays: 1 }` to keep the Node 22 result for such a locale on every runtime.
21
26
  *
22
27
  * @param value ISO PlainDate string
23
- * @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR")
28
+ * @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR"), or a preference list of tags (ECMA-402; the first with locale data is read). Required: omitted, or an empty list (which ECMA-402 would resolve to the host default), returns null
29
+ * @param options optional: minimalDays (integer 1–7, default 4)
24
30
  * @returns locale-relative week-numbering year, or null on invalid input
25
31
  *
26
32
  * @example getLocaleWeekYear("2024-06-15", "en-US") // 2024
27
- * @example getLocaleWeekYear("2022-01-01", "en-US") // 2022 (Jan 1 is always week 1 in en-US)
28
- * @example getLocaleWeekYear("2022-01-01", "de-DE") // 2021 (ISO-style: Jan 1, 2022 is a Saturday, in week 52 of 2021)
33
+ * @example getLocaleWeekYear("2022-01-01", "en-US", { minimalDays: 1 }) // 2022 — Jan 1 is always in week 1
34
+ * @example getLocaleWeekYear("2022-01-01", "en-US") // 2021 — ISO default: the week of Dec 26 holds 1 day of 2022
35
+ * @example getLocaleWeekYear("2022-01-01", "de-DE") // 2021 — Jan 1, 2022 is a Saturday, in week 52 of 2021
36
+ * @example getLocaleWeekYear("2022-01-01", "en-US", { minimalDays: 0 }) // null
37
+ * @example getLocaleWeekYear("+275760-09-13", "en-US") // 275760 (the last PlainDate; the next week 1 lies past the range)
29
38
  * @example getLocaleWeekYear("invalid", "en-US") // null
39
+ * @example getLocaleWeekYear("2024-12-29", ["en-US", "fr-FR"]) // 2025
30
40
  */
31
- export function getLocaleWeekYear(value, locale) {
32
- if (!isValidDate(value))
33
- return null;
34
- const firstDay = getLocaleFirstDayOfWeek(locale);
35
- const minimalDays = getLocaleMinimalDaysInFirstWeek(locale);
36
- if (firstDay === null || minimalDays === null)
37
- return null;
41
+ export function getLocaleWeekYear(value, locale, options) {
38
42
  try {
39
- const date = Temporal.PlainDate.from(value);
40
- return getLocaleWeekYearBounds(date, firstDay, minimalDays).weekYear;
43
+ if (!isOptionsArgument(options)) {
44
+ return null;
45
+ }
46
+ if (!isValidDate(value))
47
+ return null;
48
+ const firstDay = getLocaleFirstDayOfWeek(locale);
49
+ const minimalDays = resolveMinimalDaysInFirstWeek(options);
50
+ if (firstDay === null || minimalDays === null)
51
+ return null;
52
+ try {
53
+ const date = Temporal.PlainDate.from(value);
54
+ return getLocaleWeekYearBounds(date, firstDay, minimalDays).weekYear;
55
+ }
56
+ catch {
57
+ return null;
58
+ }
41
59
  }
42
60
  catch {
61
+ // Never throws (Core Rule 3): a hostile
62
+ // argument is invalid input, not an exception.
43
63
  return null;
44
64
  }
45
65
  }
@@ -1,8 +1,21 @@
1
1
  /**
2
2
  * Calculate the week number based on configurable week start day.
3
3
  *
4
- * - ISO (monday): Week 1 is the week containing the first Thursday (has at least 4 days in the year)
5
- * - US (sunday): Week 1 is the week containing Jan 1 (first week has at least 1 day)
4
+ * - `"monday"` (default) is the ISO 8601 week of the week-year: week 1 is the week containing the
5
+ * first Thursday, so late-December days can be week 1 of the next year (`"2024-12-31"` → 1).
6
+ * The result is 1–53.
7
+ * - `"sunday"` is the UTS #35 (Part 4, Week Data) week of the week-year with a Sunday first day
8
+ * and minimal days 1: week 1 is the Sunday-first week containing 1 January, so the last days of
9
+ * December before a mid-week 1 January are week 1 of the next year (`"2024-12-31"` → 1,
10
+ * `"2000-12-31"` → 1). The result is 1–53.
11
+ * - `weekStartsOn` other than `"monday"` or `"sunday"` returns null; `undefined` is the default.
12
+ * - Returns null for invalid input, including every shape `isValidDate` rejects: a date-time,
13
+ * zoned, basic-format or leap-second string, or a non-ISO calendar annotation. The annotations
14
+ * Temporal ignores are accepted (`"2024-06-15[u-ca=iso8601]"` → 24).
15
+ * - Compatibility: earlier releases read those shapes loosely (`"2024-03-15T10:00"` → `11`).
16
+ * Pass the date part alone, or use `Temporal.PlainDate.from(value).weekOfYear`.
17
+ * - **Compatibility:** before 1.16.0 `"sunday"` counted weeks within the calendar year with no
18
+ * week-year rollover, so late-December days could be week 53 or 54.
6
19
  *
7
20
  * @param dateStr ISO PlainDate string (e.g. "2024-03-15")
8
21
  * @param weekStartsOn optional: "monday" (default) or "sunday"
@@ -12,6 +25,12 @@
12
25
  * @example getWeekNumber("2024-01-08") // 2
13
26
  * @example getWeekNumber("2024-12-31") // 1
14
27
  * @example getWeekNumber("2024-01-01", "sunday") // 1
28
+ * @example getWeekNumber("2024-12-28", "sunday") // 52
29
+ * @example getWeekNumber("2024-12-31", "sunday") // 1 (its Sunday-first week holds 1 January 2025)
30
+ * @example getWeekNumber("2000-12-30", "sunday") // 53
31
+ * @example getWeekNumber("2024-01-01", "tuesday" as never) // null (invalid weekStartsOn)
15
32
  * @example getWeekNumber("invalid") // null
33
+ * @example getWeekNumber("2024-03-15T10:00") // null (a date-time, not a PlainDate)
34
+ * @example getWeekNumber("2024-03-15T10:00".slice(0, 10)) // 11 (the date part)
16
35
  */
17
36
  export declare function getWeekNumber(dateStr: string, weekStartsOn?: "monday" | "sunday"): number | null;
@@ -1,9 +1,23 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
+ import { isValidDate } from "../validate/index.js";
2
3
  /**
3
4
  * Calculate the week number based on configurable week start day.
4
5
  *
5
- * - ISO (monday): Week 1 is the week containing the first Thursday (has at least 4 days in the year)
6
- * - US (sunday): Week 1 is the week containing Jan 1 (first week has at least 1 day)
6
+ * - `"monday"` (default) is the ISO 8601 week of the week-year: week 1 is the week containing the
7
+ * first Thursday, so late-December days can be week 1 of the next year (`"2024-12-31"` → 1).
8
+ * The result is 1–53.
9
+ * - `"sunday"` is the UTS #35 (Part 4, Week Data) week of the week-year with a Sunday first day
10
+ * and minimal days 1: week 1 is the Sunday-first week containing 1 January, so the last days of
11
+ * December before a mid-week 1 January are week 1 of the next year (`"2024-12-31"` → 1,
12
+ * `"2000-12-31"` → 1). The result is 1–53.
13
+ * - `weekStartsOn` other than `"monday"` or `"sunday"` returns null; `undefined` is the default.
14
+ * - Returns null for invalid input, including every shape `isValidDate` rejects: a date-time,
15
+ * zoned, basic-format or leap-second string, or a non-ISO calendar annotation. The annotations
16
+ * Temporal ignores are accepted (`"2024-06-15[u-ca=iso8601]"` → 24).
17
+ * - Compatibility: earlier releases read those shapes loosely (`"2024-03-15T10:00"` → `11`).
18
+ * Pass the date part alone, or use `Temporal.PlainDate.from(value).weekOfYear`.
19
+ * - **Compatibility:** before 1.16.0 `"sunday"` counted weeks within the calendar year with no
20
+ * week-year rollover, so late-December days could be week 53 or 54.
7
21
  *
8
22
  * @param dateStr ISO PlainDate string (e.g. "2024-03-15")
9
23
  * @param weekStartsOn optional: "monday" (default) or "sunday"
@@ -13,25 +27,32 @@ import { Temporal } from "@js-temporal/polyfill";
13
27
  * @example getWeekNumber("2024-01-08") // 2
14
28
  * @example getWeekNumber("2024-12-31") // 1
15
29
  * @example getWeekNumber("2024-01-01", "sunday") // 1
30
+ * @example getWeekNumber("2024-12-28", "sunday") // 52
31
+ * @example getWeekNumber("2024-12-31", "sunday") // 1 (its Sunday-first week holds 1 January 2025)
32
+ * @example getWeekNumber("2000-12-30", "sunday") // 53
33
+ * @example getWeekNumber("2024-01-01", "tuesday" as never) // null (invalid weekStartsOn)
16
34
  * @example getWeekNumber("invalid") // null
35
+ * @example getWeekNumber("2024-03-15T10:00") // null (a date-time, not a PlainDate)
36
+ * @example getWeekNumber("2024-03-15T10:00".slice(0, 10)) // 11 (the date part)
17
37
  */
18
38
  export function getWeekNumber(dateStr, weekStartsOn = "monday") {
39
+ if (!isValidDate(dateStr) ||
40
+ (weekStartsOn !== "monday" && weekStartsOn !== "sunday"))
41
+ return null;
19
42
  try {
20
43
  const date = Temporal.PlainDate.from(dateStr);
21
44
  if (weekStartsOn === "monday") {
22
45
  const isoWeek = date.weekOfYear;
23
46
  return isoWeek ?? null;
24
47
  }
25
- const yearStart = Temporal.PlainDate.from({
26
- year: date.year,
27
- month: 1,
28
- day: 1,
29
- });
30
- const firstDayOfWeek = yearStart.dayOfWeek;
31
- const daysSinceSunday = firstDayOfWeek === 7 ? 0 : firstDayOfWeek;
32
- const daysSinceJan1 = date.dayOfYear - 1;
33
- const result = Math.floor((daysSinceJan1 + daysSinceSunday) / 7) + 1;
34
- return result;
48
+ // UTS #35 week of year, first day Sunday, minimal days 1: a week belongs to the week-year of
49
+ // its Saturday, and week 1 is the one whose Saturday falls in 1–7 January. Counted on day of
50
+ // year so a week ending past +275760-09-13 still resolves.
51
+ const daysToSaturday = 6 - (date.dayOfWeek % 7);
52
+ const saturdayDayOfYear = date.dayOfYear + daysToSaturday;
53
+ if (saturdayDayOfYear > date.daysInYear)
54
+ return 1;
55
+ return Math.floor((saturdayDayOfYear - 1) / 7) + 1;
35
56
  }
36
57
  catch {
37
58
  return null;
@@ -14,13 +14,15 @@
14
14
  * - Returns null if `value` or `locale` is invalid.
15
15
  *
16
16
  * @param value ISO PlainDate string
17
- * @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR")
17
+ * @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR"), or a preference list of tags (ECMA-402; the first with locale data is read). Required: omitted, or an empty list (which ECMA-402 would resolve to the host default), returns null
18
18
  * @returns 1-based week-of-month row, or null on invalid input
19
19
  *
20
20
  * @example getWeekOfMonth("2024-02-01", "en-US") // 1
21
21
  * @example getWeekOfMonth("2024-02-29", "en-US") // 5
22
22
  * @example getWeekOfMonth("2026-02-01", "en-US") // 1
23
23
  * @example getWeekOfMonth("2026-02-01", "en-GB") // 1
24
+ * @example getWeekOfMonth("-271821-04-30", "en-US") // 5 (the first representable month; its 1st lies before the range)
24
25
  * @example getWeekOfMonth("invalid", "en-US") // null
26
+ * @example getWeekOfMonth("2024-05-12", ["fr-FR", "en-US"]) // 2
25
27
  */
26
- export declare function getWeekOfMonth(value: string, locale: string): number | null;
28
+ export declare function getWeekOfMonth(value: string, locale: string | string[]): number | null;
@@ -1,3 +1,4 @@
1
+ // fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
1
2
  import { Temporal } from "@js-temporal/polyfill";
2
3
  import { getLocaleFirstDayOfWeek, monthGridWeekRow } from "../../internal/index.js";
3
4
  import { isValidDate } from "../validate/index.js";
@@ -17,14 +18,16 @@ import { isValidDate } from "../validate/index.js";
17
18
  * - Returns null if `value` or `locale` is invalid.
18
19
  *
19
20
  * @param value ISO PlainDate string
20
- * @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR")
21
+ * @param locale BCP 47 locale tag (e.g. "en-US", "fr-FR"), or a preference list of tags (ECMA-402; the first with locale data is read). Required: omitted, or an empty list (which ECMA-402 would resolve to the host default), returns null
21
22
  * @returns 1-based week-of-month row, or null on invalid input
22
23
  *
23
24
  * @example getWeekOfMonth("2024-02-01", "en-US") // 1
24
25
  * @example getWeekOfMonth("2024-02-29", "en-US") // 5
25
26
  * @example getWeekOfMonth("2026-02-01", "en-US") // 1
26
27
  * @example getWeekOfMonth("2026-02-01", "en-GB") // 1
28
+ * @example getWeekOfMonth("-271821-04-30", "en-US") // 5 (the first representable month; its 1st lies before the range)
27
29
  * @example getWeekOfMonth("invalid", "en-US") // null
30
+ * @example getWeekOfMonth("2024-05-12", ["fr-FR", "en-US"]) // 2
28
31
  */
29
32
  export function getWeekOfMonth(value, locale) {
30
33
  if (!isValidDate(value))
@@ -34,8 +37,10 @@ export function getWeekOfMonth(value, locale) {
34
37
  return null;
35
38
  try {
36
39
  const date = Temporal.PlainDate.from(value);
37
- const firstOfMonth = date.with({ day: 1 });
38
- return monthGridWeekRow(firstOfMonth, firstDay, date.day);
40
+ // The 1st's weekday, counted back from the date rather than built with `with({ day: 1 })`:
41
+ // the 1st of the first representable month (April -271821) lies before the range.
42
+ const dayOfWeek = ((((date.dayOfWeek - date.day) % 7) + 7) % 7) + 1;
43
+ return monthGridWeekRow({ dayOfWeek }, firstDay, date.day);
39
44
  }
40
45
  catch {
41
46
  return null;