@northguild/gmt 1.19.0 → 1.20.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 +12 -12
- package/dist/calendar/business/businessDaysBetween.d.ts +2 -2
- package/dist/calendar/business/businessDaysBetween.js +11 -35
- package/dist/calendar/business/mergeCalendars.d.ts +1 -1
- package/dist/calendar/business/mergeCalendars.js +8 -9
- package/dist/calendar/business/nextBusinessDay.d.ts +2 -2
- package/dist/calendar/business/nextBusinessDay.js +2 -2
- package/dist/calendar/business/previousBusinessDay.d.ts +2 -2
- package/dist/calendar/business/previousBusinessDay.js +2 -2
- package/dist/calendar/business/rollDate.d.ts +3 -3
- package/dist/calendar/business/rollDate.js +10 -43
- package/dist/calendar/calculate/bucketRange.d.ts +9 -9
- package/dist/calendar/calculate/bucketRange.js +9 -9
- package/dist/calendar/calculate/floorToZone.d.ts +2 -2
- package/dist/calendar/calculate/floorToZone.js +1 -1
- package/dist/calendar/calculate/getFiscalPeriod.d.ts +50 -40
- package/dist/calendar/calculate/getFiscalPeriod.js +78 -57
- package/dist/calendar/calculate/getQuarter.d.ts +26 -21
- package/dist/calendar/calculate/getQuarter.js +48 -19
- package/dist/calendar/hours/addOperatingTime.d.ts +3 -3
- package/dist/calendar/hours/addOperatingTime.js +3 -3
- package/dist/calendar/hours/isOpenAt.d.ts +3 -3
- package/dist/calendar/hours/isOpenAt.js +3 -3
- package/dist/calendar/hours/nextCloseAt.d.ts +2 -2
- package/dist/calendar/hours/nextCloseAt.js +2 -2
- package/dist/calendar/hours/nextOpenAt.d.ts +3 -3
- package/dist/calendar/hours/nextOpenAt.js +3 -3
- package/dist/calendar/hours/operatingIntervals.d.ts +2 -2
- package/dist/calendar/hours/operatingIntervals.js +4 -6
- package/dist/calendar/hours/operatingTimeBetween.d.ts +3 -3
- package/dist/calendar/hours/operatingTimeBetween.js +6 -8
- package/dist/calendar/hours/recurringWindows.d.ts +5 -5
- package/dist/calendar/hours/recurringWindows.js +9 -10
- package/dist/calendar/index.d.ts +1 -1
- package/dist/calendar/index.js +2 -2
- package/dist/calendar/validate/index.d.ts +3 -0
- package/dist/calendar/validate/index.js +3 -0
- package/dist/calendar/validate/isValidFiscalCalendar.d.ts +23 -0
- package/dist/calendar/validate/isValidFiscalCalendar.js +44 -0
- package/dist/calendar/validate/isValidFiscalExtraWeek.d.ts +19 -0
- package/dist/calendar/validate/isValidFiscalExtraWeek.js +23 -0
- package/dist/calendar/validate/isValidFiscalPattern.d.ts +7 -7
- package/dist/calendar/validate/isValidFiscalPattern.js +7 -7
- package/dist/calendar/validate/isValidFiscalYearLabel.d.ts +20 -0
- package/dist/calendar/validate/isValidFiscalYearLabel.js +24 -0
- package/dist/calendar/validate/isValidRollConvention.js +2 -10
- package/dist/calendar/validate/isValidZoneBucketUnit.d.ts +1 -1
- package/dist/duration/calculate/absDuration.js +1 -1
- package/dist/duration/calculate/addDuration.js +1 -1
- package/dist/duration/calculate/durationFromUnits.js +1 -1
- package/dist/duration/calculate/getDurationSign.js +1 -1
- package/dist/duration/calculate/getDurationUnit.d.ts +1 -1
- package/dist/duration/calculate/getDurationUnit.js +1 -1
- package/dist/duration/calculate/negateDuration.js +1 -1
- package/dist/duration/calculate/subtractDuration.js +1 -1
- package/dist/duration/calculate/totalDuration.d.ts +4 -4
- package/dist/duration/calculate/totalDuration.js +4 -4
- package/dist/duration/calculate/totalUnits.js +1 -1
- package/dist/duration/compare/compareDurations.d.ts +3 -3
- package/dist/duration/compare/compareDurations.js +3 -3
- package/dist/duration/format/formatDuration.d.ts +9 -9
- package/dist/duration/format/formatDuration.js +14 -13
- package/dist/duration/index.d.ts +1 -1
- package/dist/duration/index.js +2 -2
- package/dist/duration/normalize/normalizeDuration.d.ts +3 -3
- package/dist/duration/normalize/normalizeDuration.js +3 -3
- package/dist/duration/parse/parseDuration.d.ts +1 -1
- package/dist/duration/parse/parseDuration.js +1 -1
- package/dist/duration/validate/isValidDuration.js +2 -11
- package/dist/gnss/convert/gnssToUtc.d.ts +24 -0
- package/dist/gnss/convert/gnssToUtc.js +39 -0
- package/dist/gnss/convert/gnssWeekToUtc.d.ts +53 -0
- package/dist/gnss/convert/gnssWeekToUtc.js +80 -0
- package/dist/gnss/convert/index.d.ts +6 -0
- package/dist/gnss/convert/index.js +6 -0
- package/dist/gnss/convert/rinexWeekToUtc.d.ts +34 -0
- package/dist/gnss/convert/rinexWeekToUtc.js +57 -0
- package/dist/gnss/convert/utcToGnss.d.ts +38 -0
- package/dist/gnss/convert/utcToGnss.js +53 -0
- package/dist/gnss/convert/utcToGnssWeek.d.ts +24 -0
- package/dist/gnss/convert/utcToGnssWeek.js +40 -0
- package/dist/gnss/convert/utcToRinexWeek.d.ts +19 -0
- package/dist/gnss/convert/utcToRinexWeek.js +45 -0
- package/dist/gnss/index.d.ts +2 -0
- package/dist/gnss/index.js +3 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.js +4 -2
- package/dist/instant/convert/classifyLocal.d.ts +4 -4
- package/dist/instant/convert/classifyLocal.js +8 -19
- package/dist/instant/convert/fromOffsetInstant.d.ts +4 -4
- package/dist/instant/convert/fromOffsetInstant.js +5 -5
- package/dist/instant/convert/resolveLocal.d.ts +9 -9
- package/dist/instant/convert/resolveLocal.js +9 -9
- package/dist/instant/convert/toOffsetInstant.d.ts +11 -11
- package/dist/instant/convert/toOffsetInstant.js +11 -28
- package/dist/instant/index.d.ts +1 -1
- package/dist/instant/index.js +2 -2
- package/dist/instant/validate/isValidUtcOffset.d.ts +1 -1
- package/dist/instant/validate/isValidUtcOffset.js +1 -1
- package/dist/intermodal/calculate/billingTimeline.js +1 -1
- package/dist/intermodal/calculate/chargeableDays.d.ts +12 -12
- package/dist/intermodal/calculate/chargeableDays.js +17 -16
- package/dist/intermodal/calculate/demurrageClock.d.ts +1 -1
- package/dist/intermodal/calculate/demurrageClock.js +2 -2
- package/dist/intermodal/calculate/freeTimeExpiry.d.ts +10 -10
- package/dist/intermodal/calculate/freeTimeExpiry.js +19 -15
- package/dist/intermodal/calculate/multimodalETA.d.ts +1 -1
- package/dist/intermodal/calculate/multimodalETA.js +2 -2
- package/dist/intermodal/format/bolTimestamp.d.ts +6 -6
- package/dist/intermodal/format/bolTimestamp.js +6 -6
- package/dist/intermodal/format/formatEpcisEvent.d.ts +1 -1
- package/dist/intermodal/format/formatEpcisEvent.js +2 -2
- package/dist/intermodal/index.d.ts +1 -1
- package/dist/intermodal/index.js +2 -2
- package/dist/intermodal/parse/parseEpcisEvent.js +1 -1
- package/dist/intermodal/validate/isValidEpcisEventTime.js +1 -1
- package/dist/internal/advanceToWeekday.d.ts +1 -1
- package/dist/internal/businessCalendar.d.ts +28 -12
- package/dist/internal/businessCalendar.js +129 -118
- package/dist/internal/businessDayValues.js +1 -1
- package/dist/internal/calendarDatePairPolicy.d.ts +1 -1
- package/dist/internal/calendarDateString.d.ts +1 -1
- package/dist/internal/calendarDateString.js +1 -1
- package/dist/internal/calendarSystemIds.js +1 -1
- package/dist/internal/calendarValueOfDate.js +1 -1
- package/dist/internal/calendarZonedPairPolicy.d.ts +1 -1
- package/dist/internal/calendarZonedString.d.ts +3 -3
- package/dist/internal/calendarZonedString.js +4 -4
- package/dist/internal/compareUnixEpochs.js +1 -1
- package/dist/internal/cutoffAtResolved.d.ts +62 -0
- package/dist/internal/cutoffAtResolved.js +162 -0
- package/dist/internal/cycleFieldValue.d.ts +0 -2
- package/dist/internal/cycleFieldValue.js +0 -2
- package/dist/internal/dateTimeUnitHelpers.d.ts +1 -1
- package/dist/internal/dateUnitHelpers.d.ts +1 -1
- package/dist/internal/daylightTime.d.ts +1 -1
- package/dist/internal/differenceRecord.d.ts +1 -1
- package/dist/internal/durationUntilString.d.ts +1 -1
- package/dist/internal/durationUntilString.js +1 -1
- package/dist/internal/dutyEngine.d.ts +6 -6
- package/dist/internal/dutyEngine.js +206 -197
- package/dist/internal/dutyPeriods.d.ts +1 -1
- package/dist/internal/dutyPeriods.js +8 -2
- package/dist/internal/dutyRules.d.ts +2 -1
- package/dist/internal/dutyRules.js +1 -1
- package/dist/internal/dutyRunIndex.d.ts +150 -0
- package/dist/internal/dutyRunIndex.js +398 -0
- package/dist/internal/earlierOccurrence.d.ts +41 -0
- package/dist/internal/earlierOccurrence.js +57 -0
- package/dist/internal/ediDateTimeFields.js +1 -1
- package/dist/internal/ediDateTimeWriter.js +1 -1
- package/dist/internal/englishCalendarNames.d.ts +1 -1
- package/dist/internal/epochDay.d.ts +41 -0
- package/dist/internal/epochDay.js +129 -0
- package/dist/internal/exactDuration.js +1 -1
- package/dist/internal/exactMoment.d.ts +4 -4
- package/dist/internal/exactMoment.js +5 -5
- package/dist/internal/fiscalCalendar.d.ts +41 -7
- package/dist/internal/fiscalCalendar.js +77 -9
- package/dist/internal/foreignEpochs.d.ts +5 -0
- package/dist/internal/foreignEpochs.js +5 -0
- package/dist/internal/formatCalendarDays.d.ts +4 -4
- package/dist/internal/formatCalendarDays.js +6 -5
- package/dist/internal/formatDateInCalendar.d.ts +1 -1
- package/dist/internal/formatRelativeDuration.d.ts +7 -7
- package/dist/internal/formatRelativeDuration.js +8 -7
- package/dist/internal/formatterCache.d.ts +40 -0
- package/dist/internal/formatterCache.js +181 -0
- package/dist/internal/freeTimeLedger.d.ts +31 -43
- package/dist/internal/freeTimeLedger.js +322 -30
- package/dist/internal/getLocaleWeekYearBounds.d.ts +1 -1
- package/dist/internal/gnssTimeScales.d.ts +53 -0
- package/dist/internal/gnssTimeScales.js +128 -0
- package/dist/internal/gnssWeek.d.ts +92 -0
- package/dist/internal/gnssWeek.js +212 -0
- package/dist/internal/halfOpenIntervals.d.ts +1 -1
- package/dist/internal/halfOpenIntervals.js +1 -1
- package/dist/internal/hasCalendarAnnotation.d.ts +3 -3
- package/dist/internal/hasCalendarAnnotation.js +3 -3
- package/dist/internal/hourDurationString.js +1 -1
- package/dist/internal/httpDateFields.js +1 -1
- package/dist/internal/index.d.ts +9 -3
- package/dist/internal/index.js +9 -3
- package/dist/internal/inputChecks.d.ts +53 -0
- package/dist/internal/inputChecks.js +132 -0
- package/dist/internal/instantFormatOptions.d.ts +1 -1
- package/dist/internal/instantFormatOptions.js +4 -8
- package/dist/internal/instantIntervalText.js +1 -1
- package/dist/internal/instantNanoseconds.d.ts +2 -2
- package/dist/internal/instantNanoseconds.js +2 -2
- package/dist/internal/intervalCountHelpers.d.ts +1 -1
- package/dist/internal/isoStringBody.d.ts +2 -2
- package/dist/internal/isoStringBody.js +2 -2
- package/dist/internal/joinDateTimeConnector.js +3 -2
- package/dist/internal/leapSeconds.d.ts +63 -0
- package/dist/internal/leapSeconds.js +162 -0
- package/dist/internal/localeWeekInfo.d.ts +1 -1
- package/dist/internal/localeWeekInfo.js +1 -1
- package/dist/internal/monthGridWeekRow.d.ts +1 -1
- package/dist/internal/normalizeDateTime.d.ts +2 -1
- package/dist/internal/normalizeDateTime.js +3 -2
- package/dist/internal/normalizeTimeZone.d.ts +1 -1
- package/dist/internal/normalizeTimeZone.js +1 -1
- package/dist/internal/offsetTimeline.d.ts +56 -0
- package/dist/internal/offsetTimeline.js +166 -0
- package/dist/internal/operatingSchedule.d.ts +28 -32
- package/dist/internal/operatingSchedule.js +538 -176
- package/dist/internal/patternToken.js +10 -7
- package/dist/internal/plainDateAdd.d.ts +1 -1
- package/dist/internal/plainDateAdd.js +1 -1
- package/dist/internal/plainDateUntil.d.ts +1 -1
- package/dist/internal/plainDateUntil.js +1 -1
- package/dist/internal/readSetFields.js +1 -1
- package/dist/internal/resolveDurationRelativeTo.d.ts +1 -1
- package/dist/internal/resolveDurationRelativeTo.js +1 -1
- package/dist/internal/resolveLocale.d.ts +2 -2
- package/dist/internal/resolveLocale.js +2 -2
- package/dist/internal/resolveManualRoundingOptions.d.ts +1 -1
- package/dist/internal/resolveUnixIntervalPair.d.ts +1 -1
- package/dist/internal/rinexWeek.d.ts +22 -0
- package/dist/internal/rinexWeek.js +30 -0
- package/dist/internal/rollBusinessDate.d.ts +15 -0
- package/dist/internal/rollBusinessDate.js +46 -0
- package/dist/internal/splitStep.d.ts +1 -1
- package/dist/internal/splitStep.js +1 -1
- package/dist/internal/startOrEndOfUnix.d.ts +1 -1
- package/dist/internal/startOrEndOfUtc.d.ts +1 -1
- package/dist/internal/startOrEndOfUtc.js +1 -1
- package/dist/internal/startOrEndOfZoned.d.ts +1 -1
- package/dist/internal/temporal.d.ts +5 -0
- package/dist/internal/temporal.js +5 -0
- package/dist/internal/temporalCompat/calendarDateArithmetic.d.ts +1 -1
- package/dist/internal/temporalCompat/calendarDateFromFields.d.ts +1 -1
- package/dist/internal/temporalCompat/calendarDateFromFields.js +1 -1
- package/dist/internal/temporalCompat/calendarFields.d.ts +1 -1
- package/dist/internal/temporalCompat/capabilities.d.ts +27 -5
- package/dist/internal/temporalCompat/capabilities.js +28 -4
- package/dist/internal/temporalCompat/fieldSearch.d.ts +1 -1
- package/dist/internal/temporalCompat/fieldSearch.js +1 -1
- package/dist/internal/temporalCompat/fixedDay.d.ts +1 -1
- package/dist/internal/temporalCompat/fixedDay.js +1 -1
- package/dist/internal/temporalCompat/index.d.ts +1 -1
- package/dist/internal/temporalCompat/index.js +1 -1
- package/dist/internal/temporalCompat/largeMonthSpan.js +1 -1
- package/dist/internal/temporalCompat/nonIsoArithmetic.d.ts +1 -1
- package/dist/internal/temporalCompat/nonIsoArithmetic.js +1 -1
- package/dist/internal/temporalCompat/probeRepros.d.ts +35 -0
- package/dist/internal/temporalCompat/probeRepros.js +571 -0
- package/dist/internal/temporalCompat/readArithmeticModel.js +2 -2
- package/dist/internal/temporalCompat/repros.d.ts +3 -10
- package/dist/internal/temporalCompat/repros.js +13 -520
- package/dist/internal/timeScaleString.d.ts +47 -0
- package/dist/internal/timeScaleString.js +86 -0
- package/dist/internal/toInstantFromUtc.d.ts +1 -1
- package/dist/internal/toInstantFromUtc.js +1 -1
- package/dist/internal/unixEpochValue.d.ts +1 -1
- package/dist/internal/unixEpochValue.js +1 -1
- package/dist/internal/unixFormatReference.d.ts +1 -1
- package/dist/internal/unixFormatReference.js +1 -1
- package/dist/internal/unixWallClock.d.ts +1 -1
- package/dist/internal/utcOffsetString.d.ts +16 -0
- package/dist/internal/utcOffsetString.js +31 -1
- package/dist/internal/utcReading.d.ts +59 -0
- package/dist/internal/utcReading.js +113 -0
- package/dist/internal/utcWallClock.d.ts +1 -1
- package/dist/internal/utcWallClock.js +1 -1
- package/dist/internal/validatedZones.d.ts +20 -0
- package/dist/internal/validatedZones.js +33 -0
- package/dist/internal/wallClockAtOffset.d.ts +1 -1
- package/dist/internal/yearWindowStart.js +1 -1
- package/dist/internal/zoneBucketCap.d.ts +1 -1
- package/dist/internal/zoneBucketCap.js +2 -2
- package/dist/internal/zoneFrame.d.ts +4 -4
- package/dist/internal/zoneFrame.js +4 -4
- package/dist/internal/zonedBucket.d.ts +2 -2
- package/dist/internal/zonedBucket.js +92 -21
- package/dist/internal/zonedFormatReference.d.ts +1 -1
- package/dist/internal/zonedFormatReference.js +1 -1
- package/dist/internal/zonedLocalDates.d.ts +1 -1
- package/dist/internal/zonedLocalDates.js +22 -19
- package/dist/internal/zonedNowUnitValue.d.ts +1 -1
- package/dist/internal/zonedNowUnitValue.js +1 -1
- package/dist/internal/zonedTransitionSearch.d.ts +2 -0
- package/dist/internal/zonedTransitionSearch.js +165 -16
- package/dist/internal/zonedWallClock.d.ts +15 -4
- package/dist/internal/zonedWallClock.js +34 -6
- package/dist/internal/zonedWallClockDifference.d.ts +1 -1
- package/dist/internal/zonedWallClockDifference.js +2 -2
- package/dist/internal/zonedWallClockOperations.d.ts +2 -2
- package/dist/internal/zonedWallClockOperations.js +51 -6
- package/dist/internal/zonelessCalendarDate.d.ts +1 -1
- package/dist/internal/zonelessCalendarDate.js +1 -1
- package/dist/interval/index.d.ts +1 -1
- package/dist/interval/index.js +2 -2
- package/dist/plain/calculate/addBusinessDays.d.ts +2 -2
- package/dist/plain/calculate/addBusinessDays.js +2 -2
- package/dist/plain/calculate/addDateTime.js +1 -1
- package/dist/plain/calculate/addTime.js +1 -1
- package/dist/plain/calculate/clampDate.js +1 -1
- package/dist/plain/calculate/closestDateTo.js +1 -1
- package/dist/plain/calculate/cycleDate.js +1 -1
- package/dist/plain/calculate/cycleDateTime.js +1 -1
- package/dist/plain/calculate/cycleTime.js +1 -1
- package/dist/plain/calculate/diffDate.d.ts +1 -1
- package/dist/plain/calculate/diffDateAsDuration.d.ts +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 +1 -1
- package/dist/plain/calculate/endOfDate.js +1 -1
- package/dist/plain/calculate/endOfDateTime.d.ts +1 -1
- package/dist/plain/calculate/endOfDateTime.js +1 -1
- package/dist/plain/calculate/endOfQuarterForDate.js +1 -1
- package/dist/plain/calculate/endOfQuarterForDateTime.js +1 -1
- package/dist/plain/calculate/endOfTime.d.ts +1 -1
- package/dist/plain/calculate/endOfTime.js +1 -1
- package/dist/plain/calculate/getDayOfYear.js +1 -1
- package/dist/plain/calculate/getDaysInMonth.js +1 -1
- package/dist/plain/calculate/getDaysInYear.js +1 -1
- package/dist/plain/calculate/getLargestDateDurationUnit.d.ts +1 -1
- package/dist/plain/calculate/getLargestDateTimeDurationUnit.d.ts +1 -1
- package/dist/plain/calculate/getLargestTimeDurationUnit.d.ts +1 -1
- package/dist/plain/calculate/getLocaleDayOfWeek.d.ts +6 -6
- package/dist/plain/calculate/getLocaleDayOfWeek.js +7 -7
- package/dist/plain/calculate/getLocaleEndOfWeek.d.ts +4 -4
- package/dist/plain/calculate/getLocaleEndOfWeek.js +5 -5
- package/dist/plain/calculate/getLocaleStartOfWeek.d.ts +5 -5
- package/dist/plain/calculate/getLocaleStartOfWeek.js +6 -6
- package/dist/plain/calculate/getLocaleWeekYear.d.ts +10 -10
- package/dist/plain/calculate/getLocaleWeekYear.js +11 -11
- package/dist/plain/calculate/getQuarterForDate.js +1 -1
- package/dist/plain/calculate/getQuarterForDateTime.js +1 -1
- package/dist/plain/calculate/getWeekNumber.js +1 -1
- package/dist/plain/calculate/getWeekOfMonth.d.ts +10 -14
- package/dist/plain/calculate/getWeekOfMonth.js +11 -15
- package/dist/plain/calculate/getWeekYear.js +1 -1
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +7 -7
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +8 -8
- package/dist/plain/calculate/getWeeksInMonth.d.ts +8 -11
- package/dist/plain/calculate/getWeeksInMonth.js +9 -12
- package/dist/plain/calculate/getWeeksInYear.js +1 -1
- package/dist/plain/calculate/maxDate.js +1 -1
- package/dist/plain/calculate/maxDateTime.js +1 -1
- package/dist/plain/calculate/maxTime.js +1 -1
- package/dist/plain/calculate/minDate.js +1 -1
- package/dist/plain/calculate/minDateTime.js +1 -1
- package/dist/plain/calculate/minTime.js +1 -1
- package/dist/plain/calculate/nextWeekday.d.ts +14 -12
- package/dist/plain/calculate/nextWeekday.js +15 -13
- package/dist/plain/calculate/previousWeekday.d.ts +14 -12
- package/dist/plain/calculate/previousWeekday.js +15 -13
- package/dist/plain/calculate/roundDate.d.ts +1 -1
- package/dist/plain/calculate/roundDate.js +1 -1
- package/dist/plain/calculate/roundDateTime.d.ts +1 -1
- package/dist/plain/calculate/roundDateTime.js +1 -1
- package/dist/plain/calculate/roundTime.d.ts +1 -1
- package/dist/plain/calculate/roundTime.js +1 -1
- package/dist/plain/calculate/setDate.d.ts +1 -1
- package/dist/plain/calculate/setDate.js +1 -1
- package/dist/plain/calculate/setDateTime.d.ts +1 -1
- package/dist/plain/calculate/setDateTime.js +1 -1
- package/dist/plain/calculate/setTime.d.ts +1 -1
- package/dist/plain/calculate/setTime.js +1 -1
- package/dist/plain/calculate/sortDateTimes.js +1 -1
- package/dist/plain/calculate/sortDates.js +1 -1
- package/dist/plain/calculate/sortTimes.js +1 -1
- package/dist/plain/calculate/startOfDate.d.ts +1 -1
- package/dist/plain/calculate/startOfDate.js +1 -1
- package/dist/plain/calculate/startOfDateTime.d.ts +1 -1
- package/dist/plain/calculate/startOfDateTime.js +1 -1
- package/dist/plain/calculate/startOfQuarterForDate.js +1 -1
- package/dist/plain/calculate/startOfQuarterForDateTime.js +1 -1
- package/dist/plain/calculate/startOfTime.d.ts +1 -1
- package/dist/plain/calculate/startOfTime.js +1 -1
- package/dist/plain/calculate/subtractBusinessDays.d.ts +2 -2
- package/dist/plain/calculate/subtractBusinessDays.js +2 -2
- package/dist/plain/calculate/subtractDate.js +1 -1
- package/dist/plain/calculate/subtractDateTime.js +1 -1
- package/dist/plain/calculate/subtractTime.js +1 -1
- package/dist/plain/calculate/weekOfYearForDate.js +1 -1
- package/dist/plain/calculate/weekOfYearForDateTime.js +1 -1
- package/dist/plain/chop/chopDate.js +1 -1
- package/dist/plain/chop/chopMilliseconds.js +1 -1
- package/dist/plain/chop/chopSeconds.js +1 -1
- package/dist/plain/chop/chopTime.js +1 -1
- package/dist/plain/compare/areDateTimesEqual.js +1 -1
- package/dist/plain/compare/areDateTimesEqualBy.d.ts +2 -4
- package/dist/plain/compare/areDateTimesEqualBy.js +2 -4
- package/dist/plain/compare/areDatesEqual.js +1 -1
- package/dist/plain/compare/areDatesEqualBy.d.ts +5 -5
- package/dist/plain/compare/areDatesEqualBy.js +5 -5
- package/dist/plain/compare/areTimesEqual.js +1 -1
- package/dist/plain/compare/isAfterDate.js +1 -1
- package/dist/plain/compare/isAfterDateTime.js +1 -1
- package/dist/plain/compare/isAfterTime.js +1 -1
- package/dist/plain/compare/isBeforeDate.js +1 -1
- package/dist/plain/compare/isBeforeDateTime.js +1 -1
- package/dist/plain/compare/isBeforeTime.js +1 -1
- package/dist/plain/compare/isBetweenDate.js +1 -1
- package/dist/plain/compare/isBetweenDateTime.js +1 -1
- package/dist/plain/compare/isBetweenTime.js +1 -1
- package/dist/plain/compare/isBusinessDay.d.ts +2 -2
- package/dist/plain/compare/isBusinessDay.js +3 -3
- package/dist/plain/compare/isRelativeDay.d.ts +1 -1
- package/dist/plain/compare/isRelativeDay.js +1 -1
- package/dist/plain/compare/isThisUnit.d.ts +8 -6
- package/dist/plain/compare/isThisUnit.js +7 -5
- package/dist/plain/compare/isWeekend.d.ts +5 -5
- package/dist/plain/compare/isWeekend.js +6 -6
- package/dist/plain/format/formatCalendar.d.ts +3 -5
- package/dist/plain/format/formatCalendar.js +10 -9
- package/dist/plain/format/formatDate.d.ts +4 -4
- package/dist/plain/format/formatDate.js +8 -7
- package/dist/plain/format/formatDateRange.d.ts +4 -4
- package/dist/plain/format/formatDateRange.js +8 -7
- package/dist/plain/format/formatDateTime.d.ts +4 -4
- package/dist/plain/format/formatDateTime.js +8 -7
- package/dist/plain/format/formatDateTimeRange.d.ts +4 -4
- package/dist/plain/format/formatDateTimeRange.js +8 -7
- package/dist/plain/format/formatDateTimeToParts.d.ts +6 -6
- package/dist/plain/format/formatDateTimeToParts.js +10 -9
- package/dist/plain/format/formatDateToParts.d.ts +6 -6
- package/dist/plain/format/formatDateToParts.js +10 -9
- package/dist/plain/format/formatRelativeDate.d.ts +3 -3
- package/dist/plain/format/formatRelativeDate.js +4 -4
- package/dist/plain/format/formatRelativeDateTime.d.ts +3 -3
- package/dist/plain/format/formatRelativeDateTime.js +4 -4
- package/dist/plain/format/formatRelativeTime.d.ts +3 -3
- package/dist/plain/format/formatRelativeTime.js +4 -4
- package/dist/plain/format/formatSqlDateTime.js +1 -1
- package/dist/plain/format/formatTime.d.ts +4 -4
- package/dist/plain/format/formatTime.js +8 -7
- package/dist/plain/get/getDay.js +1 -1
- package/dist/plain/get/getDayOfWeek.js +1 -1
- package/dist/plain/get/getHour.js +1 -1
- package/dist/plain/get/getMicrosecond.js +1 -1
- package/dist/plain/get/getMillisecond.js +1 -1
- package/dist/plain/get/getMinute.js +1 -1
- package/dist/plain/get/getMonth.js +1 -1
- package/dist/plain/get/getNanosecond.js +1 -1
- package/dist/plain/get/getNow.js +1 -1
- package/dist/plain/get/getNowUnit.js +1 -1
- package/dist/plain/get/getSecond.js +1 -1
- package/dist/plain/get/getToday.js +1 -1
- package/dist/plain/get/getWeekOfYear.js +1 -1
- package/dist/plain/get/getYear.js +1 -1
- package/dist/plain/index.d.ts +1 -1
- package/dist/plain/index.js +2 -2
- package/dist/plain/interval/intervalAbutsDate.d.ts +1 -2
- package/dist/plain/interval/intervalAbutsDate.js +2 -3
- package/dist/plain/interval/intervalAbutsDateTime.js +1 -1
- package/dist/plain/interval/intervalAbutsTime.js +1 -1
- package/dist/plain/interval/intervalContainsDate.d.ts +1 -1
- package/dist/plain/interval/intervalContainsDate.js +2 -2
- package/dist/plain/interval/intervalContainsDateTime.js +1 -1
- package/dist/plain/interval/intervalContainsTime.js +1 -1
- package/dist/plain/interval/intervalCountDate.js +1 -1
- package/dist/plain/interval/intervalCountDateTime.js +1 -1
- package/dist/plain/interval/intervalCountTime.js +1 -1
- package/dist/plain/interval/intervalDifferenceDate.d.ts +1 -1
- package/dist/plain/interval/intervalDifferenceDate.js +2 -2
- package/dist/plain/interval/intervalDifferenceDateTime.js +1 -1
- package/dist/plain/interval/intervalDifferenceTime.js +1 -1
- package/dist/plain/interval/intervalDivideEquallyDate.d.ts +3 -3
- package/dist/plain/interval/intervalDivideEquallyDate.js +3 -3
- package/dist/plain/interval/intervalDivideEquallyDateTime.js +1 -1
- package/dist/plain/interval/intervalDivideEquallyTime.js +1 -1
- package/dist/plain/interval/intervalEngulfsDate.d.ts +1 -1
- package/dist/plain/interval/intervalEngulfsDate.js +2 -2
- package/dist/plain/interval/intervalEngulfsDateTime.js +1 -1
- package/dist/plain/interval/intervalEngulfsTime.js +1 -1
- package/dist/plain/interval/intervalFromDurationDate.js +1 -1
- package/dist/plain/interval/intervalFromDurationDateTime.js +1 -1
- package/dist/plain/interval/intervalFromDurationTime.js +1 -1
- package/dist/plain/interval/intervalIntersectionDate.d.ts +1 -1
- package/dist/plain/interval/intervalIntersectionDate.js +2 -2
- package/dist/plain/interval/intervalIntersectionDateTime.js +1 -1
- package/dist/plain/interval/intervalIntersectionTime.js +1 -1
- package/dist/plain/interval/intervalLengthDateTime.js +1 -1
- package/dist/plain/interval/intervalLengthTime.js +1 -1
- package/dist/plain/interval/intervalOverlappingDaysDate.js +1 -1
- package/dist/plain/interval/intervalOverlappingDaysDateTime.js +1 -1
- package/dist/plain/interval/intervalSplitAtDate.d.ts +1 -1
- package/dist/plain/interval/intervalSplitAtDate.js +2 -2
- package/dist/plain/interval/intervalSplitAtDateTime.js +1 -1
- package/dist/plain/interval/intervalSplitAtTime.js +1 -1
- package/dist/plain/interval/intervalUnionDate.d.ts +2 -2
- package/dist/plain/interval/intervalUnionDate.js +3 -3
- package/dist/plain/interval/intervalUnionDateTime.js +1 -1
- package/dist/plain/interval/intervalUnionTime.js +1 -1
- package/dist/plain/interval/intervalXorAllDate.d.ts +1 -1
- package/dist/plain/interval/intervalXorAllDate.js +2 -2
- package/dist/plain/interval/intervalXorAllDateTime.js +1 -1
- package/dist/plain/interval/intervalXorAllTime.js +1 -1
- package/dist/plain/interval/intervalXorDate.d.ts +1 -1
- package/dist/plain/interval/intervalXorDate.js +2 -2
- package/dist/plain/interval/intervalXorDateTime.js +1 -1
- package/dist/plain/interval/intervalXorTime.js +1 -1
- package/dist/plain/interval/intervalsOverlapDate.d.ts +1 -1
- package/dist/plain/interval/intervalsOverlapDate.js +2 -2
- package/dist/plain/interval/intervalsOverlapDateTime.js +1 -1
- package/dist/plain/interval/intervalsOverlapTime.js +1 -1
- package/dist/plain/interval/mergeIntervalsDate.d.ts +1 -1
- package/dist/plain/interval/mergeIntervalsDate.js +2 -2
- package/dist/plain/interval/mergeIntervalsDateTime.js +1 -1
- package/dist/plain/interval/mergeIntervalsTime.js +1 -1
- package/dist/plain/interval/splitIntervalByUnitDate.d.ts +2 -3
- package/dist/plain/interval/splitIntervalByUnitDate.js +3 -4
- package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +2 -1
- package/dist/plain/interval/splitIntervalByUnitDateTime.js +3 -2
- package/dist/plain/interval/splitIntervalByUnitTime.js +1 -1
- package/dist/plain/interval/validate/isValidDateInterval.d.ts +1 -1
- package/dist/plain/interval/validate/isValidDateInterval.js +2 -2
- package/dist/plain/interval/validate/isValidDateTimeInterval.js +1 -1
- package/dist/plain/interval/validate/isValidTimeInterval.js +1 -1
- package/dist/plain/locale/getLocaleEraNames.d.ts +6 -6
- package/dist/plain/locale/getLocaleEraNames.js +8 -7
- package/dist/plain/locale/getLocaleMeridiems.d.ts +5 -5
- package/dist/plain/locale/getLocaleMeridiems.js +7 -6
- package/dist/plain/locale/getLocaleMonthNames.d.ts +6 -6
- package/dist/plain/locale/getLocaleMonthNames.js +17 -11
- package/dist/plain/locale/getLocaleWeekdayNames.d.ts +3 -3
- package/dist/plain/locale/getLocaleWeekdayNames.js +12 -5
- package/dist/plain/map/mapDatesInRange.js +1 -1
- package/dist/plain/map/mapDaysInMonth.js +1 -1
- package/dist/plain/parse/parseDateTimeWithPattern.d.ts +14 -13
- package/dist/plain/parse/parseDateTimeWithPattern.js +15 -14
- package/dist/plain/parse/parseDateWithPattern.d.ts +18 -17
- package/dist/plain/parse/parseDateWithPattern.js +19 -18
- package/dist/plain/parse/parseDayFromDate.js +1 -1
- package/dist/plain/parse/parseDayFromDateTime.js +1 -1
- package/dist/plain/parse/parseDayOfWeekFromDate.js +1 -1
- package/dist/plain/parse/parseDayOfWeekFromDateTime.js +1 -1
- package/dist/plain/parse/parseHourFromDateTime.js +1 -1
- package/dist/plain/parse/parseHourFromTime.js +1 -1
- package/dist/plain/parse/parseMicrosecondFromDateTime.js +1 -1
- package/dist/plain/parse/parseMicrosecondFromTime.js +1 -1
- package/dist/plain/parse/parseMillisecondFromDateTime.js +1 -1
- package/dist/plain/parse/parseMillisecondFromTime.js +1 -1
- package/dist/plain/parse/parseMinuteFromDateTime.js +1 -1
- package/dist/plain/parse/parseMinuteFromTime.js +1 -1
- package/dist/plain/parse/parseMonthFromDate.js +1 -1
- package/dist/plain/parse/parseMonthFromDateTime.js +1 -1
- package/dist/plain/parse/parseNanosecondFromDateTime.js +1 -1
- package/dist/plain/parse/parseNanosecondFromTime.js +1 -1
- package/dist/plain/parse/parseSecondFromDateTime.js +1 -1
- package/dist/plain/parse/parseSecondFromTime.js +1 -1
- package/dist/plain/parse/parseSqlDateTime.js +1 -1
- package/dist/plain/parse/parseTimeWithPattern.d.ts +6 -4
- package/dist/plain/parse/parseTimeWithPattern.js +7 -5
- package/dist/plain/parse/parseUnitFromDate.d.ts +1 -1
- package/dist/plain/parse/parseUnitFromDate.js +1 -1
- package/dist/plain/parse/parseUnitFromDateTime.d.ts +1 -1
- package/dist/plain/parse/parseUnitFromDateTime.js +1 -1
- package/dist/plain/parse/parseUnitFromTime.d.ts +1 -1
- package/dist/plain/parse/parseUnitFromTime.js +1 -1
- package/dist/plain/parse/parseWeekFromDateTime.js +1 -1
- package/dist/plain/parse/parseYearFromDate.js +1 -1
- package/dist/plain/parse/parseYearFromDateTime.js +1 -1
- package/dist/plain/validate/{isLeapSecond.d.ts → hasSecond60.d.ts} +16 -14
- package/dist/plain/validate/{isLeapSecond.js → hasSecond60.js} +16 -14
- package/dist/plain/validate/index.d.ts +1 -1
- package/dist/plain/validate/index.js +1 -1
- package/dist/plain/validate/isLeapYear.js +1 -1
- package/dist/plain/validate/isValidDate.js +2 -17
- package/dist/plain/validate/isValidDateRange.js +1 -1
- package/dist/plain/validate/isValidDateTime.d.ts +1 -1
- package/dist/plain/validate/isValidDateTime.js +4 -4
- package/dist/plain/validate/isValidDateTimeRange.js +1 -1
- package/dist/plain/validate/isValidIsoDateLike.js +3 -3
- package/dist/plain/validate/isValidTime.js +2 -18
- package/dist/plain/validate/isValidTimeRange.js +1 -1
- package/dist/precision/convert/fromNanoseconds.d.ts +2 -2
- package/dist/precision/convert/fromNanoseconds.js +3 -3
- package/dist/precision/convert/toNanoseconds.d.ts +2 -2
- package/dist/precision/convert/toNanoseconds.js +2 -2
- package/dist/precision/index.d.ts +1 -1
- package/dist/precision/index.js +2 -2
- package/dist/precision/validate/isValidInstant.d.ts +1 -1
- package/dist/precision/validate/isValidInstant.js +1 -1
- package/dist/regex/calendar-zoned-date-time.d.ts +4 -4
- package/dist/regex/calendar-zoned-date-time.js +4 -4
- package/dist/regex/index.d.ts +1 -1
- package/dist/regex/index.js +2 -2
- package/dist/regex/leap-second.d.ts +1 -1
- package/dist/regex/leap-second.js +1 -1
- package/dist/regex/time-zone-like.d.ts +2 -2
- package/dist/regex/time-zone-like.js +2 -2
- package/dist/span/calculate/spanMs.d.ts +4 -3
- package/dist/span/calculate/spanMs.js +4 -3
- package/dist/span/calculate/spanNs.d.ts +4 -3
- package/dist/span/calculate/spanNs.js +4 -3
- package/dist/span/calculate/spanWallClock.d.ts +12 -12
- package/dist/span/calculate/spanWallClock.js +13 -13
- package/dist/span/index.d.ts +1 -1
- package/dist/span/index.js +2 -2
- package/dist/span/validate/isValidSpan.d.ts +3 -3
- package/dist/span/validate/isValidSpan.js +3 -3
- package/dist/timescale/calculate/index.d.ts +3 -0
- package/dist/timescale/calculate/index.js +3 -0
- package/dist/timescale/calculate/leapSecondsBetween.d.ts +26 -0
- package/dist/timescale/calculate/leapSecondsBetween.js +62 -0
- package/dist/timescale/calculate/nextLeapSecond.d.ts +18 -0
- package/dist/timescale/calculate/nextLeapSecond.js +33 -0
- package/dist/timescale/calculate/taiMinusUtc.d.ts +21 -0
- package/dist/timescale/calculate/taiMinusUtc.js +38 -0
- package/dist/timescale/convert/fromTAI.d.ts +22 -0
- package/dist/timescale/convert/fromTAI.js +35 -0
- package/dist/timescale/convert/index.d.ts +2 -0
- package/dist/timescale/convert/index.js +2 -0
- package/dist/timescale/convert/toTAI.d.ts +23 -0
- package/dist/timescale/convert/toTAI.js +39 -0
- package/dist/timescale/index.d.ts +4 -0
- package/dist/timescale/index.js +5 -0
- package/dist/timescale/validate/index.d.ts +1 -0
- package/dist/timescale/validate/index.js +1 -0
- package/dist/timescale/validate/isLeapSecond.d.ts +25 -0
- package/dist/timescale/validate/isLeapSecond.js +36 -0
- package/dist/transport/calculate/crossingTime.d.ts +2 -2
- package/dist/transport/calculate/crossingTime.js +3 -3
- package/dist/transport/calculate/cutoffAt.d.ts +4 -4
- package/dist/transport/calculate/cutoffAt.js +24 -133
- package/dist/transport/calculate/cutoffSchedule.d.ts +2 -2
- package/dist/transport/calculate/cutoffSchedule.js +52 -20
- package/dist/transport/calculate/dwellTime.d.ts +3 -3
- package/dist/transport/calculate/dwellTime.js +4 -4
- package/dist/transport/calculate/estimateDrift.d.ts +1 -1
- package/dist/transport/calculate/estimateDrift.js +1 -1
- package/dist/transport/calculate/nextDeparture.d.ts +2 -2
- package/dist/transport/calculate/nextDeparture.js +2 -2
- package/dist/transport/calculate/scheduleDelivery.d.ts +2 -2
- package/dist/transport/calculate/scheduleDelivery.js +3 -3
- package/dist/transport/calculate/transitTime.d.ts +11 -11
- package/dist/transport/calculate/transitTime.js +11 -11
- package/dist/transport/compare/classifyPunctuality.d.ts +1 -1
- package/dist/transport/compare/classifyPunctuality.js +1 -1
- package/dist/transport/compare/isPastCutoff.d.ts +1 -1
- package/dist/transport/compare/isPastCutoff.js +2 -2
- package/dist/transport/compare/scheduleDeviation.d.ts +1 -1
- package/dist/transport/compare/scheduleDeviation.js +1 -1
- package/dist/transport/compare/timeToCutoff.d.ts +1 -1
- package/dist/transport/compare/timeToCutoff.js +1 -1
- package/dist/transport/convert/etaAtZone.d.ts +2 -2
- package/dist/transport/convert/etaAtZone.js +2 -2
- package/dist/transport/index.d.ts +1 -1
- package/dist/transport/index.js +2 -2
- package/dist/types/date-duration-unit.d.ts +1 -1
- package/dist/types/date-time-duration-units.d.ts +1 -1
- package/dist/types/date-time-unit.d.ts +1 -1
- package/dist/types/date-unit.d.ts +1 -1
- package/dist/types/disambiguation.d.ts +1 -1
- package/dist/types/duration-relative-to.d.ts +1 -1
- package/dist/types/duration-string-options.d.ts +1 -1
- package/dist/types/exact-duration-unit.d.ts +1 -1
- package/dist/types/fiscal-calendar.d.ts +40 -4
- package/dist/types/gnss.d.ts +51 -0
- package/dist/types/gnss.js +0 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +2 -0
- package/dist/types/now-unit.d.ts +1 -1
- package/dist/types/offset.d.ts +1 -1
- package/dist/types/overflow.d.ts +1 -1
- package/dist/types/rounding-options.d.ts +1 -1
- package/dist/types/stored-zoned-classification.d.ts +83 -0
- package/dist/types/stored-zoned-classification.js +0 -0
- package/dist/types/time-duration-unit.d.ts +1 -1
- package/dist/types/time-unit.d.ts +1 -1
- package/dist/types/utc-now-unit.d.ts +1 -1
- package/dist/unix/calculate/diffUnix.d.ts +1 -1
- package/dist/unix/calculate/diffUnixAsDuration.d.ts +1 -1
- package/dist/unix/calculate/endOfUnix.d.ts +2 -2
- package/dist/unix/calculate/endOfUnix.js +1 -1
- package/dist/unix/calculate/isBetweenUnix.js +1 -1
- package/dist/unix/calculate/roundUnix.d.ts +7 -5
- package/dist/unix/calculate/roundUnix.js +6 -4
- package/dist/unix/calculate/setUnix.d.ts +3 -3
- package/dist/unix/calculate/setUnix.js +2 -2
- package/dist/unix/calculate/startOfUnix.d.ts +2 -2
- package/dist/unix/calculate/startOfUnix.js +1 -1
- package/dist/unix/compare/areUnixEqualBy.d.ts +6 -6
- package/dist/unix/compare/areUnixEqualBy.js +5 -5
- package/dist/unix/convert/convertUnixToPlainTime.d.ts +1 -1
- package/dist/unix/convert/convertUnixToPlainTime.js +1 -1
- package/dist/unix/convert/convertUnixToZoned.d.ts +1 -1
- package/dist/unix/convert/convertUnixToZoned.js +1 -1
- package/dist/unix/format/formatCalendarUnix.d.ts +10 -9
- package/dist/unix/format/formatCalendarUnix.js +6 -6
- package/dist/unix/format/formatRelativeUnix.d.ts +7 -7
- package/dist/unix/format/formatRelativeUnix.js +7 -7
- package/dist/unix/format/formatUnix.d.ts +9 -9
- package/dist/unix/format/formatUnix.js +9 -9
- package/dist/unix/get/getUnixDay.js +1 -1
- package/dist/unix/get/getUnixHour.js +1 -1
- package/dist/unix/get/getUnixMicrosecond.js +1 -1
- package/dist/unix/get/getUnixMillisecond.js +1 -1
- package/dist/unix/get/getUnixMinute.js +1 -1
- package/dist/unix/get/getUnixMonth.js +1 -1
- package/dist/unix/get/getUnixNanosecond.js +1 -1
- package/dist/unix/get/getUnixNow.js +1 -1
- package/dist/unix/get/getUnixNowUnit.d.ts +1 -1
- package/dist/unix/get/getUnixNowUnit.js +1 -1
- package/dist/unix/get/getUnixSecond.js +1 -1
- package/dist/unix/get/getUnixYear.js +1 -1
- package/dist/unix/index.d.ts +1 -1
- package/dist/unix/index.js +2 -2
- package/dist/unix/interval/intervalFromDurationUnix.js +1 -1
- package/dist/unix/interval/intervalLengthUnix.d.ts +2 -2
- package/dist/unix/interval/intervalLengthUnix.js +2 -2
- package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +3 -2
- package/dist/unix/interval/splitIntervalByUnitUnix.js +4 -3
- package/dist/unix/parse/parseUnitFromUnix.d.ts +1 -1
- package/dist/utc/calculate/addUtc.js +1 -1
- 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/endOfQuarterForUtc.js +1 -1
- package/dist/utc/calculate/endOfUtc.d.ts +1 -1
- package/dist/utc/calculate/isBetweenUtc.js +1 -1
- package/dist/utc/calculate/maxUtc.js +1 -1
- package/dist/utc/calculate/minUtc.js +1 -1
- package/dist/utc/calculate/roundUtc.d.ts +1 -1
- package/dist/utc/calculate/roundUtc.js +1 -1
- package/dist/utc/calculate/setUtc.d.ts +1 -1
- package/dist/utc/calculate/setUtc.js +1 -1
- package/dist/utc/calculate/sortUtc.js +1 -1
- package/dist/utc/calculate/startOfQuarterForUtc.js +1 -1
- package/dist/utc/calculate/startOfUtc.d.ts +1 -1
- package/dist/utc/calculate/subtractUtc.js +1 -1
- package/dist/utc/compare/areUtcEqual.js +1 -1
- package/dist/utc/compare/areUtcEqualBy.d.ts +2 -2
- package/dist/utc/compare/areUtcEqualBy.js +2 -2
- package/dist/utc/compare/isAfterUtc.js +1 -1
- package/dist/utc/compare/isBeforeUtc.js +1 -1
- package/dist/utc/convert/convertUtcToPlainDate.d.ts +1 -1
- package/dist/utc/convert/convertUtcToPlainDate.js +2 -2
- package/dist/utc/convert/convertUtcToPlainDateTime.d.ts +1 -1
- package/dist/utc/convert/convertUtcToPlainDateTime.js +2 -2
- package/dist/utc/convert/convertUtcToPlainTime.d.ts +1 -1
- package/dist/utc/convert/convertUtcToPlainTime.js +2 -2
- package/dist/utc/convert/convertUtcToUnix.js +1 -1
- package/dist/utc/convert/convertUtcToZoned.d.ts +1 -1
- package/dist/utc/convert/convertUtcToZoned.js +2 -2
- package/dist/utc/format/formatCalendarUtc.d.ts +6 -5
- package/dist/utc/format/formatCalendarUtc.js +3 -3
- package/dist/utc/format/formatHttpDate.js +1 -1
- package/dist/utc/format/formatRelativeUtc.d.ts +5 -5
- package/dist/utc/format/formatRelativeUtc.js +5 -5
- package/dist/utc/format/formatUtc.d.ts +8 -8
- package/dist/utc/format/formatUtc.js +8 -8
- package/dist/utc/get/getUtcDay.js +1 -1
- package/dist/utc/get/getUtcHour.js +1 -1
- package/dist/utc/get/getUtcMicrosecond.js +1 -1
- package/dist/utc/get/getUtcMillisecond.js +1 -1
- package/dist/utc/get/getUtcMinute.js +1 -1
- package/dist/utc/get/getUtcMonth.js +1 -1
- package/dist/utc/get/getUtcNanosecond.js +1 -1
- package/dist/utc/get/getUtcNow.js +1 -1
- package/dist/utc/get/getUtcNowUnit.js +1 -1
- package/dist/utc/get/getUtcSecond.js +1 -1
- package/dist/utc/get/getUtcYear.js +1 -1
- package/dist/utc/index.d.ts +1 -1
- package/dist/utc/index.js +2 -2
- package/dist/utc/interval/intervalAbutsUtc.js +1 -1
- package/dist/utc/interval/intervalContainsUtc.js +1 -1
- package/dist/utc/interval/intervalCountUtc.js +1 -1
- package/dist/utc/interval/intervalDivideEquallyUtc.js +1 -1
- package/dist/utc/interval/intervalEngulfsUtc.js +1 -1
- package/dist/utc/interval/intervalFromDurationUtc.js +1 -1
- package/dist/utc/interval/intervalLengthUtc.js +1 -1
- package/dist/utc/interval/intervalOverlappingDaysUtc.js +1 -1
- package/dist/utc/interval/intervalSplitAtUtc.js +1 -1
- package/dist/utc/interval/intervalXorAllUtc.js +1 -1
- package/dist/utc/interval/intervalXorUtc.js +1 -1
- package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +2 -1
- package/dist/utc/interval/splitIntervalByUnitUtc.js +3 -2
- package/dist/utc/interval/validate/isValidUtcInterval.js +1 -1
- package/dist/utc/parse/parseDateFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseDateFromUtc.js +1 -1
- package/dist/utc/parse/parseDayFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseDayFromUtc.js +1 -1
- package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseDayOfWeekFromUtc.js +2 -2
- package/dist/utc/parse/parseHourFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseHourFromUtc.js +1 -1
- package/dist/utc/parse/parseHttpDate.js +1 -1
- package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseMicrosecondFromUtc.js +1 -1
- package/dist/utc/parse/parseMillisecondFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseMillisecondFromUtc.js +1 -1
- package/dist/utc/parse/parseMonthFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseMonthFromUtc.js +1 -1
- package/dist/utc/parse/parseNanosecondFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseNanosecondFromUtc.js +1 -1
- package/dist/utc/parse/parseSecondFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseSecondFromUtc.js +1 -1
- package/dist/utc/parse/parseTimeFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseTimeFromUtc.js +2 -2
- package/dist/utc/parse/parseUnitFromUtc.d.ts +2 -2
- package/dist/utc/parse/parseUnitFromUtc.js +2 -2
- package/dist/utc/parse/parseWeekFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseWeekFromUtc.js +2 -2
- package/dist/utc/parse/parseYearFromUtc.d.ts +1 -1
- package/dist/utc/parse/parseYearFromUtc.js +1 -1
- package/dist/utc/validate/isValidUtc.js +3 -3
- package/dist/utc/validate/isValidUtcRange.js +1 -1
- package/dist/{duty → workforce}/calculate/dutyDayFor.js +1 -1
- package/dist/{duty → workforce}/calculate/evaluateDutyLog.js +1 -1
- package/dist/{duty → workforce}/calculate/longestRun.js +1 -1
- package/dist/{duty → workforce}/calculate/qualifyingRestPairs.js +1 -1
- package/dist/{duty → workforce}/calculate/qualifyingRests.js +1 -1
- package/dist/workforce/index.d.ts +3 -0
- package/dist/workforce/index.js +4 -0
- package/dist/{duty → workforce}/validate/isValidDutyLog.d.ts +2 -2
- package/dist/{duty → workforce}/validate/isValidDutyLog.js +2 -2
- package/dist/zoned/calculate/addZoned.d.ts +15 -15
- package/dist/zoned/calculate/addZoned.js +15 -15
- package/dist/zoned/calculate/addZonedBusinessDays.d.ts +5 -4
- package/dist/zoned/calculate/addZonedBusinessDays.js +5 -4
- package/dist/zoned/calculate/clampZoned.js +1 -1
- package/dist/zoned/calculate/diffZoned.d.ts +8 -8
- package/dist/zoned/calculate/diffZoned.js +7 -7
- package/dist/zoned/calculate/diffZonedAsDuration.d.ts +5 -5
- package/dist/zoned/calculate/diffZonedAsDuration.js +4 -4
- package/dist/zoned/calculate/endOfZoned.d.ts +3 -3
- package/dist/zoned/calculate/endOfZoned.js +2 -2
- package/dist/zoned/calculate/getHoursInZonedDay.d.ts +2 -2
- package/dist/zoned/calculate/getHoursInZonedDay.js +2 -2
- package/dist/zoned/calculate/getLocaleZonedDayOfWeek.d.ts +6 -5
- package/dist/zoned/calculate/getLocaleZonedDayOfWeek.js +6 -5
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +5 -5
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +5 -5
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +6 -6
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +6 -6
- package/dist/zoned/calculate/maxZoned.d.ts +2 -2
- package/dist/zoned/calculate/maxZoned.js +3 -3
- package/dist/zoned/calculate/minZoned.d.ts +2 -2
- package/dist/zoned/calculate/minZoned.js +3 -3
- package/dist/zoned/calculate/roundZoned.d.ts +11 -9
- package/dist/zoned/calculate/roundZoned.js +11 -9
- package/dist/zoned/calculate/setZoned.d.ts +8 -8
- package/dist/zoned/calculate/setZoned.js +8 -8
- package/dist/zoned/calculate/sortZoned.d.ts +3 -3
- package/dist/zoned/calculate/sortZoned.js +4 -4
- package/dist/zoned/calculate/startOfZoned.d.ts +3 -3
- package/dist/zoned/calculate/startOfZoned.js +2 -2
- package/dist/zoned/calculate/subtractZoned.d.ts +14 -14
- package/dist/zoned/calculate/subtractZoned.js +14 -14
- package/dist/zoned/calculate/subtractZonedBusinessDays.d.ts +5 -4
- package/dist/zoned/calculate/subtractZonedBusinessDays.js +5 -4
- package/dist/zoned/chop/chopZonedDate.d.ts +1 -1
- package/dist/zoned/chop/chopZonedDate.js +1 -1
- package/dist/zoned/chop/chopZonedMilliseconds.d.ts +1 -1
- package/dist/zoned/chop/chopZonedMilliseconds.js +1 -1
- package/dist/zoned/chop/chopZonedSeconds.d.ts +1 -1
- package/dist/zoned/chop/chopZonedSeconds.js +1 -1
- package/dist/zoned/chop/chopZonedTime.d.ts +1 -1
- package/dist/zoned/chop/chopZonedTime.js +1 -1
- package/dist/zoned/chop/chopZonedTimezone.d.ts +1 -1
- package/dist/zoned/chop/chopZonedTimezone.js +1 -1
- package/dist/zoned/classify/classifyStoredZoned.d.ts +46 -0
- package/dist/zoned/classify/classifyStoredZoned.js +177 -0
- package/dist/zoned/classify/index.d.ts +1 -0
- package/dist/zoned/classify/index.js +1 -0
- package/dist/zoned/compare/areZonedEqual.js +1 -1
- package/dist/zoned/compare/areZonedEqualBy.d.ts +8 -10
- package/dist/zoned/compare/areZonedEqualBy.js +8 -10
- package/dist/zoned/compare/isAfterZoned.js +1 -1
- package/dist/zoned/compare/isBeforeZoned.d.ts +2 -2
- package/dist/zoned/compare/isBeforeZoned.js +3 -3
- package/dist/zoned/compare/isBetweenZoned.js +1 -1
- package/dist/zoned/compare/isInDaylightSaving.d.ts +2 -2
- package/dist/zoned/compare/isInDaylightSaving.js +2 -2
- package/dist/zoned/compare/isZonedBusinessDay.d.ts +7 -6
- package/dist/zoned/compare/isZonedBusinessDay.js +7 -6
- package/dist/zoned/compare/isZonedFuture.js +1 -1
- package/dist/zoned/compare/isZonedPast.js +1 -1
- package/dist/zoned/compare/isZonedRelativeDay.d.ts +2 -2
- package/dist/zoned/compare/isZonedRelativeDay.js +3 -3
- package/dist/zoned/compare/isZonedThisUnit.d.ts +7 -7
- package/dist/zoned/compare/isZonedThisUnit.js +7 -7
- package/dist/zoned/compare/isZonedWeekend.d.ts +5 -5
- package/dist/zoned/compare/isZonedWeekend.js +5 -5
- package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +6 -6
- package/dist/zoned/convert/convertPlainDateTimeToZoned.js +6 -6
- package/dist/zoned/convert/convertZonedToCalendar.d.ts +5 -5
- package/dist/zoned/convert/convertZonedToCalendar.js +5 -5
- package/dist/zoned/convert/convertZonedToPlainDateTime.d.ts +3 -3
- package/dist/zoned/convert/convertZonedToPlainDateTime.js +3 -3
- package/dist/zoned/convert/convertZonedToZoned.d.ts +2 -2
- package/dist/zoned/convert/convertZonedToZoned.js +2 -2
- package/dist/zoned/format/formatCalendarZoned.d.ts +7 -6
- package/dist/zoned/format/formatCalendarZoned.js +5 -5
- package/dist/zoned/format/formatRelativeZoned.d.ts +3 -3
- package/dist/zoned/format/formatRelativeZoned.js +4 -4
- package/dist/zoned/format/formatRfc2822.d.ts +3 -3
- package/dist/zoned/format/formatRfc2822.js +3 -3
- package/dist/zoned/format/formatRfc3339.d.ts +2 -2
- package/dist/zoned/format/formatRfc3339.js +2 -2
- package/dist/zoned/format/formatTimeZoneName.d.ts +17 -17
- package/dist/zoned/format/formatTimeZoneName.js +13 -12
- package/dist/zoned/format/formatZonedDateTime.d.ts +10 -10
- package/dist/zoned/format/formatZonedDateTime.js +12 -11
- package/dist/zoned/format/formatZonedRange.d.ts +7 -7
- package/dist/zoned/format/formatZonedRange.js +9 -8
- package/dist/zoned/format/formatZonedToParts.d.ts +11 -11
- package/dist/zoned/format/formatZonedToParts.js +13 -12
- package/dist/zoned/get/getDstTransitions.d.ts +9 -9
- package/dist/zoned/get/getDstTransitions.js +3 -3
- package/dist/zoned/get/getSystemTimeZone.d.ts +2 -2
- package/dist/zoned/get/getSystemTimeZone.js +2 -2
- package/dist/zoned/get/getTimeZoneOffset.d.ts +5 -5
- package/dist/zoned/get/getTimeZoneOffset.js +5 -5
- package/dist/zoned/get/getTimeZones.d.ts +1 -1
- package/dist/zoned/get/getTimeZones.js +1 -1
- package/dist/zoned/get/getZonedDay.d.ts +1 -1
- package/dist/zoned/get/getZonedDay.js +1 -1
- package/dist/zoned/get/getZonedDayOfWeek.d.ts +1 -1
- package/dist/zoned/get/getZonedDayOfWeek.js +1 -1
- package/dist/zoned/get/getZonedHour.d.ts +1 -1
- package/dist/zoned/get/getZonedHour.js +1 -1
- package/dist/zoned/get/getZonedMicrosecond.d.ts +1 -1
- package/dist/zoned/get/getZonedMicrosecond.js +1 -1
- package/dist/zoned/get/getZonedMillisecond.d.ts +1 -1
- package/dist/zoned/get/getZonedMillisecond.js +1 -1
- package/dist/zoned/get/getZonedMinute.d.ts +1 -1
- package/dist/zoned/get/getZonedMinute.js +1 -1
- package/dist/zoned/get/getZonedMonth.d.ts +1 -1
- package/dist/zoned/get/getZonedMonth.js +1 -1
- package/dist/zoned/get/getZonedNanosecond.d.ts +1 -1
- package/dist/zoned/get/getZonedNanosecond.js +1 -1
- package/dist/zoned/get/getZonedNow.d.ts +4 -4
- package/dist/zoned/get/getZonedNow.js +4 -4
- package/dist/zoned/get/getZonedNowUnit.d.ts +2 -2
- package/dist/zoned/get/getZonedNowUnit.js +1 -1
- package/dist/zoned/get/getZonedSecond.d.ts +1 -1
- package/dist/zoned/get/getZonedSecond.js +1 -1
- package/dist/zoned/get/getZonedToday.d.ts +1 -1
- package/dist/zoned/get/getZonedToday.js +1 -1
- package/dist/zoned/get/getZonedWeekOfYear.d.ts +1 -1
- package/dist/zoned/get/getZonedWeekOfYear.js +1 -1
- package/dist/zoned/get/getZonedYear.d.ts +1 -1
- package/dist/zoned/get/getZonedYear.js +1 -1
- package/dist/zoned/index.d.ts +2 -1
- package/dist/zoned/index.js +3 -2
- package/dist/zoned/interval/intervalAbutsZoned.d.ts +2 -2
- package/dist/zoned/interval/intervalAbutsZoned.js +3 -3
- package/dist/zoned/interval/intervalContainsZoned.d.ts +1 -1
- package/dist/zoned/interval/intervalContainsZoned.js +2 -2
- package/dist/zoned/interval/intervalCountZoned.d.ts +4 -4
- package/dist/zoned/interval/intervalCountZoned.js +5 -5
- package/dist/zoned/interval/intervalDifferenceZoned.js +1 -1
- package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +1 -1
- package/dist/zoned/interval/intervalDivideEquallyZoned.js +2 -2
- package/dist/zoned/interval/intervalEngulfsZoned.d.ts +1 -1
- package/dist/zoned/interval/intervalEngulfsZoned.js +2 -2
- package/dist/zoned/interval/intervalFromDurationZoned.d.ts +6 -6
- package/dist/zoned/interval/intervalFromDurationZoned.js +7 -7
- package/dist/zoned/interval/intervalIntersectionZoned.js +1 -1
- package/dist/zoned/interval/intervalLengthZoned.d.ts +5 -5
- package/dist/zoned/interval/intervalLengthZoned.js +5 -5
- package/dist/zoned/interval/intervalOverlappingDaysZoned.d.ts +2 -2
- package/dist/zoned/interval/intervalOverlappingDaysZoned.js +3 -3
- package/dist/zoned/interval/intervalSplitAtZoned.js +14 -16
- package/dist/zoned/interval/intervalUnionZoned.js +1 -1
- package/dist/zoned/interval/intervalXorAllZoned.js +1 -1
- package/dist/zoned/interval/intervalXorZoned.js +1 -1
- package/dist/zoned/interval/intervalsOverlapZoned.d.ts +2 -2
- package/dist/zoned/interval/intervalsOverlapZoned.js +3 -3
- package/dist/zoned/interval/mergeIntervalsZoned.js +1 -1
- package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +2 -1
- package/dist/zoned/interval/splitIntervalByUnitZoned.js +3 -2
- package/dist/zoned/interval/validate/isValidCalendarZonedInterval.d.ts +2 -2
- package/dist/zoned/interval/validate/isValidCalendarZonedInterval.js +3 -3
- package/dist/zoned/interval/validate/isValidZonedInterval.d.ts +1 -1
- package/dist/zoned/interval/validate/isValidZonedInterval.js +2 -2
- package/dist/zoned/map/mapZonedDatesInRange.js +1 -1
- package/dist/zoned/map/mapZonedHoursInDay.d.ts +1 -1
- package/dist/zoned/map/mapZonedHoursInDay.js +2 -2
- package/dist/zoned/parse/getZonedOffset.d.ts +1 -1
- package/dist/zoned/parse/getZonedOffset.js +1 -1
- package/dist/zoned/parse/getZonedOffsetAs.d.ts +6 -6
- package/dist/zoned/parse/getZonedOffsetAs.js +3 -3
- package/dist/zoned/parse/parseDateTimeFromZoned.js +2 -2
- package/dist/zoned/parse/parseRfc2822.js +1 -1
- package/dist/zoned/parse/parseRfc3339.js +1 -1
- package/dist/zoned/parse/parseUnitFromZoned.d.ts +1 -1
- package/dist/zoned/validate/hasDaylightSaving.d.ts +2 -2
- package/dist/zoned/validate/hasDaylightSaving.js +3 -3
- package/dist/zoned/validate/isValidCalendarZonedDateTime.d.ts +8 -8
- package/dist/zoned/validate/isValidCalendarZonedDateTime.js +8 -8
- package/dist/zoned/validate/isValidTimeZone.d.ts +1 -1
- package/dist/zoned/validate/isValidTimeZone.js +3 -18
- package/dist/zoned/validate/isValidZonedDateTime.d.ts +7 -7
- package/dist/zoned/validate/isValidZonedDateTime.js +9 -9
- package/dist/zoned/validate/isValidZonedRange.d.ts +1 -1
- package/dist/zoned/validate/isValidZonedRange.js +5 -5
- package/package.json +71 -21
- package/skills/gmt-arithmetic/SKILL.md +18 -59
- package/skills/gmt-basics/SKILL.md +32 -12
- package/skills/gmt-gnss/SKILL.md +92 -0
- package/skills/gmt-integration/SKILL.md +48 -15
- package/skills/gmt-intermodal/SKILL.md +189 -0
- package/skills/gmt-timezone/SKILL.md +34 -257
- package/skills/gmt-transport/SKILL.md +133 -0
- package/skills/gmt-workforce/SKILL.md +84 -0
- package/dist/duty/index.d.ts +0 -3
- package/dist/duty/index.js +0 -4
- /package/dist/{duty → workforce}/calculate/dutyDayFor.d.ts +0 -0
- /package/dist/{duty → workforce}/calculate/dutyTotals.d.ts +0 -0
- /package/dist/{duty → workforce}/calculate/dutyTotals.js +0 -0
- /package/dist/{duty → workforce}/calculate/dutyViolations.d.ts +0 -0
- /package/dist/{duty → workforce}/calculate/dutyViolations.js +0 -0
- /package/dist/{duty → workforce}/calculate/evaluateDutyLog.d.ts +0 -0
- /package/dist/{duty → workforce}/calculate/index.d.ts +0 -0
- /package/dist/{duty → workforce}/calculate/index.js +0 -0
- /package/dist/{duty → workforce}/calculate/longestRun.d.ts +0 -0
- /package/dist/{duty → workforce}/calculate/qualifyingRestPairs.d.ts +0 -0
- /package/dist/{duty → workforce}/calculate/qualifyingRests.d.ts +0 -0
- /package/dist/{duty → workforce}/validate/index.d.ts +0 -0
- /package/dist/{duty → workforce}/validate/index.js +0 -0
|
@@ -1,104 +1,8 @@
|
|
|
1
|
-
import { Temporal } from "
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { isValidDuration } from "../../duration/validate/isValidDuration.js";
|
|
6
|
-
import { classifyLocal } from "../../instant/convert/classifyLocal.js";
|
|
7
|
-
import { resolveLocal } from "../../instant/convert/resolveLocal.js";
|
|
8
|
-
import { instantFrom } from "../../internal/index.js";
|
|
1
|
+
import { Temporal } from "../../internal/temporal.js";
|
|
2
|
+
import { cutoffAtResolved, resolveCutoffTime, resolveSharedCutoffOptions, } from "../../internal/cutoffAtResolved.js";
|
|
3
|
+
import { instantFrom, parseInstantNanoseconds } from "../../internal/index.js";
|
|
4
|
+
import { isDurationString } from "../../internal/inputChecks.js";
|
|
9
5
|
import { isObject } from "../../internal/isObject.js";
|
|
10
|
-
import { isValidTime } from "../../plain/validate/isValidTime.js";
|
|
11
|
-
import { isValidInstant } from "../../precision/validate/isValidInstant.js";
|
|
12
|
-
import { isValidTimeZone } from "../../zoned/validate/isValidTimeZone.js";
|
|
13
|
-
function resolveOptions(options) {
|
|
14
|
-
if (!isObject(options)) {
|
|
15
|
-
return null;
|
|
16
|
-
}
|
|
17
|
-
const { timeZone, atLocalTime, calendar, roll } = options;
|
|
18
|
-
if (typeof timeZone !== "string" || !isValidTimeZone(timeZone)) {
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
21
|
-
if (atLocalTime !== undefined && !isValidTime(atLocalTime)) {
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
if (calendar !== undefined && !isValidBusinessCalendar(calendar)) {
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
if (roll !== undefined && !isValidRollConvention(roll)) {
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
// Rolling needs both a calendar and a direction, and no standard supplies either one by
|
|
31
|
-
// default: a calendar without a roll, or a roll without a calendar, is a missing term.
|
|
32
|
-
if ((calendar === undefined) !== (roll === undefined)) {
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
35
|
-
return {
|
|
36
|
-
timeZone,
|
|
37
|
-
atLocalTime: atLocalTime === undefined ? null : Temporal.PlainTime.from(atLocalTime),
|
|
38
|
-
rolling: calendar === undefined || roll === undefined ? null : { calendar, roll },
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* The instant a local wall time names: the first occurrence of a repeated hour, as RFC 5545
|
|
43
|
-
* §3.3.5 reads a local time that "occurs more than once", and `null` for a skipped one, which
|
|
44
|
-
* is never shifted.
|
|
45
|
-
*/
|
|
46
|
-
function resolveWallTime(wall, timeZone) {
|
|
47
|
-
const local = wall.toString();
|
|
48
|
-
const kind = classifyLocal(local, timeZone);
|
|
49
|
-
if (kind === null || kind === "nonexistent") {
|
|
50
|
-
return null;
|
|
51
|
-
}
|
|
52
|
-
const instant = resolveLocal(local, timeZone, { disambiguation: "earlier" });
|
|
53
|
-
return instant === ""
|
|
54
|
-
? null
|
|
55
|
-
: Temporal.Instant.from(instant).toZonedDateTimeISO(timeZone);
|
|
56
|
-
}
|
|
57
|
-
/** The calendar part of a duration — years, months, weeks and days. */
|
|
58
|
-
function datePart(offset) {
|
|
59
|
-
return Temporal.Duration.from({
|
|
60
|
-
years: offset.years,
|
|
61
|
-
months: offset.months,
|
|
62
|
-
weeks: offset.weeks,
|
|
63
|
-
days: offset.days,
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
/** The exact part of a duration — hours and smaller. */
|
|
67
|
-
function timePart(offset) {
|
|
68
|
-
return Temporal.Duration.from({
|
|
69
|
-
hours: offset.hours,
|
|
70
|
-
minutes: offset.minutes,
|
|
71
|
-
seconds: offset.seconds,
|
|
72
|
-
milliseconds: offset.milliseconds,
|
|
73
|
-
microseconds: offset.microseconds,
|
|
74
|
-
nanoseconds: offset.nanoseconds,
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* The offset taken off the anchor with no pinning: the calendar part moves the local wall
|
|
79
|
-
* clock, then the exact part comes off in exact time — Temporal's `ZonedDateTime#subtract`,
|
|
80
|
-
* except that a wall clock landing in a skipped hour is `null` rather than moved forward.
|
|
81
|
-
*/
|
|
82
|
-
function subtractOffset(anchor, offset) {
|
|
83
|
-
const calendarPart = datePart(offset);
|
|
84
|
-
if (calendarPart.blank) {
|
|
85
|
-
return anchor.subtract(timePart(offset));
|
|
86
|
-
}
|
|
87
|
-
const wall = resolveWallTime(anchor.toPlainDateTime().subtract(calendarPart), anchor.timeZoneId);
|
|
88
|
-
return wall === null ? null : wall.subtract(timePart(offset));
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* The local date the cut-off falls on after rolling, or `null` when the roll fails. With no
|
|
92
|
-
* calendar the date is left as it is.
|
|
93
|
-
*/
|
|
94
|
-
function rolledDate(date, options) {
|
|
95
|
-
if (options.rolling === null) {
|
|
96
|
-
return date;
|
|
97
|
-
}
|
|
98
|
-
const { calendar, roll } = options.rolling;
|
|
99
|
-
const rolled = rollDate(date.toString(), roll, calendar);
|
|
100
|
-
return rolled === "" ? null : Temporal.PlainDate.from(rolled);
|
|
101
|
-
}
|
|
102
6
|
/**
|
|
103
7
|
* Find a deadline stated as an offset before an anchor event, in the local time of the place
|
|
104
8
|
* that enforces it.
|
|
@@ -155,49 +59,36 @@ function rolledDate(date, options) {
|
|
|
155
59
|
* @example cutoffAt("2024-06-14T16:00:00Z", "P2D", { timeZone: "Europe/Amsterdam", atLocalTime: "17:00" }) // "2024-06-12T17:00:00+02:00[Europe/Amsterdam]"
|
|
156
60
|
* @example cutoffAt("2024-06-14T16:00:00Z", "PT48H", { timeZone: "Europe/Amsterdam" }) // "2024-06-12T18:00:00+02:00[Europe/Amsterdam]" (48 hours keeps the departure's 18:00)
|
|
157
61
|
* @example cutoffAt("2024-06-14T16:00:00Z", "P1D", { timeZone: "Europe/Amsterdam", atLocalTime: "10:00" }) // "2024-06-13T10:00:00+02:00[Europe/Amsterdam]"
|
|
158
|
-
* @example cutoffAt("2024-
|
|
159
|
-
* @example cutoffAt("2024-
|
|
62
|
+
* @example cutoffAt("2024-04-09T07:00:00Z", "PT96H", { timeZone: "Australia/Sydney" }) // "2024-04-05T18:00:00+11:00[Australia/Sydney]" (96 elapsed hours across the fall-back)
|
|
63
|
+
* @example cutoffAt("2024-04-01T16:00:00Z", "P2D", { timeZone: "Europe/London", atLocalTime: "17:00" }) // "2024-03-30T17:00:00+00:00[Europe/London]" (17:00 local, across the spring-forward)
|
|
160
64
|
* @example cutoffAt("2024-06-18T16:00:00Z", "P2D", { timeZone: "Europe/Amsterdam", atLocalTime: "17:00", calendar: { weekend: [6, 7], holidays: [], timeZone: "Europe/Amsterdam" }, roll: "preceding" }) // "2024-06-14T17:00:00+02:00[Europe/Amsterdam]" (Sunday rolls back to Friday)
|
|
161
65
|
* @example cutoffAt("2024-06-18T16:00:00Z", "P2D", { timeZone: "Europe/Amsterdam", atLocalTime: "17:00", calendar: { weekend: [6, 7], holidays: [], timeZone: "Europe/Amsterdam" } }) // "" (a calendar needs a roll convention)
|
|
162
|
-
* @example cutoffAt("2024-
|
|
163
|
-
* @example cutoffAt("2024-
|
|
66
|
+
* @example cutoffAt("2024-10-28T18:00:00Z", "P1D", { timeZone: "Europe/London", atLocalTime: "01:30" }) // "2024-10-27T01:30:00+01:00[Europe/London]" (a repeated hour takes the earlier pass)
|
|
67
|
+
* @example cutoffAt("2024-10-07T07:00:00Z", "P1D", { timeZone: "Australia/Sydney", atLocalTime: "02:30" }) // "" (02:30 on 6 October never happened)
|
|
164
68
|
* @example cutoffAt("2024-06-14T18:00:00", "P2D", { timeZone: "Europe/Amsterdam" }) // "" (a zoneless anchor is not a moment)
|
|
165
69
|
* @example cutoffAt("2024-06-14T16:00:00Z", "P2D", { timeZone: "Europe/Amsterdam", roll: "preceding" }) // "" (a roll needs a calendar)
|
|
166
70
|
*/
|
|
167
71
|
export function cutoffAt(anchor, offset, options) {
|
|
168
72
|
try {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
73
|
+
if (!isObject(options)) {
|
|
74
|
+
return "";
|
|
75
|
+
}
|
|
76
|
+
// Every read of `options` happens here, once.
|
|
77
|
+
const { timeZone, atLocalTime, calendar, roll } = options;
|
|
78
|
+
// The time of day is checked before the calendar is read, so an invalid one never reads it.
|
|
79
|
+
const local = resolveCutoffTime(atLocalTime);
|
|
80
|
+
const shared = local === null
|
|
81
|
+
? null
|
|
82
|
+
: resolveSharedCutoffOptions(timeZone, calendar, roll);
|
|
83
|
+
if (shared === null ||
|
|
84
|
+
local === null ||
|
|
85
|
+
parseInstantNanoseconds(anchor) === null ||
|
|
86
|
+
!isDurationString(offset)) {
|
|
173
87
|
return "";
|
|
174
88
|
}
|
|
175
89
|
try {
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
if (resolved.atLocalTime !== null) {
|
|
179
|
-
const day = rolledDate(start
|
|
180
|
-
.subtract(timePart(duration))
|
|
181
|
-
.toPlainDate()
|
|
182
|
-
.subtract(datePart(duration)), resolved);
|
|
183
|
-
const pinned = day === null
|
|
184
|
-
? null
|
|
185
|
-
: resolveWallTime(day.toPlainDateTime(resolved.atLocalTime), resolved.timeZone);
|
|
186
|
-
return pinned === null ? "" : pinned.toString();
|
|
187
|
-
}
|
|
188
|
-
const cutoff = subtractOffset(start, duration);
|
|
189
|
-
if (cutoff === null) {
|
|
190
|
-
return "";
|
|
191
|
-
}
|
|
192
|
-
const day = rolledDate(cutoff.toPlainDate(), resolved);
|
|
193
|
-
if (day === null) {
|
|
194
|
-
return "";
|
|
195
|
-
}
|
|
196
|
-
if (day.equals(cutoff.toPlainDate())) {
|
|
197
|
-
return cutoff.toString();
|
|
198
|
-
}
|
|
199
|
-
const rolled = resolveWallTime(day.toPlainDateTime(cutoff.toPlainTime()), resolved.timeZone);
|
|
200
|
-
return rolled === null ? "" : rolled.toString();
|
|
90
|
+
const found = cutoffAtResolved(instantFrom(anchor), Temporal.Duration.from(offset), local.time, shared);
|
|
91
|
+
return found === null ? "" : found.text;
|
|
201
92
|
}
|
|
202
93
|
catch {
|
|
203
94
|
return "";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { CutoffOptions } from "./cutoffAt.js";
|
|
2
2
|
/** One named deadline in a cut-off stack: how long before the anchor, and at what local time. */
|
|
3
3
|
export interface Cutoff {
|
|
4
4
|
/** The caller's label, echoed back (`"document"`, `"VGM"`); GMT does not interpret it. */
|
|
@@ -70,6 +70,6 @@ export interface CutoffScheduleOptions {
|
|
|
70
70
|
* @example cutoffSchedule("2024-06-18T16:00:00Z", [{ name: "document", offset: "P2D", atLocalTime: "17:00" }, { name: "VGM", offset: "P1D", atLocalTime: "10:00" }], { timeZone: "Europe/Amsterdam", calendar: { weekend: [6, 7], holidays: [], timeZone: "Europe/Amsterdam" }, roll: "preceding" }) // [{ name: "document", at: "2024-06-14T17:00:00+02:00[Europe/Amsterdam]" }, { name: "VGM", at: "2024-06-17T10:00:00+02:00[Europe/Amsterdam]" }] (Sunday's document cut-off rolls back to Friday)
|
|
71
71
|
* @example cutoffSchedule("2024-06-14T16:00:00Z", [], { timeZone: "Europe/Amsterdam" }) // []
|
|
72
72
|
* @example cutoffSchedule("2024-06-14T16:00:00Z", [{ name: "document", offset: "2 days" }], { timeZone: "Europe/Amsterdam" }) // []
|
|
73
|
-
* @example cutoffSchedule("2024-
|
|
73
|
+
* @example cutoffSchedule("2024-10-07T07:00:00Z", [{ name: "gate-in", offset: "P1D" }, { name: "VGM", offset: "P1D", atLocalTime: "02:30" }], { timeZone: "Australia/Sydney" }) // [] (02:30 on 6 October never happened)
|
|
74
74
|
*/
|
|
75
75
|
export declare function cutoffSchedule(anchor: string, cutoffs: Cutoff[], options: CutoffScheduleOptions): CutoffTime[];
|
|
@@ -1,7 +1,42 @@
|
|
|
1
|
-
import { Temporal } from "
|
|
2
|
-
import {
|
|
1
|
+
import { Temporal } from "../../internal/temporal.js";
|
|
2
|
+
import { cutoffAtResolved, resolveCutoffTime, resolveSharedCutoffOptions, } from "../../internal/cutoffAtResolved.js";
|
|
3
|
+
import { instantFrom, parseInstantNanoseconds } from "../../internal/index.js";
|
|
4
|
+
import { isDurationString } from "../../internal/inputChecks.js";
|
|
3
5
|
import { isObject } from "../../internal/isObject.js";
|
|
4
|
-
|
|
6
|
+
/** The shared options and the anchor, resolved once; `null` when either is invalid. */
|
|
7
|
+
function stackContext(state) {
|
|
8
|
+
const { timeZone, calendar, roll } = state.options;
|
|
9
|
+
state.shared ??= resolveSharedCutoffOptions(timeZone, calendar, roll);
|
|
10
|
+
if (state.shared === null) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
if (state.anchorInstant === null) {
|
|
14
|
+
if (parseInstantNanoseconds(state.anchor) === null) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
state.anchorInstant = instantFrom(state.anchor);
|
|
18
|
+
}
|
|
19
|
+
return { shared: state.shared, anchorInstant: state.anchorInstant };
|
|
20
|
+
}
|
|
21
|
+
/** One entry's cut-off, or `null` when the entry or its cut-off is invalid. */
|
|
22
|
+
function scheduleEntry(cutoff, state) {
|
|
23
|
+
if (!isObject(cutoff)) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
const { name, offset, atLocalTime } = cutoff;
|
|
27
|
+
if (typeof name !== "string") {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
// The entry's own time of day is checked before the stack's options are read, so an invalid
|
|
31
|
+
// entry never reads the calendar.
|
|
32
|
+
const local = resolveCutoffTime(atLocalTime);
|
|
33
|
+
const context = local === null ? null : stackContext(state);
|
|
34
|
+
if (local === null || context === null || !isDurationString(offset)) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
const found = cutoffAtResolved(context.anchorInstant, Temporal.Duration.from(offset), local.time, context.shared);
|
|
38
|
+
return found === null ? null : { name, at: found.text, ns: found.ns };
|
|
39
|
+
}
|
|
5
40
|
/**
|
|
6
41
|
* Compute a whole stack of cut-offs against one anchor event, earliest first.
|
|
7
42
|
*
|
|
@@ -32,37 +67,34 @@ import { cutoffAt } from "./cutoffAt.js";
|
|
|
32
67
|
* @example cutoffSchedule("2024-06-18T16:00:00Z", [{ name: "document", offset: "P2D", atLocalTime: "17:00" }, { name: "VGM", offset: "P1D", atLocalTime: "10:00" }], { timeZone: "Europe/Amsterdam", calendar: { weekend: [6, 7], holidays: [], timeZone: "Europe/Amsterdam" }, roll: "preceding" }) // [{ name: "document", at: "2024-06-14T17:00:00+02:00[Europe/Amsterdam]" }, { name: "VGM", at: "2024-06-17T10:00:00+02:00[Europe/Amsterdam]" }] (Sunday's document cut-off rolls back to Friday)
|
|
33
68
|
* @example cutoffSchedule("2024-06-14T16:00:00Z", [], { timeZone: "Europe/Amsterdam" }) // []
|
|
34
69
|
* @example cutoffSchedule("2024-06-14T16:00:00Z", [{ name: "document", offset: "2 days" }], { timeZone: "Europe/Amsterdam" }) // []
|
|
35
|
-
* @example cutoffSchedule("2024-
|
|
70
|
+
* @example cutoffSchedule("2024-10-07T07:00:00Z", [{ name: "gate-in", offset: "P1D" }, { name: "VGM", offset: "P1D", atLocalTime: "02:30" }], { timeZone: "Australia/Sydney" }) // [] (02:30 on 6 October never happened)
|
|
36
71
|
*/
|
|
37
72
|
export function cutoffSchedule(anchor, cutoffs, options) {
|
|
38
73
|
try {
|
|
39
74
|
if (!Array.isArray(cutoffs) || !isObject(options)) {
|
|
40
75
|
return [];
|
|
41
76
|
}
|
|
77
|
+
// Every read of `options` happens here, once. The zone, the calendar and the anchor are
|
|
78
|
+
// validated and parsed once for the whole stack, at the first entry: an empty list reads
|
|
79
|
+
// none of them.
|
|
42
80
|
const { timeZone, calendar, roll } = options;
|
|
81
|
+
const state = {
|
|
82
|
+
anchor,
|
|
83
|
+
options: { timeZone, calendar, roll },
|
|
84
|
+
shared: null,
|
|
85
|
+
anchorInstant: null,
|
|
86
|
+
};
|
|
43
87
|
const schedule = [];
|
|
44
88
|
for (const cutoff of cutoffs) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
const { name, offset, atLocalTime } = cutoff;
|
|
49
|
-
if (typeof name !== "string") {
|
|
50
|
-
return [];
|
|
51
|
-
}
|
|
52
|
-
const at = cutoffAt(anchor, offset, {
|
|
53
|
-
timeZone,
|
|
54
|
-
atLocalTime,
|
|
55
|
-
calendar,
|
|
56
|
-
roll,
|
|
57
|
-
});
|
|
58
|
-
if (at === "") {
|
|
89
|
+
const entry = scheduleEntry(cutoff, state);
|
|
90
|
+
if (entry === null) {
|
|
59
91
|
return [];
|
|
60
92
|
}
|
|
61
|
-
schedule.push(
|
|
93
|
+
schedule.push(entry);
|
|
62
94
|
}
|
|
63
95
|
// Array.prototype.sort is stable, so entries on the same instant keep their input order.
|
|
64
96
|
return schedule
|
|
65
|
-
.sort((a, b) =>
|
|
97
|
+
.sort((a, b) => (a.ns < b.ns ? -1 : a.ns > b.ns ? 1 : 0))
|
|
66
98
|
.map(({ name, at }) => ({ name, at }));
|
|
67
99
|
}
|
|
68
100
|
catch {
|
|
@@ -71,12 +71,12 @@ export interface Dwell {
|
|
|
71
71
|
* days are counted in; defaults to `entry`'s bracketed zone
|
|
72
72
|
* @returns exact duration, zone-local entry and exit, and the local calendar days touched, or null on invalid input
|
|
73
73
|
*
|
|
74
|
-
* @example dwellTime("2024-06-15T23:00:00
|
|
74
|
+
* @example dwellTime("2024-06-15T23:00:00+09:00[Asia/Tokyo]", "2024-06-16T01:00:00+09:00[Asia/Tokyo]") // { duration: "PT2H", enter: "2024-06-15T23:00:00+09:00[Asia/Tokyo]", exit: "2024-06-16T01:00:00+09:00[Asia/Tokyo]", calendarDays: 2 }
|
|
75
75
|
* @example dwellTime("2024-06-15T08:00:00Z", "2024-06-15T17:30:00Z", "Europe/Berlin") // { duration: "PT9H30M", enter: "2024-06-15T10:00:00+02:00[Europe/Berlin]", exit: "2024-06-15T19:30:00+02:00[Europe/Berlin]", calendarDays: 1 }
|
|
76
76
|
* @example dwellTime("2024-06-15T22:30:00Z", "2024-06-16T01:00:00Z", "Europe/London") // { duration: "PT2H30M", enter: "2024-06-15T23:30:00+01:00[Europe/London]", exit: "2024-06-16T02:00:00+01:00[Europe/London]", calendarDays: 2 }
|
|
77
77
|
* @example dwellTime("2024-06-15T22:30:00Z", "2024-06-16T01:00:00Z", "Europe/Amsterdam") // { duration: "PT2H30M", enter: "2024-06-16T00:30:00+02:00[Europe/Amsterdam]", exit: "2024-06-16T03:00:00+02:00[Europe/Amsterdam]", calendarDays: 1 } (the same two instants, one fewer day: the zone decides)
|
|
78
|
-
* @example dwellTime("2024-06-15T22:00:00Z", "2024-06-16T04:00:00Z", "America/
|
|
79
|
-
* @example dwellTime("2024-03-
|
|
78
|
+
* @example dwellTime("2024-06-15T22:00:00Z", "2024-06-16T04:00:00Z", "America/Caracas") // { duration: "PT6H", enter: "2024-06-15T18:00:00-04:00[America/Caracas]", exit: "2024-06-16T00:00:00-04:00[America/Caracas]", calendarDays: 1 } (an exit exactly at local midnight does not touch the new day)
|
|
79
|
+
* @example dwellTime("2024-03-31T00:00:00Z", "2024-03-31T07:00:00Z", "Europe/London") // { duration: "PT7H", enter: "2024-03-31T00:00:00+00:00[Europe/London]", exit: "2024-03-31T08:00:00+01:00[Europe/London]", calendarDays: 1 } (seven elapsed hours across the spring-forward, one local day)
|
|
80
80
|
* @example dwellTime("2011-12-30T08:00:00Z", "2011-12-30T11:00:00Z", "Pacific/Apia") // { duration: "PT3H", enter: "2011-12-29T22:00:00-10:00[Pacific/Apia]", exit: "2011-12-31T01:00:00+14:00[Pacific/Apia]", calendarDays: 2 } (29 and 31 December: Samoa deleted the 30th)
|
|
81
81
|
* @example dwellTime("2024-06-15T22:30:00Z", "2024-06-16T01:00:00Z", "+02:00") // { duration: "PT2H30M", enter: "2024-06-16T00:30:00+02:00[+02:00]", exit: "2024-06-16T03:00:00+02:00[+02:00]", calendarDays: 1 } (a fixed offset counts days with no DST)
|
|
82
82
|
* @example dwellTime("2024-06-15T22:30:00Z", "2024-06-16T01:00:00Z") // null (bare instants and no zone: the day count has no locality)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Temporal } from "
|
|
1
|
+
import { Temporal } from "../../internal/temporal.js";
|
|
2
2
|
import { countZonedLocalDates, instantFrom, zonedDateTimeFrom, } from "../../internal/index.js";
|
|
3
3
|
import { isValidInstant } from "../../precision/validate/isValidInstant.js";
|
|
4
4
|
import { isValidTimeZone } from "../../zoned/validate/isValidTimeZone.js";
|
|
@@ -80,12 +80,12 @@ function dwellZone(entry, targetZone) {
|
|
|
80
80
|
* days are counted in; defaults to `entry`'s bracketed zone
|
|
81
81
|
* @returns exact duration, zone-local entry and exit, and the local calendar days touched, or null on invalid input
|
|
82
82
|
*
|
|
83
|
-
* @example dwellTime("2024-06-15T23:00:00
|
|
83
|
+
* @example dwellTime("2024-06-15T23:00:00+09:00[Asia/Tokyo]", "2024-06-16T01:00:00+09:00[Asia/Tokyo]") // { duration: "PT2H", enter: "2024-06-15T23:00:00+09:00[Asia/Tokyo]", exit: "2024-06-16T01:00:00+09:00[Asia/Tokyo]", calendarDays: 2 }
|
|
84
84
|
* @example dwellTime("2024-06-15T08:00:00Z", "2024-06-15T17:30:00Z", "Europe/Berlin") // { duration: "PT9H30M", enter: "2024-06-15T10:00:00+02:00[Europe/Berlin]", exit: "2024-06-15T19:30:00+02:00[Europe/Berlin]", calendarDays: 1 }
|
|
85
85
|
* @example dwellTime("2024-06-15T22:30:00Z", "2024-06-16T01:00:00Z", "Europe/London") // { duration: "PT2H30M", enter: "2024-06-15T23:30:00+01:00[Europe/London]", exit: "2024-06-16T02:00:00+01:00[Europe/London]", calendarDays: 2 }
|
|
86
86
|
* @example dwellTime("2024-06-15T22:30:00Z", "2024-06-16T01:00:00Z", "Europe/Amsterdam") // { duration: "PT2H30M", enter: "2024-06-16T00:30:00+02:00[Europe/Amsterdam]", exit: "2024-06-16T03:00:00+02:00[Europe/Amsterdam]", calendarDays: 1 } (the same two instants, one fewer day: the zone decides)
|
|
87
|
-
* @example dwellTime("2024-06-15T22:00:00Z", "2024-06-16T04:00:00Z", "America/
|
|
88
|
-
* @example dwellTime("2024-03-
|
|
87
|
+
* @example dwellTime("2024-06-15T22:00:00Z", "2024-06-16T04:00:00Z", "America/Caracas") // { duration: "PT6H", enter: "2024-06-15T18:00:00-04:00[America/Caracas]", exit: "2024-06-16T00:00:00-04:00[America/Caracas]", calendarDays: 1 } (an exit exactly at local midnight does not touch the new day)
|
|
88
|
+
* @example dwellTime("2024-03-31T00:00:00Z", "2024-03-31T07:00:00Z", "Europe/London") // { duration: "PT7H", enter: "2024-03-31T00:00:00+00:00[Europe/London]", exit: "2024-03-31T08:00:00+01:00[Europe/London]", calendarDays: 1 } (seven elapsed hours across the spring-forward, one local day)
|
|
89
89
|
* @example dwellTime("2011-12-30T08:00:00Z", "2011-12-30T11:00:00Z", "Pacific/Apia") // { duration: "PT3H", enter: "2011-12-29T22:00:00-10:00[Pacific/Apia]", exit: "2011-12-31T01:00:00+14:00[Pacific/Apia]", calendarDays: 2 } (29 and 31 December: Samoa deleted the 30th)
|
|
90
90
|
* @example dwellTime("2024-06-15T22:30:00Z", "2024-06-16T01:00:00Z", "+02:00") // { duration: "PT2H30M", enter: "2024-06-16T00:30:00+02:00[+02:00]", exit: "2024-06-16T03:00:00+02:00[+02:00]", calendarDays: 1 } (a fixed offset counts days with no DST)
|
|
91
91
|
* @example dwellTime("2024-06-15T22:30:00Z", "2024-06-16T01:00:00Z") // null (bare instants and no zone: the day count has no locality)
|
|
@@ -40,7 +40,7 @@ export interface DriftReport {
|
|
|
40
40
|
* - `revisions` is the number of EST records, the first included.
|
|
41
41
|
* - `drift` is the last EST's `at` minus the first's, in exact elapsed time with hours as the
|
|
42
42
|
* largest unit: positive when the estimate moved later, negative when earlier. Across a
|
|
43
|
-
* fall-back night, 01:30
|
|
43
|
+
* fall-back night, 01:30 BST to 01:30 GMT is `PT1H`.
|
|
44
44
|
* - With `tolerance`, `exceedsTolerance` is `true` when the drift, in either direction, is
|
|
45
45
|
* **greater** than the tolerance; exactly the tolerance is `false`. Without it, `null`.
|
|
46
46
|
* - `first` and `last` echo `at` exactly as written; both are instants (`Z`/offset) or zoned
|
|
@@ -13,7 +13,7 @@ import { formatHourDuration, isOptionsArgument, nonNegativeExactDurationNanoseco
|
|
|
13
13
|
* - `revisions` is the number of EST records, the first included.
|
|
14
14
|
* - `drift` is the last EST's `at` minus the first's, in exact elapsed time with hours as the
|
|
15
15
|
* largest unit: positive when the estimate moved later, negative when earlier. Across a
|
|
16
|
-
* fall-back night, 01:30
|
|
16
|
+
* fall-back night, 01:30 BST to 01:30 GMT is `PT1H`.
|
|
17
17
|
* - With `tolerance`, `exceedsTolerance` is `true` when the drift, in either direction, is
|
|
18
18
|
* **greater** than the tolerance; exactly the tolerance is `false`. Without it, `null`.
|
|
19
19
|
* - `first` and `last` echo `at` exactly as written; both are instants (`Z`/offset) or zoned
|
|
@@ -67,10 +67,10 @@ export interface NextDepartureOptions {
|
|
|
67
67
|
*
|
|
68
68
|
* @example nextDeparture("2024-06-15T09:00:00Z", ["2024-06-15T08:00:00Z", "2024-06-15T09:30:00Z", "2024-06-15T11:00:00Z"]) // "2024-06-15T09:30:00Z"
|
|
69
69
|
* @example nextDeparture("2024-06-15T09:00:00Z", ["2024-06-15T08:00:00Z", "2024-06-15T09:30:00Z", "2024-06-15T11:00:00Z"], { minimumConnection: "PT45M" }) // "2024-06-15T11:00:00Z" (a 45-minute connection misses the 09:30)
|
|
70
|
-
* @example nextDeparture("2024-06-15T09:00:00Z", ["2024-06-15T05:30:00-04:00[America/
|
|
70
|
+
* @example nextDeparture("2024-06-15T09:00:00Z", ["2024-06-15T05:30:00-04:00[America/Santiago]"]) // "2024-06-15T05:30:00-04:00[America/Santiago]" (echoed as written)
|
|
71
71
|
* @example nextDeparture("2024-06-15T06:05:00+02:00", { headway: "PT20M", from: "2024-06-15T06:00:00+02:00", to: "2024-06-15T09:00:00+02:00" }) // "2024-06-15T06:20:00+02:00"
|
|
72
72
|
* @example nextDeparture("2024-06-15T09:00:00+02:00", { headway: "PT20M", from: "2024-06-15T06:00:00+02:00", to: "2024-06-15T09:00:00+02:00" }) // "" (to is excluded)
|
|
73
|
-
* @example nextDeparture("2024-
|
|
73
|
+
* @example nextDeparture("2024-10-27T01:30:00+01:00[Europe/London]", { headway: "PT1H", from: "2024-10-27T00:00:00+01:00[Europe/London]", to: "2024-10-27T04:00:00+00:00[Europe/London]" }) // "2024-10-27T01:00:00+00:00[Europe/London]" (hourly in exact time: the repeated hour's second pass)
|
|
74
74
|
* @example nextDeparture("2024-06-15T09:00:00Z", ["2024-06-15T09:30:00"]) // "" (a timetable entry needs an offset)
|
|
75
75
|
* @example nextDeparture("2024-06-15T09:00:00Z", ["2024-06-15T09:30:00[Europe/London]"]) // "" (a zoned entry needs its offset too)
|
|
76
76
|
* @example nextDeparture("2024-06-15T09:00:00Z", ["2024-06-15T09:30:00Z"], { minimumConnection: "-PT5M" }) // "" (a negative connection)
|
|
@@ -91,10 +91,10 @@ function headwayDeparture(threshold, service) {
|
|
|
91
91
|
*
|
|
92
92
|
* @example nextDeparture("2024-06-15T09:00:00Z", ["2024-06-15T08:00:00Z", "2024-06-15T09:30:00Z", "2024-06-15T11:00:00Z"]) // "2024-06-15T09:30:00Z"
|
|
93
93
|
* @example nextDeparture("2024-06-15T09:00:00Z", ["2024-06-15T08:00:00Z", "2024-06-15T09:30:00Z", "2024-06-15T11:00:00Z"], { minimumConnection: "PT45M" }) // "2024-06-15T11:00:00Z" (a 45-minute connection misses the 09:30)
|
|
94
|
-
* @example nextDeparture("2024-06-15T09:00:00Z", ["2024-06-15T05:30:00-04:00[America/
|
|
94
|
+
* @example nextDeparture("2024-06-15T09:00:00Z", ["2024-06-15T05:30:00-04:00[America/Santiago]"]) // "2024-06-15T05:30:00-04:00[America/Santiago]" (echoed as written)
|
|
95
95
|
* @example nextDeparture("2024-06-15T06:05:00+02:00", { headway: "PT20M", from: "2024-06-15T06:00:00+02:00", to: "2024-06-15T09:00:00+02:00" }) // "2024-06-15T06:20:00+02:00"
|
|
96
96
|
* @example nextDeparture("2024-06-15T09:00:00+02:00", { headway: "PT20M", from: "2024-06-15T06:00:00+02:00", to: "2024-06-15T09:00:00+02:00" }) // "" (to is excluded)
|
|
97
|
-
* @example nextDeparture("2024-
|
|
97
|
+
* @example nextDeparture("2024-10-27T01:30:00+01:00[Europe/London]", { headway: "PT1H", from: "2024-10-27T00:00:00+01:00[Europe/London]", to: "2024-10-27T04:00:00+00:00[Europe/London]" }) // "2024-10-27T01:00:00+00:00[Europe/London]" (hourly in exact time: the repeated hour's second pass)
|
|
98
98
|
* @example nextDeparture("2024-06-15T09:00:00Z", ["2024-06-15T09:30:00"]) // "" (a timetable entry needs an offset)
|
|
99
99
|
* @example nextDeparture("2024-06-15T09:00:00Z", ["2024-06-15T09:30:00[Europe/London]"]) // "" (a zoned entry needs its offset too)
|
|
100
100
|
* @example nextDeparture("2024-06-15T09:00:00Z", ["2024-06-15T09:30:00Z"], { minimumConnection: "-PT5M" }) // "" (a negative connection)
|
|
@@ -109,7 +109,7 @@ export interface DeliverySchedule {
|
|
|
109
109
|
* cannot be used for a later one. The missed-connection check still runs after resolution, so a
|
|
110
110
|
* later zoneless departure that resolves earlier than the cursor is still `null`.
|
|
111
111
|
* - **Local-time resolution policy (`"compatible"`).** A zoned departure written without an
|
|
112
|
-
* offset (`"2024-
|
|
112
|
+
* offset (`"2024-10-27T01:30:00[Europe/London]"`), a zoneless first departure read in
|
|
113
113
|
* `startTimeZone`, and a zoneless later-leg departure read in the previous leg's `timeZone`
|
|
114
114
|
* are all wall times. An **ambiguous** wall time — a fall-back hour the clock ran through
|
|
115
115
|
* twice — resolves to the **earlier** instant; a **nonexistent** one — a spring-forward hour
|
|
@@ -144,7 +144,7 @@ export interface DeliverySchedule {
|
|
|
144
144
|
* @example scheduleDelivery([{ departure: "2024-06-15T10:00:00Z", duration: "PT36H", timeZone: "Asia/Tokyo" }]) // { eta: "2024-06-17T07:00:00+09:00[Asia/Tokyo]", legTimes: [{ arrival: "2024-06-16T22:00:00Z", localArrival: "2024-06-17T07:00:00+09:00[Asia/Tokyo]", dwellAfter: "PT0S" }] }
|
|
145
145
|
* @example scheduleDelivery([{ departure: "2024-06-15T00:00:00Z", duration: "PT10H", timeZone: "UTC", dwellAfter: "PT2H" }, { duration: "PT5H", timeZone: "Asia/Tokyo" }]) // { eta: "2024-06-16T02:00:00+09:00[Asia/Tokyo]", legTimes: [{ arrival: "2024-06-15T10:00:00Z", localArrival: "2024-06-15T10:00:00+00:00[UTC]", dwellAfter: "PT2H" }, { arrival: "2024-06-15T17:00:00Z", localArrival: "2024-06-16T02:00:00+09:00[Asia/Tokyo]", dwellAfter: "PT0S" }] } (the second leg leaves at 12:00Z, after the dwell)
|
|
146
146
|
* @example scheduleDelivery([{ departure: "2024-06-15T10:00:00Z", duration: "PT1H", timeZone: "UTC", mode: "ship" }]) // { eta: "2024-06-15T11:00:00+00:00[UTC]", legTimes: [{ arrival: "2024-06-15T11:00:00Z", localArrival: "2024-06-15T11:00:00+00:00[UTC]", dwellAfter: "PT0S", mode: "ship" }] } (tags echo back; unsupplied tag keys stay absent)
|
|
147
|
-
* @example scheduleDelivery([{ departure: "2024-06-15T10:00:00", duration: "PT1H", timeZone: "UTC" }], { startTimeZone: "America/
|
|
147
|
+
* @example scheduleDelivery([{ departure: "2024-06-15T10:00:00", duration: "PT1H", timeZone: "UTC" }], { startTimeZone: "America/Sao_Paulo" }) // { eta: "2024-06-15T14:00:00+00:00[UTC]", legTimes: [{ arrival: "2024-06-15T14:00:00Z", localArrival: "2024-06-15T14:00:00+00:00[UTC]", dwellAfter: "PT0S" }] } (a published 10:00 wall time, read in São Paulo)
|
|
148
148
|
* @example scheduleDelivery([{ departure: "2024-06-15T00:00:00Z", duration: "PT10H", timeZone: "UTC", dwellAfter: "PT2H" }, { departure: "2024-06-15T13:00:00", duration: "PT1H", timeZone: "UTC" }]) // { eta: "2024-06-15T14:00:00+00:00[UTC]", legTimes: [{ arrival: "2024-06-15T10:00:00Z", localArrival: "2024-06-15T10:00:00+00:00[UTC]", dwellAfter: "PT2H" }, { arrival: "2024-06-15T14:00:00Z", localArrival: "2024-06-15T14:00:00+00:00[UTC]", dwellAfter: "PT0S" }] } (leg 2's zoneless 13:00 is read in leg 1's UTC destination zone, not startTimeZone, since none was supplied)
|
|
149
149
|
* @example scheduleDelivery([{ departure: "2024-06-15T00:00:00Z", duration: "PT10H", timeZone: "UTC", dwellAfter: "PT2H" }, { departure: "2024-06-15T11:00:00", duration: "PT1H", timeZone: "UTC" }]) // null (leg 2's zoneless 11:00, read in UTC, falls inside leg 1's dwell: a missed connection)
|
|
150
150
|
* @example scheduleDelivery([]) // { eta: "", legTimes: [] }
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Temporal } from "
|
|
1
|
+
import { Temporal } from "../../internal/temporal.js";
|
|
2
2
|
import { TIME_ZONE_ANNOTATION, exactDurationNanoseconds, isOptionsArgument, isoStringBody, zonedDateTimeFrom, } from "../../internal/index.js";
|
|
3
3
|
import { isValidDateTime } from "../../plain/validate/isValidDateTime.js";
|
|
4
4
|
import { isValidInstant } from "../../precision/validate/isValidInstant.js";
|
|
@@ -231,7 +231,7 @@ function chainLegs(legs, startTimeZone) {
|
|
|
231
231
|
* cannot be used for a later one. The missed-connection check still runs after resolution, so a
|
|
232
232
|
* later zoneless departure that resolves earlier than the cursor is still `null`.
|
|
233
233
|
* - **Local-time resolution policy (`"compatible"`).** A zoned departure written without an
|
|
234
|
-
* offset (`"2024-
|
|
234
|
+
* offset (`"2024-10-27T01:30:00[Europe/London]"`), a zoneless first departure read in
|
|
235
235
|
* `startTimeZone`, and a zoneless later-leg departure read in the previous leg's `timeZone`
|
|
236
236
|
* are all wall times. An **ambiguous** wall time — a fall-back hour the clock ran through
|
|
237
237
|
* twice — resolves to the **earlier** instant; a **nonexistent** one — a spring-forward hour
|
|
@@ -266,7 +266,7 @@ function chainLegs(legs, startTimeZone) {
|
|
|
266
266
|
* @example scheduleDelivery([{ departure: "2024-06-15T10:00:00Z", duration: "PT36H", timeZone: "Asia/Tokyo" }]) // { eta: "2024-06-17T07:00:00+09:00[Asia/Tokyo]", legTimes: [{ arrival: "2024-06-16T22:00:00Z", localArrival: "2024-06-17T07:00:00+09:00[Asia/Tokyo]", dwellAfter: "PT0S" }] }
|
|
267
267
|
* @example scheduleDelivery([{ departure: "2024-06-15T00:00:00Z", duration: "PT10H", timeZone: "UTC", dwellAfter: "PT2H" }, { duration: "PT5H", timeZone: "Asia/Tokyo" }]) // { eta: "2024-06-16T02:00:00+09:00[Asia/Tokyo]", legTimes: [{ arrival: "2024-06-15T10:00:00Z", localArrival: "2024-06-15T10:00:00+00:00[UTC]", dwellAfter: "PT2H" }, { arrival: "2024-06-15T17:00:00Z", localArrival: "2024-06-16T02:00:00+09:00[Asia/Tokyo]", dwellAfter: "PT0S" }] } (the second leg leaves at 12:00Z, after the dwell)
|
|
268
268
|
* @example scheduleDelivery([{ departure: "2024-06-15T10:00:00Z", duration: "PT1H", timeZone: "UTC", mode: "ship" }]) // { eta: "2024-06-15T11:00:00+00:00[UTC]", legTimes: [{ arrival: "2024-06-15T11:00:00Z", localArrival: "2024-06-15T11:00:00+00:00[UTC]", dwellAfter: "PT0S", mode: "ship" }] } (tags echo back; unsupplied tag keys stay absent)
|
|
269
|
-
* @example scheduleDelivery([{ departure: "2024-06-15T10:00:00", duration: "PT1H", timeZone: "UTC" }], { startTimeZone: "America/
|
|
269
|
+
* @example scheduleDelivery([{ departure: "2024-06-15T10:00:00", duration: "PT1H", timeZone: "UTC" }], { startTimeZone: "America/Sao_Paulo" }) // { eta: "2024-06-15T14:00:00+00:00[UTC]", legTimes: [{ arrival: "2024-06-15T14:00:00Z", localArrival: "2024-06-15T14:00:00+00:00[UTC]", dwellAfter: "PT0S" }] } (a published 10:00 wall time, read in São Paulo)
|
|
270
270
|
* @example scheduleDelivery([{ departure: "2024-06-15T00:00:00Z", duration: "PT10H", timeZone: "UTC", dwellAfter: "PT2H" }, { departure: "2024-06-15T13:00:00", duration: "PT1H", timeZone: "UTC" }]) // { eta: "2024-06-15T14:00:00+00:00[UTC]", legTimes: [{ arrival: "2024-06-15T10:00:00Z", localArrival: "2024-06-15T10:00:00+00:00[UTC]", dwellAfter: "PT2H" }, { arrival: "2024-06-15T14:00:00Z", localArrival: "2024-06-15T14:00:00+00:00[UTC]", dwellAfter: "PT0S" }] } (leg 2's zoneless 13:00 is read in leg 1's UTC destination zone, not startTimeZone, since none was supplied)
|
|
271
271
|
* @example scheduleDelivery([{ departure: "2024-06-15T00:00:00Z", duration: "PT10H", timeZone: "UTC", dwellAfter: "PT2H" }, { departure: "2024-06-15T11:00:00", duration: "PT1H", timeZone: "UTC" }]) // null (leg 2's zoneless 11:00, read in UTC, falls inside leg 1's dwell: a missed connection)
|
|
272
272
|
* @example scheduleDelivery([]) // { eta: "", legTimes: [] }
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* leg takes "a month" in a sense that time arithmetic can fix without a reference point, and
|
|
17
17
|
* Temporal's `round` and `total` require a `relativeTo` for them. Scheduled connections that
|
|
18
18
|
* are dated rather than timed belong to `scheduleDelivery`.
|
|
19
|
-
* - **The departure's zone is preserved.** A bracketed IANA zone (
|
|
19
|
+
* - **The departure's zone is preserved.** A bracketed IANA zone (`…+09:00[Asia/Tokyo]`)
|
|
20
20
|
* stays that zone, so the arrival's offset is whatever is in force there at arrival. A `Z`
|
|
21
21
|
* instant returns a `Z` instant; an offset-only instant keeps its offset, written exactly as
|
|
22
22
|
* the departure wrote it, sub-minute offsets such as `+05:30:15` included (an offset is not a
|
|
@@ -34,9 +34,9 @@
|
|
|
34
34
|
* bracketed zone and no offset is resolved in that zone with the `"compatible"` policy,
|
|
35
35
|
* Temporal's default and `resolveLocal`'s. An **ambiguous** wall time — a fall-back hour the
|
|
36
36
|
* clock ran through twice — resolves to the **earlier** instant:
|
|
37
|
-
* `2024-
|
|
37
|
+
* `2024-04-07T02:30:00[Australia/Sydney]` is `02:30+11:00`. A **nonexistent** one — a
|
|
38
38
|
* spring-forward hour the clock skipped — resolves to the **later** instant:
|
|
39
|
-
* `2024-
|
|
39
|
+
* `2024-10-06T02:30:00[Australia/Sydney]` is `03:30+11:00`. Write the offset to name the other
|
|
40
40
|
* pass of a repeated hour; a departure that carries its offset is never re-resolved.
|
|
41
41
|
* - RFC 9557 annotations are read as `Temporal.Instant.from` reads them: a bracket without `=`
|
|
42
42
|
* is a time zone, and a `key=value` bracket with an unknown key is ignored when elective and
|
|
@@ -52,18 +52,18 @@
|
|
|
52
52
|
* @param duration ISO 8601 duration of the leg; time units and 24-hour days only
|
|
53
53
|
* @returns the arrival in the departure's zone or offset form, or "" on invalid input
|
|
54
54
|
*
|
|
55
|
-
* @example transitTime("2024-06-15T10:00:00
|
|
56
|
-
* @example transitTime("2024-03-
|
|
57
|
-
* @example transitTime("2024-03-
|
|
55
|
+
* @example transitTime("2024-06-15T10:00:00+09:00[Asia/Tokyo]", "PT2H30M") // "2024-06-15T12:30:00+09:00[Asia/Tokyo]"
|
|
56
|
+
* @example transitTime("2024-03-30T23:00:00+00:00[Europe/London]", "PT4H") // "2024-03-31T04:00:00+01:00[Europe/London]" (four elapsed hours across the spring-forward, so the wall clock reads 04:00, not 03:00)
|
|
57
|
+
* @example transitTime("2024-03-30T12:00:00+00:00[Europe/London]", "P1D") // "2024-03-31T13:00:00+01:00[Europe/London]" (a day is 24 elapsed hours, not "the same wall time tomorrow")
|
|
58
58
|
* @example transitTime("2024-06-15T10:00:00Z", "PT36H") // "2024-06-16T22:00:00Z"
|
|
59
59
|
* @example transitTime("2024-06-15T10:00:00+09:00", "PT1H") // "2024-06-15T11:00:00+09:00" (an offset stays an offset)
|
|
60
60
|
* @example transitTime("2024-06-15T10:00:00+05:30:15", "PT1H") // "2024-06-15T11:00:00+05:30:15" (a sub-minute offset is kept as written)
|
|
61
61
|
* @example transitTime("2024-06-15T10:00:00Z[foo=bar]", "PT1H") // "2024-06-15T11:00:00Z" (an elective unknown annotation is ignored)
|
|
62
|
-
* @example transitTime("2024-06-15T12:30:00
|
|
63
|
-
* @example transitTime("2024-
|
|
64
|
-
* @example transitTime("2024-
|
|
65
|
-
* @example transitTime("2024-06-15T10:00:00
|
|
66
|
-
* @example transitTime("2024-06-15T10:00:00
|
|
62
|
+
* @example transitTime("2024-06-15T12:30:00+09:00[Asia/Tokyo]", "-PT2H30M") // "2024-06-15T10:00:00+09:00[Asia/Tokyo]"
|
|
63
|
+
* @example transitTime("2024-04-07T02:30:00[Australia/Sydney]", "PT0S") // "2024-04-07T02:30:00+11:00[Australia/Sydney]" (an ambiguous wall time resolves to the earlier instant)
|
|
64
|
+
* @example transitTime("2024-10-06T02:30:00[Australia/Sydney]", "PT0S") // "2024-10-06T03:30:00+11:00[Australia/Sydney]" (a nonexistent wall time resolves to the later instant)
|
|
65
|
+
* @example transitTime("2024-06-15T10:00:00+02:00[Africa/Johannesburg]", "P1M") // "" (calendar units need a reference point)
|
|
66
|
+
* @example transitTime("2024-06-15T10:00:00+00:00[Europe/London]", "PT2H") // "" (London is +01:00 in June: the offset contradicts the zone)
|
|
67
67
|
* @example transitTime("-271821-04-19T23:59:00-00:01[Europe/London]", "PT0S") // "" (a zoned string on a local date before Temporal's date range)
|
|
68
68
|
* @example transitTime("2024-06-15T10:00:00", "PT2H") // "" (no zone and no offset: not a moment)
|
|
69
69
|
* @example transitTime("2024-06-15T10:00:00Z", "2 hours") // ""
|
|
@@ -17,7 +17,7 @@ import { exactDurationNanoseconds, readExactMoment, writeExactMoment, } from "..
|
|
|
17
17
|
* leg takes "a month" in a sense that time arithmetic can fix without a reference point, and
|
|
18
18
|
* Temporal's `round` and `total` require a `relativeTo` for them. Scheduled connections that
|
|
19
19
|
* are dated rather than timed belong to `scheduleDelivery`.
|
|
20
|
-
* - **The departure's zone is preserved.** A bracketed IANA zone (
|
|
20
|
+
* - **The departure's zone is preserved.** A bracketed IANA zone (`…+09:00[Asia/Tokyo]`)
|
|
21
21
|
* stays that zone, so the arrival's offset is whatever is in force there at arrival. A `Z`
|
|
22
22
|
* instant returns a `Z` instant; an offset-only instant keeps its offset, written exactly as
|
|
23
23
|
* the departure wrote it, sub-minute offsets such as `+05:30:15` included (an offset is not a
|
|
@@ -35,9 +35,9 @@ import { exactDurationNanoseconds, readExactMoment, writeExactMoment, } from "..
|
|
|
35
35
|
* bracketed zone and no offset is resolved in that zone with the `"compatible"` policy,
|
|
36
36
|
* Temporal's default and `resolveLocal`'s. An **ambiguous** wall time — a fall-back hour the
|
|
37
37
|
* clock ran through twice — resolves to the **earlier** instant:
|
|
38
|
-
* `2024-
|
|
38
|
+
* `2024-04-07T02:30:00[Australia/Sydney]` is `02:30+11:00`. A **nonexistent** one — a
|
|
39
39
|
* spring-forward hour the clock skipped — resolves to the **later** instant:
|
|
40
|
-
* `2024-
|
|
40
|
+
* `2024-10-06T02:30:00[Australia/Sydney]` is `03:30+11:00`. Write the offset to name the other
|
|
41
41
|
* pass of a repeated hour; a departure that carries its offset is never re-resolved.
|
|
42
42
|
* - RFC 9557 annotations are read as `Temporal.Instant.from` reads them: a bracket without `=`
|
|
43
43
|
* is a time zone, and a `key=value` bracket with an unknown key is ignored when elective and
|
|
@@ -53,18 +53,18 @@ import { exactDurationNanoseconds, readExactMoment, writeExactMoment, } from "..
|
|
|
53
53
|
* @param duration ISO 8601 duration of the leg; time units and 24-hour days only
|
|
54
54
|
* @returns the arrival in the departure's zone or offset form, or "" on invalid input
|
|
55
55
|
*
|
|
56
|
-
* @example transitTime("2024-06-15T10:00:00
|
|
57
|
-
* @example transitTime("2024-03-
|
|
58
|
-
* @example transitTime("2024-03-
|
|
56
|
+
* @example transitTime("2024-06-15T10:00:00+09:00[Asia/Tokyo]", "PT2H30M") // "2024-06-15T12:30:00+09:00[Asia/Tokyo]"
|
|
57
|
+
* @example transitTime("2024-03-30T23:00:00+00:00[Europe/London]", "PT4H") // "2024-03-31T04:00:00+01:00[Europe/London]" (four elapsed hours across the spring-forward, so the wall clock reads 04:00, not 03:00)
|
|
58
|
+
* @example transitTime("2024-03-30T12:00:00+00:00[Europe/London]", "P1D") // "2024-03-31T13:00:00+01:00[Europe/London]" (a day is 24 elapsed hours, not "the same wall time tomorrow")
|
|
59
59
|
* @example transitTime("2024-06-15T10:00:00Z", "PT36H") // "2024-06-16T22:00:00Z"
|
|
60
60
|
* @example transitTime("2024-06-15T10:00:00+09:00", "PT1H") // "2024-06-15T11:00:00+09:00" (an offset stays an offset)
|
|
61
61
|
* @example transitTime("2024-06-15T10:00:00+05:30:15", "PT1H") // "2024-06-15T11:00:00+05:30:15" (a sub-minute offset is kept as written)
|
|
62
62
|
* @example transitTime("2024-06-15T10:00:00Z[foo=bar]", "PT1H") // "2024-06-15T11:00:00Z" (an elective unknown annotation is ignored)
|
|
63
|
-
* @example transitTime("2024-06-15T12:30:00
|
|
64
|
-
* @example transitTime("2024-
|
|
65
|
-
* @example transitTime("2024-
|
|
66
|
-
* @example transitTime("2024-06-15T10:00:00
|
|
67
|
-
* @example transitTime("2024-06-15T10:00:00
|
|
63
|
+
* @example transitTime("2024-06-15T12:30:00+09:00[Asia/Tokyo]", "-PT2H30M") // "2024-06-15T10:00:00+09:00[Asia/Tokyo]"
|
|
64
|
+
* @example transitTime("2024-04-07T02:30:00[Australia/Sydney]", "PT0S") // "2024-04-07T02:30:00+11:00[Australia/Sydney]" (an ambiguous wall time resolves to the earlier instant)
|
|
65
|
+
* @example transitTime("2024-10-06T02:30:00[Australia/Sydney]", "PT0S") // "2024-10-06T03:30:00+11:00[Australia/Sydney]" (a nonexistent wall time resolves to the later instant)
|
|
66
|
+
* @example transitTime("2024-06-15T10:00:00+02:00[Africa/Johannesburg]", "P1M") // "" (calendar units need a reference point)
|
|
67
|
+
* @example transitTime("2024-06-15T10:00:00+00:00[Europe/London]", "PT2H") // "" (London is +01:00 in June: the offset contradicts the zone)
|
|
68
68
|
* @example transitTime("-271821-04-19T23:59:00-00:01[Europe/London]", "PT0S") // "" (a zoned string on a local date before Temporal's date range)
|
|
69
69
|
* @example transitTime("2024-06-15T10:00:00", "PT2H") // "" (no zone and no offset: not a moment)
|
|
70
70
|
* @example transitTime("2024-06-15T10:00:00Z", "2 hours") // ""
|
|
@@ -39,7 +39,7 @@ import type { Punctuality, PunctualityTolerance } from "../../types/index.js";
|
|
|
39
39
|
* @example classifyPunctuality("2024-06-15T10:00:00Z", "2024-06-15T09:49:00Z", { late: "PT15M", early: "PT10M" }) // "early"
|
|
40
40
|
* @example classifyPunctuality("2024-06-15T10:00:00Z", "2024-06-15T11:30:00Z", { late: "PT120M" }) // "onTime" (a 90-minute delay under a 120-minute tolerance)
|
|
41
41
|
* @example classifyPunctuality("2024-06-15T10:00:00Z", "2024-06-15T10:00:00Z", { late: "PT15M", early: "PT0S" }) // "early" (exactly on the plan is on the early boundary, which is outside)
|
|
42
|
-
* @example classifyPunctuality("2024-
|
|
42
|
+
* @example classifyPunctuality("2024-10-27T01:30:00+01:00[Europe/London]", "2024-10-27T01:30:00+00:00[Europe/London]", { late: "PT15M" }) // "late" (the same wall time an hour later, across the fall-back)
|
|
43
43
|
* @example classifyPunctuality("2024-06-15T10:00:00Z", "2024-06-15T10:14:00Z", { late: "-PT15M" }) // null (a negative tolerance)
|
|
44
44
|
* @example classifyPunctuality("2024-06-15T10:00:00Z", "2024-06-15T10:14:00Z", { late: "P1W" }) // null (weeks need a reference point)
|
|
45
45
|
*/
|
|
@@ -39,7 +39,7 @@ import { parseInstantNanoseconds, parsePunctualityTolerance, punctualityOf, } fr
|
|
|
39
39
|
* @example classifyPunctuality("2024-06-15T10:00:00Z", "2024-06-15T09:49:00Z", { late: "PT15M", early: "PT10M" }) // "early"
|
|
40
40
|
* @example classifyPunctuality("2024-06-15T10:00:00Z", "2024-06-15T11:30:00Z", { late: "PT120M" }) // "onTime" (a 90-minute delay under a 120-minute tolerance)
|
|
41
41
|
* @example classifyPunctuality("2024-06-15T10:00:00Z", "2024-06-15T10:00:00Z", { late: "PT15M", early: "PT0S" }) // "early" (exactly on the plan is on the early boundary, which is outside)
|
|
42
|
-
* @example classifyPunctuality("2024-
|
|
42
|
+
* @example classifyPunctuality("2024-10-27T01:30:00+01:00[Europe/London]", "2024-10-27T01:30:00+00:00[Europe/London]", { late: "PT15M" }) // "late" (the same wall time an hour later, across the fall-back)
|
|
43
43
|
* @example classifyPunctuality("2024-06-15T10:00:00Z", "2024-06-15T10:14:00Z", { late: "-PT15M" }) // null (a negative tolerance)
|
|
44
44
|
* @example classifyPunctuality("2024-06-15T10:00:00Z", "2024-06-15T10:14:00Z", { late: "P1W" }) // null (weeks need a reference point)
|
|
45
45
|
*/
|