@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,8 +1,13 @@
|
|
|
1
|
-
import { Temporal } from "
|
|
2
|
-
import { isBusinessDate, parseBusinessCalendar, } from "./businessCalendar.js";
|
|
1
|
+
import { Temporal } from "./temporal.js";
|
|
2
|
+
import { businessDaysWithin, isBusinessDate, isBusinessEpochDay, parseBusinessCalendar, } from "./businessCalendar.js";
|
|
3
|
+
import { countWithin, epochDayOfDate, hasEpochDay, lowerBound, } from "./epochDay.js";
|
|
4
|
+
import { NANOSECONDS_PER_DAY } from "./foreignEpochs.js";
|
|
5
|
+
import { MAX_EPOCH_NANOSECONDS, MIN_EPOCH_NANOSECONDS, } from "./epochNanoseconds.js";
|
|
6
|
+
import { floorDivide } from "./floorDivide.js";
|
|
3
7
|
import { isObject } from "./isObject.js";
|
|
8
|
+
import { ensureTimeline, offsetOf, offsetTimeline, startOfDayNs, } from "./offsetTimeline.js";
|
|
4
9
|
import { nextZonedBucketStart, zonedUnitStart } from "./zonedBucket.js";
|
|
5
|
-
import { zoneFrame } from "./zoneFrame.js";
|
|
10
|
+
import { frameEpochNanoseconds, zoneFrame } from "./zoneFrame.js";
|
|
6
11
|
import { certainlyTouchesMoreBuckets } from "./zoneBucketCap.js";
|
|
7
12
|
/**
|
|
8
13
|
* Local days a free-time walk may visit before giving up: the same cap as `bucketRange`. A
|
|
@@ -10,7 +15,7 @@ import { certainlyTouchesMoreBuckets } from "./zoneBucketCap.js";
|
|
|
10
15
|
* at most about seven local days per free or chargeable day. A walk that runs out answers with
|
|
11
16
|
* the sentinel, never a partial ledger.
|
|
12
17
|
*/
|
|
13
|
-
|
|
18
|
+
const MAX_WALKED_DAYS = 10_000;
|
|
14
19
|
/**
|
|
15
20
|
* Buckets stepped over while looking for a later date. A fall-back that re-enters the previous
|
|
16
21
|
* date (`America/Goose_Bay`, 2010-11-07 00:01 back into the 6th) opens a one-minute 7 November
|
|
@@ -117,6 +122,260 @@ export function bandsByTier(tiers, chargeable) {
|
|
|
117
122
|
bands.push({ from, to: null, days: Math.max(0, chargeable - from + 1) });
|
|
118
123
|
return bands;
|
|
119
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* How near Temporal's limits a clock may sit before the walk steps day by day. The integer walk
|
|
127
|
+
* reaches up to `MAX_WALKED_DAYS` dates out; this margin keeps every instant it asks a zone about
|
|
128
|
+
* representable, so only the day-by-day walk has to answer for an expiry past the last instant.
|
|
129
|
+
*/
|
|
130
|
+
const LIMIT_MARGIN_NANOSECONDS = BigInt(MAX_WALKED_DAYS + 100) * NANOSECONDS_PER_DAY;
|
|
131
|
+
/** Days the offset timeline reads past the dwell before a search asks for more. */
|
|
132
|
+
const TIMELINE_LOOKAHEAD_DAYS = 14n;
|
|
133
|
+
const floorDay = (ns) => Number(floorDivide(ns, NANOSECONDS_PER_DAY));
|
|
134
|
+
/**
|
|
135
|
+
* The dates a zone deleted. Only a forward change can delete one: a date whose midnight lies in
|
|
136
|
+
* the skipped wall clock, and whose next midnight is no later than the change's end, has no
|
|
137
|
+
* instants (TC39 `GetStartOfDay` gives it and the next date the same start). `Pacific/Apia` skipped
|
|
138
|
+
* 30 December 2011.
|
|
139
|
+
*/
|
|
140
|
+
function findDeletedDates(timeline) {
|
|
141
|
+
const { changes, offsets } = timeline;
|
|
142
|
+
const deleted = [];
|
|
143
|
+
for (let index = 0; index < changes.length; index++) {
|
|
144
|
+
if (offsets[index + 1] > offsets[index]) {
|
|
145
|
+
const first = floorDay(changes[index] + offsets[index]);
|
|
146
|
+
const last = floorDay(changes[index] + offsets[index + 1]);
|
|
147
|
+
for (let day = first; day <= last; day++) {
|
|
148
|
+
if (startOfDayNs(timeline, day) === startOfDayNs(timeline, day + 1) &&
|
|
149
|
+
(deleted.length === 0 || day > deleted[deleted.length - 1])) {
|
|
150
|
+
deleted.push(day);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return Int32Array.from(deleted);
|
|
156
|
+
}
|
|
157
|
+
/** Make `deleted` complete up to `day`; every query of a date calls this first. */
|
|
158
|
+
function reach(walk, day) {
|
|
159
|
+
if (day <= walk.reachedDay) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
ensureTimeline(walk.timeline, BigInt(day + 6) * NANOSECONDS_PER_DAY);
|
|
163
|
+
const reachedDay = floorDay(walk.timeline.toNs) - 6;
|
|
164
|
+
if (reachedDay !== walk.reachedDay) {
|
|
165
|
+
walk.deleted = findDeletedDates(walk.timeline);
|
|
166
|
+
walk.reachedDay = reachedDay;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/** The first visited date after `day`: the next one the zone did not delete. */
|
|
170
|
+
function nextVisited(walk, day) {
|
|
171
|
+
let next = day + 1;
|
|
172
|
+
reach(walk, next);
|
|
173
|
+
while (hasEpochDay(walk.deleted, next)) {
|
|
174
|
+
next++;
|
|
175
|
+
reach(walk, next);
|
|
176
|
+
}
|
|
177
|
+
return next;
|
|
178
|
+
}
|
|
179
|
+
/** Visited dates in [from, to] that count against the free-time terms; 0 when from > to. */
|
|
180
|
+
function countedWithin(walk, from, to) {
|
|
181
|
+
if (from > to) {
|
|
182
|
+
return 0;
|
|
183
|
+
}
|
|
184
|
+
reach(walk, to);
|
|
185
|
+
const { calendar } = walk.terms;
|
|
186
|
+
const { deleted } = walk;
|
|
187
|
+
if (calendar === null) {
|
|
188
|
+
return to - from + 1 - countWithin(deleted, from, to);
|
|
189
|
+
}
|
|
190
|
+
let count = businessDaysWithin(from, to, calendar);
|
|
191
|
+
for (let index = lowerBound(deleted, from); index < deleted.length && deleted[index] <= to; index++) {
|
|
192
|
+
if (isBusinessEpochDay(deleted[index], calendar)) {
|
|
193
|
+
count--;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return count;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* The latest date whose visited index is at most `maxIndex`, or one past it when a deleted date
|
|
200
|
+
* sits there: an upper bound for any visited date within the walk's cap.
|
|
201
|
+
*/
|
|
202
|
+
function lastDateWithin(walk, maxIndex) {
|
|
203
|
+
let day = walk.eventDay + maxIndex;
|
|
204
|
+
for (;;) {
|
|
205
|
+
reach(walk, day);
|
|
206
|
+
const next = walk.eventDay + maxIndex + countWithin(walk.deleted, walk.eventDay, day);
|
|
207
|
+
if (next === day) {
|
|
208
|
+
return day;
|
|
209
|
+
}
|
|
210
|
+
day = next;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* The visited date at which `n` counted dates have been seen, starting at `from`, or `null` when
|
|
215
|
+
* that date's index passes `maxIndex`. Doubles its reach until the count is met, then bisects.
|
|
216
|
+
*/
|
|
217
|
+
function nthCountedDate(walk, from, n, maxIndex) {
|
|
218
|
+
let high = from + Math.ceil(n * 1.5) + 8;
|
|
219
|
+
let capped = false;
|
|
220
|
+
for (;;) {
|
|
221
|
+
if (!capped && high > walk.eventDay + maxIndex) {
|
|
222
|
+
high = lastDateWithin(walk, maxIndex);
|
|
223
|
+
capped = true;
|
|
224
|
+
}
|
|
225
|
+
if (countedWithin(walk, from, high) >= n) {
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
if (capped) {
|
|
229
|
+
return null;
|
|
230
|
+
}
|
|
231
|
+
high = from + 2 * (high - from);
|
|
232
|
+
}
|
|
233
|
+
let low = from;
|
|
234
|
+
while (low < high) {
|
|
235
|
+
const middle = Math.floor((low + high) / 2);
|
|
236
|
+
if (countedWithin(walk, from, middle) >= n) {
|
|
237
|
+
high = middle;
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
low = middle + 1;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return low;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* The latest date whose first instant is at or before `lastNs`. The first instant of a date never
|
|
247
|
+
* decreases from one date to the next, so this bisects. Never earlier than the event day, so
|
|
248
|
+
* `lastNs` must not precede the clock start (the callers guarantee it).
|
|
249
|
+
*/
|
|
250
|
+
function lastTouchedDate(walk, lastNs) {
|
|
251
|
+
const lastDay = floorDay(lastNs + offsetOf(walk.timeline, lastNs));
|
|
252
|
+
let low = walk.eventDay;
|
|
253
|
+
let high = lastDay + 3;
|
|
254
|
+
reach(walk, high);
|
|
255
|
+
while (low < high) {
|
|
256
|
+
const middle = Math.ceil((low + high) / 2);
|
|
257
|
+
if (startOfDayNs(walk.timeline, middle) <= lastNs) {
|
|
258
|
+
low = middle;
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
high = middle - 1;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
return low;
|
|
265
|
+
}
|
|
266
|
+
/** The visited dates in [from, to] that are charged, ascending. */
|
|
267
|
+
function chargedDates(walk, from, to) {
|
|
268
|
+
const charged = [];
|
|
269
|
+
const { chargeCalendar } = walk.terms;
|
|
270
|
+
reach(walk, to);
|
|
271
|
+
for (let day = from; day <= to; day++) {
|
|
272
|
+
if ((chargeCalendar === null || isBusinessEpochDay(day, chargeCalendar)) &&
|
|
273
|
+
!hasEpochDay(walk.deleted, day)) {
|
|
274
|
+
charged.push(day);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
return charged;
|
|
278
|
+
}
|
|
279
|
+
/** The free-day span and expiry date: what the first part of the day-by-day walk finds. */
|
|
280
|
+
function freeSpan(walk, freeDays) {
|
|
281
|
+
const firstDay = walk.terms.firstDay === "nextDay"
|
|
282
|
+
? nextVisited(walk, walk.eventDay)
|
|
283
|
+
: walk.eventDay;
|
|
284
|
+
if (freeDays === 0) {
|
|
285
|
+
const expiryDay = nthCountedDate(walk, firstDay, 1, MAX_WALKED_DAYS);
|
|
286
|
+
return expiryDay === null
|
|
287
|
+
? null
|
|
288
|
+
: { firstFree: null, lastFree: null, expiryDay };
|
|
289
|
+
}
|
|
290
|
+
// The last free day is one visit short of the cap: the expiry is the visit after it.
|
|
291
|
+
const lastFree = nthCountedDate(walk, firstDay, freeDays, MAX_WALKED_DAYS - 1);
|
|
292
|
+
return lastFree === null
|
|
293
|
+
? null
|
|
294
|
+
: {
|
|
295
|
+
firstFree: nthCountedDate(walk, firstDay, 1, MAX_WALKED_DAYS - 1),
|
|
296
|
+
lastFree,
|
|
297
|
+
expiryDay: nextVisited(walk, lastFree),
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* `walkFreeTime` on dates, without a Temporal object per day; `undefined` when the day-by-day walk
|
|
302
|
+
* has to answer. The visited dates are the dates from the event day on, each once, without those
|
|
303
|
+
* the zone deleted (`findDeletedDates`); a free day, the expiry and the touched days are all read
|
|
304
|
+
* from them, by counting and bisecting (the rules are in the day-by-day walk's description).
|
|
305
|
+
*/
|
|
306
|
+
function walkFreeTimeByDate(clockStart, frame, freeDays, terms, clockEnd) {
|
|
307
|
+
const startNs = frameEpochNanoseconds(clockStart, frame);
|
|
308
|
+
// The last instant the dwell occupies: one nanosecond before its end, or the end of an empty dwell.
|
|
309
|
+
let lastNs;
|
|
310
|
+
if (clockEnd !== undefined) {
|
|
311
|
+
lastNs = frameEpochNanoseconds(clockEnd, frame);
|
|
312
|
+
if (Temporal.ZonedDateTime.compare(clockStart, clockEnd) < 0) {
|
|
313
|
+
lastNs -= 1n;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
const high = lastNs === undefined || lastNs < startNs ? startNs : lastNs;
|
|
317
|
+
// Too near Temporal's limits for the integer walk.
|
|
318
|
+
if (startNs - LIMIT_MARGIN_NANOSECONDS < MIN_EPOCH_NANOSECONDS ||
|
|
319
|
+
high + LIMIT_MARGIN_NANOSECONDS > MAX_EPOCH_NANOSECONDS) {
|
|
320
|
+
return undefined;
|
|
321
|
+
}
|
|
322
|
+
// The dwell certainly touches more dates than the cap; only a dwell long enough to need the
|
|
323
|
+
// zone's changes counted is asked.
|
|
324
|
+
if (clockEnd !== undefined &&
|
|
325
|
+
lastNs !== undefined &&
|
|
326
|
+
lastNs - startNs > BigInt(MAX_WALKED_DAYS - 2) * NANOSECONDS_PER_DAY &&
|
|
327
|
+
certainlyTouchesMoreBuckets(clockStart, clockEnd, "day", MAX_WALKED_DAYS)) {
|
|
328
|
+
return null;
|
|
329
|
+
}
|
|
330
|
+
const eventDayStart = localDayOf(clockStart);
|
|
331
|
+
if (eventDayStart === null) {
|
|
332
|
+
return null;
|
|
333
|
+
}
|
|
334
|
+
const timeline = offsetTimeline(frame, startNs - 6n * NANOSECONDS_PER_DAY, high + TIMELINE_LOOKAHEAD_DAYS * NANOSECONDS_PER_DAY);
|
|
335
|
+
const eventDay = floorDay(startNs + offsetOf(timeline, startNs));
|
|
336
|
+
const walk = {
|
|
337
|
+
timeline,
|
|
338
|
+
terms,
|
|
339
|
+
eventDay,
|
|
340
|
+
deleted: new Int32Array(0),
|
|
341
|
+
reachedDay: Number.NEGATIVE_INFINITY,
|
|
342
|
+
};
|
|
343
|
+
reach(walk, eventDay);
|
|
344
|
+
// The event day's own start is its first midnight unless the clock sits in a pass that
|
|
345
|
+
// re-enters the date; the later dates then start after that pass, which only the day-by-day
|
|
346
|
+
// walk lays out.
|
|
347
|
+
if (frameEpochNanoseconds(eventDayStart.start, frame) !==
|
|
348
|
+
startOfDayNs(timeline, eventDay)) {
|
|
349
|
+
return undefined;
|
|
350
|
+
}
|
|
351
|
+
const span = freeSpan(walk, freeDays);
|
|
352
|
+
if (span === null) {
|
|
353
|
+
return null;
|
|
354
|
+
}
|
|
355
|
+
const { firstFree, lastFree, expiryDay } = span;
|
|
356
|
+
const touchedDay = lastNs === undefined ? undefined : lastTouchedDate(walk, lastNs);
|
|
357
|
+
// The date the day-by-day walk would end on: the expiry when the dwell ends before it, else the
|
|
358
|
+
// first date past the dwell. The walk answers `null` when its index is past the cap.
|
|
359
|
+
const endDay = touchedDay === undefined || expiryDay > touchedDay
|
|
360
|
+
? expiryDay
|
|
361
|
+
: nextVisited(walk, touchedDay);
|
|
362
|
+
reach(walk, endDay);
|
|
363
|
+
if (endDay - eventDay - countWithin(walk.deleted, eventDay, endDay - 1) >
|
|
364
|
+
MAX_WALKED_DAYS) {
|
|
365
|
+
return null;
|
|
366
|
+
}
|
|
367
|
+
return {
|
|
368
|
+
firstFree,
|
|
369
|
+
lastFree,
|
|
370
|
+
expiresAtNs: startOfDayNs(timeline, expiryDay),
|
|
371
|
+
used: touchedDay === undefined || firstFree === null || lastFree === null
|
|
372
|
+
? 0
|
|
373
|
+
: countedWithin(walk, firstFree, Math.min(lastFree, touchedDay)),
|
|
374
|
+
charged: touchedDay === undefined || expiryDay > touchedDay
|
|
375
|
+
? []
|
|
376
|
+
: chargedDates(walk, expiryDay, touchedDay),
|
|
377
|
+
};
|
|
378
|
+
}
|
|
120
379
|
/** The local day holding `zoned`, or `null` when its start cannot be found. */
|
|
121
380
|
function localDayOf(zoned) {
|
|
122
381
|
let start;
|
|
@@ -131,13 +390,13 @@ function localDayOf(zoned) {
|
|
|
131
390
|
// clock start anchors the walk in its place.
|
|
132
391
|
return {
|
|
133
392
|
start: zoned,
|
|
134
|
-
|
|
393
|
+
epochDay: epochDayOfDate(zoned.toPlainDate()),
|
|
135
394
|
clamped: true,
|
|
136
395
|
};
|
|
137
396
|
}
|
|
138
397
|
return start === null
|
|
139
398
|
? null
|
|
140
|
-
: { start,
|
|
399
|
+
: { start, epochDay: epochDayOfDate(start.toPlainDate()) };
|
|
141
400
|
}
|
|
142
401
|
/**
|
|
143
402
|
* The first local day after `day` whose date is later than `day`'s. A bucket that re-enters an
|
|
@@ -164,7 +423,7 @@ function nextLocalDay(day) {
|
|
|
164
423
|
}
|
|
165
424
|
const date = next.toPlainDate();
|
|
166
425
|
if (Temporal.PlainDate.compare(date, current) > 0) {
|
|
167
|
-
return { start: next,
|
|
426
|
+
return { start: next, epochDay: epochDayOfDate(date) };
|
|
168
427
|
}
|
|
169
428
|
cursor = next;
|
|
170
429
|
}
|
|
@@ -191,8 +450,11 @@ function nextLocalDay(day) {
|
|
|
191
450
|
* clock start; only an expiry that would be that unrepresentable start is refused.
|
|
192
451
|
* - Returns `null` when the walk would visit more than `MAX_WALKED_DAYS` local days, when a day
|
|
193
452
|
* boundary cannot be found, or when the expiry lies outside the representable range.
|
|
453
|
+
*
|
|
454
|
+
* This is the walk the integer form (`walkFreeTime`) answers for a clock near Temporal's limits
|
|
455
|
+
* or in a pass that re-enters its date, where the day-by-day boundaries are the rule.
|
|
194
456
|
*/
|
|
195
|
-
|
|
457
|
+
function walkFreeTimeByDay(clockStart, frame, freeDays, terms, clockEnd) {
|
|
196
458
|
// The dwell's last instant, one nanosecond before the exit; a zero-length dwell is its own point.
|
|
197
459
|
const last = clockEnd === undefined
|
|
198
460
|
? undefined
|
|
@@ -200,14 +462,13 @@ export function walkFreeTime(clockStart, freeDays, terms, clockEnd) {
|
|
|
200
462
|
? clockEnd.subtract({ nanoseconds: 1 })
|
|
201
463
|
: clockEnd;
|
|
202
464
|
const touched = (day) => last !== undefined && Temporal.ZonedDateTime.compare(day.start, last) <= 0;
|
|
203
|
-
const
|
|
204
|
-
isBusinessDate(day.start.toPlainDate(), terms.calendar);
|
|
205
|
-
const charges = (day) => terms.chargeCalendar === null ||
|
|
206
|
-
isBusinessDate(day.start.toPlainDate(), terms.chargeCalendar);
|
|
207
|
-
const free = [];
|
|
465
|
+
const countsOn = (day, calendar) => calendar === null || isBusinessDate(day.start.toPlainDate(), calendar);
|
|
208
466
|
const charged = [];
|
|
467
|
+
let firstFree = null;
|
|
468
|
+
let lastFree = null;
|
|
469
|
+
let freeSeen = 0;
|
|
209
470
|
let used = 0;
|
|
210
|
-
let
|
|
471
|
+
let expiresAtNs = null;
|
|
211
472
|
let expiryPending = false;
|
|
212
473
|
let skipEventDay = terms.firstDay === "nextDay";
|
|
213
474
|
// A dwell that certainly touches more local days than the walk may visit ends it with the
|
|
@@ -225,42 +486,44 @@ export function walkFreeTime(clockStart, freeDays, terms, clockEnd) {
|
|
|
225
486
|
// One more visit than the cap: the day after the last touched one is what ends the walk.
|
|
226
487
|
for (let i = 0; i <= MAX_WALKED_DAYS; i++) {
|
|
227
488
|
const eventDaySkipped = skipEventDay;
|
|
228
|
-
const counted = !skipEventDay &&
|
|
489
|
+
const counted = !skipEventDay && countsOn(day, terms.calendar);
|
|
229
490
|
skipEventDay = false;
|
|
230
491
|
if (expiryPending) {
|
|
231
|
-
|
|
492
|
+
expiresAtNs = frameEpochNanoseconds(day.start, frame);
|
|
232
493
|
expiryPending = false;
|
|
233
494
|
}
|
|
234
|
-
else if (
|
|
495
|
+
else if (expiresAtNs === null && counted) {
|
|
235
496
|
if (freeDays === 0) {
|
|
236
497
|
// With no free time the expiry is day one's start, which must be a real instant.
|
|
237
498
|
if (day.clamped)
|
|
238
499
|
return null;
|
|
239
|
-
|
|
500
|
+
expiresAtNs = frameEpochNanoseconds(day.start, frame);
|
|
240
501
|
}
|
|
241
502
|
else {
|
|
242
|
-
|
|
503
|
+
firstFree ??= day.epochDay;
|
|
504
|
+
lastFree = day.epochDay;
|
|
243
505
|
if (touched(day))
|
|
244
506
|
used++;
|
|
245
|
-
expiryPending =
|
|
507
|
+
expiryPending = ++freeSeen === freeDays;
|
|
246
508
|
}
|
|
247
509
|
}
|
|
248
|
-
if (
|
|
249
|
-
// Free time has ended; with no clock end there is nothing more to lay out.
|
|
250
|
-
if (last === undefined
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
if (Temporal.ZonedDateTime.compare(day.start, last) > 0) {
|
|
254
|
-
return { free, expiresAt, used, charged };
|
|
510
|
+
if (expiresAtNs !== null) {
|
|
511
|
+
// Free time has ended; with no clock end, or past the dwell, there is nothing more to lay out.
|
|
512
|
+
if (last === undefined ||
|
|
513
|
+
Temporal.ZonedDateTime.compare(day.start, last) > 0) {
|
|
514
|
+
return { firstFree, lastFree, expiresAtNs, used, charged };
|
|
255
515
|
}
|
|
256
516
|
// The day of the event under `nextDay` is never charged: free time has not started on it.
|
|
257
|
-
if (!eventDaySkipped &&
|
|
258
|
-
charged.push(day);
|
|
517
|
+
if (!eventDaySkipped && countsOn(day, terms.chargeCalendar)) {
|
|
518
|
+
charged.push(day.epochDay);
|
|
519
|
+
}
|
|
259
520
|
}
|
|
260
521
|
const next = nextLocalDay(day);
|
|
261
522
|
if (next === undefined) {
|
|
262
523
|
// No representable day follows: free time can still be laid out only if it has ended.
|
|
263
|
-
return
|
|
524
|
+
return expiresAtNs === null
|
|
525
|
+
? null
|
|
526
|
+
: { firstFree, lastFree, expiresAtNs, used, charged };
|
|
264
527
|
}
|
|
265
528
|
if (next === null) {
|
|
266
529
|
return null;
|
|
@@ -269,3 +532,32 @@ export function walkFreeTime(clockStart, freeDays, terms, clockEnd) {
|
|
|
269
532
|
}
|
|
270
533
|
return null;
|
|
271
534
|
}
|
|
535
|
+
/**
|
|
536
|
+
* Lay out free time and charges from the clock start, in epoch days (see `FreeTimeLedger`).
|
|
537
|
+
*
|
|
538
|
+
* The local days of the terminal are the dates from the event day on, each once, without a date
|
|
539
|
+
* the zone deleted. Free days are the first `freeDays` counted ones (every date on a calendar
|
|
540
|
+
* basis, a working day of `calendar` otherwise); `expiresAt` is the first instant of the visited
|
|
541
|
+
* date after the last of them, or with `freeDays` of `0` of the first counted one. With a
|
|
542
|
+
* `clockEnd` the half-open dwell `[clockStart, clockEnd)` touches a date when it starts before
|
|
543
|
+
* `clockEnd`, and a zero-length dwell touches the date it sits on, as `dwellTime` counts. `used` is
|
|
544
|
+
* the free days touched, `charged` the dates from `expiresAt` touched that `chargeCalendar` charges.
|
|
545
|
+
* The event day is neither free nor charged under `"nextDay"`.
|
|
546
|
+
*
|
|
547
|
+
* Counts come from closed forms over the zone's offset changes, so the dwell's length costs no
|
|
548
|
+
* work per date. Returns `null` when the walk would visit more than `MAX_WALKED_DAYS` dates, when
|
|
549
|
+
* a day boundary cannot be found, or when the expiry lies outside the representable range. A clock
|
|
550
|
+
* within `MAX_WALKED_DAYS` dates of Temporal's limits, or in a pass that re-enters its date, is
|
|
551
|
+
* laid out day by day (`walkFreeTimeByDay`).
|
|
552
|
+
*/
|
|
553
|
+
export function walkFreeTime(clockStart, freeDays, terms, clockEnd) {
|
|
554
|
+
const frame = zoneFrame(terms.timeZone);
|
|
555
|
+
if (frame === null) {
|
|
556
|
+
return null;
|
|
557
|
+
}
|
|
558
|
+
const ledger = walkFreeTimeByDate(clockStart, frame, freeDays, terms, clockEnd);
|
|
559
|
+
if (ledger !== undefined) {
|
|
560
|
+
return ledger;
|
|
561
|
+
}
|
|
562
|
+
return walkFreeTimeByDay(clockStart, frame, freeDays, terms, clockEnd);
|
|
563
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { GnssSystem } from "../types/gnss.js";
|
|
2
|
+
import type { TimeScaleLabel } from "./timeScaleString.js";
|
|
3
|
+
import type { UtcReading } from "./utcReading.js";
|
|
4
|
+
/** How one satellite system's time scale relates to TAI, and where its labels start. */
|
|
5
|
+
export interface GnssTimeScale {
|
|
6
|
+
/** TAI minus the scale, in seconds; null for GLO, which is UTC's own wall clock. */
|
|
7
|
+
readonly taiMinusScale: bigint | null;
|
|
8
|
+
/** First defined label, label nanoseconds. */
|
|
9
|
+
readonly epochLabel: bigint;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The satellite time scales by RINEX 4.02 §5.2.8 time-system identifier. Each `epochLabel` is
|
|
13
|
+
* `Temporal.PlainDateTime.from(<label>).toZonedDateTime("UTC").epochNanoseconds` of the label in
|
|
14
|
+
* its comment; gnssTimeScales.test.ts asserts each one. The offsets are nominal: the broadcast
|
|
15
|
+
* corrections (C0, A0/A1, GGTO), tens of nanoseconds, are not inputs.
|
|
16
|
+
*/
|
|
17
|
+
export declare const GNSS_TIME_SCALES: Readonly<Record<GnssSystem, GnssTimeScale>>;
|
|
18
|
+
/**
|
|
19
|
+
* Whether a value is one of the six RINEX 4.02 §5.2.8 time-system identifiers GMT reads.
|
|
20
|
+
*
|
|
21
|
+
* @param value candidate system
|
|
22
|
+
* @returns true for `GPS`, `GAL`, `BDT`, `QZS`, `GLO` or `IRN`
|
|
23
|
+
*/
|
|
24
|
+
export declare function isGnssSystem(value: unknown): value is GnssSystem;
|
|
25
|
+
/**
|
|
26
|
+
* A UTC reading as a label on a satellite system's scale.
|
|
27
|
+
*
|
|
28
|
+
* - TAI-based scales: TAI from the leap-second table, minus the scale's fixed offset. A listed
|
|
29
|
+
* inserted second maps to its own label; the result is never second 60.
|
|
30
|
+
* - `GLO`: the reading itself, second 60 included, once the table has checked it.
|
|
31
|
+
* - `null` when the reading has no TAI instant (before 1972, or a second 60 on a day with no
|
|
32
|
+
* insertion), or when the label falls before the scale's epoch.
|
|
33
|
+
*
|
|
34
|
+
* @param system the satellite time scale
|
|
35
|
+
* @param reading the UTC reading
|
|
36
|
+
* @returns the scale's label, or null
|
|
37
|
+
*/
|
|
38
|
+
export declare function scaleLabelOfUtc(system: GnssSystem, reading: UtcReading): TimeScaleLabel | null;
|
|
39
|
+
/**
|
|
40
|
+
* A label on a satellite system's scale as a UTC reading.
|
|
41
|
+
*
|
|
42
|
+
* - TAI-based scales: the label plus the scale's fixed offset is TAI, read back through the
|
|
43
|
+
* leap-second table; inside an inserted second the reading is second 60.
|
|
44
|
+
* - `GLO`: the label itself is the UTC reading; a second 60 stands only where the table lists an
|
|
45
|
+
* insertion.
|
|
46
|
+
* - `null` before the scale's epoch, for a second-60 label on a continuous scale, and for a `GLO`
|
|
47
|
+
* second 60 on a day with no insertion.
|
|
48
|
+
*
|
|
49
|
+
* @param system the satellite time scale
|
|
50
|
+
* @param label the scale's label
|
|
51
|
+
* @returns the UTC reading, or null
|
|
52
|
+
*/
|
|
53
|
+
export declare function utcOfScaleLabel(system: GnssSystem, label: TimeScaleLabel): UtcReading | null;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { NANOSECONDS_PER_SECOND } from "./foreignEpochs.js";
|
|
2
|
+
import { LEAP_SECOND_STEPS, taiOfUtc, utcOfTai } from "./leapSeconds.js";
|
|
3
|
+
/**
|
|
4
|
+
* The satellite time scales by RINEX 4.02 §5.2.8 time-system identifier. Each `epochLabel` is
|
|
5
|
+
* `Temporal.PlainDateTime.from(<label>).toZonedDateTime("UTC").epochNanoseconds` of the label in
|
|
6
|
+
* its comment; gnssTimeScales.test.ts asserts each one. The offsets are nominal: the broadcast
|
|
7
|
+
* corrections (C0, A0/A1, GGTO), tens of nanoseconds, are not inputs.
|
|
8
|
+
*/
|
|
9
|
+
export const GNSS_TIME_SCALES = Object.freeze({
|
|
10
|
+
// TAI − GPS = 19 s: BIPM Annual Report vol. 15, p. 48, "[TAI - GPS time] = 19 s + C0".
|
|
11
|
+
// Epoch 1980-01-06T00:00:00: IS-GPS-200N §3.3.4, "midnight on the night of January 5,
|
|
12
|
+
// 1980/morning of January 6, 1980".
|
|
13
|
+
GPS: Object.freeze({
|
|
14
|
+
taiMinusScale: 19n,
|
|
15
|
+
epochLabel: 315964800000000000n,
|
|
16
|
+
}),
|
|
17
|
+
// TAI − GST = 19 s: BIPM utc-gnss "[UTC-GALILEO time]: (19-xx) s"; RINEX 4.02 §4.1.7 Table 1,
|
|
18
|
+
// "GPS = GAL = UTC + ΔtLS". Epoch 1999-08-22T00:00:00 GST, GPS week 1024 (RINEX 4.02 §4.1.3),
|
|
19
|
+
// 13 s before 1999-08-22T00:00:00 UTC: Galileo OS SIS ICD Issue 2.2 §5.1.2, Table 69, "GST was
|
|
20
|
+
// equal to 13 seconds on August 22nd, 1999 at 00:00:00 UTC".
|
|
21
|
+
GAL: Object.freeze({
|
|
22
|
+
taiMinusScale: 19n,
|
|
23
|
+
epochLabel: 935280000000000000n,
|
|
24
|
+
}),
|
|
25
|
+
// TAI − BDT = 33 s: BIPM utc-gnss "[UTC-BEIDOU time]: (33-xx) s". Epoch 2006-01-01T00:00:00:
|
|
26
|
+
// BDS-SIS-ICD-B1I-3.0 §3.3, "accumulates continuously without leap seconds. The start epoch
|
|
27
|
+
// of BDT is 00:00:00 on January 1, 2006 of Coordinated Universal Time (UTC)".
|
|
28
|
+
BDT: Object.freeze({
|
|
29
|
+
taiMinusScale: 33n,
|
|
30
|
+
epochLabel: 1136073600000000000n,
|
|
31
|
+
}),
|
|
32
|
+
// TAI − QZSST = 19 s, the same whole seconds as GPS time: RINEX 4.02 §4.1.7 Table 1, "GPS =
|
|
33
|
+
// QZS = UTC + ΔtLS"; IS-QZSS-PNT-006 §5.1, "delayed from TAI by 19 seconds". Weeks from
|
|
34
|
+
// GPST's 1980-01-06T00:00:00 (IS-QZSS-PNT-006 §5.1).
|
|
35
|
+
QZS: Object.freeze({
|
|
36
|
+
taiMinusScale: 19n,
|
|
37
|
+
epochLabel: 315964800000000000n,
|
|
38
|
+
}),
|
|
39
|
+
// No TAI offset: GLO is GLONASS time in UTC hours, with UTC's leap seconds. RINEX 4.02
|
|
40
|
+
// §4.1.2, "the same hours as UTC and not UTC+3 h"; §5.2.8, "GLO to identify the GLONASS UTC
|
|
41
|
+
// time"; BIPM Annual Report vol. 15 p. 49, "[UTC - GLONASS time] = 0 s + C1". No stated
|
|
42
|
+
// epoch, so labels start at 1972-01-01T00:00:00, the leap-second table's first row (owner
|
|
43
|
+
// decision D10).
|
|
44
|
+
GLO: Object.freeze({
|
|
45
|
+
taiMinusScale: null,
|
|
46
|
+
epochLabel: 63072000000000000n,
|
|
47
|
+
}),
|
|
48
|
+
// TAI − IRNSST = 19 s. RINEX 4.02 §4.1.7 Table 1 equates IRN with GPS time in whole seconds
|
|
49
|
+
// ("GPS = IRN = UTC + ΔtLS"). BIPM publishes no NavIC relation and no NavIC ICD mentions TAI,
|
|
50
|
+
// so the offset is DERIVED, and NavIC's own ICD epoch agrees: NavIC led UTC by 13 s there
|
|
51
|
+
// (RINEX 4.02 §4.1.6; ISRO-IRNSS-ICD-SPS-1.1 §5.7; ISRO-NAVIC-ICD-SPS-L1-1.0 §5.6) when
|
|
52
|
+
// TAI − UTC was 32 s (IERS), so 32 − 13. Epoch 1999-08-22T00:00:00 IRNSST =
|
|
53
|
+
// 1999-08-21T23:59:47Z (RINEX 4.02 §4.1.6; ICD SPS 1.1 §5.7).
|
|
54
|
+
IRN: Object.freeze({
|
|
55
|
+
taiMinusScale: 19n,
|
|
56
|
+
epochLabel: 935280000000000000n,
|
|
57
|
+
}),
|
|
58
|
+
});
|
|
59
|
+
/**
|
|
60
|
+
* Whether a value is one of the six RINEX 4.02 §5.2.8 time-system identifiers GMT reads.
|
|
61
|
+
*
|
|
62
|
+
* @param value candidate system
|
|
63
|
+
* @returns true for `GPS`, `GAL`, `BDT`, `QZS`, `GLO` or `IRN`
|
|
64
|
+
*/
|
|
65
|
+
export function isGnssSystem(value) {
|
|
66
|
+
return typeof value === "string" && Object.hasOwn(GNSS_TIME_SCALES, value);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* A UTC reading as a label on a satellite system's scale.
|
|
70
|
+
*
|
|
71
|
+
* - TAI-based scales: TAI from the leap-second table, minus the scale's fixed offset. A listed
|
|
72
|
+
* inserted second maps to its own label; the result is never second 60.
|
|
73
|
+
* - `GLO`: the reading itself, second 60 included, once the table has checked it.
|
|
74
|
+
* - `null` when the reading has no TAI instant (before 1972, or a second 60 on a day with no
|
|
75
|
+
* insertion), or when the label falls before the scale's epoch.
|
|
76
|
+
*
|
|
77
|
+
* @param system the satellite time scale
|
|
78
|
+
* @param reading the UTC reading
|
|
79
|
+
* @returns the scale's label, or null
|
|
80
|
+
*/
|
|
81
|
+
export function scaleLabelOfUtc(system, reading) {
|
|
82
|
+
const scale = GNSS_TIME_SCALES[system];
|
|
83
|
+
const tai = taiOfUtc(LEAP_SECOND_STEPS, reading);
|
|
84
|
+
if (tai === null) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
const label = scale.taiMinusScale === null
|
|
88
|
+
? {
|
|
89
|
+
labelNanoseconds: reading.epochNanoseconds,
|
|
90
|
+
secondSixty: reading.secondSixty,
|
|
91
|
+
}
|
|
92
|
+
: {
|
|
93
|
+
labelNanoseconds: tai - scale.taiMinusScale * NANOSECONDS_PER_SECOND,
|
|
94
|
+
secondSixty: false,
|
|
95
|
+
};
|
|
96
|
+
return label.labelNanoseconds < scale.epochLabel ? null : label;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* A label on a satellite system's scale as a UTC reading.
|
|
100
|
+
*
|
|
101
|
+
* - TAI-based scales: the label plus the scale's fixed offset is TAI, read back through the
|
|
102
|
+
* leap-second table; inside an inserted second the reading is second 60.
|
|
103
|
+
* - `GLO`: the label itself is the UTC reading; a second 60 stands only where the table lists an
|
|
104
|
+
* insertion.
|
|
105
|
+
* - `null` before the scale's epoch, for a second-60 label on a continuous scale, and for a `GLO`
|
|
106
|
+
* second 60 on a day with no insertion.
|
|
107
|
+
*
|
|
108
|
+
* @param system the satellite time scale
|
|
109
|
+
* @param label the scale's label
|
|
110
|
+
* @returns the UTC reading, or null
|
|
111
|
+
*/
|
|
112
|
+
export function utcOfScaleLabel(system, label) {
|
|
113
|
+
const scale = GNSS_TIME_SCALES[system];
|
|
114
|
+
if (label.labelNanoseconds < scale.epochLabel) {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
if (scale.taiMinusScale === null) {
|
|
118
|
+
const reading = {
|
|
119
|
+
epochNanoseconds: label.labelNanoseconds,
|
|
120
|
+
secondSixty: label.secondSixty,
|
|
121
|
+
};
|
|
122
|
+
return taiOfUtc(LEAP_SECOND_STEPS, reading) === null ? null : reading;
|
|
123
|
+
}
|
|
124
|
+
if (label.secondSixty) {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
return utcOfTai(LEAP_SECOND_STEPS, label.labelNanoseconds + scale.taiMinusScale * NANOSECONDS_PER_SECOND);
|
|
128
|
+
}
|