@northguild/gmt 1.15.0 → 1.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1133 -272
- package/dist/calendar/business/businessDaysBetween.d.ts +37 -0
- package/dist/calendar/business/businessDaysBetween.js +89 -0
- package/dist/calendar/business/index.d.ts +7 -0
- package/dist/calendar/business/index.js +10 -0
- package/dist/calendar/business/mergeCalendars.d.ts +33 -0
- package/dist/calendar/business/mergeCalendars.js +68 -0
- package/dist/calendar/business/nextBusinessDay.d.ts +30 -0
- package/dist/calendar/business/nextBusinessDay.js +39 -0
- package/dist/calendar/business/previousBusinessDay.d.ts +30 -0
- package/dist/calendar/business/previousBusinessDay.js +39 -0
- package/dist/calendar/business/rollDate.d.ts +59 -0
- package/dist/calendar/business/rollDate.js +116 -0
- package/dist/calendar/calculate/bucketRange.d.ts +49 -0
- package/dist/calendar/calculate/bucketRange.js +169 -0
- package/dist/calendar/calculate/floorToZone.d.ts +42 -0
- package/dist/calendar/calculate/floorToZone.js +62 -0
- package/dist/calendar/calculate/getFiscalPeriod.d.ts +64 -0
- package/dist/calendar/calculate/getFiscalPeriod.js +96 -0
- package/dist/calendar/calculate/getIsoWeekDate.d.ts +35 -0
- package/dist/calendar/calculate/getIsoWeekDate.js +41 -0
- package/dist/calendar/calculate/getOrdinalDate.d.ts +25 -0
- package/dist/calendar/calculate/getOrdinalDate.js +28 -0
- package/dist/calendar/calculate/getQuarter.d.ts +36 -0
- package/dist/calendar/calculate/getQuarter.js +64 -0
- package/dist/calendar/calculate/index.d.ts +6 -0
- package/dist/calendar/calculate/index.js +6 -0
- package/dist/calendar/index.d.ts +4 -0
- package/dist/calendar/index.js +5 -0
- package/dist/calendar/validate/index.d.ts +4 -0
- package/dist/calendar/validate/index.js +4 -0
- package/dist/calendar/validate/isValidBusinessCalendar.d.ts +31 -0
- package/dist/calendar/validate/isValidBusinessCalendar.js +40 -0
- package/dist/calendar/validate/isValidFiscalPattern.d.ts +25 -0
- package/dist/calendar/validate/isValidFiscalPattern.js +29 -0
- package/dist/calendar/validate/isValidRollConvention.d.ts +28 -0
- package/dist/calendar/validate/isValidRollConvention.js +38 -0
- package/dist/calendar/validate/isValidZoneBucketUnit.d.ts +31 -0
- package/dist/calendar/validate/isValidZoneBucketUnit.js +39 -0
- package/dist/duration/calculate/durationAs.d.ts +27 -3
- package/dist/duration/calculate/durationAs.js +34 -8
- package/dist/duration/calculate/getDurationUnit.d.ts +5 -2
- package/dist/duration/calculate/getDurationUnit.js +7 -3
- package/dist/duration/compare/compareDurations.d.ts +25 -2
- package/dist/duration/compare/compareDurations.js +31 -7
- package/dist/duration/format/formatDuration.d.ts +14 -5
- package/dist/duration/format/formatDuration.js +47 -11
- package/dist/duration/index.d.ts +1 -0
- package/dist/duration/index.js +2 -0
- package/dist/duration/normalize/normalizeDuration.d.ts +33 -6
- package/dist/duration/normalize/normalizeDuration.js +41 -12
- package/dist/duration/parse/parseDuration.js +4 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +7 -0
- package/dist/instant/convert/classifyLocal.d.ts +50 -0
- package/dist/instant/convert/classifyLocal.js +60 -0
- package/dist/instant/convert/fromOffsetInstant.d.ts +47 -0
- package/dist/instant/convert/fromOffsetInstant.js +91 -0
- package/dist/instant/convert/index.d.ts +4 -0
- package/dist/instant/convert/index.js +4 -0
- package/dist/instant/convert/resolveLocal.d.ts +40 -0
- package/dist/instant/convert/resolveLocal.js +76 -0
- package/dist/instant/convert/toOffsetInstant.d.ts +96 -0
- package/dist/instant/convert/toOffsetInstant.js +162 -0
- package/dist/instant/index.d.ts +2 -0
- package/dist/instant/index.js +3 -0
- package/dist/intermodal/calculate/billingTimeline.d.ts +94 -0
- package/dist/intermodal/calculate/billingTimeline.js +168 -0
- package/dist/intermodal/calculate/chargeableDays.d.ts +98 -0
- package/dist/intermodal/calculate/chargeableDays.js +101 -0
- package/dist/intermodal/calculate/demurrageClock.d.ts +93 -0
- package/dist/intermodal/calculate/demurrageClock.js +140 -0
- package/dist/intermodal/calculate/freeTimeExpiry.d.ts +66 -0
- package/dist/intermodal/calculate/freeTimeExpiry.js +82 -0
- package/dist/intermodal/calculate/index.d.ts +4 -0
- package/dist/intermodal/calculate/index.js +4 -0
- package/dist/intermodal/index.d.ts +2 -0
- package/dist/intermodal/index.js +3 -0
- package/dist/internal/adjustZonedBusinessDays.js +9 -7
- package/dist/internal/businessCalendar.d.ts +46 -0
- package/dist/internal/businessCalendar.js +230 -0
- package/dist/internal/businessDayValues.d.ts +20 -0
- package/dist/internal/businessDayValues.js +54 -0
- package/dist/internal/calendarDatePairPolicy.d.ts +10 -12
- package/dist/internal/calendarDatePairPolicy.js +13 -19
- package/dist/internal/calendarDateString.d.ts +32 -58
- package/dist/internal/calendarDateString.js +51 -93
- package/dist/internal/calendarSystemIds.d.ts +26 -2
- package/dist/internal/calendarSystemIds.js +57 -51
- package/dist/internal/calendarValueOfDate.d.ts +10 -12
- package/dist/internal/calendarValueOfDate.js +22 -20
- package/dist/internal/calendarValueOfZoned.d.ts +14 -17
- package/dist/internal/calendarValueOfZoned.js +25 -25
- package/dist/internal/calendarZonedPairPolicy.d.ts +11 -18
- package/dist/internal/calendarZonedPairPolicy.js +14 -25
- package/dist/internal/calendarZonedString.d.ts +41 -65
- package/dist/internal/calendarZonedString.js +52 -101
- package/dist/internal/compareUnixEpochs.d.ts +14 -0
- package/dist/internal/compareUnixEpochs.js +25 -0
- package/dist/internal/dateTimeUnitHelpers.d.ts +18 -0
- package/dist/internal/dateTimeUnitHelpers.js +27 -0
- package/dist/internal/dateUnitHelpers.d.ts +39 -1
- package/dist/internal/dateUnitHelpers.js +73 -11
- package/dist/internal/defaultFractionalDigits.d.ts +14 -0
- package/dist/internal/defaultFractionalDigits.js +23 -0
- package/dist/internal/differenceRecord.d.ts +32 -0
- package/dist/internal/differenceRecord.js +79 -0
- package/dist/internal/divisionBoundary.d.ts +19 -0
- package/dist/internal/divisionBoundary.js +23 -0
- package/dist/internal/durationUntilString.d.ts +1 -1
- package/dist/internal/durationUntilString.js +10 -2
- package/dist/internal/englishCalendarNames.d.ts +11 -0
- package/dist/internal/englishCalendarNames.js +21 -1
- package/dist/internal/epochNanoseconds.d.ts +27 -0
- package/dist/internal/epochNanoseconds.js +31 -0
- package/dist/internal/fiscalCalendar.d.ts +36 -0
- package/dist/internal/fiscalCalendar.js +86 -0
- package/dist/internal/floorDivide.d.ts +15 -0
- package/dist/internal/floorDivide.js +18 -0
- package/dist/internal/foreignEpochs.d.ts +134 -0
- package/dist/internal/foreignEpochs.js +139 -0
- package/dist/internal/formatCalendarDays.d.ts +28 -0
- package/dist/internal/formatCalendarDays.js +49 -0
- package/dist/internal/formatDateInCalendar.d.ts +14 -39
- package/dist/internal/formatDateInCalendar.js +16 -47
- package/dist/internal/formatRelativeDuration.d.ts +27 -0
- package/dist/internal/formatRelativeDuration.js +45 -0
- package/dist/internal/freeTimeLedger.d.ts +93 -0
- package/dist/internal/freeTimeLedger.js +262 -0
- package/dist/internal/getLocaleFirstDayOfWeek.d.ts +9 -6
- package/dist/internal/getLocaleFirstDayOfWeek.js +9 -10
- package/dist/internal/getLocaleWeekYearBounds.d.ts +17 -9
- package/dist/internal/getLocaleWeekYearBounds.js +45 -26
- package/dist/internal/getLocaleWeekendDays.d.ts +9 -18
- package/dist/internal/getLocaleWeekendDays.js +9 -5
- package/dist/internal/halfOpenIntervals.d.ts +102 -0
- package/dist/internal/halfOpenIntervals.js +180 -0
- package/dist/internal/hasCalendarAnnotation.d.ts +20 -20
- package/dist/internal/hasCalendarAnnotation.js +23 -21
- package/dist/internal/hourDurationString.d.ts +16 -0
- package/dist/internal/hourDurationString.js +47 -0
- package/dist/internal/httpDateFields.d.ts +24 -0
- package/dist/internal/httpDateFields.js +86 -0
- package/dist/internal/index.d.ts +30 -9
- package/dist/internal/index.js +30 -9
- package/dist/internal/instantFormatOptions.d.ts +43 -0
- package/dist/internal/instantFormatOptions.js +99 -0
- package/dist/internal/instantIntervalText.d.ts +20 -0
- package/dist/internal/instantIntervalText.js +25 -0
- package/dist/internal/instantNanoseconds.d.ts +25 -0
- package/dist/internal/instantNanoseconds.js +41 -0
- package/dist/internal/intervalCountHelpers.d.ts +16 -10
- package/dist/internal/intervalCountHelpers.js +1 -31
- package/dist/internal/intervalNanoseconds.d.ts +47 -0
- package/dist/internal/intervalNanoseconds.js +86 -0
- package/dist/internal/isObject.d.ts +26 -0
- package/dist/internal/isObject.js +30 -0
- package/dist/internal/isoStringBody.d.ts +66 -0
- package/dist/internal/isoStringBody.js +105 -0
- package/dist/internal/joinDateTimeConnector.d.ts +1 -1
- package/dist/internal/localeWeekInfo.d.ts +34 -0
- package/dist/internal/localeWeekInfo.js +27 -0
- package/dist/internal/maxPieces.d.ts +41 -0
- package/dist/internal/maxPieces.js +53 -0
- package/dist/internal/measureNearRangeEnd.d.ts +26 -0
- package/dist/internal/measureNearRangeEnd.js +47 -0
- package/dist/internal/monthGridWeekRow.d.ts +4 -1
- package/dist/internal/monthGridWeekRow.js +3 -0
- package/dist/internal/normalizeTimeZone.d.ts +17 -10
- package/dist/internal/normalizeTimeZone.js +25 -15
- package/dist/internal/patternToken.d.ts +2 -1
- package/dist/internal/patternToken.js +10 -4
- package/dist/internal/plainDateAdd.d.ts +20 -0
- package/dist/internal/plainDateAdd.js +42 -0
- package/dist/internal/plainDateUntil.d.ts +21 -0
- package/dist/internal/plainDateUntil.js +48 -0
- package/dist/internal/plainFormatOptions.d.ts +59 -0
- package/dist/internal/plainFormatOptions.js +165 -0
- package/dist/internal/resolveDateTimeUnit.d.ts +4 -1
- package/dist/internal/resolveDateTimeUnit.js +2 -12
- package/dist/internal/resolveDurationRelativeTo.d.ts +28 -22
- package/dist/internal/resolveDurationRelativeTo.js +69 -25
- package/dist/internal/resolveDurationUnit.d.ts +4 -1
- package/dist/internal/resolveDurationUnit.js +2 -11
- package/dist/internal/resolveLocale.d.ts +37 -0
- package/dist/internal/resolveLocale.js +59 -0
- package/dist/internal/resolveManualRoundingOptions.d.ts +23 -0
- package/dist/internal/resolveManualRoundingOptions.js +39 -0
- package/dist/internal/resolveMinimalDaysInFirstWeek.d.ts +19 -0
- package/dist/internal/resolveMinimalDaysInFirstWeek.js +28 -0
- package/dist/internal/resolveOverflow.d.ts +6 -0
- package/dist/internal/resolveOverflow.js +7 -1
- package/dist/internal/resolveReadingTimeZone.d.ts +11 -0
- package/dist/internal/resolveReadingTimeZone.js +18 -0
- package/dist/internal/resolveUnixIntervalPair.d.ts +30 -0
- package/dist/internal/resolveUnixIntervalPair.js +53 -0
- package/dist/internal/resolveWeekStartsOn.d.ts +12 -0
- package/dist/internal/resolveWeekStartsOn.js +18 -0
- package/dist/internal/rfc5322DateTime.d.ts +26 -0
- package/dist/internal/rfc5322DateTime.js +176 -0
- package/dist/internal/splitStep.d.ts +81 -0
- package/dist/internal/splitStep.js +182 -0
- package/dist/internal/startOrEndOfUnix.d.ts +26 -0
- package/dist/internal/startOrEndOfUnix.js +47 -0
- package/dist/{utc/calculate → internal}/startOrEndOfUtc.d.ts +8 -4
- package/dist/{utc/calculate → internal}/startOrEndOfUtc.js +30 -26
- package/dist/internal/startOrEndOfZoned.d.ts +22 -0
- package/dist/internal/startOrEndOfZoned.js +49 -0
- package/dist/internal/temporalCompat/calendarDateArithmetic.d.ts +33 -0
- package/dist/internal/temporalCompat/calendarDateArithmetic.js +199 -0
- package/dist/internal/temporalCompat/calendarDateFromFields.d.ts +36 -0
- package/dist/internal/temporalCompat/calendarDateFromFields.js +120 -0
- package/dist/internal/temporalCompat/calendarFields.d.ts +25 -0
- package/dist/internal/temporalCompat/calendarFields.js +131 -0
- package/dist/internal/temporalCompat/capabilities.d.ts +28 -0
- package/dist/internal/temporalCompat/capabilities.js +74 -0
- package/dist/internal/temporalCompat/fieldSearch.d.ts +21 -0
- package/dist/internal/temporalCompat/fieldSearch.js +83 -0
- package/dist/internal/temporalCompat/fixedDay.d.ts +25 -0
- package/dist/internal/temporalCompat/fixedDay.js +45 -0
- package/dist/internal/temporalCompat/hebrewArithmetic.d.ts +19 -0
- package/dist/internal/temporalCompat/hebrewArithmetic.js +150 -0
- package/dist/internal/temporalCompat/index.d.ts +4 -0
- package/dist/internal/temporalCompat/index.js +5 -0
- package/dist/internal/temporalCompat/indianArithmetic.d.ts +16 -0
- package/dist/internal/temporalCompat/indianArithmetic.js +87 -0
- package/dist/internal/temporalCompat/largeMonthSpan.d.ts +19 -0
- package/dist/internal/temporalCompat/largeMonthSpan.js +199 -0
- package/dist/internal/temporalCompat/nonIsoArithmetic.d.ts +59 -0
- package/dist/internal/temporalCompat/nonIsoArithmetic.js +220 -0
- package/dist/internal/temporalCompat/readArithmeticModel.d.ts +3 -0
- package/dist/internal/temporalCompat/readArithmeticModel.js +284 -0
- package/dist/internal/temporalCompat/repros.d.ts +31 -0
- package/dist/internal/temporalCompat/repros.js +556 -0
- package/dist/internal/toInstantFromUtc.d.ts +10 -0
- package/dist/internal/toInstantFromUtc.js +19 -0
- package/dist/internal/unixEpochValue.d.ts +166 -0
- package/dist/internal/unixEpochValue.js +245 -0
- package/dist/internal/unixFormatReference.d.ts +18 -0
- package/dist/internal/unixFormatReference.js +44 -0
- package/dist/internal/unixZonedDateTime.d.ts +22 -0
- package/dist/internal/unixZonedDateTime.js +32 -0
- package/dist/internal/utcOffsetString.d.ts +39 -0
- package/dist/internal/utcOffsetString.js +75 -0
- package/dist/internal/utcZonedDateTime.d.ts +16 -0
- package/dist/internal/utcZonedDateTime.js +28 -0
- package/dist/internal/wallClockAtOffset.d.ts +22 -0
- package/dist/internal/wallClockAtOffset.js +26 -0
- package/dist/internal/zonedBucket.d.ts +91 -0
- package/dist/internal/zonedBucket.js +441 -0
- package/dist/internal/zonedFormatReference.d.ts +15 -0
- package/dist/internal/zonedFormatReference.js +24 -0
- package/dist/internal/zonedLocalDates.d.ts +15 -0
- package/dist/internal/zonedLocalDates.js +58 -0
- package/dist/internal/zonedNowUnitValue.d.ts +24 -0
- package/dist/internal/zonedNowUnitValue.js +58 -0
- package/dist/internal/zonedWallClock.d.ts +84 -0
- package/dist/internal/zonedWallClock.js +427 -0
- package/dist/internal/zonedWallClockDifference.d.ts +92 -0
- package/dist/internal/zonedWallClockDifference.js +1174 -0
- package/dist/internal/zonedWallClockOperations.d.ts +132 -0
- package/dist/internal/zonedWallClockOperations.js +553 -0
- package/dist/internal/zonelessCalendarDate.d.ts +12 -0
- package/dist/internal/zonelessCalendarDate.js +22 -0
- package/dist/interval/calculate/clampInterval.d.ts +22 -0
- package/dist/interval/calculate/clampInterval.js +31 -0
- package/dist/interval/calculate/index.d.ts +6 -0
- package/dist/interval/calculate/index.js +6 -0
- package/dist/interval/calculate/intersectIntervals.d.ts +23 -0
- package/dist/interval/calculate/intersectIntervals.js +43 -0
- package/dist/interval/calculate/mergeIntervals.d.ts +28 -0
- package/dist/interval/calculate/mergeIntervals.js +44 -0
- package/dist/interval/calculate/splitIntervalAt.d.ts +28 -0
- package/dist/interval/calculate/splitIntervalAt.js +63 -0
- package/dist/interval/calculate/subtractIntervals.d.ts +31 -0
- package/dist/interval/calculate/subtractIntervals.js +64 -0
- package/dist/interval/calculate/sumIntervals.d.ts +26 -0
- package/dist/interval/calculate/sumIntervals.js +40 -0
- package/dist/interval/compare/index.d.ts +2 -0
- package/dist/interval/compare/index.js +2 -0
- package/dist/interval/compare/intervalContains.d.ts +25 -0
- package/dist/interval/compare/intervalContains.js +39 -0
- package/dist/interval/compare/intervalsOverlap.d.ts +28 -0
- package/dist/interval/compare/intervalsOverlap.js +42 -0
- package/dist/interval/index.d.ts +4 -0
- package/dist/interval/index.js +5 -0
- package/dist/interval/validate/index.d.ts +1 -0
- package/dist/interval/validate/index.js +1 -0
- package/dist/interval/validate/isValidInterval.d.ts +29 -0
- package/dist/interval/validate/isValidInterval.js +38 -0
- package/dist/plain/calculate/addBusinessDays.d.ts +26 -9
- package/dist/plain/calculate/addBusinessDays.js +29 -21
- package/dist/plain/calculate/addDate.d.ts +9 -8
- package/dist/plain/calculate/addDate.js +35 -22
- package/dist/plain/calculate/addDateTime.js +24 -10
- package/dist/plain/calculate/addTime.d.ts +5 -8
- package/dist/plain/calculate/addTime.js +23 -16
- package/dist/plain/calculate/clampDate.js +3 -3
- package/dist/plain/calculate/closestDateTo.d.ts +11 -7
- package/dist/plain/calculate/closestDateTo.js +36 -24
- package/dist/plain/calculate/cycleDate.d.ts +1 -1
- package/dist/plain/calculate/cycleDate.js +10 -3
- package/dist/plain/calculate/cycleDateTime.d.ts +1 -1
- package/dist/plain/calculate/cycleDateTime.js +10 -3
- package/dist/plain/calculate/cycleTime.d.ts +6 -8
- package/dist/plain/calculate/cycleTime.js +15 -9
- package/dist/plain/calculate/diffDate.d.ts +31 -14
- package/dist/plain/calculate/diffDate.js +73 -38
- package/dist/plain/calculate/diffDateAsDuration.d.ts +13 -8
- package/dist/plain/calculate/diffDateAsDuration.js +22 -9
- package/dist/plain/calculate/diffDateTime.d.ts +17 -5
- package/dist/plain/calculate/diffDateTime.js +67 -28
- package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +2 -2
- package/dist/plain/calculate/diffDateTimeAsDuration.js +10 -3
- package/dist/plain/calculate/diffTime.d.ts +18 -5
- package/dist/plain/calculate/diffTime.js +68 -27
- package/dist/plain/calculate/endOfDate.d.ts +10 -2
- package/dist/plain/calculate/endOfDate.js +52 -27
- package/dist/plain/calculate/endOfDateTime.d.ts +17 -2
- package/dist/plain/calculate/endOfDateTime.js +126 -103
- package/dist/plain/calculate/endOfTime.d.ts +16 -2
- package/dist/plain/calculate/endOfTime.js +77 -59
- package/dist/plain/calculate/getLargestDateDurationUnit.d.ts +13 -5
- package/dist/plain/calculate/getLargestDateDurationUnit.js +26 -10
- package/dist/plain/calculate/getLargestDateTimeDurationUnit.d.ts +13 -6
- package/dist/plain/calculate/getLargestDateTimeDurationUnit.js +37 -22
- package/dist/plain/calculate/getLargestTimeDurationUnit.d.ts +13 -6
- package/dist/plain/calculate/getLargestTimeDurationUnit.js +33 -18
- package/dist/plain/calculate/getLocaleDayOfWeek.d.ts +8 -4
- package/dist/plain/calculate/getLocaleDayOfWeek.js +8 -3
- package/dist/plain/calculate/getLocaleEndOfWeek.d.ts +8 -4
- package/dist/plain/calculate/getLocaleEndOfWeek.js +8 -3
- package/dist/plain/calculate/getLocaleStartOfWeek.d.ts +8 -4
- package/dist/plain/calculate/getLocaleStartOfWeek.js +8 -3
- package/dist/plain/calculate/getLocaleWeekYear.d.ts +29 -19
- package/dist/plain/calculate/getLocaleWeekYear.js +48 -28
- package/dist/plain/calculate/getWeekNumber.d.ts +21 -2
- package/dist/plain/calculate/getWeekNumber.js +33 -12
- package/dist/plain/calculate/getWeekOfMonth.d.ts +4 -2
- package/dist/plain/calculate/getWeekOfMonth.js +8 -3
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +25 -14
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +45 -25
- package/dist/plain/calculate/getWeeksInMonth.d.ts +4 -2
- package/dist/plain/calculate/getWeeksInMonth.js +8 -3
- package/dist/plain/calculate/getWeeksInYear.d.ts +5 -4
- package/dist/plain/calculate/getWeeksInYear.js +9 -14
- package/dist/plain/calculate/maxDate.js +19 -12
- package/dist/plain/calculate/maxDateTime.js +19 -12
- package/dist/plain/calculate/maxTime.js +19 -12
- package/dist/plain/calculate/minDate.js +19 -12
- package/dist/plain/calculate/minDateTime.js +19 -12
- package/dist/plain/calculate/minTime.js +19 -12
- package/dist/plain/calculate/nextWeekday.js +5 -0
- package/dist/plain/calculate/previousWeekday.js +5 -0
- package/dist/plain/calculate/roundDate.d.ts +23 -5
- package/dist/plain/calculate/roundDate.js +88 -46
- package/dist/plain/calculate/roundDateTime.d.ts +27 -3
- package/dist/plain/calculate/roundDateTime.js +128 -69
- package/dist/plain/calculate/roundTime.d.ts +8 -1
- package/dist/plain/calculate/roundTime.js +32 -17
- package/dist/plain/calculate/setDate.js +4 -0
- package/dist/plain/calculate/setDateTime.js +4 -0
- package/dist/plain/calculate/setTime.d.ts +1 -1
- package/dist/plain/calculate/setTime.js +5 -1
- package/dist/plain/calculate/sortDateTimes.js +17 -10
- package/dist/plain/calculate/sortDates.js +17 -10
- package/dist/plain/calculate/sortTimes.js +17 -10
- package/dist/plain/calculate/startOfDate.d.ts +7 -2
- package/dist/plain/calculate/startOfDate.js +52 -27
- package/dist/plain/calculate/startOfDateTime.d.ts +5 -2
- package/dist/plain/calculate/startOfDateTime.js +81 -62
- package/dist/plain/calculate/startOfQuarterForDateTime.d.ts +2 -0
- package/dist/plain/calculate/startOfQuarterForDateTime.js +12 -1
- package/dist/plain/calculate/startOfTime.d.ts +15 -2
- package/dist/plain/calculate/startOfTime.js +33 -37
- package/dist/plain/calculate/subtractBusinessDays.d.ts +25 -10
- package/dist/plain/calculate/subtractBusinessDays.js +28 -22
- package/dist/plain/calculate/subtractDate.d.ts +8 -7
- package/dist/plain/calculate/subtractDate.js +35 -21
- package/dist/plain/calculate/subtractDateTime.js +24 -10
- package/dist/plain/calculate/subtractTime.d.ts +5 -8
- package/dist/plain/calculate/subtractTime.js +23 -16
- package/dist/plain/chop/index.d.ts +0 -1
- package/dist/plain/chop/index.js +0 -1
- package/dist/plain/compare/areDateTimesEqualBy.d.ts +10 -5
- package/dist/plain/compare/areDateTimesEqualBy.js +35 -10
- package/dist/plain/compare/areDatesEqualBy.d.ts +10 -3
- package/dist/plain/compare/areDatesEqualBy.js +41 -14
- package/dist/plain/compare/isBetweenDate.js +32 -16
- package/dist/plain/compare/isBetweenDateTime.js +34 -18
- package/dist/plain/compare/isBetweenTime.js +32 -16
- package/dist/plain/compare/isBusinessDay.d.ts +25 -11
- package/dist/plain/compare/isBusinessDay.js +36 -15
- package/dist/plain/compare/isThisUnit.d.ts +13 -4
- package/dist/plain/compare/isThisUnit.js +33 -13
- package/dist/plain/compare/isWeekend.d.ts +8 -4
- package/dist/plain/compare/isWeekend.js +7 -3
- package/dist/plain/convert/convertDateToCalendar.d.ts +34 -33
- package/dist/plain/convert/convertDateToCalendar.js +41 -40
- package/dist/plain/format/formatCalendar.d.ts +12 -6
- package/dist/plain/format/formatCalendar.js +47 -25
- package/dist/plain/format/formatDate.d.ts +21 -4
- package/dist/plain/format/formatDate.js +37 -5
- package/dist/plain/format/formatDateRange.d.ts +17 -4
- package/dist/plain/format/formatDateRange.js +29 -5
- package/dist/plain/format/formatDateTime.d.ts +22 -4
- package/dist/plain/format/formatDateTime.js +31 -5
- package/dist/plain/format/formatDateTimeRange.d.ts +20 -4
- package/dist/plain/format/formatDateTimeRange.js +29 -5
- package/dist/plain/format/formatDateTimeToParts.d.ts +32 -6
- package/dist/plain/format/formatDateTimeToParts.js +40 -14
- package/dist/plain/format/formatDateToParts.d.ts +24 -3
- package/dist/plain/format/formatDateToParts.js +36 -11
- package/dist/plain/format/formatRelativeDate.d.ts +7 -3
- package/dist/plain/format/formatRelativeDate.js +39 -24
- package/dist/plain/format/formatRelativeDateTime.d.ts +15 -6
- package/dist/plain/format/formatRelativeDateTime.js +35 -33
- package/dist/plain/format/formatRelativeTime.d.ts +8 -4
- package/dist/plain/format/formatRelativeTime.js +36 -21
- package/dist/plain/format/formatSql.d.ts +15 -10
- package/dist/plain/format/formatSql.js +20 -11
- package/dist/plain/format/formatTime.d.ts +18 -4
- package/dist/plain/format/formatTime.js +32 -5
- package/dist/plain/get/getNowUnit.d.ts +3 -0
- package/dist/plain/get/getNowUnit.js +14 -29
- package/dist/plain/index.js +1 -1
- package/dist/plain/interval/intervalAbutsDate.d.ts +12 -7
- package/dist/plain/interval/intervalAbutsDate.js +15 -19
- package/dist/plain/interval/intervalAbutsDateTime.d.ts +9 -7
- package/dist/plain/interval/intervalAbutsDateTime.js +17 -23
- package/dist/plain/interval/intervalAbutsTime.d.ts +11 -5
- package/dist/plain/interval/intervalAbutsTime.js +19 -21
- package/dist/plain/interval/intervalContainsDate.d.ts +17 -10
- package/dist/plain/interval/intervalContainsDate.js +20 -15
- package/dist/plain/interval/intervalContainsDateTime.d.ts +16 -11
- package/dist/plain/interval/intervalContainsDateTime.js +24 -20
- package/dist/plain/interval/intervalContainsTime.d.ts +20 -10
- package/dist/plain/interval/intervalContainsTime.js +28 -19
- package/dist/plain/interval/intervalCountDate.d.ts +13 -8
- package/dist/plain/interval/intervalCountDate.js +46 -14
- package/dist/plain/interval/intervalCountDateTime.d.ts +6 -4
- package/dist/plain/interval/intervalCountDateTime.js +63 -18
- package/dist/plain/interval/intervalCountTime.d.ts +3 -4
- package/dist/plain/interval/intervalCountTime.js +9 -9
- package/dist/plain/interval/intervalDifferenceDate.d.ts +13 -6
- package/dist/plain/interval/intervalDifferenceDate.js +19 -32
- package/dist/plain/interval/intervalDifferenceDateTime.d.ts +10 -4
- package/dist/plain/interval/intervalDifferenceDateTime.js +21 -27
- package/dist/plain/interval/intervalDifferenceTime.d.ts +11 -4
- package/dist/plain/interval/intervalDifferenceTime.js +22 -27
- package/dist/plain/interval/intervalDivideEquallyDate.d.ts +16 -4
- package/dist/plain/interval/intervalDivideEquallyDate.js +57 -33
- package/dist/plain/interval/intervalDivideEquallyDateTime.d.ts +16 -4
- package/dist/plain/interval/intervalDivideEquallyDateTime.js +67 -31
- package/dist/plain/interval/intervalDivideEquallyTime.d.ts +16 -4
- package/dist/plain/interval/intervalDivideEquallyTime.js +58 -31
- package/dist/plain/interval/intervalEngulfsDate.d.ts +16 -9
- package/dist/plain/interval/intervalEngulfsDate.js +19 -12
- package/dist/plain/interval/intervalEngulfsDateTime.d.ts +16 -11
- package/dist/plain/interval/intervalEngulfsDateTime.js +24 -18
- package/dist/plain/interval/intervalEngulfsTime.d.ts +18 -8
- package/dist/plain/interval/intervalEngulfsTime.js +26 -15
- package/dist/plain/interval/intervalFromDurationDate.d.ts +5 -4
- package/dist/plain/interval/intervalFromDurationDate.js +11 -8
- package/dist/plain/interval/intervalFromDurationDateTime.js +4 -0
- package/dist/plain/interval/intervalFromDurationTime.d.ts +10 -12
- package/dist/plain/interval/intervalFromDurationTime.js +28 -17
- package/dist/plain/interval/intervalIntersectionDate.d.ts +9 -4
- package/dist/plain/interval/intervalIntersectionDate.js +14 -9
- package/dist/plain/interval/intervalIntersectionDateTime.d.ts +9 -4
- package/dist/plain/interval/intervalIntersectionDateTime.js +19 -13
- package/dist/plain/interval/intervalIntersectionTime.d.ts +7 -3
- package/dist/plain/interval/intervalIntersectionTime.js +17 -12
- package/dist/plain/interval/intervalLengthDate.d.ts +9 -6
- package/dist/plain/interval/intervalLengthDate.js +40 -8
- package/dist/plain/interval/intervalLengthDateTime.js +2 -2
- package/dist/plain/interval/intervalOverlappingDaysDate.d.ts +16 -17
- package/dist/plain/interval/intervalOverlappingDaysDate.js +30 -30
- package/dist/plain/interval/intervalOverlappingDaysDateTime.d.ts +7 -12
- package/dist/plain/interval/intervalOverlappingDaysDateTime.js +24 -24
- package/dist/plain/interval/intervalSplitAtDate.d.ts +10 -5
- package/dist/plain/interval/intervalSplitAtDate.js +48 -36
- package/dist/plain/interval/intervalSplitAtDateTime.d.ts +9 -4
- package/dist/plain/interval/intervalSplitAtDateTime.js +44 -32
- package/dist/plain/interval/intervalSplitAtTime.d.ts +9 -4
- package/dist/plain/interval/intervalSplitAtTime.js +44 -32
- package/dist/plain/interval/intervalUnionDate.d.ts +14 -6
- package/dist/plain/interval/intervalUnionDate.js +19 -11
- package/dist/plain/interval/intervalUnionDateTime.d.ts +12 -5
- package/dist/plain/interval/intervalUnionDateTime.js +22 -14
- package/dist/plain/interval/intervalUnionTime.d.ts +10 -3
- package/dist/plain/interval/intervalUnionTime.js +20 -12
- package/dist/plain/interval/intervalXorAllDate.d.ts +11 -10
- package/dist/plain/interval/intervalXorAllDate.js +37 -59
- package/dist/plain/interval/intervalXorAllDateTime.d.ts +7 -5
- package/dist/plain/interval/intervalXorAllDateTime.js +28 -48
- package/dist/plain/interval/intervalXorAllTime.d.ts +8 -4
- package/dist/plain/interval/intervalXorAllTime.js +29 -47
- package/dist/plain/interval/intervalXorDate.d.ts +10 -9
- package/dist/plain/interval/intervalXorDate.js +19 -54
- package/dist/plain/interval/intervalXorDateTime.d.ts +9 -7
- package/dist/plain/interval/intervalXorDateTime.js +23 -50
- package/dist/plain/interval/intervalXorTime.d.ts +8 -7
- package/dist/plain/interval/intervalXorTime.js +22 -50
- package/dist/plain/interval/intervalsOverlapDate.d.ts +14 -7
- package/dist/plain/interval/intervalsOverlapDate.js +17 -10
- package/dist/plain/interval/intervalsOverlapDateTime.d.ts +12 -7
- package/dist/plain/interval/intervalsOverlapDateTime.js +20 -14
- package/dist/plain/interval/intervalsOverlapTime.d.ts +10 -5
- package/dist/plain/interval/intervalsOverlapTime.js +18 -12
- package/dist/plain/interval/mergeIntervalsDate.d.ts +9 -5
- package/dist/plain/interval/mergeIntervalsDate.js +37 -38
- package/dist/plain/interval/mergeIntervalsDateTime.d.ts +7 -3
- package/dist/plain/interval/mergeIntervalsDateTime.js +31 -32
- package/dist/plain/interval/mergeIntervalsTime.d.ts +7 -3
- package/dist/plain/interval/mergeIntervalsTime.js +31 -31
- package/dist/plain/interval/splitIntervalByUnitDate.d.ts +26 -6
- package/dist/plain/interval/splitIntervalByUnitDate.js +76 -43
- package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +22 -2
- package/dist/plain/interval/splitIntervalByUnitDateTime.js +65 -39
- package/dist/plain/interval/splitIntervalByUnitTime.d.ts +18 -2
- package/dist/plain/interval/splitIntervalByUnitTime.js +76 -39
- package/dist/plain/interval/validate/isValidDateInterval.d.ts +4 -2
- package/dist/plain/interval/validate/isValidDateInterval.js +4 -2
- package/dist/plain/interval/validate/isValidDateTimeInterval.d.ts +5 -0
- package/dist/plain/interval/validate/isValidDateTimeInterval.js +7 -2
- package/dist/plain/interval/validate/isValidTimeInterval.d.ts +5 -0
- package/dist/plain/interval/validate/isValidTimeInterval.js +8 -18
- package/dist/plain/locale/getLocaleEraNames.d.ts +14 -4
- package/dist/plain/locale/getLocaleEraNames.js +56 -41
- package/dist/plain/locale/getLocaleMeridiems.d.ts +7 -4
- package/dist/plain/locale/getLocaleMeridiems.js +28 -22
- package/dist/plain/locale/getLocaleMonthNames.d.ts +14 -4
- package/dist/plain/locale/getLocaleMonthNames.js +34 -19
- package/dist/plain/locale/getLocaleWeekdayNames.d.ts +14 -7
- package/dist/plain/locale/getLocaleWeekdayNames.js +40 -22
- package/dist/plain/map/mapDatesInRange.d.ts +18 -1
- package/dist/plain/map/mapDatesInRange.js +53 -17
- package/dist/plain/parse/parseDateTimeWithPattern.d.ts +3 -2
- package/dist/plain/parse/parseDateTimeWithPattern.js +30 -24
- package/dist/plain/parse/parseDateWithPattern.d.ts +3 -2
- package/dist/plain/parse/parseDateWithPattern.js +22 -16
- package/dist/plain/parse/parseMicrosecondFromDateTime.d.ts +2 -1
- package/dist/plain/parse/parseMicrosecondFromDateTime.js +2 -1
- package/dist/plain/parse/parseMicrosecondFromTime.d.ts +2 -1
- package/dist/plain/parse/parseMicrosecondFromTime.js +2 -1
- package/dist/plain/parse/parseNanosecondFromDateTime.d.ts +2 -1
- package/dist/plain/parse/parseNanosecondFromDateTime.js +2 -1
- package/dist/plain/parse/parseNanosecondFromTime.d.ts +2 -1
- package/dist/plain/parse/parseNanosecondFromTime.js +2 -1
- package/dist/plain/parse/parseSql.d.ts +15 -12
- package/dist/plain/parse/parseSql.js +16 -13
- package/dist/plain/parse/parseTimeWithPattern.d.ts +3 -2
- package/dist/plain/parse/parseTimeWithPattern.js +27 -21
- package/dist/plain/parse/parseUnitFromDate.d.ts +9 -2
- package/dist/plain/parse/parseUnitFromDate.js +39 -19
- package/dist/plain/parse/parseUnitFromDateTime.d.ts +11 -3
- package/dist/plain/parse/parseUnitFromDateTime.js +54 -28
- package/dist/plain/parse/parseUnitFromTime.d.ts +9 -3
- package/dist/plain/parse/parseUnitFromTime.js +13 -3
- package/dist/plain/parse/parseWeekFromDate.d.ts +5 -0
- package/dist/plain/parse/parseWeekFromDate.js +24 -5
- package/dist/plain/parse/parseWeekFromDateTime.d.ts +5 -0
- package/dist/plain/parse/parseWeekFromDateTime.js +26 -5
- package/dist/plain/validate/isLeapSecond.d.ts +27 -9
- package/dist/plain/validate/isLeapSecond.js +30 -9
- package/dist/plain/validate/isLeapYear.d.ts +7 -1
- package/dist/plain/validate/isLeapYear.js +10 -1
- package/dist/plain/validate/isValidCalendarDate.d.ts +37 -6
- package/dist/plain/validate/isValidCalendarDate.js +37 -6
- package/dist/plain/validate/isValidDate.d.ts +9 -1
- package/dist/plain/validate/isValidDate.js +14 -5
- package/dist/plain/validate/isValidDateRange.d.ts +11 -4
- package/dist/plain/validate/isValidDateRange.js +32 -22
- package/dist/plain/validate/isValidDateTime.d.ts +7 -1
- package/dist/plain/validate/isValidDateTime.js +12 -5
- package/dist/plain/validate/isValidDateTimeRange.d.ts +3 -2
- package/dist/plain/validate/isValidDateTimeRange.js +30 -15
- package/dist/plain/validate/isValidIsoDateLike.d.ts +6 -1
- package/dist/plain/validate/isValidIsoDateLike.js +13 -8
- package/dist/plain/validate/isValidTime.d.ts +6 -1
- package/dist/plain/validate/isValidTime.js +10 -3
- package/dist/plain/validate/isValidTimeRange.d.ts +4 -2
- package/dist/plain/validate/isValidTimeRange.js +31 -27
- package/dist/precision/calculate/index.d.ts +1 -0
- package/dist/precision/calculate/index.js +1 -0
- package/dist/precision/calculate/truncateNanoseconds.d.ts +37 -0
- package/dist/precision/calculate/truncateNanoseconds.js +41 -0
- package/dist/precision/convert/fromDotNetTicks.d.ts +30 -0
- package/dist/precision/convert/fromDotNetTicks.js +39 -0
- package/dist/precision/convert/fromExcelSerial.d.ts +38 -0
- package/dist/precision/convert/fromExcelSerial.js +81 -0
- package/dist/precision/convert/fromFileTime.d.ts +30 -0
- package/dist/precision/convert/fromFileTime.js +39 -0
- package/dist/precision/convert/fromNanoseconds.d.ts +29 -0
- package/dist/precision/convert/fromNanoseconds.js +50 -0
- package/dist/precision/convert/fromNtpTimestamp.d.ts +43 -0
- package/dist/precision/convert/fromNtpTimestamp.js +57 -0
- package/dist/precision/convert/fromPgMicroseconds.d.ts +26 -0
- package/dist/precision/convert/fromPgMicroseconds.js +33 -0
- package/dist/precision/convert/index.d.ts +12 -0
- package/dist/precision/convert/index.js +12 -0
- package/dist/precision/convert/toDotNetTicks.d.ts +29 -0
- package/dist/precision/convert/toDotNetTicks.js +40 -0
- package/dist/precision/convert/toExcelSerial.d.ts +56 -0
- package/dist/precision/convert/toExcelSerial.js +85 -0
- package/dist/precision/convert/toFileTime.d.ts +31 -0
- package/dist/precision/convert/toFileTime.js +43 -0
- package/dist/precision/convert/toNanoseconds.d.ts +37 -0
- package/dist/precision/convert/toNanoseconds.js +40 -0
- package/dist/precision/convert/toNtpTimestamp.d.ts +30 -0
- package/dist/precision/convert/toNtpTimestamp.js +38 -0
- package/dist/precision/convert/toPgMicroseconds.d.ts +29 -0
- package/dist/precision/convert/toPgMicroseconds.js +42 -0
- package/dist/precision/format/formatNanoseconds.d.ts +26 -0
- package/dist/precision/format/formatNanoseconds.js +32 -0
- package/dist/precision/format/index.d.ts +1 -0
- package/dist/precision/format/index.js +1 -0
- package/dist/precision/index.d.ts +6 -0
- package/dist/precision/index.js +7 -0
- package/dist/precision/parse/index.d.ts +1 -0
- package/dist/precision/parse/index.js +1 -0
- package/dist/precision/parse/parseNanoseconds.d.ts +27 -0
- package/dist/precision/parse/parseNanoseconds.js +32 -0
- package/dist/precision/validate/index.d.ts +3 -0
- package/dist/precision/validate/index.js +3 -0
- package/dist/precision/validate/isValidInstant.d.ts +37 -0
- package/dist/precision/validate/isValidInstant.js +40 -0
- package/dist/precision/validate/isValidNanoPattern.d.ts +27 -0
- package/dist/precision/validate/isValidNanoPattern.js +40 -0
- package/dist/precision/validate/isValidNanoseconds.d.ts +25 -0
- package/dist/precision/validate/isValidNanoseconds.js +28 -0
- package/dist/regex/calendar-date.d.ts +25 -14
- package/dist/regex/calendar-date.js +26 -15
- package/dist/regex/calendar-zoned-date-time.d.ts +22 -38
- package/dist/regex/calendar-zoned-date-time.js +23 -39
- package/dist/regex/date-time.d.ts +14 -4
- package/dist/regex/date-time.js +15 -5
- package/dist/regex/date.d.ts +45 -3
- package/dist/regex/date.js +47 -5
- package/dist/regex/http-date.d.ts +10 -6
- package/dist/regex/http-date.js +10 -6
- package/dist/regex/index.d.ts +3 -0
- package/dist/regex/index.js +4 -0
- package/dist/regex/leap-second.d.ts +41 -8
- package/dist/regex/leap-second.js +42 -9
- package/dist/regex/nanoseconds.d.ts +20 -0
- package/dist/regex/nanoseconds.js +20 -0
- package/dist/regex/rfc-2822.d.ts +15 -7
- package/dist/regex/rfc-2822.js +15 -7
- package/dist/regex/rfc-3339.d.ts +8 -1
- package/dist/regex/rfc-3339.js +9 -2
- package/dist/regex/sql-date-time.d.ts +27 -8
- package/dist/regex/sql-date-time.js +28 -9
- package/dist/regex/time-zone-like.d.ts +24 -15
- package/dist/regex/time-zone-like.js +25 -16
- package/dist/regex/time.d.ts +20 -6
- package/dist/regex/time.js +20 -6
- package/dist/regex/unix.d.ts +13 -5
- package/dist/regex/unix.js +13 -5
- package/dist/regex/utc-date-time.d.ts +19 -9
- package/dist/regex/utc-date-time.js +20 -10
- package/dist/regex/utc-offset.d.ts +24 -0
- package/dist/regex/utc-offset.js +24 -0
- package/dist/span/calculate/index.d.ts +3 -0
- package/dist/span/calculate/index.js +3 -0
- package/dist/span/calculate/spanMs.d.ts +52 -0
- package/dist/span/calculate/spanMs.js +80 -0
- package/dist/span/calculate/spanNs.d.ts +43 -0
- package/dist/span/calculate/spanNs.js +51 -0
- package/dist/span/calculate/spanWallClock.d.ts +60 -0
- package/dist/span/calculate/spanWallClock.js +80 -0
- package/dist/span/index.d.ts +3 -0
- package/dist/span/index.js +4 -0
- package/dist/span/validate/index.d.ts +1 -0
- package/dist/span/validate/index.js +1 -0
- package/dist/span/validate/isValidSpan.d.ts +37 -0
- package/dist/span/validate/isValidSpan.js +41 -0
- package/dist/transport/calculate/dwellTime.d.ts +72 -0
- package/dist/transport/calculate/dwellTime.js +126 -0
- package/dist/transport/calculate/index.d.ts +2 -0
- package/dist/transport/calculate/index.js +2 -0
- package/dist/transport/calculate/transitTime.d.ts +53 -0
- package/dist/transport/calculate/transitTime.js +118 -0
- package/dist/transport/convert/etaAtZone.d.ts +36 -0
- package/dist/transport/convert/etaAtZone.js +53 -0
- package/dist/transport/convert/index.d.ts +1 -0
- package/dist/transport/convert/index.js +1 -0
- package/dist/transport/index.d.ts +3 -0
- package/dist/transport/index.js +4 -0
- package/dist/types/business-calendar.d.ts +27 -0
- package/dist/types/business-calendar.js +0 -0
- package/dist/types/calendar-system.d.ts +9 -1
- package/dist/types/fiscal-calendar.d.ts +22 -0
- package/dist/types/fiscal-calendar.js +0 -0
- package/dist/types/free-time-options.d.ts +34 -0
- package/dist/types/free-time-options.js +0 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.js +6 -0
- package/dist/types/interval.d.ts +18 -0
- package/dist/types/interval.js +0 -0
- package/dist/types/now-unit.d.ts +1 -1
- package/dist/types/roll-convention.d.ts +32 -0
- package/dist/types/roll-convention.js +0 -0
- package/dist/types/utc-now-unit.d.ts +1 -1
- package/dist/types/zone-bucket-unit.d.ts +11 -0
- package/dist/types/zone-bucket-unit.js +0 -0
- package/dist/unix/calculate/addUnix.d.ts +10 -4
- package/dist/unix/calculate/addUnix.js +39 -26
- package/dist/unix/calculate/diffUnix.d.ts +38 -11
- package/dist/unix/calculate/diffUnix.js +84 -40
- package/dist/unix/calculate/diffUnixAsDuration.d.ts +17 -7
- package/dist/unix/calculate/diffUnixAsDuration.js +42 -23
- package/dist/unix/calculate/endOfQuarterForUnix.d.ts +15 -11
- package/dist/unix/calculate/endOfQuarterForUnix.js +20 -39
- package/dist/unix/calculate/endOfUnix.d.ts +23 -18
- package/dist/unix/calculate/endOfUnix.js +37 -15
- package/dist/unix/calculate/isBetweenUnix.d.ts +12 -6
- package/dist/unix/calculate/isBetweenUnix.js +34 -23
- package/dist/unix/calculate/maxUnix.d.ts +6 -3
- package/dist/unix/calculate/maxUnix.js +17 -8
- package/dist/unix/calculate/minUnix.d.ts +6 -3
- package/dist/unix/calculate/minUnix.js +17 -8
- package/dist/unix/calculate/roundUnix.d.ts +24 -10
- package/dist/unix/calculate/roundUnix.js +67 -42
- package/dist/unix/calculate/setUnix.d.ts +14 -5
- package/dist/unix/calculate/setUnix.js +48 -29
- package/dist/unix/calculate/sortUnix.d.ts +6 -3
- package/dist/unix/calculate/sortUnix.js +19 -11
- package/dist/unix/calculate/startOfQuarterForUnix.d.ts +17 -12
- package/dist/unix/calculate/startOfQuarterForUnix.js +22 -30
- package/dist/unix/calculate/startOfUnix.d.ts +23 -18
- package/dist/unix/calculate/startOfUnix.js +37 -15
- package/dist/unix/calculate/subtractUnix.d.ts +10 -4
- package/dist/unix/calculate/subtractUnix.js +39 -26
- package/dist/unix/compare/areUnixEqual.d.ts +9 -5
- package/dist/unix/compare/areUnixEqual.js +17 -13
- package/dist/unix/compare/areUnixEqualBy.d.ts +14 -7
- package/dist/unix/compare/areUnixEqualBy.js +14 -7
- package/dist/unix/compare/isAfterUnix.d.ts +8 -4
- package/dist/unix/compare/isAfterUnix.js +16 -12
- package/dist/unix/compare/isBeforeUnix.d.ts +7 -4
- package/dist/unix/compare/isBeforeUnix.js +15 -12
- package/dist/unix/convert/convertUnixToPlainDate.d.ts +17 -9
- package/dist/unix/convert/convertUnixToPlainDate.js +34 -21
- package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +15 -9
- package/dist/unix/convert/convertUnixToPlainDateTime.js +32 -21
- package/dist/unix/convert/convertUnixToPlainTime.d.ts +15 -9
- package/dist/unix/convert/convertUnixToPlainTime.js +32 -21
- package/dist/unix/convert/convertUnixToUtc.d.ts +15 -7
- package/dist/unix/convert/convertUnixToUtc.js +20 -15
- package/dist/unix/convert/convertUnixToZoned.d.ts +17 -10
- package/dist/unix/convert/convertUnixToZoned.js +31 -20
- package/dist/unix/format/formatCalendarUnix.d.ts +22 -19
- package/dist/unix/format/formatCalendarUnix.js +35 -81
- package/dist/unix/format/formatRelativeUnix.d.ts +25 -8
- package/dist/unix/format/formatRelativeUnix.js +46 -93
- package/dist/unix/format/formatUnix.d.ts +26 -4
- package/dist/unix/format/formatUnix.js +48 -34
- package/dist/unix/get/getUnixNow.d.ts +13 -7
- package/dist/unix/get/getUnixNow.js +27 -17
- package/dist/unix/get/getUnixNowUnit.d.ts +5 -2
- package/dist/unix/get/getUnixNowUnit.js +9 -35
- package/dist/unix/index.d.ts +1 -0
- package/dist/unix/index.js +2 -0
- package/dist/unix/interval/intervalAbutsUnix.d.ts +17 -12
- package/dist/unix/interval/intervalAbutsUnix.js +23 -41
- package/dist/unix/interval/intervalContainsUnix.d.ts +17 -7
- package/dist/unix/interval/intervalContainsUnix.js +25 -37
- package/dist/unix/interval/intervalCountUnix.d.ts +30 -13
- package/dist/unix/interval/intervalCountUnix.js +49 -23
- package/dist/unix/interval/intervalDifferenceUnix.d.ts +19 -10
- package/dist/unix/interval/intervalDifferenceUnix.js +25 -43
- package/dist/unix/interval/intervalDivideEquallyUnix.d.ts +24 -10
- package/dist/unix/interval/intervalDivideEquallyUnix.js +57 -36
- package/dist/unix/interval/intervalEngulfsUnix.d.ts +13 -7
- package/dist/unix/interval/intervalEngulfsUnix.js +18 -30
- package/dist/unix/interval/intervalFromDurationUnix.d.ts +10 -6
- package/dist/unix/interval/intervalFromDurationUnix.js +51 -39
- package/dist/unix/interval/intervalIntersectionUnix.d.ts +18 -11
- package/dist/unix/interval/intervalIntersectionUnix.js +25 -46
- package/dist/unix/interval/intervalLengthUnix.d.ts +21 -9
- package/dist/unix/interval/intervalLengthUnix.js +41 -18
- package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +26 -12
- package/dist/unix/interval/intervalOverlappingDaysUnix.js +67 -63
- package/dist/unix/interval/intervalSplitAtUnix.d.ts +11 -6
- package/dist/unix/interval/intervalSplitAtUnix.js +41 -34
- package/dist/unix/interval/intervalUnionUnix.d.ts +15 -9
- package/dist/unix/interval/intervalUnionUnix.js +20 -42
- package/dist/unix/interval/intervalXorAllUnix.d.ts +8 -6
- package/dist/unix/interval/intervalXorAllUnix.js +21 -56
- package/dist/unix/interval/intervalXorUnix.d.ts +22 -11
- package/dist/unix/interval/intervalXorUnix.js +28 -56
- package/dist/unix/interval/intervalsOverlapUnix.d.ts +16 -10
- package/dist/unix/interval/intervalsOverlapUnix.js +21 -37
- package/dist/unix/interval/mergeIntervalsUnix.d.ts +10 -4
- package/dist/unix/interval/mergeIntervalsUnix.js +25 -36
- package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +38 -8
- package/dist/unix/interval/splitIntervalByUnitUnix.js +72 -56
- package/dist/unix/interval/validate/isValidUnixInterval.d.ts +12 -6
- package/dist/unix/interval/validate/isValidUnixInterval.js +17 -16
- package/dist/unix/parse/index.d.ts +2 -0
- package/dist/unix/parse/index.js +2 -0
- package/dist/unix/parse/parseDateFromUnix.d.ts +10 -8
- package/dist/unix/parse/parseDateFromUnix.js +17 -29
- package/dist/unix/parse/parseDayFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseDayFromUnix.js +18 -5
- package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +8 -5
- package/dist/unix/parse/parseDayOfWeekFromUnix.js +15 -28
- package/dist/unix/parse/parseHourFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseHourFromUnix.js +18 -5
- package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMicrosecondFromUnix.js +16 -3
- package/dist/unix/parse/parseMillisecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMillisecondFromUnix.js +16 -3
- package/dist/unix/parse/parseMinuteFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseMinuteFromUnix.js +18 -5
- package/dist/unix/parse/parseMonthFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseMonthFromUnix.js +18 -5
- package/dist/unix/parse/parseNanosecondFromUnix.d.ts +8 -5
- package/dist/unix/parse/parseNanosecondFromUnix.js +20 -6
- package/dist/unix/parse/parseSecondFromUnix.d.ts +5 -3
- package/dist/unix/parse/parseSecondFromUnix.js +17 -4
- package/dist/unix/parse/parseTimeFromUnix.d.ts +10 -8
- package/dist/unix/parse/parseTimeFromUnix.js +17 -29
- package/dist/unix/parse/parseUnitFromUnix.d.ts +18 -11
- package/dist/unix/parse/parseUnitFromUnix.js +57 -55
- package/dist/unix/parse/parseWeekFromUnix.d.ts +15 -7
- package/dist/unix/parse/parseWeekFromUnix.js +32 -30
- package/dist/unix/parse/parseYearFromUnix.d.ts +5 -3
- package/dist/unix/parse/parseYearFromUnix.js +17 -4
- package/dist/unix/validate/isValidUnixMilliseconds.d.ts +8 -5
- package/dist/unix/validate/isValidUnixMilliseconds.js +10 -9
- package/dist/unix/validate/isValidUnixRange.d.ts +13 -7
- package/dist/unix/validate/isValidUnixRange.js +29 -19
- package/dist/unix/validate/isValidUnixSeconds.d.ts +8 -5
- package/dist/unix/validate/isValidUnixSeconds.js +10 -9
- package/dist/unix/validate/isValidUnixUnit.d.ts +9 -7
- package/dist/unix/validate/isValidUnixUnit.js +6 -8
- package/dist/utc/calculate/addUtc.js +26 -12
- package/dist/utc/calculate/diffUtc.d.ts +22 -7
- package/dist/utc/calculate/diffUtc.js +75 -31
- package/dist/utc/calculate/diffUtcAsDuration.d.ts +2 -2
- package/dist/utc/calculate/diffUtcAsDuration.js +10 -3
- package/dist/utc/calculate/endOfQuarterForUtc.d.ts +1 -1
- package/dist/utc/calculate/endOfQuarterForUtc.js +1 -1
- package/dist/utc/calculate/endOfUtc.d.ts +11 -4
- package/dist/utc/calculate/endOfUtc.js +22 -5
- package/dist/utc/calculate/isBetweenUtc.js +40 -24
- package/dist/utc/calculate/maxUtc.js +19 -12
- package/dist/utc/calculate/minUtc.js +19 -12
- package/dist/utc/calculate/roundUtc.d.ts +16 -2
- package/dist/utc/calculate/roundUtc.js +42 -31
- package/dist/utc/calculate/setUtc.d.ts +4 -8
- package/dist/utc/calculate/setUtc.js +25 -18
- package/dist/utc/calculate/sortUtc.js +17 -10
- package/dist/utc/calculate/startOfQuarterForUtc.d.ts +2 -0
- package/dist/utc/calculate/startOfQuarterForUtc.js +12 -1
- package/dist/utc/calculate/startOfUtc.d.ts +6 -4
- package/dist/utc/calculate/startOfUtc.js +17 -5
- package/dist/utc/calculate/subtractUtc.js +26 -12
- package/dist/utc/chop/chopUtc.d.ts +5 -2
- package/dist/utc/chop/chopUtc.js +8 -4
- package/dist/utc/compare/areUtcEqualBy.d.ts +10 -5
- package/dist/utc/compare/areUtcEqualBy.js +34 -11
- package/dist/utc/convert/convertUtcToPlainDate.js +22 -10
- package/dist/utc/convert/convertUtcToPlainDateTime.js +28 -16
- package/dist/utc/convert/convertUtcToPlainTime.js +22 -10
- package/dist/utc/convert/convertUtcToUnix.d.ts +12 -5
- package/dist/utc/convert/convertUtcToUnix.js +22 -13
- package/dist/utc/format/formatCalendarUtc.d.ts +11 -6
- package/dist/utc/format/formatCalendarUtc.js +32 -41
- package/dist/utc/format/formatHttp.d.ts +9 -3
- package/dist/utc/format/formatHttp.js +14 -12
- package/dist/utc/format/formatRelativeUtc.d.ts +18 -6
- package/dist/utc/format/formatRelativeUtc.js +43 -51
- package/dist/utc/format/formatUtc.d.ts +20 -3
- package/dist/utc/format/formatUtc.js +41 -12
- package/dist/utc/get/getUtcNowUnit.d.ts +3 -0
- package/dist/utc/get/getUtcNowUnit.js +11 -33
- package/dist/utc/index.d.ts +1 -0
- package/dist/utc/index.js +2 -0
- package/dist/utc/interval/intervalAbutsUtc.d.ts +10 -7
- package/dist/utc/interval/intervalAbutsUtc.js +18 -30
- package/dist/utc/interval/intervalContainsUtc.d.ts +19 -11
- package/dist/utc/interval/intervalContainsUtc.js +33 -34
- package/dist/utc/interval/intervalCountUtc.d.ts +3 -4
- package/dist/utc/interval/intervalCountUtc.js +12 -18
- package/dist/utc/interval/intervalDifferenceUtc.d.ts +13 -5
- package/dist/utc/interval/intervalDifferenceUtc.js +25 -51
- package/dist/utc/interval/intervalDivideEquallyUtc.d.ts +16 -3
- package/dist/utc/interval/intervalDivideEquallyUtc.js +54 -34
- package/dist/utc/interval/intervalEngulfsUtc.d.ts +17 -12
- package/dist/utc/interval/intervalEngulfsUtc.js +25 -26
- package/dist/utc/interval/intervalFromDurationUtc.js +5 -0
- package/dist/utc/interval/intervalIntersectionUtc.d.ts +12 -6
- package/dist/utc/interval/intervalIntersectionUtc.js +24 -41
- package/dist/utc/interval/intervalLengthUtc.js +5 -7
- package/dist/utc/interval/intervalOverlappingDaysUtc.d.ts +7 -13
- package/dist/utc/interval/intervalOverlappingDaysUtc.js +25 -36
- package/dist/utc/interval/intervalSplitAtUtc.d.ts +7 -2
- package/dist/utc/interval/intervalSplitAtUtc.js +39 -33
- package/dist/utc/interval/intervalUnionUtc.d.ts +15 -7
- package/dist/utc/interval/intervalUnionUtc.js +31 -42
- package/dist/utc/interval/intervalXorAllUtc.d.ts +7 -4
- package/dist/utc/interval/intervalXorAllUtc.js +30 -52
- package/dist/utc/interval/intervalXorUtc.d.ts +8 -6
- package/dist/utc/interval/intervalXorUtc.js +22 -56
- package/dist/utc/interval/intervalsOverlapUtc.d.ts +15 -9
- package/dist/utc/interval/intervalsOverlapUtc.js +23 -39
- package/dist/utc/interval/mergeIntervalsUtc.d.ts +9 -2
- package/dist/utc/interval/mergeIntervalsUtc.js +23 -36
- package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +23 -2
- package/dist/utc/interval/splitIntervalByUnitUtc.js +65 -44
- package/dist/utc/interval/validate/isValidUtcInterval.d.ts +5 -0
- package/dist/utc/interval/validate/isValidUtcInterval.js +7 -6
- package/dist/utc/parse/parseDateFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseDateFromUtc.js +14 -9
- package/dist/utc/parse/parseDayFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseDayFromUtc.js +14 -8
- package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseDayOfWeekFromUtc.js +24 -6
- package/dist/utc/parse/parseHourFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseHourFromUtc.js +14 -8
- package/dist/utc/parse/parseHttp.d.ts +39 -14
- package/dist/utc/parse/parseHttp.js +69 -28
- package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +9 -2
- package/dist/utc/parse/parseMicrosecondFromUtc.js +18 -9
- package/dist/utc/parse/parseMillisecondFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseMillisecondFromUtc.js +16 -8
- package/dist/utc/parse/parseMinuteFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseMinuteFromUtc.js +14 -8
- package/dist/utc/parse/parseMonthFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseMonthFromUtc.js +14 -8
- package/dist/utc/parse/parseNanosecondFromUtc.d.ts +9 -2
- package/dist/utc/parse/parseNanosecondFromUtc.js +18 -9
- package/dist/utc/parse/parseSecondFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseSecondFromUtc.js +14 -8
- package/dist/utc/parse/parseTimeFromUtc.js +21 -10
- package/dist/utc/parse/parseUnitFromUtc.d.ts +18 -7
- package/dist/utc/parse/parseUnitFromUtc.js +58 -31
- package/dist/utc/parse/parseWeekFromUtc.d.ts +16 -3
- package/dist/utc/parse/parseWeekFromUtc.js +38 -10
- package/dist/utc/parse/parseYearFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseYearFromUtc.js +14 -8
- package/dist/utc/validate/isValidUtc.d.ts +8 -1
- package/dist/utc/validate/isValidUtc.js +12 -3
- package/dist/utc/validate/isValidUtcRange.d.ts +3 -2
- package/dist/utc/validate/isValidUtcRange.js +30 -19
- package/dist/zoned/calculate/addZoned.d.ts +40 -27
- package/dist/zoned/calculate/addZoned.js +71 -56
- package/dist/zoned/calculate/addZonedBusinessDays.d.ts +2 -0
- package/dist/zoned/calculate/addZonedBusinessDays.js +5 -2
- package/dist/zoned/calculate/clampZoned.js +4 -3
- package/dist/zoned/calculate/closestZonedTo.d.ts +6 -6
- package/dist/zoned/calculate/closestZonedTo.js +35 -26
- package/dist/zoned/calculate/cycleZoned.d.ts +10 -7
- package/dist/zoned/calculate/cycleZoned.js +19 -11
- package/dist/zoned/calculate/diffZoned.d.ts +39 -17
- package/dist/zoned/calculate/diffZoned.js +90 -45
- package/dist/zoned/calculate/diffZonedAsDuration.d.ts +19 -9
- package/dist/zoned/calculate/diffZonedAsDuration.js +32 -15
- package/dist/zoned/calculate/endOfQuarterForZoned.d.ts +11 -11
- package/dist/zoned/calculate/endOfQuarterForZoned.js +32 -31
- package/dist/zoned/calculate/endOfZoned.d.ts +21 -14
- package/dist/zoned/calculate/endOfZoned.js +25 -111
- package/dist/zoned/calculate/getHoursInZonedDay.d.ts +8 -1
- package/dist/zoned/calculate/getHoursInZonedDay.js +10 -14
- package/dist/zoned/calculate/getLocaleZonedDayOfWeek.d.ts +8 -4
- package/dist/zoned/calculate/getLocaleZonedDayOfWeek.js +9 -6
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +20 -26
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +40 -44
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +16 -24
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +36 -42
- package/dist/zoned/calculate/getQuarterForZoned.js +2 -2
- package/dist/zoned/calculate/maxZoned.js +20 -12
- package/dist/zoned/calculate/minZoned.d.ts +1 -1
- package/dist/zoned/calculate/minZoned.js +21 -13
- package/dist/zoned/calculate/roundZoned.d.ts +18 -4
- package/dist/zoned/calculate/roundZoned.js +58 -33
- package/dist/zoned/calculate/setZoned.d.ts +9 -3
- package/dist/zoned/calculate/setZoned.js +39 -18
- package/dist/zoned/calculate/sortZoned.js +18 -10
- package/dist/zoned/calculate/startOfQuarterForZoned.d.ts +4 -7
- package/dist/zoned/calculate/startOfQuarterForZoned.js +23 -17
- package/dist/zoned/calculate/startOfZoned.d.ts +17 -13
- package/dist/zoned/calculate/startOfZoned.js +21 -103
- package/dist/zoned/calculate/subtractZoned.d.ts +36 -24
- package/dist/zoned/calculate/subtractZoned.js +66 -50
- package/dist/zoned/calculate/subtractZonedBusinessDays.d.ts +2 -0
- package/dist/zoned/calculate/subtractZonedBusinessDays.js +5 -2
- package/dist/zoned/chop/chopZonedDate.js +2 -2
- package/dist/zoned/chop/chopZonedDateTime.js +2 -2
- package/dist/zoned/chop/chopZonedMilliseconds.js +2 -2
- package/dist/zoned/chop/chopZonedSeconds.js +2 -2
- package/dist/zoned/chop/chopZonedTime.js +2 -2
- package/dist/zoned/chop/chopZonedTimezone.js +2 -2
- package/dist/zoned/compare/areZonedEqual.js +3 -2
- package/dist/zoned/compare/areZonedEqualBy.d.ts +15 -2
- package/dist/zoned/compare/areZonedEqualBy.js +45 -12
- package/dist/zoned/compare/isAfterZoned.js +3 -2
- package/dist/zoned/compare/isBeforeZoned.d.ts +1 -1
- package/dist/zoned/compare/isBeforeZoned.js +4 -3
- package/dist/zoned/compare/isBetweenZoned.js +46 -29
- package/dist/zoned/compare/isInDaylightSaving.js +4 -4
- package/dist/zoned/compare/isZonedBusinessDay.d.ts +7 -4
- package/dist/zoned/compare/isZonedBusinessDay.js +9 -6
- package/dist/zoned/compare/isZonedFuture.js +2 -1
- package/dist/zoned/compare/isZonedPast.js +2 -1
- package/dist/zoned/compare/isZonedRelativeDay.js +2 -1
- package/dist/zoned/compare/isZonedThisUnit.d.ts +12 -4
- package/dist/zoned/compare/isZonedThisUnit.js +37 -16
- package/dist/zoned/compare/isZonedWeekend.d.ts +8 -4
- package/dist/zoned/compare/isZonedWeekend.js +9 -6
- package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +10 -5
- package/dist/zoned/convert/convertPlainDateTimeToZoned.js +34 -16
- package/dist/zoned/convert/convertZonedToCalendar.d.ts +26 -38
- package/dist/zoned/convert/convertZonedToCalendar.js +33 -48
- package/dist/zoned/convert/convertZonedToPlainDateTime.d.ts +6 -0
- package/dist/zoned/convert/convertZonedToPlainDateTime.js +8 -2
- package/dist/zoned/convert/convertZonedToUnix.d.ts +12 -6
- package/dist/zoned/convert/convertZonedToUnix.js +23 -16
- package/dist/zoned/convert/convertZonedToUtc.js +2 -2
- package/dist/zoned/convert/convertZonedToZoned.js +2 -2
- package/dist/zoned/format/formatCalendarZoned.d.ts +7 -3
- package/dist/zoned/format/formatCalendarZoned.js +37 -39
- package/dist/zoned/format/formatRelativeZoned.d.ts +15 -6
- package/dist/zoned/format/formatRelativeZoned.js +54 -54
- package/dist/zoned/format/formatRfc2822.d.ts +14 -1
- package/dist/zoned/format/formatRfc2822.js +27 -13
- package/dist/zoned/format/formatRfc3339.d.ts +14 -1
- package/dist/zoned/format/formatRfc3339.js +29 -3
- package/dist/zoned/format/formatTimeZoneName.d.ts +3 -2
- package/dist/zoned/format/formatTimeZoneName.js +28 -18
- package/dist/zoned/format/formatZonedDateTime.d.ts +25 -5
- package/dist/zoned/format/formatZonedDateTime.js +40 -9
- package/dist/zoned/format/formatZonedRange.d.ts +24 -6
- package/dist/zoned/format/formatZonedRange.js +61 -28
- package/dist/zoned/format/formatZonedToParts.d.ts +29 -6
- package/dist/zoned/format/formatZonedToParts.js +42 -13
- package/dist/zoned/get/getDstTransitions.d.ts +6 -1
- package/dist/zoned/get/getDstTransitions.js +17 -15
- package/dist/zoned/get/getTimeZoneOffset.d.ts +11 -1
- package/dist/zoned/get/getTimeZoneOffset.js +19 -2
- package/dist/zoned/get/getZonedNow.js +20 -9
- package/dist/zoned/get/getZonedNowUnit.d.ts +8 -4
- package/dist/zoned/get/getZonedNowUnit.js +15 -31
- package/dist/zoned/index.js +1 -1
- package/dist/zoned/interval/intervalAbutsZoned.d.ts +18 -11
- package/dist/zoned/interval/intervalAbutsZoned.js +24 -25
- package/dist/zoned/interval/intervalContainsZoned.d.ts +16 -7
- package/dist/zoned/interval/intervalContainsZoned.js +22 -14
- package/dist/zoned/interval/intervalCountZoned.d.ts +19 -11
- package/dist/zoned/interval/intervalCountZoned.js +32 -27
- package/dist/zoned/interval/intervalDifferenceZoned.d.ts +13 -7
- package/dist/zoned/interval/intervalDifferenceZoned.js +24 -36
- package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +18 -9
- package/dist/zoned/interval/intervalDivideEquallyZoned.js +67 -46
- package/dist/zoned/interval/intervalEngulfsZoned.d.ts +10 -5
- package/dist/zoned/interval/intervalEngulfsZoned.js +16 -10
- package/dist/zoned/interval/intervalFromDurationZoned.d.ts +25 -11
- package/dist/zoned/interval/intervalFromDurationZoned.js +61 -44
- package/dist/zoned/interval/intervalIntersectionZoned.d.ts +12 -6
- package/dist/zoned/interval/intervalIntersectionZoned.js +24 -18
- package/dist/zoned/interval/intervalLengthZoned.d.ts +15 -6
- package/dist/zoned/interval/intervalLengthZoned.js +23 -9
- package/dist/zoned/interval/intervalOverlappingDaysZoned.d.ts +28 -17
- package/dist/zoned/interval/intervalOverlappingDaysZoned.js +46 -34
- package/dist/zoned/interval/intervalSplitAtZoned.d.ts +6 -3
- package/dist/zoned/interval/intervalSplitAtZoned.js +52 -42
- package/dist/zoned/interval/intervalUnionZoned.d.ts +14 -8
- package/dist/zoned/interval/intervalUnionZoned.js +25 -20
- package/dist/zoned/interval/intervalXorAllZoned.d.ts +9 -7
- package/dist/zoned/interval/intervalXorAllZoned.js +42 -73
- package/dist/zoned/interval/intervalXorZoned.d.ts +20 -12
- package/dist/zoned/interval/intervalXorZoned.js +34 -64
- package/dist/zoned/interval/intervalsOverlapZoned.d.ts +15 -7
- package/dist/zoned/interval/intervalsOverlapZoned.js +21 -12
- package/dist/zoned/interval/mergeIntervalsZoned.d.ts +10 -3
- package/dist/zoned/interval/mergeIntervalsZoned.js +44 -41
- package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +28 -5
- package/dist/zoned/interval/splitIntervalByUnitZoned.js +72 -39
- package/dist/zoned/interval/validate/isValidCalendarZonedInterval.d.ts +13 -10
- package/dist/zoned/interval/validate/isValidCalendarZonedInterval.js +13 -10
- package/dist/zoned/interval/validate/isValidZonedInterval.d.ts +7 -5
- package/dist/zoned/interval/validate/isValidZonedInterval.js +12 -16
- package/dist/zoned/map/mapZonedDatesInRange.d.ts +17 -1
- package/dist/zoned/map/mapZonedDatesInRange.js +62 -26
- package/dist/zoned/map/mapZonedHoursInDay.d.ts +10 -13
- package/dist/zoned/map/mapZonedHoursInDay.js +13 -21
- package/dist/zoned/parse/getZonedOffset.js +2 -2
- package/dist/zoned/parse/getZonedOffsetAs.d.ts +4 -2
- package/dist/zoned/parse/getZonedOffsetAs.js +10 -5
- package/dist/zoned/parse/parseDateFromZoned.js +2 -2
- package/dist/zoned/parse/parseDateTimeFromZoned.js +2 -2
- package/dist/zoned/parse/parseDayFromZoned.js +2 -2
- package/dist/zoned/parse/parseDayOfWeekFromZoned.js +2 -2
- package/dist/zoned/parse/parseHourFromZoned.js +2 -2
- package/dist/zoned/parse/parseMicrosecondFromZoned.d.ts +2 -1
- package/dist/zoned/parse/parseMicrosecondFromZoned.js +4 -3
- package/dist/zoned/parse/parseMillisecondFromZoned.js +2 -2
- package/dist/zoned/parse/parseMinuteFromZoned.js +2 -2
- package/dist/zoned/parse/parseMonthFromZoned.js +2 -2
- package/dist/zoned/parse/parseNanosecondFromZoned.d.ts +2 -1
- package/dist/zoned/parse/parseNanosecondFromZoned.js +4 -3
- package/dist/zoned/parse/parseRfc2822.d.ts +32 -12
- package/dist/zoned/parse/parseRfc2822.js +47 -45
- package/dist/zoned/parse/parseRfc3339.d.ts +6 -0
- package/dist/zoned/parse/parseRfc3339.js +6 -0
- package/dist/zoned/parse/parseSecondFromZoned.js +2 -2
- package/dist/zoned/parse/parseTimeFromZoned.js +2 -2
- package/dist/zoned/parse/parseTimeZoneFromZoned.js +2 -2
- package/dist/zoned/parse/parseUnitFromZoned.d.ts +14 -5
- package/dist/zoned/parse/parseUnitFromZoned.js +59 -33
- package/dist/zoned/parse/parseWeekFromZoned.d.ts +13 -3
- package/dist/zoned/parse/parseWeekFromZoned.js +34 -10
- package/dist/zoned/parse/parseYearFromZoned.js +2 -2
- package/dist/zoned/validate/hasDaylightSaving.js +3 -3
- package/dist/zoned/validate/isValidCalendarZonedDateTime.d.ts +31 -16
- package/dist/zoned/validate/isValidCalendarZonedDateTime.js +31 -16
- package/dist/zoned/validate/isValidTimeZone.d.ts +15 -2
- package/dist/zoned/validate/isValidTimeZone.js +17 -4
- package/dist/zoned/validate/isValidZonedDateTime.d.ts +14 -7
- package/dist/zoned/validate/isValidZonedDateTime.js +20 -12
- package/dist/zoned/validate/isValidZonedRange.d.ts +9 -2
- package/dist/zoned/validate/isValidZonedRange.js +44 -16
- package/package.json +510 -34
- package/skills/gmt-arithmetic/SKILL.md +197 -16
- package/skills/gmt-basics/SKILL.md +61 -14
- package/skills/gmt-integration/SKILL.md +54 -8
- package/skills/gmt-timezone/SKILL.md +208 -24
- package/dist/internal/advanceBusinessDays.d.ts +0 -2
- package/dist/internal/advanceBusinessDays.js +0 -15
- package/dist/internal/ethiopicFamilyCalendar.d.ts +0 -47
- package/dist/internal/ethiopicFamilyCalendar.js +0 -136
- package/dist/internal/getLocaleMinimalDaysInFirstWeek.d.ts +0 -20
- package/dist/internal/getLocaleMinimalDaysInFirstWeek.js +0 -31
- package/dist/internal/resolveUnixTimeZone.d.ts +0 -20
- package/dist/internal/resolveUnixTimeZone.js +0 -30
- package/dist/unix/calculate/startOrEndOfUnix.d.ts +0 -27
- package/dist/unix/calculate/startOrEndOfUnix.js +0 -140
- package/dist/unix/interval/resolveUnixIntervalPair.d.ts +0 -7
- package/dist/unix/interval/resolveUnixIntervalPair.js +0 -36
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import { isValidUtc } from "../utc/validate/isValidUtc.js";
|
|
3
|
+
import { resolveReadingTimeZone } from "./resolveReadingTimeZone.js";
|
|
4
|
+
/**
|
|
5
|
+
* Read a UTC ISO string as a zoned date-time for the `parse*FromUtc` accessors: the instant it
|
|
6
|
+
* names, on the wall clock of `options.timeZone` (UTC when omitted). The utc twin of
|
|
7
|
+
* `unixZonedDateTime`.
|
|
8
|
+
*
|
|
9
|
+
* @param value UTC ISO 8601 datetime string
|
|
10
|
+
* @param options optional `{ timeZone }`
|
|
11
|
+
* @returns the zoned date-time, or null when the value or the zone is invalid
|
|
12
|
+
* @example utcZonedDateTime("2024-03-15T14:30:00Z", { timeZone: "Asia/Tokyo" })?.toString() // "2024-03-15T23:30:00+09:00[Asia/Tokyo]"
|
|
13
|
+
* @example utcZonedDateTime("2024-03-15T14:30:00Z", { timeZone: "Invalid/Zone" }) // null
|
|
14
|
+
* @example utcZonedDateTime("2024-03-15T14:30:00") // null (no Z)
|
|
15
|
+
*/
|
|
16
|
+
export function utcZonedDateTime(value, options) {
|
|
17
|
+
if (!isValidUtc(value))
|
|
18
|
+
return null;
|
|
19
|
+
const timeZone = resolveReadingTimeZone(options?.timeZone);
|
|
20
|
+
if (timeZone === null)
|
|
21
|
+
return null;
|
|
22
|
+
try {
|
|
23
|
+
return Temporal.Instant.from(value).toZonedDateTimeISO(timeZone);
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
/**
|
|
3
|
+
* The wall clock an instant reads at a fixed UTC offset, including a sub-minute or fractional
|
|
4
|
+
* one. Callers write the offset text themselves.
|
|
5
|
+
*
|
|
6
|
+
* The shift happens on the wall clock, never on the instant: a `PlainDateTime` reaches a day
|
|
7
|
+
* further either side than an `Instant` does (TC39 `ISODateTimeWithinLimits` against
|
|
8
|
+
* `IsValidEpochNanoseconds`), so shifting the instant first would reject the last 14 hours of
|
|
9
|
+
* the representable range, where `+275760-09-13T00:00:00Z` at `+14:00` names a local time that
|
|
10
|
+
* exists. No offset time zone is built either: Temporal's offset time-zone identifiers are
|
|
11
|
+
* minute precision, and an offset such as `-00:44:30` or `+05:30:15.25` is not.
|
|
12
|
+
*
|
|
13
|
+
* Throws what Temporal throws; callers wrap it in their own try/catch.
|
|
14
|
+
*
|
|
15
|
+
* @param instant the exact time
|
|
16
|
+
* @param offsetNanoseconds UTC offset in nanoseconds, east positive
|
|
17
|
+
* @returns the local wall clock at that offset
|
|
18
|
+
*
|
|
19
|
+
* @example wallClockAtOffset(Temporal.Instant.from("1970-01-01T00:00:00Z"), -2_670_000_000_000n).toString() // "1969-12-31T23:15:30"
|
|
20
|
+
* @example wallClockAtOffset(Temporal.Instant.from("+275760-09-13T00:00:00Z"), 50_400_000_000_000n).toString() // "+275760-09-13T14:00:00"
|
|
21
|
+
*/
|
|
22
|
+
export declare function wallClockAtOffset(instant: Temporal.Instant, offsetNanoseconds: bigint): Temporal.PlainDateTime;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The wall clock an instant reads at a fixed UTC offset, including a sub-minute or fractional
|
|
3
|
+
* one. Callers write the offset text themselves.
|
|
4
|
+
*
|
|
5
|
+
* The shift happens on the wall clock, never on the instant: a `PlainDateTime` reaches a day
|
|
6
|
+
* further either side than an `Instant` does (TC39 `ISODateTimeWithinLimits` against
|
|
7
|
+
* `IsValidEpochNanoseconds`), so shifting the instant first would reject the last 14 hours of
|
|
8
|
+
* the representable range, where `+275760-09-13T00:00:00Z` at `+14:00` names a local time that
|
|
9
|
+
* exists. No offset time zone is built either: Temporal's offset time-zone identifiers are
|
|
10
|
+
* minute precision, and an offset such as `-00:44:30` or `+05:30:15.25` is not.
|
|
11
|
+
*
|
|
12
|
+
* Throws what Temporal throws; callers wrap it in their own try/catch.
|
|
13
|
+
*
|
|
14
|
+
* @param instant the exact time
|
|
15
|
+
* @param offsetNanoseconds UTC offset in nanoseconds, east positive
|
|
16
|
+
* @returns the local wall clock at that offset
|
|
17
|
+
*
|
|
18
|
+
* @example wallClockAtOffset(Temporal.Instant.from("1970-01-01T00:00:00Z"), -2_670_000_000_000n).toString() // "1969-12-31T23:15:30"
|
|
19
|
+
* @example wallClockAtOffset(Temporal.Instant.from("+275760-09-13T00:00:00Z"), 50_400_000_000_000n).toString() // "+275760-09-13T14:00:00"
|
|
20
|
+
*/
|
|
21
|
+
export function wallClockAtOffset(instant, offsetNanoseconds) {
|
|
22
|
+
return instant
|
|
23
|
+
.toZonedDateTimeISO("UTC")
|
|
24
|
+
.toPlainDateTime()
|
|
25
|
+
.add({ nanoseconds: Number(offsetNanoseconds) });
|
|
26
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import type { DateTimeUnit } from "../types/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* ISO day-of-week a week starts on: 1 = Monday .. 7 = Sunday, as `Temporal`'s `dayOfWeek` reads.
|
|
5
|
+
*/
|
|
6
|
+
export type WeekStartDay = 1 | 2 | 3 | 4 | 5 | 6 | 7;
|
|
7
|
+
/**
|
|
8
|
+
* Units the walker floors to: every `DateTimeUnit`, plus the calendar `quarter` (three local
|
|
9
|
+
* months starting January, April, July or October). Internal only — the public unit types stay
|
|
10
|
+
* unchanged.
|
|
11
|
+
*/
|
|
12
|
+
export type WalkerUnit = DateTimeUnit | "quarter";
|
|
13
|
+
/**
|
|
14
|
+
* Return the instant the local `unit` containing `zoned` began — the bucket `zoned` falls in.
|
|
15
|
+
*
|
|
16
|
+
* A bucket is the run of instants sharing `zoned`'s local label *without interruption*, so
|
|
17
|
+
* this walks back from `zoned` to where that run started. Re-resolving a truncated wall clock
|
|
18
|
+
* cannot do the job, because truncation can land on a local time the zone never had and
|
|
19
|
+
* Temporal's "compatible" disambiguation then relocates it:
|
|
20
|
+
*
|
|
21
|
+
* - **A gap pushes the boundary past the instant being floored.** `Pacific/Chatham` springs
|
|
22
|
+
* forward 02:45 → 03:45, so local 03:00 never happens; truncating 03:45 to the hour and
|
|
23
|
+
* resolving it lands fifteen minutes *after* the instant it was asked to floor.
|
|
24
|
+
* `Antarctica/Casey`'s three-hour 2020 jump lands three hours after.
|
|
25
|
+
* - **A sub-hour fall-back answers with the wrong pass.** Chatham falls back 03:45 → 02:45,
|
|
26
|
+
* so local 02:00 and local 03:00 each name two instants an hour and three quarters apart,
|
|
27
|
+
* and "compatible" always picks the earlier — silently skipping a boundary.
|
|
28
|
+
*
|
|
29
|
+
* So the boundary is taken in `zoned`'s own offset, then extended back through any transition
|
|
30
|
+
* the bucket runs straight through. See `startsNewBucketAt` for which those are.
|
|
31
|
+
*
|
|
32
|
+
* - Handles every `DateTimeUnit` plus `quarter`. Sub-hour units need the same own-offset treatment, because
|
|
33
|
+
* historic offsets carry seconds (`Africa/Monrovia` ran at −00:44:30 until 1972).
|
|
34
|
+
* - Weeks start on `weekStartsOn` (ISO day number, Monday by default).
|
|
35
|
+
* - Keeps `zoned`'s calendar, so a non-ISO month or year floors in that calendar.
|
|
36
|
+
* - Returns null if the walk-back is still inside transitions after `MAX_TRANSITION_WALKBACK`
|
|
37
|
+
* of them, which no IANA zone comes close to. The last `start` reached at that point is
|
|
38
|
+
* only a partial answer, and a bounded walk that runs out answers with the sentinel.
|
|
39
|
+
*/
|
|
40
|
+
export declare function zonedUnitStart(zoned: Temporal.ZonedDateTime, unit: WalkerUnit, weekStartsOn?: WeekStartDay): Temporal.ZonedDateTime | null;
|
|
41
|
+
/**
|
|
42
|
+
* Return the start of the bucket following the one containing `current` (which need not be that
|
|
43
|
+
* bucket's start).
|
|
44
|
+
*
|
|
45
|
+
* Stepping a whole unit and re-flooring is wrong, because a bucket can be shorter than its
|
|
46
|
+
* unit and would be stepped straight over: `Pacific/Chatham`'s 02:45 → 03:45 spring-forward
|
|
47
|
+
* leaves a local 03:00 hour only fifteen minutes long. So this takes whichever comes first —
|
|
48
|
+
* the next boundary in the current offset, or a transition that opens a bucket of its own —
|
|
49
|
+
* and runs through any transition that does not.
|
|
50
|
+
*
|
|
51
|
+
* - Handles every `DateTimeUnit` plus `quarter`, weeks starting on `weekStartsOn` (Monday by default).
|
|
52
|
+
* - Returns null if neither is reachable within `MAX_TRANSITION_WALKBACK` transitions, which
|
|
53
|
+
* no IANA zone comes close to.
|
|
54
|
+
* - Throws a RangeError when the next bucket starts after the last representable instant.
|
|
55
|
+
*/
|
|
56
|
+
export declare function nextZonedBucketStart(current: Temporal.ZonedDateTime, unit: WalkerUnit, weekStartsOn?: WeekStartDay): Temporal.ZonedDateTime | null;
|
|
57
|
+
/**
|
|
58
|
+
* Return the last instant of the local `unit` containing `zoned`: one nanosecond before the
|
|
59
|
+
* next bucket starts.
|
|
60
|
+
*
|
|
61
|
+
* - Never earlier than `zoned`, because it is measured from the real bucket `zoned` is in —
|
|
62
|
+
* New York's second 01:00 hour on a fall-back morning ends at 01:59:59.999999999 −05:00, not
|
|
63
|
+
* at the first pass's.
|
|
64
|
+
* - Walks forward from `zoned` itself, never from its bucket's start. No transition between that
|
|
65
|
+
* start and `zoned` opens a bucket, so both walks reach the same next start — but the start may
|
|
66
|
+
* lie before the first representable instant (the month holding `-271821-04-20T00:00:00Z` began
|
|
67
|
+
* on 1 April), while the end does not.
|
|
68
|
+
* - Returns null if the next bucket start cannot be found.
|
|
69
|
+
*/
|
|
70
|
+
export declare function zonedUnitEnd(zoned: Temporal.ZonedDateTime, unit: WalkerUnit, weekStartsOn?: WeekStartDay): Temporal.ZonedDateTime | null;
|
|
71
|
+
/**
|
|
72
|
+
* Count the local `unit` buckets the half-open interval `[start, end)` touches, in `start`'s
|
|
73
|
+
* zone and calendar. `end` must already be expressed in both.
|
|
74
|
+
*
|
|
75
|
+
* The count is the bucket `start` is in, plus every bucket that starts after it and at or
|
|
76
|
+
* before `end` — less one when `end` sits exactly on a bucket start, since the interval does
|
|
77
|
+
* not reach into that bucket. A calendar-unit difference between truncated endpoints gets
|
|
78
|
+
* transitions wrong both ways: Chatham's 15-minute 03:00 hour is a bucket the difference
|
|
79
|
+
* never sees, and Samoa's deleted 2011-12-30 is a day the difference counts anyway.
|
|
80
|
+
*
|
|
81
|
+
* - Between transitions the wall clock runs continuously, so buckets there are counted by the
|
|
82
|
+
* whole-unit difference of their local labels.
|
|
83
|
+
* - A transition that does not open a bucket (see `startsNewBucketAt`) leaves the label
|
|
84
|
+
* running on, so it changes nothing and is stepped over.
|
|
85
|
+
* - A transition that does open one closes the run before it and counts the new bucket.
|
|
86
|
+
* - A `start` whose bucket began before the first representable instant still counts that
|
|
87
|
+
* bucket once.
|
|
88
|
+
* - Returns null if either endpoint's bucket cannot be found, or the span crosses more than
|
|
89
|
+
* `MAX_COUNTED_TRANSITIONS` transitions.
|
|
90
|
+
*/
|
|
91
|
+
export declare function countZonedBuckets(start: Temporal.ZonedDateTime, end: Temporal.ZonedDateTime, unit: DateTimeUnit, weekStartsOn?: WeekStartDay): number | null;
|
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import { DURATION_FIELD_BY_UNIT, getUnitSpan } from "./intervalCountHelpers.js";
|
|
3
|
+
import { calendarDateAdd, calendarDateFromFields, calendarDateUntil, calendarFieldsOf, isCalendarArithmeticCompatNeeded, } from "./temporalCompat/index.js";
|
|
4
|
+
import { zonedNextTransition, zonedPreviousTransition, } from "./zonedWallClockOperations.js";
|
|
5
|
+
/** The `Temporal.Duration` that advances a wall clock by one `unit`. */
|
|
6
|
+
function oneUnit(unit) {
|
|
7
|
+
return unit === "quarter"
|
|
8
|
+
? { months: 3 }
|
|
9
|
+
: { [DURATION_FIELD_BY_UNIT[unit]]: 1 };
|
|
10
|
+
}
|
|
11
|
+
/** Wall-clock fields that a local day, week, month or year boundary resets. */
|
|
12
|
+
const MIDNIGHT = {
|
|
13
|
+
hour: 0,
|
|
14
|
+
minute: 0,
|
|
15
|
+
second: 0,
|
|
16
|
+
millisecond: 0,
|
|
17
|
+
microsecond: 0,
|
|
18
|
+
nanosecond: 0,
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Wall-clock fields each unit's boundary resets. `week` is computed from the week start, and
|
|
22
|
+
* `nanosecond` resets nothing, so neither is listed.
|
|
23
|
+
*/
|
|
24
|
+
const FIELDS_RESET_BY_UNIT = {
|
|
25
|
+
year: { month: 1, day: 1, ...MIDNIGHT },
|
|
26
|
+
month: { day: 1, ...MIDNIGHT },
|
|
27
|
+
day: MIDNIGHT,
|
|
28
|
+
hour: { minute: 0, second: 0, millisecond: 0, microsecond: 0, nanosecond: 0 },
|
|
29
|
+
minute: { second: 0, millisecond: 0, microsecond: 0, nanosecond: 0 },
|
|
30
|
+
second: { millisecond: 0, microsecond: 0, nanosecond: 0 },
|
|
31
|
+
millisecond: { microsecond: 0, nanosecond: 0 },
|
|
32
|
+
microsecond: { nanosecond: 0 },
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Transitions walked over while sizing one bucket.
|
|
36
|
+
*
|
|
37
|
+
* Only transitions inside the bucket matter. No IANA zone has had more than two inside one
|
|
38
|
+
* local month, but `Africa/Cairo` had four inside local 2010 (DST, suspended for Ramadan, then
|
|
39
|
+
* resumed and ended), and the walk needs one step past the last of them to see it has left
|
|
40
|
+
* the bucket — so the bound sits comfortably above five.
|
|
41
|
+
*/
|
|
42
|
+
const MAX_TRANSITION_WALKBACK = 8;
|
|
43
|
+
/**
|
|
44
|
+
* Truncate a wall clock to the start of its `unit`. Pure wall-clock arithmetic.
|
|
45
|
+
*
|
|
46
|
+
* Calendar-aware: `local` keeps its calendar, so a Hebrew month or year truncates to the
|
|
47
|
+
* Hebrew one.
|
|
48
|
+
*/
|
|
49
|
+
function truncateLocal(local, unit, weekStartsOn) {
|
|
50
|
+
if (unit === "nanosecond")
|
|
51
|
+
return local;
|
|
52
|
+
if (needsCalendarCompat(local)) {
|
|
53
|
+
return truncateLocalWithCompat(local, unit, weekStartsOn);
|
|
54
|
+
}
|
|
55
|
+
return truncateLocalInOwnCalendar(local, unit, weekStartsOn);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* CORE-6: true when `local`'s calendar arithmetic needs the Temporal compat layer in this runtime.
|
|
59
|
+
* The polyfill's `with`, `add` and `until` are then wrong or throw on its wall clocks (D1–D7), so
|
|
60
|
+
* the walker builds calendar periods from corrected reads and does everything else in ISO.
|
|
61
|
+
*/
|
|
62
|
+
function needsCalendarCompat(local) {
|
|
63
|
+
return (local.calendarId !== "iso8601" &&
|
|
64
|
+
isCalendarArithmeticCompatNeeded(local.calendarId));
|
|
65
|
+
}
|
|
66
|
+
function isCalendarPeriod(unit) {
|
|
67
|
+
return unit === "year" || unit === "quarter" || unit === "month";
|
|
68
|
+
}
|
|
69
|
+
/** `truncateLocal` for a calendar that needs the compat layer. */
|
|
70
|
+
function truncateLocalWithCompat(local, unit, weekStartsOn) {
|
|
71
|
+
if (isCalendarPeriod(unit)) {
|
|
72
|
+
const { year, month } = calendarFieldsOf(local.toPlainDate(), local.calendarId);
|
|
73
|
+
const startMonth = unit === "year"
|
|
74
|
+
? 1
|
|
75
|
+
: unit === "quarter"
|
|
76
|
+
? quarterStartMonth(month)
|
|
77
|
+
: month;
|
|
78
|
+
return calendarDateFromFields(local.calendarId, { year, month: startMonth, day: 1 }, "reject").toPlainDateTime();
|
|
79
|
+
}
|
|
80
|
+
// Weeks, days and time units do not depend on the calendar.
|
|
81
|
+
return truncateLocalInOwnCalendar(local.withCalendar("iso8601"), unit, weekStartsOn).withCalendar(local.calendarId);
|
|
82
|
+
}
|
|
83
|
+
/** The first month of the quarter holding ordinal `month` (1, 4, 7 or 10). */
|
|
84
|
+
function quarterStartMonth(month) {
|
|
85
|
+
return Math.floor((month - 1) / 3) * 3 + 1;
|
|
86
|
+
}
|
|
87
|
+
/** `truncateLocal` through `local`'s own calendar operations. */
|
|
88
|
+
function truncateLocalInOwnCalendar(local, unit, weekStartsOn) {
|
|
89
|
+
if (unit === "nanosecond")
|
|
90
|
+
return local;
|
|
91
|
+
if (unit === "quarter") {
|
|
92
|
+
return local.with({
|
|
93
|
+
month: Math.floor((local.month - 1) / 3) * 3 + 1,
|
|
94
|
+
day: 1,
|
|
95
|
+
...MIDNIGHT,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
if (unit === "week") {
|
|
99
|
+
return local
|
|
100
|
+
.subtract({ days: (local.dayOfWeek - weekStartsOn + 7) % 7 })
|
|
101
|
+
.with(MIDNIGHT);
|
|
102
|
+
}
|
|
103
|
+
return local.with(FIELDS_RESET_BY_UNIT[unit]);
|
|
104
|
+
}
|
|
105
|
+
/** The local `unit` label `zoned` carries — what the wall clock read, with no zone opinion. */
|
|
106
|
+
function localUnitLabel(zoned, unit, weekStartsOn) {
|
|
107
|
+
return truncateLocal(zoned.toPlainDateTime(), unit, weekStartsOn).toString();
|
|
108
|
+
}
|
|
109
|
+
/** `instant` in `like`'s zone and calendar. `toZonedDateTimeISO` alone would drop the calendar. */
|
|
110
|
+
function inZoneOf(instant, like) {
|
|
111
|
+
return instant
|
|
112
|
+
.toZonedDateTimeISO(like.timeZoneId)
|
|
113
|
+
.withCalendar(like.calendarId);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* The `unit` boundary reached from `zoned` without leaving its own offset stretch.
|
|
117
|
+
*
|
|
118
|
+
* The wall clock says how far into the unit `zoned` sits; that distance is then subtracted as
|
|
119
|
+
* exact time, so the result keeps `zoned`'s offset instead of being re-resolved — which is
|
|
120
|
+
* what stops a repeated wall time from being answered with the wrong pass of it.
|
|
121
|
+
*/
|
|
122
|
+
function boundaryInOwnOffset(zoned, unit, weekStartsOn) {
|
|
123
|
+
const local = zoned.toPlainDateTime();
|
|
124
|
+
const elapsed = wallClockUntil(truncateLocal(local, unit, weekStartsOn), local, "hour");
|
|
125
|
+
return inZoneOf(zoned.toInstant().subtract(elapsed), zoned);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* `from.until(to, { largestUnit })` between two wall clocks in one calendar. Hours and smaller
|
|
129
|
+
* never depend on the calendar, so a calendar that needs the compat layer measures them in ISO.
|
|
130
|
+
*/
|
|
131
|
+
function wallClockUntil(from, to, largestUnit) {
|
|
132
|
+
return needsCalendarCompat(from)
|
|
133
|
+
? from
|
|
134
|
+
.withCalendar("iso8601")
|
|
135
|
+
.until(to.withCalendar("iso8601"), { largestUnit })
|
|
136
|
+
: from.until(to, { largestUnit });
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* `from.until(to, { largestUnit: unit })` between two wall clocks already truncated to `unit`. A
|
|
140
|
+
* calendar that needs the compat layer counts years and months with `calendarDateUntil` between
|
|
141
|
+
* the dates (both clocks sit at midnight on a period start) and every other unit in ISO.
|
|
142
|
+
*/
|
|
143
|
+
function truncatedWallClockUntil(from, to, unit) {
|
|
144
|
+
if (!needsCalendarCompat(from)) {
|
|
145
|
+
return from.until(to, { largestUnit: unit });
|
|
146
|
+
}
|
|
147
|
+
if (unit === "year" || unit === "month") {
|
|
148
|
+
return Temporal.Duration.from(calendarDateUntil(from.toPlainDate(), to.toPlainDate(), unit));
|
|
149
|
+
}
|
|
150
|
+
return from
|
|
151
|
+
.withCalendar("iso8601")
|
|
152
|
+
.until(to.withCalendar("iso8601"), { largestUnit: unit });
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* The most recent zone transition at or before `zoned`, or null if there is none.
|
|
156
|
+
*
|
|
157
|
+
* `getTimeZoneTransition("previous")` is strict, so a transition sitting exactly on `zoned` is
|
|
158
|
+
* missed by asking from `zoned` itself. Asking from a nanosecond later would find it, but throws at
|
|
159
|
+
* the last representable instant, so this never steps past `zoned`: the first transition after
|
|
160
|
+
* `zoned - 1 ns` is `zoned` itself exactly when a transition sits on it. At the first
|
|
161
|
+
* representable instant there is no `zoned - 1 ns`, and nothing earlier, so that check is skipped.
|
|
162
|
+
*/
|
|
163
|
+
function transitionAtOrBefore(zoned) {
|
|
164
|
+
try {
|
|
165
|
+
if (transitionSitsOn(zoned)) {
|
|
166
|
+
return zoned;
|
|
167
|
+
}
|
|
168
|
+
return zonedPreviousTransition(zoned);
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/** True when a zone transition happens exactly at `zoned`'s instant. */
|
|
175
|
+
function transitionSitsOn(zoned) {
|
|
176
|
+
let justBefore;
|
|
177
|
+
try {
|
|
178
|
+
justBefore = zoned.subtract({ nanoseconds: 1 });
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
const next = zonedNextTransition(justBefore);
|
|
184
|
+
return next !== null && next.toInstant().equals(zoned.toInstant());
|
|
185
|
+
}
|
|
186
|
+
/** Units whose buckets are labelled by a local date: a repeated wall time inside one stays one bucket. */
|
|
187
|
+
const DATE_LABELLED_UNITS = new Set([
|
|
188
|
+
"year",
|
|
189
|
+
"quarter",
|
|
190
|
+
"month",
|
|
191
|
+
"week",
|
|
192
|
+
"day",
|
|
193
|
+
]);
|
|
194
|
+
/**
|
|
195
|
+
* True when the local `unit` bucket restarts at `transition` rather than continuing through it.
|
|
196
|
+
*
|
|
197
|
+
* - **The label changes discontinuously** — every unit. `Pacific/Chatham` jumps 02:45 → 03:45,
|
|
198
|
+
* so the 03:00 hour begins at the transition even though the clock does not read 03:00:00; a
|
|
199
|
+
* local day whose midnight is skipped begins at 01:00 the same way; and `America/Goose_Bay`'s
|
|
200
|
+
* 2010-11-07 fall-back re-enters 6 November, so that 59-minute stretch is its own day.
|
|
201
|
+
* - **The clock lands on a unit boundary** — hours and smaller only. New York goes back to
|
|
202
|
+
* 01:00:00 exactly, so a second, separate 01:00 hour begins there — which is why a fall-back
|
|
203
|
+
* day has 25 hour buckets. `Australia/Lord_Howe` goes back to 01:30, mid-hour, so the hour it
|
|
204
|
+
* is already in simply runs longer: 90 minutes.
|
|
205
|
+
* - **Day and larger never reopen on the same label.** `America/Havana` fell back 01:00 → 00:00
|
|
206
|
+
* on 2024-11-03: the clock lands on midnight, but the date is still 3 November, so that is one
|
|
207
|
+
* 25-hour day starting at the first 00:00 — matching Temporal's `startOfDay()` and `hoursInDay`.
|
|
208
|
+
*/
|
|
209
|
+
function startsNewBucketAt(transition, unit, weekStartsOn) {
|
|
210
|
+
const local = transition.toPlainDateTime();
|
|
211
|
+
if (!DATE_LABELLED_UNITS.has(unit) &&
|
|
212
|
+
truncateLocal(local, unit, weekStartsOn).equals(local)) {
|
|
213
|
+
return true;
|
|
214
|
+
}
|
|
215
|
+
try {
|
|
216
|
+
return (localUnitLabel(transition.subtract({ nanoseconds: 1 }), unit, weekStartsOn) !== localUnitLabel(transition, unit, weekStartsOn));
|
|
217
|
+
}
|
|
218
|
+
catch {
|
|
219
|
+
return true;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Return the instant the local `unit` containing `zoned` began — the bucket `zoned` falls in.
|
|
224
|
+
*
|
|
225
|
+
* A bucket is the run of instants sharing `zoned`'s local label *without interruption*, so
|
|
226
|
+
* this walks back from `zoned` to where that run started. Re-resolving a truncated wall clock
|
|
227
|
+
* cannot do the job, because truncation can land on a local time the zone never had and
|
|
228
|
+
* Temporal's "compatible" disambiguation then relocates it:
|
|
229
|
+
*
|
|
230
|
+
* - **A gap pushes the boundary past the instant being floored.** `Pacific/Chatham` springs
|
|
231
|
+
* forward 02:45 → 03:45, so local 03:00 never happens; truncating 03:45 to the hour and
|
|
232
|
+
* resolving it lands fifteen minutes *after* the instant it was asked to floor.
|
|
233
|
+
* `Antarctica/Casey`'s three-hour 2020 jump lands three hours after.
|
|
234
|
+
* - **A sub-hour fall-back answers with the wrong pass.** Chatham falls back 03:45 → 02:45,
|
|
235
|
+
* so local 02:00 and local 03:00 each name two instants an hour and three quarters apart,
|
|
236
|
+
* and "compatible" always picks the earlier — silently skipping a boundary.
|
|
237
|
+
*
|
|
238
|
+
* So the boundary is taken in `zoned`'s own offset, then extended back through any transition
|
|
239
|
+
* the bucket runs straight through. See `startsNewBucketAt` for which those are.
|
|
240
|
+
*
|
|
241
|
+
* - Handles every `DateTimeUnit` plus `quarter`. Sub-hour units need the same own-offset treatment, because
|
|
242
|
+
* historic offsets carry seconds (`Africa/Monrovia` ran at −00:44:30 until 1972).
|
|
243
|
+
* - Weeks start on `weekStartsOn` (ISO day number, Monday by default).
|
|
244
|
+
* - Keeps `zoned`'s calendar, so a non-ISO month or year floors in that calendar.
|
|
245
|
+
* - Returns null if the walk-back is still inside transitions after `MAX_TRANSITION_WALKBACK`
|
|
246
|
+
* of them, which no IANA zone comes close to. The last `start` reached at that point is
|
|
247
|
+
* only a partial answer, and a bounded walk that runs out answers with the sentinel.
|
|
248
|
+
*/
|
|
249
|
+
export function zonedUnitStart(zoned, unit, weekStartsOn = 1) {
|
|
250
|
+
let start = boundaryInOwnOffset(zoned, unit, weekStartsOn);
|
|
251
|
+
let cursor = zoned;
|
|
252
|
+
for (let i = 0; i < MAX_TRANSITION_WALKBACK; i++) {
|
|
253
|
+
const transition = transitionAtOrBefore(cursor);
|
|
254
|
+
// A transition exactly on `start` is still checked: Havana's second 00:00 is a unit-aligned
|
|
255
|
+
// own-offset start that the day runs straight through.
|
|
256
|
+
if (!transition || Temporal.ZonedDateTime.compare(transition, start) < 0) {
|
|
257
|
+
return start;
|
|
258
|
+
}
|
|
259
|
+
if (startsNewBucketAt(transition, unit, weekStartsOn))
|
|
260
|
+
return transition;
|
|
261
|
+
// The bucket runs through this transition, so it reaches into the older offset.
|
|
262
|
+
const justBefore = transition.subtract({ nanoseconds: 1 });
|
|
263
|
+
start = boundaryInOwnOffset(justBefore, unit, weekStartsOn);
|
|
264
|
+
cursor = justBefore;
|
|
265
|
+
}
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* The next `unit` boundary after `zoned`, reached without leaving its own offset stretch.
|
|
270
|
+
*/
|
|
271
|
+
function nextBoundaryInOwnOffset(zoned, unit, weekStartsOn) {
|
|
272
|
+
const local = zoned.toPlainDateTime();
|
|
273
|
+
// Step first, then truncate: the current unit's start may lie before the representable range,
|
|
274
|
+
// while the next unit's start does not. Both orders give the same boundary, because a one-unit
|
|
275
|
+
// step clamps within the next unit (Jan 31 + 1 month = Feb 29, whose month starts on Feb 1).
|
|
276
|
+
const remaining = wallClockUntil(local, truncateLocal(addOneUnit(local, unit), unit, weekStartsOn), "hour");
|
|
277
|
+
return inZoneOf(zoned.toInstant().add(remaining), zoned);
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* `nextBoundaryInOwnOffset`, or null when that boundary lies past Temporal's last representable
|
|
281
|
+
* instant — a transition before it may still open a representable bucket.
|
|
282
|
+
*/
|
|
283
|
+
function nextBoundaryWithinRange(zoned, unit, weekStartsOn) {
|
|
284
|
+
try {
|
|
285
|
+
return nextBoundaryInOwnOffset(zoned, unit, weekStartsOn);
|
|
286
|
+
}
|
|
287
|
+
catch (error) {
|
|
288
|
+
if (error instanceof RangeError)
|
|
289
|
+
return null;
|
|
290
|
+
throw error;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* `local.add(oneUnit(unit))`. For a calendar that needs the compat layer, a calendar period steps
|
|
295
|
+
* through `calendarDateAdd` (constrained, keeping the time of day) and every other unit in ISO.
|
|
296
|
+
*/
|
|
297
|
+
function addOneUnit(local, unit) {
|
|
298
|
+
if (!needsCalendarCompat(local)) {
|
|
299
|
+
return local.add(oneUnit(unit));
|
|
300
|
+
}
|
|
301
|
+
if (isCalendarPeriod(unit)) {
|
|
302
|
+
return calendarDateAdd(local.toPlainDate(), unit === "year" ? { years: 1 } : { months: unit === "quarter" ? 3 : 1 }, "constrain").toPlainDateTime(local.toPlainTime());
|
|
303
|
+
}
|
|
304
|
+
return local
|
|
305
|
+
.withCalendar("iso8601")
|
|
306
|
+
.add(oneUnit(unit))
|
|
307
|
+
.withCalendar(local.calendarId);
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Return the start of the bucket following the one containing `current` (which need not be that
|
|
311
|
+
* bucket's start).
|
|
312
|
+
*
|
|
313
|
+
* Stepping a whole unit and re-flooring is wrong, because a bucket can be shorter than its
|
|
314
|
+
* unit and would be stepped straight over: `Pacific/Chatham`'s 02:45 → 03:45 spring-forward
|
|
315
|
+
* leaves a local 03:00 hour only fifteen minutes long. So this takes whichever comes first —
|
|
316
|
+
* the next boundary in the current offset, or a transition that opens a bucket of its own —
|
|
317
|
+
* and runs through any transition that does not.
|
|
318
|
+
*
|
|
319
|
+
* - Handles every `DateTimeUnit` plus `quarter`, weeks starting on `weekStartsOn` (Monday by default).
|
|
320
|
+
* - Returns null if neither is reachable within `MAX_TRANSITION_WALKBACK` transitions, which
|
|
321
|
+
* no IANA zone comes close to.
|
|
322
|
+
* - Throws a RangeError when the next bucket starts after the last representable instant.
|
|
323
|
+
*/
|
|
324
|
+
export function nextZonedBucketStart(current, unit, weekStartsOn = 1) {
|
|
325
|
+
let cursor = current;
|
|
326
|
+
for (let i = 0; i < MAX_TRANSITION_WALKBACK; i++) {
|
|
327
|
+
const boundary = nextBoundaryWithinRange(cursor, unit, weekStartsOn);
|
|
328
|
+
const transition = zonedNextTransition(cursor);
|
|
329
|
+
if (!transition ||
|
|
330
|
+
(boundary !== null &&
|
|
331
|
+
Temporal.ZonedDateTime.compare(transition, boundary) > 0)) {
|
|
332
|
+
if (boundary === null) {
|
|
333
|
+
throw new RangeError("the next bucket starts after the last representable instant");
|
|
334
|
+
}
|
|
335
|
+
return boundary;
|
|
336
|
+
}
|
|
337
|
+
if (startsNewBucketAt(transition, unit, weekStartsOn)) {
|
|
338
|
+
return transition.withCalendar(current.calendarId);
|
|
339
|
+
}
|
|
340
|
+
// The bucket runs through this transition; measure the rest of it in the new offset.
|
|
341
|
+
cursor = transition.withCalendar(current.calendarId);
|
|
342
|
+
}
|
|
343
|
+
return null;
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Return the last instant of the local `unit` containing `zoned`: one nanosecond before the
|
|
347
|
+
* next bucket starts.
|
|
348
|
+
*
|
|
349
|
+
* - Never earlier than `zoned`, because it is measured from the real bucket `zoned` is in —
|
|
350
|
+
* New York's second 01:00 hour on a fall-back morning ends at 01:59:59.999999999 −05:00, not
|
|
351
|
+
* at the first pass's.
|
|
352
|
+
* - Walks forward from `zoned` itself, never from its bucket's start. No transition between that
|
|
353
|
+
* start and `zoned` opens a bucket, so both walks reach the same next start — but the start may
|
|
354
|
+
* lie before the first representable instant (the month holding `-271821-04-20T00:00:00Z` began
|
|
355
|
+
* on 1 April), while the end does not.
|
|
356
|
+
* - Returns null if the next bucket start cannot be found.
|
|
357
|
+
*/
|
|
358
|
+
export function zonedUnitEnd(zoned, unit, weekStartsOn = 1) {
|
|
359
|
+
const next = nextZonedBucketStart(zoned, unit, weekStartsOn);
|
|
360
|
+
return next ? next.subtract({ nanoseconds: 1 }) : null;
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Transitions walked while counting buckets across a span.
|
|
364
|
+
*
|
|
365
|
+
* Counting visits every zone transition inside the span, never every bucket, so an hour count
|
|
366
|
+
* across centuries stays cheap. 10,000 transitions is roughly 5,000 years of twice-yearly
|
|
367
|
+
* daylight saving — past anything counted in one call — and keeps the worst case near a
|
|
368
|
+
* second; a longer walk answers with the sentinel rather than running unbounded.
|
|
369
|
+
*/
|
|
370
|
+
const MAX_COUNTED_TRANSITIONS = 10_000;
|
|
371
|
+
/**
|
|
372
|
+
* `countZonedBuckets` when `start`'s bucket began before the first representable instant (the
|
|
373
|
+
* week, month or year holding `-271821-04-20T00:00:00Z`). `start` is then inside that bucket, not
|
|
374
|
+
* on its start, so the span touches it once, plus every bucket from the next start on.
|
|
375
|
+
*/
|
|
376
|
+
function countFromBucketBeforeRange(start, end, unit, weekStartsOn) {
|
|
377
|
+
const next = nextZonedBucketStart(start, unit, weekStartsOn);
|
|
378
|
+
if (!next)
|
|
379
|
+
return null;
|
|
380
|
+
if (Temporal.ZonedDateTime.compare(next, end) >= 0)
|
|
381
|
+
return 1;
|
|
382
|
+
const rest = countZonedBuckets(next, end, unit, weekStartsOn);
|
|
383
|
+
return rest === null ? null : rest + 1;
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Count the local `unit` buckets the half-open interval `[start, end)` touches, in `start`'s
|
|
387
|
+
* zone and calendar. `end` must already be expressed in both.
|
|
388
|
+
*
|
|
389
|
+
* The count is the bucket `start` is in, plus every bucket that starts after it and at or
|
|
390
|
+
* before `end` — less one when `end` sits exactly on a bucket start, since the interval does
|
|
391
|
+
* not reach into that bucket. A calendar-unit difference between truncated endpoints gets
|
|
392
|
+
* transitions wrong both ways: Chatham's 15-minute 03:00 hour is a bucket the difference
|
|
393
|
+
* never sees, and Samoa's deleted 2011-12-30 is a day the difference counts anyway.
|
|
394
|
+
*
|
|
395
|
+
* - Between transitions the wall clock runs continuously, so buckets there are counted by the
|
|
396
|
+
* whole-unit difference of their local labels.
|
|
397
|
+
* - A transition that does not open a bucket (see `startsNewBucketAt`) leaves the label
|
|
398
|
+
* running on, so it changes nothing and is stepped over.
|
|
399
|
+
* - A transition that does open one closes the run before it and counts the new bucket.
|
|
400
|
+
* - A `start` whose bucket began before the first representable instant still counts that
|
|
401
|
+
* bucket once.
|
|
402
|
+
* - Returns null if either endpoint's bucket cannot be found, or the span crosses more than
|
|
403
|
+
* `MAX_COUNTED_TRANSITIONS` transitions.
|
|
404
|
+
*/
|
|
405
|
+
export function countZonedBuckets(start, end, unit, weekStartsOn = 1) {
|
|
406
|
+
let startOfStart;
|
|
407
|
+
try {
|
|
408
|
+
startOfStart = zonedUnitStart(start, unit, weekStartsOn);
|
|
409
|
+
}
|
|
410
|
+
catch (error) {
|
|
411
|
+
if (!(error instanceof RangeError))
|
|
412
|
+
throw error;
|
|
413
|
+
return countFromBucketBeforeRange(start, end, unit, weekStartsOn);
|
|
414
|
+
}
|
|
415
|
+
const startOfEnd = zonedUnitStart(end, unit, weekStartsOn);
|
|
416
|
+
if (!startOfStart || !startOfEnd)
|
|
417
|
+
return null;
|
|
418
|
+
const label = (zoned) => truncateLocal(zoned.toPlainDateTime(), unit, weekStartsOn);
|
|
419
|
+
// Whole `unit`s between two wall clocks already truncated to `unit`.
|
|
420
|
+
const unitsBetween = (from, to) => getUnitSpan(truncatedWallClockUntil(from, to, unit), unit);
|
|
421
|
+
const reachesIntoEndBucket = Temporal.ZonedDateTime.compare(startOfEnd, end) === 0 ? 0 : 1;
|
|
422
|
+
let spanned = 0;
|
|
423
|
+
let runStart = startOfStart;
|
|
424
|
+
let cursor = startOfStart;
|
|
425
|
+
for (let i = 0; i < MAX_COUNTED_TRANSITIONS; i++) {
|
|
426
|
+
const transition = zonedNextTransition(cursor)?.withCalendar(start.calendarId) ?? null;
|
|
427
|
+
if (!transition ||
|
|
428
|
+
Temporal.ZonedDateTime.compare(transition, startOfEnd) > 0) {
|
|
429
|
+
return (spanned +
|
|
430
|
+
unitsBetween(label(runStart), label(startOfEnd)) +
|
|
431
|
+
reachesIntoEndBucket);
|
|
432
|
+
}
|
|
433
|
+
if (startsNewBucketAt(transition, unit, weekStartsOn)) {
|
|
434
|
+
spanned +=
|
|
435
|
+
unitsBetween(label(runStart), label(transition.subtract({ nanoseconds: 1 }))) + 1;
|
|
436
|
+
runStart = transition;
|
|
437
|
+
}
|
|
438
|
+
cursor = transition;
|
|
439
|
+
}
|
|
440
|
+
return null;
|
|
441
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether the `reference` option of the zoned formatters can be read: omitted (`undefined`), a
|
|
3
|
+
* zoned or UTC ISO string, or a finite epoch in milliseconds. Any other type — a boolean (which
|
|
4
|
+
* ToNumber would read as epoch 1 or 0), `null`, an object or a bigint — is invalid input.
|
|
5
|
+
*
|
|
6
|
+
* @param reference the option as given
|
|
7
|
+
* @returns false for a string of neither form, a non-finite number, or a value of another type
|
|
8
|
+
* @example isValidZonedFormatReference("2024-03-15T09:00:00-04:00[America/New_York]") // true
|
|
9
|
+
* @example isValidZonedFormatReference("2024-03-15T13:00:00Z") // true
|
|
10
|
+
* @example isValidZonedFormatReference(undefined) // true
|
|
11
|
+
* @example isValidZonedFormatReference(Number.NaN) // false
|
|
12
|
+
* @example isValidZonedFormatReference("2024-03-15") // false
|
|
13
|
+
* @example isValidZonedFormatReference(true) // false
|
|
14
|
+
*/
|
|
15
|
+
export declare function isValidZonedFormatReference(reference: unknown): boolean;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { isValidUtc } from "../utc/validate/isValidUtc.js";
|
|
2
|
+
import { isValidZonedDateTime } from "../zoned/validate/isValidZonedDateTime.js";
|
|
3
|
+
/**
|
|
4
|
+
* Whether the `reference` option of the zoned formatters can be read: omitted (`undefined`), a
|
|
5
|
+
* zoned or UTC ISO string, or a finite epoch in milliseconds. Any other type — a boolean (which
|
|
6
|
+
* ToNumber would read as epoch 1 or 0), `null`, an object or a bigint — is invalid input.
|
|
7
|
+
*
|
|
8
|
+
* @param reference the option as given
|
|
9
|
+
* @returns false for a string of neither form, a non-finite number, or a value of another type
|
|
10
|
+
* @example isValidZonedFormatReference("2024-03-15T09:00:00-04:00[America/New_York]") // true
|
|
11
|
+
* @example isValidZonedFormatReference("2024-03-15T13:00:00Z") // true
|
|
12
|
+
* @example isValidZonedFormatReference(undefined) // true
|
|
13
|
+
* @example isValidZonedFormatReference(Number.NaN) // false
|
|
14
|
+
* @example isValidZonedFormatReference("2024-03-15") // false
|
|
15
|
+
* @example isValidZonedFormatReference(true) // false
|
|
16
|
+
*/
|
|
17
|
+
export function isValidZonedFormatReference(reference) {
|
|
18
|
+
if (reference === undefined)
|
|
19
|
+
return true;
|
|
20
|
+
if (typeof reference === "string") {
|
|
21
|
+
return isValidZonedDateTime(reference) || isValidUtc(reference);
|
|
22
|
+
}
|
|
23
|
+
return typeof reference === "number" && Number.isFinite(reference);
|
|
24
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
/**
|
|
3
|
+
* Count the distinct local (ISO) dates of the instants in the closed span `[start, end]`, in
|
|
4
|
+
* `start`'s time zone. `end` must already be expressed in that zone and not precede `start`.
|
|
5
|
+
*
|
|
6
|
+
* Between two zone transitions the wall clock runs continuously, so every date from a run's
|
|
7
|
+
* first to its last instant is touched. A transition can jump the clock past a whole date
|
|
8
|
+
* (`Pacific/Apia` deleted 2011-12-30), which no instant then has, or back into the previous
|
|
9
|
+
* date (`America/Goose_Bay` at 00:01 on 2010-11-07), which is touched again but counted once.
|
|
10
|
+
*
|
|
11
|
+
* @param start the span start
|
|
12
|
+
* @param end the span end, in `start`'s zone
|
|
13
|
+
* @returns the number of distinct local dates, or null past `MAX_WALKED_TRANSITIONS` transitions
|
|
14
|
+
*/
|
|
15
|
+
export declare function countZonedLocalDates(start: Temporal.ZonedDateTime, end: Temporal.ZonedDateTime): number | null;
|