@northguild/gmt 1.16.0 → 1.18.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 +742 -21
- package/dist/calendar/calculate/bucketRange.d.ts +3 -3
- package/dist/calendar/calculate/bucketRange.js +6 -6
- package/dist/calendar/calculate/floorToZone.d.ts +5 -3
- package/dist/calendar/calculate/floorToZone.js +6 -5
- package/dist/calendar/calculate/getFiscalPeriod.d.ts +21 -8
- package/dist/calendar/calculate/getFiscalPeriod.js +9 -8
- package/dist/calendar/calculate/getIsoWeekDate.d.ts +10 -5
- package/dist/calendar/calculate/getIsoWeekDate.js +1 -5
- package/dist/calendar/calculate/getOrdinalDate.d.ts +10 -3
- package/dist/calendar/calculate/getOrdinalDate.js +2 -3
- package/dist/calendar/calculate/getQuarter.d.ts +21 -9
- package/dist/calendar/calculate/getQuarter.js +8 -12
- package/dist/calendar/hours/addOperatingTime.d.ts +53 -0
- package/dist/calendar/hours/addOperatingTime.js +59 -0
- package/dist/calendar/hours/index.d.ts +7 -0
- package/dist/calendar/hours/index.js +7 -0
- package/dist/calendar/hours/isOpenAt.d.ts +39 -0
- package/dist/calendar/hours/isOpenAt.js +44 -0
- package/dist/calendar/hours/nextCloseAt.d.ts +49 -0
- package/dist/calendar/hours/nextCloseAt.js +51 -0
- package/dist/calendar/hours/nextOpenAt.d.ts +45 -0
- package/dist/calendar/hours/nextOpenAt.js +47 -0
- package/dist/calendar/hours/operatingIntervals.d.ts +43 -0
- package/dist/calendar/hours/operatingIntervals.js +52 -0
- package/dist/calendar/hours/operatingTimeBetween.d.ts +40 -0
- package/dist/calendar/hours/operatingTimeBetween.js +49 -0
- package/dist/calendar/hours/recurringWindows.d.ts +61 -0
- package/dist/calendar/hours/recurringWindows.js +80 -0
- package/dist/calendar/index.d.ts +1 -0
- package/dist/calendar/index.js +1 -0
- package/dist/duration/calculate/durationAs.d.ts +13 -8
- package/dist/duration/calculate/durationAs.js +4 -8
- package/dist/duration/compare/compareDurations.d.ts +12 -6
- package/dist/duration/compare/compareDurations.js +3 -6
- package/dist/duration/format/formatDuration.d.ts +16 -4
- package/dist/duration/format/formatDuration.js +4 -5
- package/dist/duration/normalize/normalizeDuration.d.ts +39 -14
- package/dist/duration/normalize/normalizeDuration.js +6 -15
- package/dist/duration/parse/parseDuration.d.ts +21 -3
- package/dist/duration/parse/parseDuration.js +1 -3
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/instant/convert/classifyLocal.d.ts +1 -1
- package/dist/instant/convert/classifyLocal.js +1 -1
- package/dist/instant/convert/fromOffsetInstant.d.ts +3 -1
- package/dist/instant/convert/fromOffsetInstant.js +6 -12
- package/dist/instant/convert/resolveLocal.d.ts +12 -7
- package/dist/instant/convert/resolveLocal.js +6 -10
- package/dist/instant/convert/toOffsetInstant.d.ts +37 -1
- package/dist/instant/convert/toOffsetInstant.js +12 -28
- package/dist/intermodal/calculate/billingTimeline.d.ts +114 -0
- package/dist/intermodal/calculate/billingTimeline.js +168 -0
- package/dist/intermodal/calculate/chargeableDays.d.ts +100 -0
- package/dist/intermodal/calculate/chargeableDays.js +96 -0
- package/dist/intermodal/calculate/demurrageClock.d.ts +102 -0
- package/dist/intermodal/calculate/demurrageClock.js +140 -0
- package/dist/intermodal/calculate/freeTimeExpiry.d.ts +67 -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/businessCalendar.d.ts +5 -0
- package/dist/internal/businessCalendar.js +5 -1
- package/dist/internal/cycleFieldValue.d.ts +6 -4
- package/dist/internal/cycleFieldValue.js +6 -4
- package/dist/internal/daylightTime.d.ts +33 -0
- package/dist/internal/daylightTime.js +164 -0
- package/dist/internal/durationUntilString.js +4 -3
- package/dist/internal/englishCalendarNames.js +1 -2
- package/dist/internal/epochNanoseconds.d.ts +2 -0
- package/dist/internal/epochNanoseconds.js +2 -0
- package/dist/internal/exactDuration.d.ts +37 -0
- package/dist/internal/exactDuration.js +64 -0
- package/dist/internal/exactMoment.d.ts +72 -0
- package/dist/internal/exactMoment.js +114 -0
- package/dist/internal/fiscalCalendar.d.ts +4 -3
- package/dist/internal/fiscalCalendar.js +4 -3
- package/dist/internal/formatCalendarDays.d.ts +2 -2
- package/dist/internal/formatRelativeDuration.d.ts +21 -1
- package/dist/internal/formatRelativeDuration.js +47 -7
- package/dist/internal/freeTimeLedger.d.ts +93 -0
- package/dist/internal/freeTimeLedger.js +262 -0
- package/dist/internal/index.d.ts +10 -3
- package/dist/internal/index.js +10 -3
- package/dist/internal/instantFormatOptions.js +2 -1
- package/dist/internal/instantNanoseconds.d.ts +75 -9
- package/dist/internal/instantNanoseconds.js +192 -11
- package/dist/internal/isoStringBody.d.ts +26 -0
- package/dist/internal/isoStringBody.js +22 -2
- package/dist/internal/joinDateTimeConnector.d.ts +1 -1
- package/dist/internal/monthGridWeekRow.d.ts +2 -1
- package/dist/internal/monthGridWeekRow.js +2 -1
- package/dist/internal/normalizeTimeZone.d.ts +2 -2
- package/dist/internal/normalizeTimeZone.js +2 -2
- package/dist/internal/operatingSchedule.d.ts +129 -0
- package/dist/internal/operatingSchedule.js +668 -0
- package/dist/internal/optionOrDefault.d.ts +18 -0
- package/dist/internal/optionOrDefault.js +20 -0
- package/dist/internal/patternToken.d.ts +2 -2
- package/dist/internal/patternToken.js +28 -13
- package/dist/internal/plainDateUntil.js +10 -6
- package/dist/internal/punctuality.d.ts +38 -0
- package/dist/internal/punctuality.js +59 -0
- package/dist/internal/readDateTimeFormatOptions.d.ts +30 -0
- package/dist/internal/readDateTimeFormatOptions.js +93 -0
- package/dist/internal/resolveDurationRelativeTo.d.ts +4 -0
- package/dist/internal/resolveDurationRelativeTo.js +11 -1
- package/dist/internal/resolveRelativeRounding.d.ts +17 -6
- package/dist/internal/resolveRelativeRounding.js +27 -7
- package/dist/internal/resolveRelativeUnit.d.ts +30 -0
- package/dist/internal/resolveRelativeUnit.js +40 -0
- package/dist/internal/splitStep.d.ts +24 -1
- package/dist/internal/splitStep.js +34 -2
- package/dist/internal/startOrEndOfZoned.js +2 -3
- package/dist/internal/temporalCompat/capabilities.d.ts +26 -0
- package/dist/internal/temporalCompat/capabilities.js +35 -3
- package/dist/internal/temporalCompat/fieldSearch.js +1 -1
- package/dist/internal/temporalCompat/index.d.ts +1 -1
- package/dist/internal/temporalCompat/index.js +1 -1
- package/dist/internal/temporalCompat/repros.d.ts +1 -1
- package/dist/internal/temporalCompat/repros.js +157 -0
- package/dist/internal/timestampEvents.d.ts +32 -0
- package/dist/internal/timestampEvents.js +76 -0
- package/dist/internal/utcZonedDateTime.d.ts +5 -2
- package/dist/internal/utcZonedDateTime.js +8 -5
- package/dist/internal/wallClockAtOffset.d.ts +22 -0
- package/dist/internal/wallClockAtOffset.js +26 -0
- package/dist/internal/zonedBucket.js +8 -6
- package/dist/internal/zonedLocalDates.js +1 -1
- package/dist/internal/zonedTransitionSearch.d.ts +27 -0
- package/dist/internal/zonedTransitionSearch.js +218 -0
- package/dist/internal/zonedWallClock.d.ts +21 -7
- package/dist/internal/zonedWallClock.js +87 -18
- package/dist/internal/zonedWallClockDifference.js +5 -4
- package/dist/internal/zonedWallClockOperations.d.ts +26 -13
- package/dist/internal/zonedWallClockOperations.js +87 -34
- package/dist/interval/validate/isValidInterval.d.ts +6 -3
- package/dist/interval/validate/isValidInterval.js +6 -3
- package/dist/plain/calculate/addDate.d.ts +11 -8
- package/dist/plain/calculate/addDate.js +5 -8
- package/dist/plain/calculate/addDateTime.d.ts +7 -4
- package/dist/plain/calculate/addDateTime.js +1 -4
- package/dist/plain/calculate/cycleDate.d.ts +16 -7
- package/dist/plain/calculate/cycleDate.js +3 -7
- package/dist/plain/calculate/cycleDateTime.d.ts +14 -4
- package/dist/plain/calculate/cycleDateTime.js +1 -4
- package/dist/plain/calculate/cycleTime.d.ts +10 -5
- package/dist/plain/calculate/cycleTime.js +3 -5
- package/dist/plain/calculate/diffDate.d.ts +1 -1
- package/dist/plain/calculate/diffDate.js +1 -1
- package/dist/plain/calculate/diffDateAsDuration.d.ts +1 -1
- package/dist/plain/calculate/diffDateAsDuration.js +1 -1
- package/dist/plain/calculate/diffDateTime.d.ts +1 -1
- package/dist/plain/calculate/diffDateTime.js +1 -1
- package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +1 -1
- package/dist/plain/calculate/diffDateTimeAsDuration.js +1 -1
- package/dist/plain/calculate/diffTime.d.ts +1 -1
- package/dist/plain/calculate/diffTime.js +1 -1
- package/dist/plain/calculate/endOfDate.d.ts +8 -3
- package/dist/plain/calculate/endOfDate.js +1 -3
- package/dist/plain/calculate/endOfDateTime.d.ts +15 -5
- package/dist/plain/calculate/endOfDateTime.js +1 -5
- package/dist/plain/calculate/endOfTime.d.ts +8 -2
- package/dist/plain/calculate/endOfTime.js +1 -2
- package/dist/plain/calculate/getLocaleWeekYear.d.ts +16 -9
- package/dist/plain/calculate/getLocaleWeekYear.js +9 -9
- package/dist/plain/calculate/getWeekOfMonth.d.ts +7 -4
- package/dist/plain/calculate/getWeekOfMonth.js +7 -4
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +13 -6
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +6 -6
- package/dist/plain/calculate/getWeeksInMonth.d.ts +5 -2
- package/dist/plain/calculate/getWeeksInMonth.js +5 -2
- package/dist/plain/calculate/nextWeekday.d.ts +7 -3
- package/dist/plain/calculate/nextWeekday.js +1 -3
- package/dist/plain/calculate/previousWeekday.d.ts +7 -3
- package/dist/plain/calculate/previousWeekday.js +1 -3
- package/dist/plain/calculate/roundDate.d.ts +20 -7
- package/dist/plain/calculate/roundDate.js +3 -10
- package/dist/plain/calculate/roundDateTime.d.ts +22 -8
- package/dist/plain/calculate/roundDateTime.js +3 -11
- package/dist/plain/calculate/roundTime.d.ts +20 -4
- package/dist/plain/calculate/roundTime.js +3 -7
- package/dist/plain/calculate/setDate.d.ts +7 -5
- package/dist/plain/calculate/setDate.js +1 -5
- package/dist/plain/calculate/setDateTime.d.ts +8 -5
- package/dist/plain/calculate/setDateTime.js +1 -5
- package/dist/plain/calculate/setTime.d.ts +10 -6
- package/dist/plain/calculate/setTime.js +4 -6
- package/dist/plain/calculate/startOfDate.d.ts +8 -2
- package/dist/plain/calculate/startOfDate.js +1 -2
- package/dist/plain/calculate/startOfDateTime.d.ts +15 -2
- package/dist/plain/calculate/startOfDateTime.js +1 -2
- package/dist/plain/calculate/startOfTime.d.ts +8 -1
- package/dist/plain/calculate/startOfTime.js +1 -1
- package/dist/plain/calculate/subtractDate.d.ts +7 -4
- package/dist/plain/calculate/subtractDate.js +1 -4
- package/dist/plain/calculate/subtractDateTime.d.ts +7 -4
- package/dist/plain/calculate/subtractDateTime.js +1 -4
- package/dist/plain/compare/areDateTimesEqualBy.d.ts +13 -5
- package/dist/plain/compare/areDateTimesEqualBy.js +6 -5
- package/dist/plain/compare/areDatesEqualBy.d.ts +15 -6
- package/dist/plain/compare/areDatesEqualBy.js +8 -6
- package/dist/plain/compare/isBetweenDate.d.ts +13 -2
- package/dist/plain/compare/isBetweenDate.js +4 -4
- package/dist/plain/compare/isBetweenDateTime.d.ts +13 -2
- package/dist/plain/compare/isBetweenDateTime.js +4 -4
- package/dist/plain/compare/isBetweenTime.d.ts +13 -2
- package/dist/plain/compare/isBetweenTime.js +4 -4
- package/dist/plain/compare/isRelativeDay.d.ts +1 -1
- package/dist/plain/compare/isRelativeDay.js +1 -1
- package/dist/plain/compare/isThisUnit.d.ts +1 -1
- package/dist/plain/compare/isThisUnit.js +1 -1
- package/dist/plain/format/formatCalendar.d.ts +21 -14
- package/dist/plain/format/formatCalendar.js +21 -16
- package/dist/plain/format/formatDate.js +5 -3
- package/dist/plain/format/formatDateRange.js +4 -2
- package/dist/plain/format/formatDateTime.js +4 -2
- package/dist/plain/format/formatDateTimeRange.js +4 -2
- package/dist/plain/format/formatDateTimeToParts.d.ts +15 -4
- package/dist/plain/format/formatDateTimeToParts.js +10 -6
- package/dist/plain/format/formatDateToParts.d.ts +13 -2
- package/dist/plain/format/formatDateToParts.js +8 -4
- package/dist/plain/format/formatRelativeDate.d.ts +16 -3
- package/dist/plain/format/formatRelativeDate.js +26 -15
- package/dist/plain/format/formatRelativeDateTime.d.ts +16 -3
- package/dist/plain/format/formatRelativeDateTime.js +8 -5
- package/dist/plain/format/formatRelativeTime.d.ts +16 -3
- package/dist/plain/format/formatRelativeTime.js +21 -13
- package/dist/plain/format/formatTime.js +4 -2
- package/dist/plain/interval/intervalDifferenceDate.d.ts +9 -0
- package/dist/plain/interval/intervalDifferenceDateTime.d.ts +9 -0
- package/dist/plain/interval/intervalDifferenceTime.d.ts +9 -0
- package/dist/plain/interval/intervalDivideEquallyDate.d.ts +19 -4
- package/dist/plain/interval/intervalDivideEquallyDate.js +3 -4
- package/dist/plain/interval/intervalDivideEquallyDateTime.d.ts +19 -4
- package/dist/plain/interval/intervalDivideEquallyDateTime.js +3 -4
- package/dist/plain/interval/intervalDivideEquallyTime.d.ts +19 -4
- package/dist/plain/interval/intervalDivideEquallyTime.js +3 -4
- package/dist/plain/interval/intervalFromDurationDate.d.ts +16 -3
- package/dist/plain/interval/intervalFromDurationDate.js +1 -3
- package/dist/plain/interval/intervalFromDurationDateTime.d.ts +16 -3
- package/dist/plain/interval/intervalFromDurationDateTime.js +1 -3
- package/dist/plain/interval/intervalFromDurationTime.d.ts +9 -0
- package/dist/plain/interval/intervalIntersectionDate.d.ts +9 -0
- package/dist/plain/interval/intervalIntersectionDateTime.d.ts +9 -0
- package/dist/plain/interval/intervalIntersectionTime.d.ts +9 -0
- package/dist/plain/interval/intervalSplitAtDate.d.ts +11 -0
- package/dist/plain/interval/intervalSplitAtDate.js +2 -0
- package/dist/plain/interval/intervalSplitAtDateTime.d.ts +11 -0
- package/dist/plain/interval/intervalSplitAtDateTime.js +2 -0
- package/dist/plain/interval/intervalSplitAtTime.d.ts +11 -0
- package/dist/plain/interval/intervalSplitAtTime.js +2 -0
- package/dist/plain/interval/intervalUnionDate.d.ts +9 -0
- package/dist/plain/interval/intervalUnionDateTime.d.ts +9 -0
- package/dist/plain/interval/intervalUnionTime.d.ts +9 -0
- package/dist/plain/interval/intervalXorAllDate.d.ts +9 -0
- package/dist/plain/interval/intervalXorAllDateTime.d.ts +9 -0
- package/dist/plain/interval/intervalXorAllTime.d.ts +9 -0
- package/dist/plain/interval/intervalXorDate.d.ts +9 -0
- package/dist/plain/interval/intervalXorDateTime.d.ts +9 -0
- package/dist/plain/interval/intervalXorTime.d.ts +9 -0
- package/dist/plain/interval/mergeIntervalsDate.d.ts +9 -0
- package/dist/plain/interval/mergeIntervalsDateTime.d.ts +9 -0
- package/dist/plain/interval/mergeIntervalsTime.d.ts +9 -0
- package/dist/plain/interval/splitIntervalByUnitDate.d.ts +23 -7
- package/dist/plain/interval/splitIntervalByUnitDate.js +7 -7
- package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +22 -6
- package/dist/plain/interval/splitIntervalByUnitDateTime.js +6 -6
- package/dist/plain/interval/splitIntervalByUnitTime.d.ts +17 -4
- package/dist/plain/interval/splitIntervalByUnitTime.js +1 -4
- package/dist/plain/map/mapDatesInRange.d.ts +8 -4
- package/dist/plain/map/mapDatesInRange.js +1 -4
- package/dist/plain/parse/parseDateTimeWithPattern.d.ts +10 -7
- package/dist/plain/parse/parseDateTimeWithPattern.js +10 -7
- package/dist/plain/parse/parseDateWithPattern.d.ts +10 -7
- package/dist/plain/parse/parseDateWithPattern.js +10 -7
- package/dist/plain/parse/parseTimeWithPattern.d.ts +10 -7
- package/dist/plain/parse/parseTimeWithPattern.js +10 -7
- package/dist/plain/parse/parseUnitFromDate.d.ts +11 -3
- package/dist/plain/parse/parseUnitFromDate.js +3 -3
- package/dist/plain/parse/parseUnitFromDateTime.d.ts +11 -3
- package/dist/plain/parse/parseUnitFromDateTime.js +3 -3
- package/dist/plain/parse/parseWeekFromDate.d.ts +10 -6
- package/dist/plain/parse/parseWeekFromDate.js +2 -6
- package/dist/plain/parse/parseWeekFromDateTime.d.ts +10 -6
- package/dist/plain/parse/parseWeekFromDateTime.js +2 -6
- package/dist/plain/validate/isValidDateRange.d.ts +19 -4
- package/dist/plain/validate/isValidDateRange.js +1 -4
- package/dist/plain/validate/isValidDateTimeRange.d.ts +20 -5
- package/dist/plain/validate/isValidDateTimeRange.js +2 -5
- package/dist/plain/validate/isValidTimeRange.d.ts +20 -5
- package/dist/plain/validate/isValidTimeRange.js +2 -5
- package/dist/precision/convert/fromExcelSerial.d.ts +10 -4
- package/dist/precision/convert/fromExcelSerial.js +4 -5
- package/dist/precision/convert/fromNanoseconds.d.ts +1 -1
- package/dist/precision/convert/fromNanoseconds.js +1 -1
- package/dist/precision/convert/toExcelSerial.d.ts +9 -3
- package/dist/precision/convert/toExcelSerial.js +3 -4
- package/dist/precision/convert/toNanoseconds.d.ts +11 -6
- package/dist/precision/convert/toNanoseconds.js +11 -6
- package/dist/precision/validate/isValidInstant.d.ts +12 -3
- package/dist/precision/validate/isValidInstant.js +12 -3
- package/dist/span/calculate/spanMs.d.ts +10 -4
- package/dist/span/calculate/spanMs.js +10 -4
- package/dist/span/calculate/spanNs.d.ts +10 -4
- package/dist/span/calculate/spanNs.js +10 -4
- package/dist/span/validate/isValidSpan.d.ts +8 -3
- package/dist/span/validate/isValidSpan.js +8 -3
- package/dist/transport/calculate/bestAvailable.d.ts +47 -0
- package/dist/transport/calculate/bestAvailable.js +76 -0
- package/dist/transport/calculate/crossingTime.d.ts +58 -0
- package/dist/transport/calculate/crossingTime.js +76 -0
- package/dist/transport/calculate/cutoffAt.d.ts +90 -0
- package/dist/transport/calculate/cutoffAt.js +209 -0
- package/dist/transport/calculate/cutoffSchedule.d.ts +70 -0
- package/dist/transport/calculate/cutoffSchedule.js +71 -0
- package/dist/transport/calculate/dwellTime.d.ts +81 -0
- package/dist/transport/calculate/dwellTime.js +130 -0
- package/dist/transport/calculate/estimateDrift.d.ts +65 -0
- package/dist/transport/calculate/estimateDrift.js +75 -0
- package/dist/transport/calculate/index.d.ts +10 -0
- package/dist/transport/calculate/index.js +10 -0
- package/dist/transport/calculate/nextDeparture.d.ts +78 -0
- package/dist/transport/calculate/nextDeparture.js +131 -0
- package/dist/transport/calculate/punctualityRate.d.ts +42 -0
- package/dist/transport/calculate/punctualityRate.js +59 -0
- package/dist/transport/calculate/scheduleDelivery.d.ts +150 -0
- package/dist/transport/calculate/scheduleDelivery.js +300 -0
- package/dist/transport/calculate/transitTime.d.ts +71 -0
- package/dist/transport/calculate/transitTime.js +101 -0
- package/dist/transport/compare/classifyPunctuality.d.ts +46 -0
- package/dist/transport/compare/classifyPunctuality.js +64 -0
- package/dist/transport/compare/index.d.ts +4 -0
- package/dist/transport/compare/index.js +4 -0
- package/dist/transport/compare/isPastCutoff.d.ts +33 -0
- package/dist/transport/compare/isPastCutoff.js +48 -0
- package/dist/transport/compare/scheduleDeviation.d.ts +37 -0
- package/dist/transport/compare/scheduleDeviation.js +53 -0
- package/dist/transport/compare/timeToCutoff.d.ts +31 -0
- package/dist/transport/compare/timeToCutoff.js +47 -0
- package/dist/transport/convert/etaAtZone.d.ts +43 -0
- package/dist/transport/convert/etaAtZone.js +58 -0
- package/dist/transport/convert/index.d.ts +1 -0
- package/dist/transport/convert/index.js +1 -0
- package/dist/transport/index.d.ts +4 -0
- package/dist/transport/index.js +5 -0
- package/dist/types/business-calendar.d.ts +19 -14
- package/dist/types/calendar-options.d.ts +15 -3
- package/dist/types/date-cycle-field.d.ts +5 -0
- package/dist/types/date-duration-unit.d.ts +4 -0
- package/dist/types/date-time-cycle-field.d.ts +4 -0
- package/dist/types/date-time-duration-units.d.ts +4 -0
- package/dist/types/date-time-unit.d.ts +4 -0
- package/dist/types/date-unit.d.ts +4 -0
- package/dist/types/disambiguation.d.ts +8 -0
- package/dist/types/duration-relative-to.d.ts +8 -0
- package/dist/types/duration-string-options.d.ts +28 -0
- package/dist/types/fiscal-calendar.d.ts +1 -1
- package/dist/types/fractional-digit.d.ts +5 -0
- package/dist/types/free-time-options.d.ts +44 -0
- package/dist/types/index.d.ts +3 -1
- package/dist/types/index.js +3 -1
- package/dist/types/interval.d.ts +8 -1
- package/dist/types/offset.d.ts +9 -0
- package/dist/types/operating-schedule.d.ts +71 -0
- package/dist/types/operating-schedule.js +0 -0
- package/dist/types/overflow.d.ts +6 -0
- package/dist/types/relative-rounding-method.d.ts +6 -0
- package/dist/types/relative-time-options.d.ts +33 -5
- package/dist/types/rounding-options.d.ts +27 -0
- package/dist/types/time-cycle-field.d.ts +4 -0
- package/dist/types/time-duration-unit.d.ts +4 -0
- package/dist/types/time-unit.d.ts +4 -0
- package/dist/types/transport-timestamps.d.ts +54 -0
- package/dist/types/transport-timestamps.js +0 -0
- package/dist/unix/calculate/addUnix.d.ts +19 -5
- package/dist/unix/calculate/addUnix.js +1 -5
- package/dist/unix/calculate/diffUnix.d.ts +13 -3
- package/dist/unix/calculate/diffUnix.js +1 -3
- package/dist/unix/calculate/diffUnixAsDuration.d.ts +13 -3
- package/dist/unix/calculate/diffUnixAsDuration.js +1 -3
- package/dist/unix/calculate/endOfQuarterForUnix.d.ts +13 -3
- package/dist/unix/calculate/endOfQuarterForUnix.js +1 -3
- package/dist/unix/calculate/endOfUnix.d.ts +20 -4
- package/dist/unix/calculate/endOfUnix.js +1 -4
- package/dist/unix/calculate/isBetweenUnix.d.ts +26 -4
- package/dist/unix/calculate/isBetweenUnix.js +4 -6
- package/dist/unix/calculate/roundUnix.d.ts +31 -3
- package/dist/unix/calculate/roundUnix.js +3 -6
- package/dist/unix/calculate/setUnix.d.ts +35 -9
- package/dist/unix/calculate/setUnix.js +4 -13
- package/dist/unix/calculate/startOfQuarterForUnix.d.ts +13 -3
- package/dist/unix/calculate/startOfQuarterForUnix.js +1 -3
- package/dist/unix/calculate/startOfUnix.d.ts +20 -4
- package/dist/unix/calculate/startOfUnix.js +1 -4
- package/dist/unix/calculate/subtractUnix.d.ts +19 -5
- package/dist/unix/calculate/subtractUnix.js +1 -5
- package/dist/unix/compare/areUnixEqual.d.ts +7 -1
- package/dist/unix/compare/areUnixEqual.js +1 -1
- package/dist/unix/compare/areUnixEqualBy.d.ts +24 -7
- package/dist/unix/compare/areUnixEqualBy.js +13 -9
- package/dist/unix/compare/isAfterUnix.d.ts +7 -1
- package/dist/unix/compare/isAfterUnix.js +1 -1
- package/dist/unix/compare/isBeforeUnix.d.ts +7 -1
- package/dist/unix/compare/isBeforeUnix.js +1 -1
- package/dist/unix/convert/convertUnixToPlainDate.d.ts +14 -4
- package/dist/unix/convert/convertUnixToPlainDate.js +2 -4
- package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +14 -4
- package/dist/unix/convert/convertUnixToPlainDateTime.js +2 -4
- package/dist/unix/convert/convertUnixToPlainTime.d.ts +14 -4
- package/dist/unix/convert/convertUnixToPlainTime.js +2 -4
- package/dist/unix/convert/convertUnixToUtc.d.ts +9 -4
- package/dist/unix/convert/convertUnixToUtc.js +3 -4
- package/dist/unix/convert/convertUnixToZoned.d.ts +10 -5
- package/dist/unix/convert/convertUnixToZoned.js +4 -5
- package/dist/unix/format/formatCalendarUnix.d.ts +27 -19
- package/dist/unix/format/formatCalendarUnix.js +4 -5
- package/dist/unix/format/formatRelativeUnix.d.ts +54 -5
- package/dist/unix/format/formatRelativeUnix.js +3 -5
- package/dist/unix/format/formatUnix.d.ts +24 -6
- package/dist/unix/format/formatUnix.js +8 -7
- package/dist/unix/get/getUnixNow.d.ts +8 -3
- package/dist/unix/get/getUnixNow.js +1 -3
- package/dist/unix/interval/intervalCountUnix.d.ts +14 -5
- package/dist/unix/interval/intervalCountUnix.js +2 -5
- package/dist/unix/interval/intervalDifferenceUnix.d.ts +6 -0
- package/dist/unix/interval/intervalDivideEquallyUnix.d.ts +18 -4
- package/dist/unix/interval/intervalDivideEquallyUnix.js +5 -4
- package/dist/unix/interval/intervalFromDurationUnix.d.ts +33 -5
- package/dist/unix/interval/intervalFromDurationUnix.js +6 -5
- package/dist/unix/interval/intervalIntersectionUnix.d.ts +6 -0
- package/dist/unix/interval/intervalLengthUnix.d.ts +16 -6
- package/dist/unix/interval/intervalLengthUnix.js +4 -6
- package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +13 -3
- package/dist/unix/interval/intervalOverlappingDaysUnix.js +1 -3
- package/dist/unix/interval/intervalSplitAtUnix.d.ts +8 -0
- package/dist/unix/interval/intervalSplitAtUnix.js +2 -0
- package/dist/unix/interval/intervalUnionUnix.d.ts +6 -0
- package/dist/unix/interval/intervalXorAllUnix.d.ts +6 -0
- package/dist/unix/interval/intervalXorUnix.d.ts +6 -0
- package/dist/unix/interval/mergeIntervalsUnix.d.ts +6 -0
- package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +42 -11
- package/dist/unix/interval/splitIntervalByUnitUnix.js +21 -16
- package/dist/unix/parse/parseDateFromUnix.d.ts +13 -2
- package/dist/unix/parse/parseDateFromUnix.js +1 -2
- package/dist/unix/parse/parseDayFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseDayFromUnix.js +2 -2
- package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +13 -1
- package/dist/unix/parse/parseDayOfWeekFromUnix.js +1 -1
- package/dist/unix/parse/parseHourFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseHourFromUnix.js +2 -2
- package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseMicrosecondFromUnix.js +2 -2
- package/dist/unix/parse/parseMillisecondFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseMillisecondFromUnix.js +2 -2
- package/dist/unix/parse/parseMinuteFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseMinuteFromUnix.js +2 -2
- package/dist/unix/parse/parseMonthFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseMonthFromUnix.js +2 -2
- package/dist/unix/parse/parseNanosecondFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseNanosecondFromUnix.js +2 -2
- package/dist/unix/parse/parseSecondFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseSecondFromUnix.js +2 -2
- package/dist/unix/parse/parseTimeFromUnix.d.ts +13 -2
- package/dist/unix/parse/parseTimeFromUnix.js +1 -2
- package/dist/unix/parse/parseUnitFromUnix.d.ts +22 -3
- package/dist/unix/parse/parseUnitFromUnix.js +2 -3
- package/dist/unix/parse/parseWeekFromUnix.d.ts +23 -7
- package/dist/unix/parse/parseWeekFromUnix.js +3 -7
- package/dist/unix/parse/parseYearFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseYearFromUnix.js +2 -2
- package/dist/unix/validate/isValidUnixRange.d.ts +20 -4
- package/dist/unix/validate/isValidUnixRange.js +1 -4
- package/dist/utc/calculate/addUtc.d.ts +7 -4
- package/dist/utc/calculate/addUtc.js +1 -4
- package/dist/utc/calculate/diffUtc.d.ts +1 -1
- package/dist/utc/calculate/diffUtc.js +1 -1
- package/dist/utc/calculate/diffUtcAsDuration.d.ts +1 -1
- package/dist/utc/calculate/diffUtcAsDuration.js +1 -1
- package/dist/utc/calculate/endOfUtc.d.ts +16 -3
- package/dist/utc/calculate/endOfUtc.js +2 -3
- package/dist/utc/calculate/isBetweenUtc.d.ts +13 -2
- package/dist/utc/calculate/isBetweenUtc.js +4 -4
- package/dist/utc/calculate/roundUtc.d.ts +26 -9
- package/dist/utc/calculate/roundUtc.js +3 -12
- package/dist/utc/calculate/setUtc.d.ts +7 -4
- package/dist/utc/calculate/setUtc.js +1 -4
- package/dist/utc/calculate/startOfUtc.d.ts +15 -2
- package/dist/utc/calculate/startOfUtc.js +1 -2
- package/dist/utc/calculate/subtractUtc.d.ts +7 -4
- package/dist/utc/calculate/subtractUtc.js +1 -4
- package/dist/utc/compare/areUtcEqualBy.d.ts +9 -3
- package/dist/utc/compare/areUtcEqualBy.js +2 -3
- package/dist/utc/convert/convertUtcToPlainDate.d.ts +8 -3
- package/dist/utc/convert/convertUtcToPlainDate.js +5 -6
- package/dist/utc/convert/convertUtcToPlainDateTime.d.ts +8 -3
- package/dist/utc/convert/convertUtcToPlainDateTime.js +5 -6
- package/dist/utc/convert/convertUtcToPlainTime.d.ts +8 -3
- package/dist/utc/convert/convertUtcToPlainTime.js +5 -6
- package/dist/utc/convert/convertUtcToUnix.d.ts +9 -4
- package/dist/utc/convert/convertUtcToUnix.js +3 -4
- package/dist/utc/convert/convertUtcToZoned.d.ts +1 -1
- package/dist/utc/convert/convertUtcToZoned.js +1 -1
- package/dist/utc/format/formatCalendarUtc.d.ts +19 -8
- package/dist/utc/format/formatCalendarUtc.js +8 -6
- package/dist/utc/format/formatHttp.d.ts +1 -1
- package/dist/utc/format/formatHttp.js +1 -1
- package/dist/utc/format/formatRelativeUtc.d.ts +30 -10
- package/dist/utc/format/formatRelativeUtc.js +9 -11
- package/dist/utc/format/formatUtc.d.ts +17 -15
- package/dist/utc/format/formatUtc.js +8 -8
- package/dist/utc/interval/intervalDifferenceUtc.d.ts +6 -0
- package/dist/utc/interval/intervalDivideEquallyUtc.d.ts +18 -4
- package/dist/utc/interval/intervalDivideEquallyUtc.js +5 -4
- package/dist/utc/interval/intervalFromDurationUtc.d.ts +13 -3
- package/dist/utc/interval/intervalFromDurationUtc.js +1 -3
- package/dist/utc/interval/intervalIntersectionUtc.d.ts +6 -0
- package/dist/utc/interval/intervalSplitAtUtc.d.ts +8 -0
- package/dist/utc/interval/intervalSplitAtUtc.js +2 -0
- package/dist/utc/interval/intervalUnionUtc.d.ts +6 -0
- package/dist/utc/interval/intervalXorAllUtc.d.ts +6 -0
- package/dist/utc/interval/intervalXorUtc.d.ts +6 -0
- package/dist/utc/interval/mergeIntervalsUtc.d.ts +6 -0
- package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +19 -6
- package/dist/utc/interval/splitIntervalByUnitUtc.js +6 -6
- package/dist/utc/parse/parseDateFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseDateFromUtc.js +1 -3
- package/dist/utc/parse/parseDayFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseDayFromUtc.js +1 -3
- package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseDayOfWeekFromUtc.js +4 -6
- package/dist/utc/parse/parseHourFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseHourFromUtc.js +1 -3
- package/dist/utc/parse/parseHttp.d.ts +1 -1
- package/dist/utc/parse/parseHttp.js +1 -1
- package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseMicrosecondFromUtc.js +1 -3
- package/dist/utc/parse/parseMillisecondFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseMillisecondFromUtc.js +1 -3
- package/dist/utc/parse/parseMinuteFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseMinuteFromUtc.js +1 -3
- package/dist/utc/parse/parseMonthFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseMonthFromUtc.js +1 -3
- package/dist/utc/parse/parseNanosecondFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseNanosecondFromUtc.js +1 -3
- package/dist/utc/parse/parseSecondFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseSecondFromUtc.js +1 -3
- package/dist/utc/parse/parseTimeFromUtc.d.ts +8 -3
- package/dist/utc/parse/parseTimeFromUtc.js +5 -6
- package/dist/utc/parse/parseUnitFromUtc.d.ts +17 -5
- package/dist/utc/parse/parseUnitFromUtc.js +6 -8
- package/dist/utc/parse/parseWeekFromUtc.d.ts +18 -10
- package/dist/utc/parse/parseWeekFromUtc.js +7 -13
- package/dist/utc/parse/parseYearFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseYearFromUtc.js +1 -3
- package/dist/utc/validate/isValidUtcRange.d.ts +16 -5
- package/dist/utc/validate/isValidUtcRange.js +2 -5
- package/dist/zoned/calculate/addZoned.d.ts +20 -10
- package/dist/zoned/calculate/addZoned.js +6 -13
- package/dist/zoned/calculate/cycleZoned.d.ts +33 -8
- package/dist/zoned/calculate/cycleZoned.js +1 -8
- package/dist/zoned/calculate/diffZoned.d.ts +1 -1
- package/dist/zoned/calculate/diffZoned.js +1 -1
- package/dist/zoned/calculate/diffZonedAsDuration.d.ts +1 -1
- package/dist/zoned/calculate/diffZonedAsDuration.js +1 -1
- package/dist/zoned/calculate/endOfQuarterForZoned.d.ts +9 -2
- package/dist/zoned/calculate/endOfQuarterForZoned.js +4 -5
- package/dist/zoned/calculate/endOfZoned.d.ts +16 -3
- package/dist/zoned/calculate/endOfZoned.js +2 -3
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +10 -3
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +5 -6
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +7 -1
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +3 -4
- package/dist/zoned/calculate/roundZoned.d.ts +21 -4
- package/dist/zoned/calculate/roundZoned.js +3 -7
- package/dist/zoned/calculate/setZoned.d.ts +25 -8
- package/dist/zoned/calculate/setZoned.js +4 -12
- package/dist/zoned/calculate/startOfQuarterForZoned.d.ts +7 -2
- package/dist/zoned/calculate/startOfQuarterForZoned.js +3 -5
- package/dist/zoned/calculate/startOfZoned.d.ts +15 -3
- package/dist/zoned/calculate/startOfZoned.js +1 -3
- package/dist/zoned/calculate/subtractZoned.d.ts +20 -10
- package/dist/zoned/calculate/subtractZoned.js +6 -13
- package/dist/zoned/compare/areZonedEqualBy.d.ts +14 -5
- package/dist/zoned/compare/areZonedEqualBy.js +7 -5
- package/dist/zoned/compare/isBetweenZoned.d.ts +13 -1
- package/dist/zoned/compare/isBetweenZoned.js +4 -3
- package/dist/zoned/compare/isInDaylightSaving.d.ts +38 -11
- package/dist/zoned/compare/isInDaylightSaving.js +40 -44
- package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +18 -5
- package/dist/zoned/convert/convertPlainDateTimeToZoned.js +6 -11
- package/dist/zoned/convert/convertZonedToUnix.d.ts +9 -4
- package/dist/zoned/convert/convertZonedToUnix.js +2 -4
- package/dist/zoned/convert/convertZonedToZoned.d.ts +1 -1
- package/dist/zoned/convert/convertZonedToZoned.js +1 -1
- package/dist/zoned/format/formatCalendarZoned.d.ts +18 -12
- package/dist/zoned/format/formatCalendarZoned.js +13 -9
- package/dist/zoned/format/formatRelativeZoned.d.ts +41 -12
- package/dist/zoned/format/formatRelativeZoned.js +7 -4
- package/dist/zoned/format/formatRfc2822.d.ts +2 -2
- package/dist/zoned/format/formatRfc2822.js +2 -2
- package/dist/zoned/format/formatRfc3339.d.ts +2 -3
- package/dist/zoned/format/formatRfc3339.js +2 -3
- package/dist/zoned/format/formatTimeZoneName.d.ts +12 -3
- package/dist/zoned/format/formatTimeZoneName.js +5 -4
- package/dist/zoned/format/formatZonedDateTime.js +2 -1
- package/dist/zoned/format/formatZonedRange.js +2 -1
- package/dist/zoned/format/formatZonedToParts.d.ts +15 -4
- package/dist/zoned/format/formatZonedToParts.js +8 -5
- package/dist/zoned/get/getDstTransitions.d.ts +9 -10
- package/dist/zoned/get/getDstTransitions.js +12 -3
- package/dist/zoned/get/getTimeZoneOffset.d.ts +4 -1
- package/dist/zoned/get/getTimeZoneOffset.js +6 -3
- package/dist/zoned/get/getZonedNow.d.ts +13 -1
- package/dist/zoned/get/getZonedNow.js +12 -3
- package/dist/zoned/interval/intervalDifferenceZoned.d.ts +9 -0
- package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +22 -4
- package/dist/zoned/interval/intervalDivideEquallyZoned.js +6 -4
- package/dist/zoned/interval/intervalFromDurationZoned.d.ts +29 -10
- package/dist/zoned/interval/intervalFromDurationZoned.js +6 -13
- package/dist/zoned/interval/intervalIntersectionZoned.d.ts +9 -0
- package/dist/zoned/interval/intervalSplitAtZoned.d.ts +11 -0
- package/dist/zoned/interval/intervalSplitAtZoned.js +2 -0
- package/dist/zoned/interval/intervalUnionZoned.d.ts +9 -0
- package/dist/zoned/interval/intervalXorAllZoned.d.ts +9 -0
- package/dist/zoned/interval/intervalXorZoned.d.ts +9 -0
- package/dist/zoned/interval/mergeIntervalsZoned.d.ts +9 -0
- package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +27 -6
- package/dist/zoned/interval/splitIntervalByUnitZoned.js +11 -6
- package/dist/zoned/map/mapZonedDatesInRange.d.ts +9 -4
- package/dist/zoned/map/mapZonedDatesInRange.js +2 -4
- package/dist/zoned/parse/parseRfc2822.d.ts +1 -1
- package/dist/zoned/parse/parseRfc2822.js +1 -1
- package/dist/zoned/parse/parseUnitFromZoned.d.ts +9 -3
- package/dist/zoned/parse/parseUnitFromZoned.js +1 -3
- package/dist/zoned/parse/parseWeekFromZoned.d.ts +10 -3
- package/dist/zoned/parse/parseWeekFromZoned.js +2 -3
- package/dist/zoned/validate/hasDaylightSaving.d.ts +42 -11
- package/dist/zoned/validate/hasDaylightSaving.js +47 -31
- package/dist/zoned/validate/isValidZonedDateTime.d.ts +13 -0
- package/dist/zoned/validate/isValidZonedDateTime.js +14 -1
- package/dist/zoned/validate/isValidZonedRange.d.ts +15 -4
- package/dist/zoned/validate/isValidZonedRange.js +1 -4
- package/package.json +53 -5
- package/skills/gmt-arithmetic/SKILL.md +1 -1
- package/skills/gmt-basics/SKILL.md +10 -1
- package/skills/gmt-integration/SKILL.md +10 -5
- package/skills/gmt-timezone/SKILL.md +210 -14
- package/dist/internal/resolveReadingTimeZone.d.ts +0 -11
- package/dist/internal/resolveReadingTimeZone.js +0 -18
- package/dist/types/duration-unit.d.ts +0 -5
- /package/dist/types/{duration-unit.js → free-time-options.js} +0 -0
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import { MAX_EPOCH_NANOSECONDS } from "./epochNanoseconds.js";
|
|
3
|
-
import { calendarDateAdd, isCalendarArithmeticCompatNeeded, } from "./temporalCompat/index.js";
|
|
4
|
-
import {
|
|
3
|
+
import { calendarDateAdd, isCalendarArithmeticCompatNeeded, isTransitionSearchCompatNeeded, } from "./temporalCompat/index.js";
|
|
4
|
+
import { nextTransitionAfter, previousTransitionBefore, } from "./zonedTransitionSearch.js";
|
|
5
|
+
import { epochNanosecondsFor, interpretISODateTimeOffset, isNamedTimeZone, isNearRangeEdge, isValidEpoch, MAX_TRANSITIONS_BEFORE_MAXIMUM, missedNextTransition, missedPreviousTransition, needsOwnDayBoundsSearch, needsOwnStartOfDaySearch, NEXT_TRANSITION_HORIZON_NANOSECONDS, startOfDayEpochNanoseconds, timeZoneIdOf, utcOffsetStringNanoseconds, } from "./zonedWallClock.js";
|
|
6
|
+
import { optionOrDefault } from "./optionOrDefault.js";
|
|
5
7
|
/*
|
|
6
8
|
* Polyfill-first wrappers for the Temporal operations that resolve a wall clock or a start of day
|
|
7
9
|
* inside `@js-temporal/polyfill` 0.5.1, and so inherit its range-limit defects. See the note at the
|
|
@@ -19,6 +21,11 @@ import { epochNanosecondsFor, interpretISODateTimeOffset, isBeforePolyfillTransi
|
|
|
19
21
|
* so the transition and start-of-day wrappers check for it first, and only for a named zone and an
|
|
20
22
|
* instant or local date before that floor (`needsOwnStartOfDay`); everything later goes straight to
|
|
21
23
|
* the polyfill. Retired with the `zoned.E` canary group.
|
|
24
|
+
*
|
|
25
|
+
* Defect 5 (two changes inside one 14-day search step are skipped, or stall the search for ever;
|
|
26
|
+
* temporalCompat D13) cannot be tried and recovered either. While its probe fails, the transition
|
|
27
|
+
* wrappers run GMT's own search (`zonedTransitionSearch.ts`) and the start-of-day wrappers GMT's
|
|
28
|
+
* own `GetStartOfDay`, for every named zone.
|
|
22
29
|
*/
|
|
23
30
|
const NANOSECONDS_PER_HOUR = 3_600_000_000_000;
|
|
24
31
|
const DISAMBIGUATION_PROBE = new Temporal.PlainDateTime(2000, 1, 1);
|
|
@@ -37,11 +44,17 @@ function isAtRangeEdge(timeZone, date) {
|
|
|
37
44
|
}
|
|
38
45
|
/**
|
|
39
46
|
* True when the polyfill's `GetStartOfDay` may return a valid-looking wrong value for this date (or
|
|
40
|
-
* this zoned value's date)
|
|
41
|
-
* 1847-01-01 transition search floor (defect 3)
|
|
47
|
+
* this zoned value's date): a transition skipping its midnight lies before the polyfill's
|
|
48
|
+
* 1847-01-01 transition search floor (defect 3), or the polyfill's search can skip or stall on two
|
|
49
|
+
* changes in one step (defect 5, while the D13 probe fails).
|
|
42
50
|
*/
|
|
43
51
|
function needsOwnStartOfDay(timeZone, value) {
|
|
44
|
-
return isNamedTimeZone(timeZone) &&
|
|
52
|
+
return isNamedTimeZone(timeZone) && needsOwnStartOfDaySearch(timeZone, value);
|
|
53
|
+
}
|
|
54
|
+
/** `needsOwnStartOfDay` for a measure that also reads the next day's start. */
|
|
55
|
+
function needsOwnDayBounds(zoned) {
|
|
56
|
+
return (isNamedTimeZone(zoned.timeZoneId) &&
|
|
57
|
+
needsOwnDayBoundsSearch(zoned.timeZoneId, zoned));
|
|
45
58
|
}
|
|
46
59
|
function inZoneOf(epochNanoseconds, zoned) {
|
|
47
60
|
return new Temporal.ZonedDateTime(epochNanoseconds, zoned.timeZoneId, zoned.calendarId);
|
|
@@ -73,8 +86,6 @@ function plainDateFromOwnStartOfDay(date, timeZone) {
|
|
|
73
86
|
}
|
|
74
87
|
/** A PlainDate's start of day before the polyfill's transition search floor, or null. */
|
|
75
88
|
function plainDateBeforeTransitionSearch(date, timeZoneLike) {
|
|
76
|
-
if (!isBeforePolyfillTransitionSearch(date))
|
|
77
|
-
return null;
|
|
78
89
|
let timeZone;
|
|
79
90
|
try {
|
|
80
91
|
timeZone = timeZoneIdOf(timeZoneLike);
|
|
@@ -82,7 +93,7 @@ function plainDateBeforeTransitionSearch(date, timeZoneLike) {
|
|
|
82
93
|
catch {
|
|
83
94
|
return null;
|
|
84
95
|
}
|
|
85
|
-
return
|
|
96
|
+
return needsOwnStartOfDay(timeZone, date)
|
|
86
97
|
? plainDateFromOwnStartOfDay(date, timeZone)
|
|
87
98
|
: null;
|
|
88
99
|
}
|
|
@@ -194,7 +205,7 @@ function hoursInDayFromOwnStartOfDay(zoned) {
|
|
|
194
205
|
* @returns hours from this day's start to the next day's start; throws where TC39 Temporal throws
|
|
195
206
|
*/
|
|
196
207
|
export function zonedHoursInDay(zoned) {
|
|
197
|
-
if (
|
|
208
|
+
if (needsOwnDayBounds(zoned)) {
|
|
198
209
|
return hoursInDayFromOwnStartOfDay(zoned);
|
|
199
210
|
}
|
|
200
211
|
try {
|
|
@@ -228,19 +239,13 @@ function earliestTransitionBeforeMaximum(zoned) {
|
|
|
228
239
|
}
|
|
229
240
|
return earliest;
|
|
230
241
|
}
|
|
231
|
-
/**
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
* maximum with `getTimeZoneTransition("previous")`, which scans correctly there.
|
|
239
|
-
*
|
|
240
|
-
* @param zoned the instant to search after (exclusive)
|
|
241
|
-
* @returns the next transition, or null when there is none before the maximum instant
|
|
242
|
-
*/
|
|
243
|
-
export function zonedNextTransition(zoned) {
|
|
242
|
+
/** `transition` unless it is null or lies outside the caller's limit. */
|
|
243
|
+
function withinLimit(transition, isInside) {
|
|
244
|
+
return transition !== null && isInside(transition.epochNanoseconds)
|
|
245
|
+
? transition
|
|
246
|
+
: null;
|
|
247
|
+
}
|
|
248
|
+
function polyfillNextTransition(zoned) {
|
|
244
249
|
if (isNamedTimeZone(zoned.timeZoneId)) {
|
|
245
250
|
const missed = missedNextTransition(zoned.timeZoneId, zoned.epochNanoseconds);
|
|
246
251
|
if (missed !== null) {
|
|
@@ -257,15 +262,34 @@ export function zonedNextTransition(zoned) {
|
|
|
257
262
|
return earliestTransitionBeforeMaximum(zoned);
|
|
258
263
|
}
|
|
259
264
|
/**
|
|
260
|
-
* `ZonedDateTime#getTimeZoneTransition("
|
|
265
|
+
* `ZonedDateTime#getTimeZoneTransition("next")`: TC39 `GetNamedTimeZoneNextTransition`, the first
|
|
266
|
+
* offset change strictly after `zoned`.
|
|
261
267
|
*
|
|
262
|
-
*
|
|
263
|
-
*
|
|
268
|
+
* - While the D13 probe fails (two changes inside one of the polyfill's 14-day search steps are
|
|
269
|
+
* skipped, or stall it for ever), a named zone is searched by GMT's own bounded search
|
|
270
|
+
* (`zonedTransitionSearch.ts`) and the polyfill's search is never called.
|
|
271
|
+
* - Otherwise the polyfill answers, corrected before 1847 (defect 3: it never searches there, so
|
|
272
|
+
* the change is found by bisection first) and within its three-year horizon of the maximum
|
|
273
|
+
* instant (defect 2: its forward scan gives up once a step would pass the maximum, so a `null`
|
|
274
|
+
* is re-checked by walking back from the maximum).
|
|
264
275
|
*
|
|
265
|
-
* @param zoned the instant to search
|
|
266
|
-
* @
|
|
276
|
+
* @param zoned the instant to search after (exclusive)
|
|
277
|
+
* @param until optional: the last instant to search, in epoch nanoseconds (inclusive). A caller
|
|
278
|
+
* that needs only changes up to there passes it so the search reads no further
|
|
279
|
+
* @returns the next transition, or null when there is none up to `until` or, without it, none
|
|
280
|
+
* that Temporal reports
|
|
267
281
|
*/
|
|
268
|
-
export function
|
|
282
|
+
export function zonedNextTransition(zoned, until) {
|
|
283
|
+
if (isNamedTimeZone(zoned.timeZoneId) && isTransitionSearchCompatNeeded()) {
|
|
284
|
+
const found = nextTransitionAfter(zoned.timeZoneId, zoned.epochNanoseconds, until);
|
|
285
|
+
return found === null ? null : inZoneOf(found, zoned);
|
|
286
|
+
}
|
|
287
|
+
const next = polyfillNextTransition(zoned);
|
|
288
|
+
return until === undefined
|
|
289
|
+
? next
|
|
290
|
+
: withinLimit(next, (epochNanoseconds) => epochNanoseconds <= until);
|
|
291
|
+
}
|
|
292
|
+
function polyfillPreviousTransition(zoned) {
|
|
269
293
|
const previous = zoned.getTimeZoneTransition("previous");
|
|
270
294
|
if (previous !== null || !isNamedTimeZone(zoned.timeZoneId)) {
|
|
271
295
|
return previous;
|
|
@@ -273,6 +297,31 @@ export function zonedPreviousTransition(zoned) {
|
|
|
273
297
|
const missed = missedPreviousTransition(zoned.timeZoneId, zoned.epochNanoseconds);
|
|
274
298
|
return missed === null ? null : inZoneOf(missed, zoned);
|
|
275
299
|
}
|
|
300
|
+
/**
|
|
301
|
+
* `ZonedDateTime#getTimeZoneTransition("previous")`: TC39 `GetNamedTimeZonePreviousTransition`,
|
|
302
|
+
* the last offset change strictly before `zoned`.
|
|
303
|
+
*
|
|
304
|
+
* - While the D13 probe fails, a named zone is searched by GMT's own bounded search and the
|
|
305
|
+
* polyfill's search is never called (see `zonedNextTransition`).
|
|
306
|
+
* - Otherwise the polyfill answers, corrected before 1847 (defect 3): when it finds nothing in a
|
|
307
|
+
* named zone, the span from the minimum instant to its floor is checked by comparing offsets
|
|
308
|
+
* and bisecting.
|
|
309
|
+
*
|
|
310
|
+
* @param zoned the instant to search before (exclusive)
|
|
311
|
+
* @param since optional: where the search stops, in epoch nanoseconds (exclusive). A caller that
|
|
312
|
+
* needs only changes after there passes it so the search reads no further back
|
|
313
|
+
* @returns the previous transition, or null when there is none after `since` or, without it, none
|
|
314
|
+
*/
|
|
315
|
+
export function zonedPreviousTransition(zoned, since) {
|
|
316
|
+
if (isNamedTimeZone(zoned.timeZoneId) && isTransitionSearchCompatNeeded()) {
|
|
317
|
+
const found = previousTransitionBefore(zoned.timeZoneId, zoned.epochNanoseconds, since);
|
|
318
|
+
return found === null ? null : inZoneOf(found, zoned);
|
|
319
|
+
}
|
|
320
|
+
const previous = polyfillPreviousTransition(zoned);
|
|
321
|
+
return since === undefined
|
|
322
|
+
? previous
|
|
323
|
+
: withinLimit(previous, (epochNanoseconds) => epochNanoseconds > since);
|
|
324
|
+
}
|
|
276
325
|
// ---------------------------------------------------------------------------------------------
|
|
277
326
|
// add / subtract
|
|
278
327
|
// ---------------------------------------------------------------------------------------------
|
|
@@ -403,6 +452,7 @@ export function subtractFromZoned(zoned, duration, options) {
|
|
|
403
452
|
* "later"/"compatible" forward (DisambiguatePossibleEpochNanoseconds); "reject" throws for both.
|
|
404
453
|
* - The time portion is then added in exact time and is never re-resolved.
|
|
405
454
|
* - With no date portion, the whole duration is exact time and `disambiguation` never applies.
|
|
455
|
+
* - Each option is converted to a string once, as Temporal GetOption converts it.
|
|
406
456
|
*
|
|
407
457
|
* @param zoned the starting value
|
|
408
458
|
* @param duration the duration to add or subtract
|
|
@@ -411,7 +461,13 @@ export function subtractFromZoned(zoned, duration, options) {
|
|
|
411
461
|
* @returns the result; throws where TC39 Temporal throws, or when "reject" meets a gap or overlap
|
|
412
462
|
*/
|
|
413
463
|
export function addToZonedDisambiguated(zoned, duration, sign, options) {
|
|
414
|
-
|
|
464
|
+
// Temporal GetOption converts each option once (ToString). The steps below check an option and
|
|
465
|
+
// then use it, some more than once, so both are converted here and every step sees the same
|
|
466
|
+
// string: an option given as an object cannot answer the check one way and the use another.
|
|
467
|
+
const overflow = options.overflow === undefined
|
|
468
|
+
? undefined
|
|
469
|
+
: `${options.overflow}`;
|
|
470
|
+
const disambiguation = `${options.disambiguation}`;
|
|
415
471
|
// Validates `disambiguation` even when no wall clock is resolved below.
|
|
416
472
|
DISAMBIGUATION_PROBE.toZonedDateTime("UTC", { disambiguation });
|
|
417
473
|
const parsed = Temporal.Duration.from(duration);
|
|
@@ -443,9 +499,7 @@ function withAtEdge(zoned, fields, options) {
|
|
|
443
499
|
if (!isAtRangeEdge(zoned.timeZoneId, wall.toPlainDate())) {
|
|
444
500
|
return null;
|
|
445
501
|
}
|
|
446
|
-
const epoch = interpretISODateTimeOffset(zoned.timeZoneId, wall, offset, options?.disambiguation
|
|
447
|
-
? "compatible"
|
|
448
|
-
: options.disambiguation, options?.offset === undefined ? "prefer" : options.offset, false);
|
|
502
|
+
const epoch = interpretISODateTimeOffset(zoned.timeZoneId, wall, offset, optionOrDefault(options?.disambiguation, "compatible"), optionOrDefault(options?.offset, "prefer"), false);
|
|
449
503
|
return inZoneOf(epoch, zoned);
|
|
450
504
|
}
|
|
451
505
|
/**
|
|
@@ -538,8 +592,7 @@ function roundAtEdge(zoned, roundTo) {
|
|
|
538
592
|
* @returns the rounded value; throws where TC39 Temporal throws
|
|
539
593
|
*/
|
|
540
594
|
export function roundZonedDateTime(zoned, roundTo) {
|
|
541
|
-
if (isDayUnit(roundTo.smallestUnit) &&
|
|
542
|
-
needsOwnStartOfDay(zoned.timeZoneId, zoned)) {
|
|
595
|
+
if (isDayUnit(roundTo.smallestUnit) && needsOwnDayBounds(zoned)) {
|
|
543
596
|
// Validates the options exactly as ZonedDateTime#round does, throwing where it throws.
|
|
544
597
|
zoned.toPlainDateTime().round(roundTo);
|
|
545
598
|
return roundToDayFromOwnStartOfDay(zoned, zoned.toPlainDate(), roundTo.roundingMode ?? "halfExpand");
|
|
@@ -4,9 +4,12 @@ import type { Interval } from "../../types/index.js";
|
|
|
4
4
|
*
|
|
5
5
|
* - True when `start` and `end` are ISO 8601 instant strings (offset required, no leap second)
|
|
6
6
|
* and `start` is not after `end`.
|
|
7
|
-
* -
|
|
8
|
-
*
|
|
9
|
-
* (`[foo=bar]`)
|
|
7
|
+
* - A calendar annotation (`[u-ca=hebrew]`, critical or not) and an elective unknown annotation
|
|
8
|
+
* (`[foo=bar]`) are ignored, as `Temporal.Instant.from` ignores them; an unknown critical
|
|
9
|
+
* annotation (`[!foo=bar]`) is rejected. A bracketed zone is not validated. It is read for
|
|
10
|
+
* one thing: an offset written to the minute that is the zone's sub-minute offset rounded
|
|
11
|
+
* (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
|
|
12
|
+
* `Temporal.ZonedDateTime.from` reads it.
|
|
10
13
|
* - Compares instants, not text: `{ start: "2024-01-01T10:00:00+01:00", end: "2024-01-01T09:30:00Z" }`
|
|
11
14
|
* is valid even though it sorts backwards as a string.
|
|
12
15
|
* - `start === end` is valid — an empty interval.
|
|
@@ -4,9 +4,12 @@ import { parseIntervalNanoseconds } from "../../internal/index.js";
|
|
|
4
4
|
*
|
|
5
5
|
* - True when `start` and `end` are ISO 8601 instant strings (offset required, no leap second)
|
|
6
6
|
* and `start` is not after `end`.
|
|
7
|
-
* -
|
|
8
|
-
*
|
|
9
|
-
* (`[foo=bar]`)
|
|
7
|
+
* - A calendar annotation (`[u-ca=hebrew]`, critical or not) and an elective unknown annotation
|
|
8
|
+
* (`[foo=bar]`) are ignored, as `Temporal.Instant.from` ignores them; an unknown critical
|
|
9
|
+
* annotation (`[!foo=bar]`) is rejected. A bracketed zone is not validated. It is read for
|
|
10
|
+
* one thing: an offset written to the minute that is the zone's sub-minute offset rounded
|
|
11
|
+
* (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
|
|
12
|
+
* `Temporal.ZonedDateTime.from` reads it.
|
|
10
13
|
* - Compares instants, not text: `{ start: "2024-01-01T10:00:00+01:00", end: "2024-01-01T09:30:00Z" }`
|
|
11
14
|
* is valid even though it sorts backwards as a string.
|
|
12
15
|
* - `start === end` is valid — an empty interval.
|
|
@@ -10,18 +10,15 @@ import type { DateDurationUnit, Overflow } from "../../types/index.js";
|
|
|
10
10
|
* string is the `"iso8601"` calendar and returns a bare ISO string.
|
|
11
11
|
* - Compatibility: since 1.16.0 calendar strings are RFC 9557 (ISO digits, `[u-ca=<id>]`, canonical
|
|
12
12
|
* calendar ids); see `isValidCalendarDate`.
|
|
13
|
+
* - Whether `overflow: "reject"` returns "" is calendar-dependent: adding 1 year from Hebrew
|
|
14
|
+
* Adar I (a leap-only month) does not (Temporal remaps to the non-leap year's Adar instead of
|
|
15
|
+
* rejecting), while adding 1 month from the Ethiopic 30-day 12th month into the 5/6-day
|
|
16
|
+
* Pagumen does.
|
|
13
17
|
* - Returns "" for invalid inputs.
|
|
14
18
|
*
|
|
15
|
-
* `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. adding 1 month
|
|
16
|
-
* to Jan 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in ""). Whether `reject`
|
|
17
|
-
* actually throws is calendar-dependent: adding 1 year from Hebrew Adar I (a leap-only month)
|
|
18
|
-
* does NOT throw even with `overflow: "reject"` (Temporal remaps to the non-leap year's Adar
|
|
19
|
-
* instead of rejecting), while adding 1 month from the Ethiopic 30-day 12th month into the
|
|
20
|
-
* 5/6-day Pagumen DOES throw.
|
|
21
|
-
*
|
|
22
19
|
* @param value ISO PlainDate string, optionally calendar-annotated
|
|
23
20
|
* @param units Partial<Record<DateDurationUnit, number>> object specifying units to add
|
|
24
|
-
* @param options
|
|
21
|
+
* @param options How an out-of-range result is handled
|
|
25
22
|
* @returns ISO PlainDate string after addition, or "" on invalid input
|
|
26
23
|
*
|
|
27
24
|
* @example addDate("2024-03-10", { days: 5 }) // "2024-03-15"
|
|
@@ -32,5 +29,11 @@ import type { DateDurationUnit, Overflow } from "../../types/index.js";
|
|
|
32
29
|
* @example addDate("2024-10-03[u-ca=japanese;era=reiwa]", { days: 1 }) // "" (not RFC 9557)
|
|
33
30
|
*/
|
|
34
31
|
export declare function addDate(value: string, units: Partial<Record<DateDurationUnit, number>>, options?: {
|
|
32
|
+
/**
|
|
33
|
+
* What to do when the result is not a real date. `"constrain"` clamps it to the last valid day,
|
|
34
|
+
* so Jan 31 + 1 month is Feb 29 or 28; `"reject"` returns `""`.
|
|
35
|
+
*
|
|
36
|
+
* @defaultValue `"constrain"`, Temporal's default.
|
|
37
|
+
*/
|
|
35
38
|
overflow?: Overflow;
|
|
36
39
|
}): string;
|
|
@@ -13,18 +13,15 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
13
13
|
* string is the `"iso8601"` calendar and returns a bare ISO string.
|
|
14
14
|
* - Compatibility: since 1.16.0 calendar strings are RFC 9557 (ISO digits, `[u-ca=<id>]`, canonical
|
|
15
15
|
* calendar ids); see `isValidCalendarDate`.
|
|
16
|
+
* - Whether `overflow: "reject"` returns "" is calendar-dependent: adding 1 year from Hebrew
|
|
17
|
+
* Adar I (a leap-only month) does not (Temporal remaps to the non-leap year's Adar instead of
|
|
18
|
+
* rejecting), while adding 1 month from the Ethiopic 30-day 12th month into the 5/6-day
|
|
19
|
+
* Pagumen does.
|
|
16
20
|
* - Returns "" for invalid inputs.
|
|
17
21
|
*
|
|
18
|
-
* `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. adding 1 month
|
|
19
|
-
* to Jan 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in ""). Whether `reject`
|
|
20
|
-
* actually throws is calendar-dependent: adding 1 year from Hebrew Adar I (a leap-only month)
|
|
21
|
-
* does NOT throw even with `overflow: "reject"` (Temporal remaps to the non-leap year's Adar
|
|
22
|
-
* instead of rejecting), while adding 1 month from the Ethiopic 30-day 12th month into the
|
|
23
|
-
* 5/6-day Pagumen DOES throw.
|
|
24
|
-
*
|
|
25
22
|
* @param value ISO PlainDate string, optionally calendar-annotated
|
|
26
23
|
* @param units Partial<Record<DateDurationUnit, number>> object specifying units to add
|
|
27
|
-
* @param options
|
|
24
|
+
* @param options How an out-of-range result is handled
|
|
28
25
|
* @returns ISO PlainDate string after addition, or "" on invalid input
|
|
29
26
|
*
|
|
30
27
|
* @example addDate("2024-03-10", { days: 5 }) // "2024-03-15"
|
|
@@ -5,12 +5,9 @@ import type { DateTimeDurationUnit, Overflow } from "../../types/index.js";
|
|
|
5
5
|
* - Validates `value`, `units`, and `amount` before performing the add.
|
|
6
6
|
* - Returns "" for invalid inputs.
|
|
7
7
|
*
|
|
8
|
-
* `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. adding 1 month
|
|
9
|
-
* to Jan 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in "").
|
|
10
|
-
*
|
|
11
8
|
* @param value ISO PlainDateTime string
|
|
12
9
|
* @param units Partial<Record<DateTimeDurationUnit, number>> object specifying units to add
|
|
13
|
-
* @param options
|
|
10
|
+
* @param options How an out-of-range result is handled
|
|
14
11
|
* @returns ISO PlainDateTime string after addition, or "" on invalid input
|
|
15
12
|
*
|
|
16
13
|
* @example addDateTime("2024-03-10T12:00:00", { days: 5 }) // "2024-03-15T12:00:00"
|
|
@@ -18,5 +15,11 @@ import type { DateTimeDurationUnit, Overflow } from "../../types/index.js";
|
|
|
18
15
|
* @example addDateTime("2024-01-31T12:00:00", { months: 1 }, { overflow: "reject" }) // ""
|
|
19
16
|
*/
|
|
20
17
|
export declare function addDateTime(value: string, units: Partial<Record<DateTimeDurationUnit, number>>, options?: {
|
|
18
|
+
/**
|
|
19
|
+
* What to do when the result is not a real date. `"constrain"` clamps it to the last valid day,
|
|
20
|
+
* so Jan 31 + 1 month is Feb 29 or 28; `"reject"` returns `""`.
|
|
21
|
+
*
|
|
22
|
+
* @defaultValue `"constrain"`, Temporal's default.
|
|
23
|
+
*/
|
|
21
24
|
overflow?: Overflow;
|
|
22
25
|
}): string;
|
|
@@ -9,12 +9,9 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
9
9
|
* - Validates `value`, `units`, and `amount` before performing the add.
|
|
10
10
|
* - Returns "" for invalid inputs.
|
|
11
11
|
*
|
|
12
|
-
* `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. adding 1 month
|
|
13
|
-
* to Jan 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in "").
|
|
14
|
-
*
|
|
15
12
|
* @param value ISO PlainDateTime string
|
|
16
13
|
* @param units Partial<Record<DateTimeDurationUnit, number>> object specifying units to add
|
|
17
|
-
* @param options
|
|
14
|
+
* @param options How an out-of-range result is handled
|
|
18
15
|
* @returns ISO PlainDateTime string after addition, or "" on invalid input
|
|
19
16
|
*
|
|
20
17
|
* @example addDateTime("2024-03-10T12:00:00", { days: 5 }) // "2024-03-15T12:00:00"
|
|
@@ -8,24 +8,20 @@ import type { DateCycleField, Overflow } from "../../types/index.js";
|
|
|
8
8
|
* overflow into January of the *next* year. Reach for `addDate` when you want calendar
|
|
9
9
|
* arithmetic; reach for `cycleDate` when a single field (e.g. a datepicker segment) must stay
|
|
10
10
|
* isolated from the others.
|
|
11
|
-
* - `year` has no upper/lower wrap — cycling it is plain addition (or
|
|
11
|
+
* - `year` has no upper/lower wrap — cycling it is plain addition (or a step to a multiple, with
|
|
12
|
+
* `round`): `2022` by `+5` with `round: true` lands on `2025`, the next multiple of 5.
|
|
12
13
|
* `month` wraps `1–12`. `day` wraps `1`–the **current** month's day count, so cycling `day`
|
|
13
14
|
* never changes `month`.
|
|
14
15
|
* - Cycling `month` or `year` can still shift `day` via `overflow` — e.g. cycling `month` from a
|
|
15
16
|
* 31st into a shorter month clamps under the default `"constrain"` (or returns `""` under
|
|
16
17
|
* `"reject"`) exactly the way `setDate`'s own `.with()` call does; this is the same clamping
|
|
17
18
|
* `addDate`'s Jan 31 + 1 month case produces, not new behavior.
|
|
18
|
-
* - `options.round` does **not** round to the nearest increment — it steps to the *next* multiple
|
|
19
|
-
* of `amount` in the direction of its sign (ceiling for positive, floor for negative), matching
|
|
20
|
-
* `@internationalized/date`'s `CycleOptions.round`. E.g. cycling `year` `2022` by `+5` with
|
|
21
|
-
* `round: true` lands on `2025` (the next multiple of 5 above 2022), not `2020` (the nearest
|
|
22
|
-
* multiple).
|
|
23
19
|
* - Returns "" for an invalid `value`, an invalid `field`, or an `amount` that is not a finite number.
|
|
24
20
|
*
|
|
25
21
|
* @param value ISO PlainDate string
|
|
26
22
|
* @param field the field to cycle: "year" | "month" | "day"
|
|
27
23
|
* @param amount signed amount to cycle by
|
|
28
|
-
* @param options
|
|
24
|
+
* @param options How the field is stepped and an out-of-range day is handled
|
|
29
25
|
* @returns ISO PlainDate string with `field` cycled, or "" on invalid input
|
|
30
26
|
*
|
|
31
27
|
* @example cycleDate("2024-06-15", "month", 1) // "2024-07-15"
|
|
@@ -39,6 +35,19 @@ import type { DateCycleField, Overflow } from "../../types/index.js";
|
|
|
39
35
|
* @example cycleDate("invalid", "month", 1) // ""
|
|
40
36
|
*/
|
|
41
37
|
export declare function cycleDate(value: string, field: DateCycleField, amount: number, options?: {
|
|
38
|
+
/**
|
|
39
|
+
* Whether to step to a multiple of `amount` instead of adding it. `true` moves to the next
|
|
40
|
+
* multiple in the direction of the sign of `amount` (the ceiling for a positive amount, the
|
|
41
|
+
* floor for a negative one), not to the nearest one; `false` adds `amount`.
|
|
42
|
+
*
|
|
43
|
+
* @defaultValue `false`
|
|
44
|
+
*/
|
|
42
45
|
round?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* What to do when the cycled `month` or `year` leaves `day` past the end of its month.
|
|
48
|
+
* `"constrain"` clamps `day` to the last day of that month; `"reject"` returns `""`.
|
|
49
|
+
*
|
|
50
|
+
* @defaultValue `"constrain"`, Temporal's default.
|
|
51
|
+
*/
|
|
43
52
|
overflow?: Overflow;
|
|
44
53
|
}): string;
|
|
@@ -12,24 +12,20 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
12
12
|
* overflow into January of the *next* year. Reach for `addDate` when you want calendar
|
|
13
13
|
* arithmetic; reach for `cycleDate` when a single field (e.g. a datepicker segment) must stay
|
|
14
14
|
* isolated from the others.
|
|
15
|
-
* - `year` has no upper/lower wrap — cycling it is plain addition (or
|
|
15
|
+
* - `year` has no upper/lower wrap — cycling it is plain addition (or a step to a multiple, with
|
|
16
|
+
* `round`): `2022` by `+5` with `round: true` lands on `2025`, the next multiple of 5.
|
|
16
17
|
* `month` wraps `1–12`. `day` wraps `1`–the **current** month's day count, so cycling `day`
|
|
17
18
|
* never changes `month`.
|
|
18
19
|
* - Cycling `month` or `year` can still shift `day` via `overflow` — e.g. cycling `month` from a
|
|
19
20
|
* 31st into a shorter month clamps under the default `"constrain"` (or returns `""` under
|
|
20
21
|
* `"reject"`) exactly the way `setDate`'s own `.with()` call does; this is the same clamping
|
|
21
22
|
* `addDate`'s Jan 31 + 1 month case produces, not new behavior.
|
|
22
|
-
* - `options.round` does **not** round to the nearest increment — it steps to the *next* multiple
|
|
23
|
-
* of `amount` in the direction of its sign (ceiling for positive, floor for negative), matching
|
|
24
|
-
* `@internationalized/date`'s `CycleOptions.round`. E.g. cycling `year` `2022` by `+5` with
|
|
25
|
-
* `round: true` lands on `2025` (the next multiple of 5 above 2022), not `2020` (the nearest
|
|
26
|
-
* multiple).
|
|
27
23
|
* - Returns "" for an invalid `value`, an invalid `field`, or an `amount` that is not a finite number.
|
|
28
24
|
*
|
|
29
25
|
* @param value ISO PlainDate string
|
|
30
26
|
* @param field the field to cycle: "year" | "month" | "day"
|
|
31
27
|
* @param amount signed amount to cycle by
|
|
32
|
-
* @param options
|
|
28
|
+
* @param options How the field is stepped and an out-of-range day is handled
|
|
33
29
|
* @returns ISO PlainDate string with `field` cycled, or "" on invalid input
|
|
34
30
|
*
|
|
35
31
|
* @example cycleDate("2024-06-15", "month", 1) // "2024-07-15"
|
|
@@ -14,15 +14,12 @@ import type { DateTimeCycleField, Overflow } from "../../types/index.js";
|
|
|
14
14
|
* why).
|
|
15
15
|
* - Cycling `month` or `year` can still shift `day` via `overflow`, exactly as `setDateTime`'s
|
|
16
16
|
* `.with()` call does.
|
|
17
|
-
* - `options.round` steps to the *next* multiple of `amount` in the direction of its sign
|
|
18
|
-
* (ceiling for positive, floor for negative) — not the nearest one. See `cycleDate`/`cycleTime`'s
|
|
19
|
-
* docs for worked examples.
|
|
20
17
|
* - Returns "" for an invalid `value`, an invalid `field`, or an `amount` that is not a finite number.
|
|
21
18
|
*
|
|
22
19
|
* @param value ISO PlainDateTime string
|
|
23
20
|
* @param field the field to cycle: "year" | "month" | "day" | "hour" | "minute" | "second" | "millisecond" | "microsecond" | "nanosecond"
|
|
24
21
|
* @param amount signed amount to cycle by
|
|
25
|
-
* @param options
|
|
22
|
+
* @param options How the field is stepped and an out-of-range day is handled
|
|
26
23
|
* @returns ISO PlainDateTime string with `field` cycled, or "" on invalid input
|
|
27
24
|
*
|
|
28
25
|
* @example cycleDateTime("2024-06-15T09:30:00", "hour", 1) // "2024-06-15T10:30:00"
|
|
@@ -33,6 +30,19 @@ import type { DateTimeCycleField, Overflow } from "../../types/index.js";
|
|
|
33
30
|
* @example cycleDateTime("invalid", "hour", 1) // ""
|
|
34
31
|
*/
|
|
35
32
|
export declare function cycleDateTime(value: string, field: DateTimeCycleField, amount: number, options?: {
|
|
33
|
+
/**
|
|
34
|
+
* Whether to step to a multiple of `amount` instead of adding it. `true` moves to the next
|
|
35
|
+
* multiple in the direction of the sign of `amount` (the ceiling for a positive amount, the
|
|
36
|
+
* floor for a negative one), not to the nearest one; `false` adds `amount`.
|
|
37
|
+
*
|
|
38
|
+
* @defaultValue `false`
|
|
39
|
+
*/
|
|
36
40
|
round?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* What to do when the cycled `month` or `year` leaves `day` past the end of its month.
|
|
43
|
+
* `"constrain"` clamps `day` to the last day of that month; `"reject"` returns `""`.
|
|
44
|
+
*
|
|
45
|
+
* @defaultValue `"constrain"`, Temporal's default.
|
|
46
|
+
*/
|
|
37
47
|
overflow?: Overflow;
|
|
38
48
|
}): string;
|
|
@@ -18,15 +18,12 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
18
18
|
* why).
|
|
19
19
|
* - Cycling `month` or `year` can still shift `day` via `overflow`, exactly as `setDateTime`'s
|
|
20
20
|
* `.with()` call does.
|
|
21
|
-
* - `options.round` steps to the *next* multiple of `amount` in the direction of its sign
|
|
22
|
-
* (ceiling for positive, floor for negative) — not the nearest one. See `cycleDate`/`cycleTime`'s
|
|
23
|
-
* docs for worked examples.
|
|
24
21
|
* - Returns "" for an invalid `value`, an invalid `field`, or an `amount` that is not a finite number.
|
|
25
22
|
*
|
|
26
23
|
* @param value ISO PlainDateTime string
|
|
27
24
|
* @param field the field to cycle: "year" | "month" | "day" | "hour" | "minute" | "second" | "millisecond" | "microsecond" | "nanosecond"
|
|
28
25
|
* @param amount signed amount to cycle by
|
|
29
|
-
* @param options
|
|
26
|
+
* @param options How the field is stepped and an out-of-range day is handled
|
|
30
27
|
* @returns ISO PlainDateTime string with `field` cycled, or "" on invalid input
|
|
31
28
|
*
|
|
32
29
|
* @example cycleDateTime("2024-06-15T09:30:00", "hour", 1) // "2024-06-15T10:30:00"
|
|
@@ -9,10 +9,8 @@ import type { TimeCycleField } from "../../types/index.js";
|
|
|
9
9
|
* is no ISO representation for "this hour, but staying AM" to round-trip through GMT's string
|
|
10
10
|
* contract.
|
|
11
11
|
* - `minute`/`second` wrap `0–59`; `millisecond`/`microsecond`/`nanosecond` wrap `0–999`.
|
|
12
|
-
* - `
|
|
13
|
-
*
|
|
14
|
-
* `@internationalized/date`'s `CycleOptions.round`. E.g. cycling minute `22` by `+15` with
|
|
15
|
-
* `round: true` lands on `30` (the next multiple of 15 above 22), not `15` (the nearest one).
|
|
12
|
+
* - With `round: true`, minute `22` by `+15` lands on `30`, the next multiple of 15 above 22, not
|
|
13
|
+
* on `15`, the nearest one.
|
|
16
14
|
* - There is no `overflow` option (removed in 1.16.0): time fields don't share bounds the way `day`
|
|
17
15
|
* shares a month with `month`/`year`, so the wrapped value is always already valid and there is
|
|
18
16
|
* nothing to constrain or reject.
|
|
@@ -21,7 +19,7 @@ import type { TimeCycleField } from "../../types/index.js";
|
|
|
21
19
|
* @param value ISO PlainTime string
|
|
22
20
|
* @param field the field to cycle: "hour" | "minute" | "second" | "millisecond" | "microsecond" | "nanosecond"
|
|
23
21
|
* @param amount signed amount to cycle by
|
|
24
|
-
* @param options
|
|
22
|
+
* @param options How the field is stepped
|
|
25
23
|
* @returns ISO PlainTime string with `field` cycled, or "" on invalid input
|
|
26
24
|
*
|
|
27
25
|
* @example cycleTime("09:30:00", "hour", 1) // "10:30:00"
|
|
@@ -32,5 +30,12 @@ import type { TimeCycleField } from "../../types/index.js";
|
|
|
32
30
|
* @example cycleTime("invalid", "hour", 1) // ""
|
|
33
31
|
*/
|
|
34
32
|
export declare function cycleTime(value: string, field: TimeCycleField, amount: number, options?: {
|
|
33
|
+
/**
|
|
34
|
+
* Whether to step to a multiple of `amount` instead of adding it. `true` moves to the next
|
|
35
|
+
* multiple in the direction of the sign of `amount` (the ceiling for a positive amount, the
|
|
36
|
+
* floor for a negative one), not to the nearest one; `false` adds `amount`.
|
|
37
|
+
*
|
|
38
|
+
* @defaultValue `false`
|
|
39
|
+
*/
|
|
35
40
|
round?: boolean;
|
|
36
41
|
}): string;
|
|
@@ -13,10 +13,8 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
13
13
|
* is no ISO representation for "this hour, but staying AM" to round-trip through GMT's string
|
|
14
14
|
* contract.
|
|
15
15
|
* - `minute`/`second` wrap `0–59`; `millisecond`/`microsecond`/`nanosecond` wrap `0–999`.
|
|
16
|
-
* - `
|
|
17
|
-
*
|
|
18
|
-
* `@internationalized/date`'s `CycleOptions.round`. E.g. cycling minute `22` by `+15` with
|
|
19
|
-
* `round: true` lands on `30` (the next multiple of 15 above 22), not `15` (the nearest one).
|
|
16
|
+
* - With `round: true`, minute `22` by `+15` lands on `30`, the next multiple of 15 above 22, not
|
|
17
|
+
* on `15`, the nearest one.
|
|
20
18
|
* - There is no `overflow` option (removed in 1.16.0): time fields don't share bounds the way `day`
|
|
21
19
|
* shares a month with `month`/`year`, so the wrapped value is always already valid and there is
|
|
22
20
|
* nothing to constrain or reject.
|
|
@@ -25,7 +23,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
25
23
|
* @param value ISO PlainTime string
|
|
26
24
|
* @param field the field to cycle: "hour" | "minute" | "second" | "millisecond" | "microsecond" | "nanosecond"
|
|
27
25
|
* @param amount signed amount to cycle by
|
|
28
|
-
* @param options
|
|
26
|
+
* @param options How the field is stepped
|
|
29
27
|
* @returns ISO PlainTime string with `field` cycled, or "" on invalid input
|
|
30
28
|
*
|
|
31
29
|
* @example cycleTime("09:30:00", "hour", 1) // "10:30:00"
|
|
@@ -34,7 +34,7 @@ import type { DateDurationUnit, RoundingOptions } from "../../types/index.js";
|
|
|
34
34
|
* @param date2 ISO PlainDate string for the end, optionally calendar-annotated
|
|
35
35
|
* @param unitArg date unit or units to measure the difference, singular or plural (`"day"` or
|
|
36
36
|
* `"days"`); a record result keeps the plural keys
|
|
37
|
-
* @param options optional:
|
|
37
|
+
* @param options optional: how the difference is rounded; a non-object value (such as `null`) is invalid
|
|
38
38
|
* @returns numeric difference in the requested unit, or null on invalid input
|
|
39
39
|
*
|
|
40
40
|
* @example diffDate("2024-03-10", "2024-03-15", "days") // 5
|
|
@@ -38,7 +38,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
38
38
|
* @param date2 ISO PlainDate string for the end, optionally calendar-annotated
|
|
39
39
|
* @param unitArg date unit or units to measure the difference, singular or plural (`"day"` or
|
|
40
40
|
* `"days"`); a record result keeps the plural keys
|
|
41
|
-
* @param options optional:
|
|
41
|
+
* @param options optional: how the difference is rounded; a non-object value (such as `null`) is invalid
|
|
42
42
|
* @returns numeric difference in the requested unit, or null on invalid input
|
|
43
43
|
*
|
|
44
44
|
* @example diffDate("2024-03-10", "2024-03-15", "days") // 5
|
|
@@ -27,7 +27,7 @@ import type { DateDurationUnit, DurationStringOptions, RoundingOptions } from ".
|
|
|
27
27
|
* @param date1 ISO PlainDate string for the start, optionally calendar-annotated
|
|
28
28
|
* @param date2 ISO PlainDate string for the end, optionally calendar-annotated
|
|
29
29
|
* @param unit date unit, singular or plural (`"day"` or `"days"`), to use as the duration's largestUnit
|
|
30
|
-
* @param options optional:
|
|
30
|
+
* @param options optional: how the difference is rounded and how the string is rendered; a non-object value (such as `null`) is invalid
|
|
31
31
|
* @returns ISO 8601 duration string, or "" on invalid input
|
|
32
32
|
*
|
|
33
33
|
* @example diffDateAsDuration("2024-03-10", "2024-04-05", "days") // "P26D"
|
|
@@ -29,7 +29,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
29
29
|
* @param date1 ISO PlainDate string for the start, optionally calendar-annotated
|
|
30
30
|
* @param date2 ISO PlainDate string for the end, optionally calendar-annotated
|
|
31
31
|
* @param unit date unit, singular or plural (`"day"` or `"days"`), to use as the duration's largestUnit
|
|
32
|
-
* @param options optional:
|
|
32
|
+
* @param options optional: how the difference is rounded and how the string is rendered; a non-object value (such as `null`) is invalid
|
|
33
33
|
* @returns ISO 8601 duration string, or "" on invalid input
|
|
34
34
|
*
|
|
35
35
|
* @example diffDateAsDuration("2024-03-10", "2024-04-05", "days") // "P26D"
|
|
@@ -27,7 +27,7 @@ import type { DateTimeDurationUnit, RoundingOptions } from "../../types/index.js
|
|
|
27
27
|
* @param dateTime1 ISO PlainDateTime string for the start
|
|
28
28
|
* @param dateTime2 ISO PlainDateTime string for the end
|
|
29
29
|
* @param units DateTimeDurationUnit | DateTimeDurationUnit[] to measure the difference
|
|
30
|
-
* @param options optional:
|
|
30
|
+
* @param options optional: how the difference is rounded; a non-object value (such as `null`) is invalid
|
|
31
31
|
* @returns numeric difference in the requested unit, or null on invalid input
|
|
32
32
|
*
|
|
33
33
|
* @example diffDateTime("2024-03-10T12:00:00", "2024-03-15T12:00:00", "days") // 5
|
|
@@ -33,7 +33,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
33
33
|
* @param dateTime1 ISO PlainDateTime string for the start
|
|
34
34
|
* @param dateTime2 ISO PlainDateTime string for the end
|
|
35
35
|
* @param units DateTimeDurationUnit | DateTimeDurationUnit[] to measure the difference
|
|
36
|
-
* @param options optional:
|
|
36
|
+
* @param options optional: how the difference is rounded; a non-object value (such as `null`) is invalid
|
|
37
37
|
* @returns numeric difference in the requested unit, or null on invalid input
|
|
38
38
|
*
|
|
39
39
|
* @example diffDateTime("2024-03-10T12:00:00", "2024-03-15T12:00:00", "days") // 5
|
|
@@ -21,7 +21,7 @@ import type { DateTimeDurationUnit, DurationStringOptions, RoundingOptions } fro
|
|
|
21
21
|
* @param dateTime1 ISO PlainDateTime string for the start
|
|
22
22
|
* @param dateTime2 ISO PlainDateTime string for the end
|
|
23
23
|
* @param unit DateTimeDurationUnit to use as the duration's largestUnit
|
|
24
|
-
* @param options optional:
|
|
24
|
+
* @param options optional: how the difference is rounded and how the string is rendered; a non-object value (such as `null`) is invalid
|
|
25
25
|
* @returns ISO 8601 duration string, or "" on invalid input
|
|
26
26
|
*
|
|
27
27
|
* @example diffDateTimeAsDuration("2024-03-10T00:00:00", "2024-03-11T02:00:00", "days") // "P1DT2H"
|