@northguild/gmt 1.18.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 +55 -2920
- 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 +19 -11
- package/dist/calendar/calculate/bucketRange.js +27 -70
- package/dist/calendar/calculate/floorToZone.d.ts +12 -4
- package/dist/calendar/calculate/floorToZone.js +16 -8
- 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 +9 -3
- package/dist/calendar/hours/addOperatingTime.js +10 -4
- package/dist/calendar/hours/isOpenAt.d.ts +9 -3
- package/dist/calendar/hours/isOpenAt.js +9 -3
- package/dist/calendar/hours/nextCloseAt.d.ts +8 -2
- package/dist/calendar/hours/nextCloseAt.js +9 -3
- package/dist/calendar/hours/nextOpenAt.d.ts +9 -3
- package/dist/calendar/hours/nextOpenAt.js +10 -4
- package/dist/calendar/hours/operatingIntervals.d.ts +7 -2
- package/dist/calendar/hours/operatingIntervals.js +9 -6
- package/dist/calendar/hours/operatingTimeBetween.d.ts +8 -3
- package/dist/calendar/hours/operatingTimeBetween.js +11 -8
- package/dist/calendar/hours/recurringWindows.d.ts +13 -6
- package/dist/calendar/hours/recurringWindows.js +21 -14
- 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.d.ts +47 -0
- package/dist/duration/calculate/durationFromUnits.js +67 -0
- package/dist/duration/calculate/getDurationSign.js +1 -1
- package/dist/duration/calculate/getDurationUnit.d.ts +3 -3
- package/dist/duration/calculate/getDurationUnit.js +3 -3
- package/dist/duration/calculate/index.d.ts +3 -1
- package/dist/duration/calculate/index.js +3 -1
- package/dist/duration/calculate/negateDuration.d.ts +1 -1
- package/dist/duration/calculate/negateDuration.js +2 -2
- package/dist/duration/calculate/subtractDuration.js +1 -1
- package/dist/duration/calculate/{durationAs.d.ts → totalDuration.d.ts} +27 -21
- package/dist/duration/calculate/{durationAs.js → totalDuration.js} +27 -21
- package/dist/duration/calculate/totalUnits.d.ts +49 -0
- package/dist/duration/calculate/totalUnits.js +73 -0
- package/dist/duration/compare/compareDurations.d.ts +4 -4
- package/dist/duration/compare/compareDurations.js +4 -4
- 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 -1
- package/dist/index.js +4 -1
- package/dist/instant/convert/classifyLocal.d.ts +9 -5
- package/dist/instant/convert/classifyLocal.js +19 -20
- package/dist/instant/convert/fromOffsetInstant.d.ts +8 -4
- package/dist/instant/convert/fromOffsetInstant.js +11 -6
- package/dist/instant/convert/resolveLocal.d.ts +16 -11
- package/dist/instant/convert/resolveLocal.js +25 -17
- package/dist/instant/convert/toOffsetInstant.d.ts +23 -19
- package/dist/instant/convert/toOffsetInstant.js +29 -38
- package/dist/instant/index.d.ts +2 -1
- package/dist/instant/index.js +3 -2
- package/dist/instant/validate/index.d.ts +1 -0
- package/dist/instant/validate/index.js +1 -0
- package/dist/instant/validate/isValidUtcOffset.d.ts +32 -0
- package/dist/instant/validate/isValidUtcOffset.js +35 -0
- package/dist/intermodal/calculate/billingTimeline.js +1 -1
- package/dist/intermodal/calculate/chargeableDays.d.ts +18 -12
- package/dist/intermodal/calculate/chargeableDays.js +27 -18
- package/dist/intermodal/calculate/demurrageClock.d.ts +1 -1
- package/dist/intermodal/calculate/demurrageClock.js +2 -2
- package/dist/intermodal/calculate/freeTimeExpiry.d.ts +17 -10
- package/dist/intermodal/calculate/freeTimeExpiry.js +32 -17
- package/dist/intermodal/calculate/index.d.ts +1 -0
- package/dist/intermodal/calculate/index.js +1 -0
- package/dist/intermodal/calculate/multimodalETA.d.ts +76 -0
- package/dist/intermodal/calculate/multimodalETA.js +145 -0
- package/dist/intermodal/format/bolTimestamp.d.ts +76 -0
- package/dist/intermodal/format/bolTimestamp.js +78 -0
- package/dist/intermodal/format/formatEdifactDate.d.ts +34 -0
- package/dist/intermodal/format/formatEdifactDate.js +42 -0
- package/dist/intermodal/format/formatEdifactDatePeriod.d.ts +35 -0
- package/dist/intermodal/format/formatEdifactDatePeriod.js +43 -0
- package/dist/intermodal/format/formatEdifactDateTime.d.ts +37 -0
- package/dist/intermodal/format/formatEdifactDateTime.js +45 -0
- package/dist/intermodal/format/formatEdifactDateTimePeriod.d.ts +40 -0
- package/dist/intermodal/format/formatEdifactDateTimePeriod.js +48 -0
- package/dist/intermodal/format/formatEdifactOffsetDateTime.d.ts +62 -0
- package/dist/intermodal/format/formatEdifactOffsetDateTime.js +70 -0
- package/dist/intermodal/format/formatEdifactTime.d.ts +35 -0
- package/dist/intermodal/format/formatEdifactTime.js +43 -0
- package/dist/intermodal/format/formatEpcisEvent.d.ts +47 -0
- package/dist/intermodal/format/formatEpcisEvent.js +79 -0
- package/dist/intermodal/format/formatX12Date.d.ts +35 -0
- package/dist/intermodal/format/formatX12Date.js +43 -0
- package/dist/intermodal/format/formatX12DateRange.d.ts +37 -0
- package/dist/intermodal/format/formatX12DateRange.js +45 -0
- package/dist/intermodal/format/formatX12DateTime.d.ts +39 -0
- package/dist/intermodal/format/formatX12DateTime.js +47 -0
- package/dist/intermodal/format/formatX12DateTimeRange.d.ts +40 -0
- package/dist/intermodal/format/formatX12DateTimeRange.js +48 -0
- package/dist/intermodal/format/formatX12Time.d.ts +42 -0
- package/dist/intermodal/format/formatX12Time.js +50 -0
- package/dist/intermodal/format/formatX12TimeElement.d.ts +46 -0
- package/dist/intermodal/format/formatX12TimeElement.js +54 -0
- package/dist/intermodal/format/index.d.ts +14 -0
- package/dist/intermodal/format/index.js +14 -0
- package/dist/intermodal/index.d.ts +4 -1
- package/dist/intermodal/index.js +5 -2
- package/dist/intermodal/parse/classifyEdifactDtmFormat.d.ts +48 -0
- package/dist/intermodal/parse/classifyEdifactDtmFormat.js +55 -0
- package/dist/intermodal/parse/classifyX12DateTimePeriodFormat.d.ts +50 -0
- package/dist/intermodal/parse/classifyX12DateTimePeriodFormat.js +57 -0
- package/dist/intermodal/parse/classifyX12TimeCode.d.ts +46 -0
- package/dist/intermodal/parse/classifyX12TimeCode.js +57 -0
- package/dist/intermodal/parse/index.d.ts +18 -0
- package/dist/intermodal/parse/index.js +18 -0
- package/dist/intermodal/parse/parseEdifactDate.d.ts +37 -0
- package/dist/intermodal/parse/parseEdifactDate.js +45 -0
- package/dist/intermodal/parse/parseEdifactDatePeriod.d.ts +43 -0
- package/dist/intermodal/parse/parseEdifactDatePeriod.js +51 -0
- package/dist/intermodal/parse/parseEdifactDateTime.d.ts +43 -0
- package/dist/intermodal/parse/parseEdifactDateTime.js +51 -0
- package/dist/intermodal/parse/parseEdifactDateTimePeriod.d.ts +45 -0
- package/dist/intermodal/parse/parseEdifactDateTimePeriod.js +53 -0
- package/dist/intermodal/parse/parseEdifactOffsetDateTime.d.ts +60 -0
- package/dist/intermodal/parse/parseEdifactOffsetDateTime.js +68 -0
- package/dist/intermodal/parse/parseEdifactTime.d.ts +37 -0
- package/dist/intermodal/parse/parseEdifactTime.js +45 -0
- package/dist/intermodal/parse/parseEpcisEvent.d.ts +95 -0
- package/dist/intermodal/parse/parseEpcisEvent.js +102 -0
- package/dist/intermodal/parse/parseX12Date.d.ts +39 -0
- package/dist/intermodal/parse/parseX12Date.js +47 -0
- package/dist/intermodal/parse/parseX12DateAndTime.d.ts +52 -0
- package/dist/intermodal/parse/parseX12DateAndTime.js +61 -0
- package/dist/intermodal/parse/parseX12DateRange.d.ts +44 -0
- package/dist/intermodal/parse/parseX12DateRange.js +52 -0
- package/dist/intermodal/parse/parseX12DateTime.d.ts +45 -0
- package/dist/intermodal/parse/parseX12DateTime.js +53 -0
- package/dist/intermodal/parse/parseX12DateTimeRange.d.ts +46 -0
- package/dist/intermodal/parse/parseX12DateTimeRange.js +54 -0
- package/dist/intermodal/parse/parseX12Time.d.ts +65 -0
- package/dist/intermodal/parse/parseX12Time.js +77 -0
- package/dist/intermodal/parse/x12TimeCodeOffset.d.ts +57 -0
- package/dist/intermodal/parse/x12TimeCodeOffset.js +110 -0
- package/dist/intermodal/parse/x12TimeCodeZone.d.ts +57 -0
- package/dist/intermodal/parse/x12TimeCodeZone.js +105 -0
- package/dist/intermodal/validate/index.d.ts +18 -0
- package/dist/intermodal/validate/index.js +18 -0
- package/dist/intermodal/validate/isValidEdifactDate.d.ts +26 -0
- package/dist/intermodal/validate/isValidEdifactDate.js +28 -0
- package/dist/intermodal/validate/isValidEdifactDatePeriod.d.ts +28 -0
- package/dist/intermodal/validate/isValidEdifactDatePeriod.js +30 -0
- package/dist/intermodal/validate/isValidEdifactDateTime.d.ts +30 -0
- package/dist/intermodal/validate/isValidEdifactDateTime.js +32 -0
- package/dist/intermodal/validate/isValidEdifactDateTimePeriod.d.ts +28 -0
- package/dist/intermodal/validate/isValidEdifactDateTimePeriod.js +30 -0
- package/dist/intermodal/validate/isValidEdifactDtmFormat.d.ts +39 -0
- package/dist/intermodal/validate/isValidEdifactDtmFormat.js +42 -0
- package/dist/intermodal/validate/isValidEdifactOffsetDateTime.d.ts +36 -0
- package/dist/intermodal/validate/isValidEdifactOffsetDateTime.js +38 -0
- package/dist/intermodal/validate/isValidEdifactTime.d.ts +28 -0
- package/dist/intermodal/validate/isValidEdifactTime.js +30 -0
- package/dist/intermodal/validate/isValidEpcisEvent.d.ts +41 -0
- package/dist/intermodal/validate/isValidEpcisEvent.js +58 -0
- package/dist/intermodal/validate/isValidEpcisEventTime.d.ts +33 -0
- package/dist/intermodal/validate/isValidEpcisEventTime.js +48 -0
- package/dist/intermodal/validate/isValidEpcisTimeZoneOffset.d.ts +30 -0
- package/dist/intermodal/validate/isValidEpcisTimeZoneOffset.js +38 -0
- package/dist/intermodal/validate/isValidX12Date.d.ts +28 -0
- package/dist/intermodal/validate/isValidX12Date.js +30 -0
- package/dist/intermodal/validate/isValidX12DateAndTime.d.ts +32 -0
- package/dist/intermodal/validate/isValidX12DateAndTime.js +35 -0
- package/dist/intermodal/validate/isValidX12DateRange.d.ts +29 -0
- package/dist/intermodal/validate/isValidX12DateRange.js +31 -0
- package/dist/intermodal/validate/isValidX12DateTime.d.ts +30 -0
- package/dist/intermodal/validate/isValidX12DateTime.js +32 -0
- package/dist/intermodal/validate/isValidX12DateTimePeriodFormat.d.ts +43 -0
- package/dist/intermodal/validate/isValidX12DateTimePeriodFormat.js +46 -0
- package/dist/intermodal/validate/isValidX12DateTimeRange.d.ts +31 -0
- package/dist/intermodal/validate/isValidX12DateTimeRange.js +33 -0
- package/dist/intermodal/validate/isValidX12Time.d.ts +38 -0
- package/dist/intermodal/validate/isValidX12Time.js +40 -0
- package/dist/intermodal/validate/isValidX12TimeCode.d.ts +38 -0
- package/dist/intermodal/validate/isValidX12TimeCode.js +41 -0
- package/dist/internal/advanceToWeekday.d.ts +1 -1
- package/dist/internal/businessCalendar.d.ts +28 -12
- package/dist/internal/businessCalendar.js +131 -125
- 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 +125 -0
- package/dist/internal/dutyEngine.js +1755 -0
- package/dist/internal/dutyLog.d.ts +27 -0
- package/dist/internal/dutyLog.js +47 -0
- package/dist/internal/dutyPeriods.d.ts +135 -0
- package/dist/internal/dutyPeriods.js +375 -0
- package/dist/internal/dutyRules.d.ts +198 -0
- package/dist/internal/dutyRules.js +484 -0
- 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.d.ts +97 -0
- package/dist/internal/ediDateTimeFields.js +288 -0
- package/dist/internal/ediDateTimeWriter.d.ts +92 -0
- package/dist/internal/ediDateTimeWriter.js +298 -0
- package/dist/internal/ediGrammar.d.ts +158 -0
- package/dist/internal/ediGrammar.js +384 -0
- package/dist/internal/englishCalendarNames.d.ts +4 -2
- package/dist/internal/englishCalendarNames.js +3 -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 +35 -42
- package/dist/internal/freeTimeLedger.js +332 -31
- 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 +14 -5
- package/dist/internal/index.js +18 -5
- 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/intervalNanoseconds.js +2 -1
- package/dist/internal/isObject.d.ts +13 -6
- package/dist/internal/isObject.js +14 -7
- package/dist/internal/isoStringBody.d.ts +2 -2
- package/dist/internal/isoStringBody.js +2 -2
- package/dist/internal/isoYearString.d.ts +21 -0
- package/dist/internal/isoYearString.js +27 -0
- 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/maxPieces.js +2 -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 +5 -2
- package/dist/internal/normalizeTimeZone.js +5 -2
- package/dist/internal/offsetTimeline.d.ts +56 -0
- package/dist/internal/offsetTimeline.js +166 -0
- package/dist/internal/operatingSchedule.d.ts +39 -34
- package/dist/internal/operatingSchedule.js +672 -222
- package/dist/internal/patternToken.d.ts +10 -3
- package/dist/internal/patternToken.js +41 -19
- 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/readDurationUnits.d.ts +34 -0
- package/dist/internal/readDurationUnits.js +78 -0
- package/dist/internal/readSetFields.d.ts +50 -0
- package/dist/internal/readSetFields.js +179 -0
- 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/resolveRelativeUnit.d.ts +1 -1
- package/dist/internal/resolveRelativeUnit.js +1 -1
- package/dist/internal/resolveUnixIntervalPair.d.ts +9 -3
- package/dist/internal/resolveUnixIntervalPair.js +11 -7
- 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 +3 -2
- package/dist/internal/startOrEndOfUnix.js +9 -6
- 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/twoDigitYear.d.ts +19 -0
- package/dist/internal/twoDigitYear.js +22 -0
- package/dist/internal/unixEpochValue.d.ts +1 -1
- package/dist/internal/unixEpochValue.js +4 -3
- package/dist/internal/unixFormatReference.d.ts +1 -1
- package/dist/internal/unixFormatReference.js +1 -1
- package/dist/internal/unixWallClock.d.ts +24 -0
- package/dist/internal/unixWallClock.js +35 -0
- 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 +20 -0
- package/dist/internal/utcWallClock.js +32 -0
- 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.d.ts +28 -0
- package/dist/internal/yearWindowStart.js +52 -0
- package/dist/internal/zoneBucketCap.d.ts +18 -0
- package/dist/internal/zoneBucketCap.js +64 -0
- package/dist/internal/zoneFrame.d.ts +180 -0
- package/dist/internal/zoneFrame.js +221 -0
- 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 +8 -5
- package/dist/internal/zonedNowUnitValue.js +9 -5
- 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 +6 -6
- package/dist/internal/zonedWallClockOperations.d.ts +7 -4
- package/dist/internal/zonedWallClockOperations.js +58 -16
- 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/addDate.js +4 -7
- package/dist/plain/calculate/addDateTime.js +5 -8
- package/dist/plain/calculate/addTime.js +5 -8
- 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 +2 -2
- 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 +21 -4
- package/dist/plain/calculate/setDate.js +28 -8
- package/dist/plain/calculate/setDateTime.d.ts +16 -4
- package/dist/plain/calculate/setDateTime.js +23 -8
- package/dist/plain/calculate/setTime.d.ts +14 -2
- package/dist/plain/calculate/setTime.js +22 -7
- 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 +2 -2
- 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 +5 -8
- package/dist/plain/calculate/subtractDateTime.js +5 -8
- package/dist/plain/calculate/subtractTime.js +5 -8
- 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 +12 -10
- 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 +6 -5
- package/dist/plain/format/formatRelativeDateTime.d.ts +3 -3
- package/dist/plain/format/formatRelativeDateTime.js +6 -5
- package/dist/plain/format/formatRelativeTime.d.ts +3 -3
- package/dist/plain/format/formatRelativeTime.js +6 -5
- package/dist/plain/format/{formatSql.d.ts → formatSqlDateTime.d.ts} +7 -7
- package/dist/plain/format/{formatSql.js → formatSqlDateTime.js} +8 -8
- package/dist/plain/format/formatTime.d.ts +4 -4
- package/dist/plain/format/formatTime.js +8 -7
- package/dist/plain/format/index.d.ts +1 -1
- package/dist/plain/format/index.js +1 -1
- 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.d.ts +2 -0
- package/dist/plain/get/getNowUnit.js +3 -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.d.ts +2 -0
- package/dist/plain/get/getYear.js +5 -4
- 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 +4 -4
- package/dist/plain/interval/intervalXorAllDateTime.js +3 -3
- package/dist/plain/interval/intervalXorAllTime.js +3 -3
- 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 +4 -4
- package/dist/plain/interval/mergeIntervalsDateTime.js +3 -3
- package/dist/plain/interval/mergeIntervalsTime.js +3 -3
- 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/index.d.ts +1 -1
- package/dist/plain/parse/index.js +1 -1
- package/dist/plain/parse/parseDateTimeWithPattern.d.ts +28 -14
- package/dist/plain/parse/parseDateTimeWithPattern.js +33 -17
- package/dist/plain/parse/parseDateWithPattern.d.ts +29 -14
- package/dist/plain/parse/parseDateWithPattern.js +34 -17
- 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/{parseSql.d.ts → parseSqlDateTime.d.ts} +8 -8
- package/dist/plain/parse/{parseSql.js → parseSqlDateTime.js} +9 -9
- package/dist/plain/parse/parseTimeWithPattern.d.ts +6 -4
- package/dist/plain/parse/parseTimeWithPattern.js +8 -5
- package/dist/plain/parse/parseUnitFromDate.d.ts +4 -1
- package/dist/plain/parse/parseUnitFromDate.js +6 -2
- package/dist/plain/parse/parseUnitFromDateTime.d.ts +4 -1
- package/dist/plain/parse/parseUnitFromDateTime.js +6 -2
- 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.d.ts +5 -2
- package/dist/plain/parse/parseYearFromDate.js +8 -4
- package/dist/plain/parse/parseYearFromDateTime.d.ts +4 -2
- package/dist/plain/parse/parseYearFromDateTime.js +7 -4
- 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 +2 -1
- package/dist/plain/validate/index.js +2 -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/isValidSqlDateTime.d.ts +33 -0
- package/dist/plain/validate/isValidSqlDateTime.js +36 -0
- package/dist/plain/validate/isValidTime.js +2 -18
- package/dist/plain/validate/isValidTimeRange.js +1 -1
- package/dist/precision/convert/fromNanoseconds.d.ts +11 -5
- package/dist/precision/convert/fromNanoseconds.js +12 -6
- 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/epcis.d.ts +60 -0
- package/dist/regex/epcis.js +60 -0
- package/dist/regex/http-date.d.ts +6 -4
- package/dist/regex/http-date.js +6 -4
- package/dist/regex/index.d.ts +2 -1
- package/dist/regex/index.js +3 -2
- package/dist/regex/leap-second.d.ts +1 -1
- package/dist/regex/leap-second.js +1 -1
- package/dist/regex/rfc-2822.d.ts +2 -0
- package/dist/regex/rfc-2822.js +2 -0
- package/dist/regex/rfc-3339.d.ts +3 -1
- package/dist/regex/rfc-3339.js +3 -1
- package/dist/regex/sql-date-time.d.ts +2 -1
- package/dist/regex/sql-date-time.js +2 -1
- package/dist/regex/time-zone-like.d.ts +5 -4
- package/dist/regex/time-zone-like.js +5 -4
- package/dist/regex/utc-offset.d.ts +2 -1
- package/dist/regex/utc-offset.js +2 -1
- 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 +8 -3
- package/dist/transport/calculate/crossingTime.js +9 -4
- package/dist/transport/calculate/cutoffAt.d.ts +10 -5
- package/dist/transport/calculate/cutoffAt.js +26 -133
- package/dist/transport/calculate/cutoffSchedule.d.ts +8 -3
- package/dist/transport/calculate/cutoffSchedule.js +54 -20
- package/dist/transport/calculate/dwellTime.d.ts +9 -4
- package/dist/transport/calculate/dwellTime.js +10 -5
- 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 +15 -7
- package/dist/transport/calculate/scheduleDelivery.js +9 -4
- 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 +8 -3
- package/dist/transport/convert/etaAtZone.js +8 -3
- package/dist/transport/index.d.ts +1 -1
- package/dist/transport/index.js +2 -2
- package/dist/types/business-calendar.d.ts +5 -4
- 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/duty.d.ts +777 -0
- package/dist/types/duty.js +0 -0
- package/dist/types/edi.d.ts +407 -0
- package/dist/types/edi.js +0 -0
- package/dist/types/epcis.d.ts +25 -0
- package/dist/types/epcis.js +0 -0
- package/dist/types/exact-duration-unit.d.ts +8 -0
- package/dist/types/exact-duration-unit.js +0 -0
- package/dist/types/fiscal-calendar.d.ts +40 -4
- package/dist/types/free-time-options.d.ts +4 -3
- package/dist/types/gnss.d.ts +51 -0
- package/dist/types/gnss.js +0 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.js +7 -0
- package/dist/types/now-unit.d.ts +1 -1
- package/dist/types/offset.d.ts +1 -1
- package/dist/types/operating-schedule.d.ts +3 -2
- 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/two-digit-year.d.ts +23 -0
- package/dist/types/two-digit-year.js +0 -0
- package/dist/types/utc-now-unit.d.ts +1 -1
- package/dist/types/zone-bucket-unit.d.ts +1 -1
- package/dist/unix/calculate/addUnix.d.ts +11 -2
- package/dist/unix/calculate/addUnix.js +14 -11
- package/dist/unix/calculate/diffUnix.d.ts +11 -3
- package/dist/unix/calculate/diffUnix.js +11 -6
- package/dist/unix/calculate/diffUnixAsDuration.d.ts +11 -3
- package/dist/unix/calculate/diffUnixAsDuration.js +10 -5
- package/dist/unix/calculate/endOfQuarterForUnix.d.ts +10 -2
- package/dist/unix/calculate/endOfQuarterForUnix.js +6 -0
- package/dist/unix/calculate/endOfUnix.d.ts +13 -4
- package/dist/unix/calculate/endOfUnix.js +8 -1
- package/dist/unix/calculate/isBetweenUnix.d.ts +3 -2
- package/dist/unix/calculate/isBetweenUnix.js +4 -4
- package/dist/unix/calculate/roundUnix.d.ts +17 -7
- package/dist/unix/calculate/roundUnix.js +19 -10
- package/dist/unix/calculate/setUnix.d.ts +28 -8
- package/dist/unix/calculate/setUnix.js +35 -14
- package/dist/unix/calculate/startOfQuarterForUnix.d.ts +10 -2
- package/dist/unix/calculate/startOfQuarterForUnix.js +6 -0
- package/dist/unix/calculate/startOfUnix.d.ts +13 -4
- package/dist/unix/calculate/startOfUnix.js +8 -1
- package/dist/unix/calculate/subtractUnix.d.ts +10 -2
- package/dist/unix/calculate/subtractUnix.js +13 -11
- package/dist/unix/compare/areUnixEqualBy.d.ts +13 -4
- package/dist/unix/compare/areUnixEqualBy.js +8 -1
- package/dist/unix/convert/convertUnixToPlainDate.d.ts +5 -2
- package/dist/unix/convert/convertUnixToPlainDate.js +5 -4
- package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +5 -2
- package/dist/unix/convert/convertUnixToPlainDateTime.js +5 -4
- package/dist/unix/convert/convertUnixToPlainTime.d.ts +6 -3
- package/dist/unix/convert/convertUnixToPlainTime.js +6 -5
- package/dist/unix/convert/convertUnixToZoned.d.ts +6 -2
- package/dist/unix/convert/convertUnixToZoned.js +6 -2
- package/dist/unix/format/formatCalendarUnix.d.ts +16 -11
- package/dist/unix/format/formatCalendarUnix.js +12 -7
- package/dist/unix/format/formatRelativeUnix.d.ts +17 -9
- package/dist/unix/format/formatRelativeUnix.js +19 -11
- package/dist/unix/format/formatUnix.d.ts +16 -11
- package/dist/unix/format/formatUnix.js +13 -9
- package/dist/unix/get/getUnixDay.d.ts +1 -3
- package/dist/unix/get/getUnixDay.js +6 -13
- package/dist/unix/get/getUnixHour.d.ts +1 -3
- package/dist/unix/get/getUnixHour.js +6 -13
- package/dist/unix/get/getUnixMicrosecond.d.ts +1 -3
- package/dist/unix/get/getUnixMicrosecond.js +5 -12
- package/dist/unix/get/getUnixMillisecond.d.ts +1 -3
- package/dist/unix/get/getUnixMillisecond.js +6 -13
- package/dist/unix/get/getUnixMinute.d.ts +1 -3
- package/dist/unix/get/getUnixMinute.js +6 -13
- package/dist/unix/get/getUnixMonth.d.ts +1 -3
- package/dist/unix/get/getUnixMonth.js +6 -13
- package/dist/unix/get/getUnixNanosecond.d.ts +1 -3
- package/dist/unix/get/getUnixNanosecond.js +5 -12
- package/dist/unix/get/getUnixNow.js +1 -1
- package/dist/unix/get/getUnixNowUnit.d.ts +3 -1
- package/dist/unix/get/getUnixNowUnit.js +3 -1
- package/dist/unix/get/getUnixSecond.d.ts +1 -3
- package/dist/unix/get/getUnixSecond.js +6 -13
- package/dist/unix/get/getUnixYear.d.ts +3 -3
- package/dist/unix/get/getUnixYear.js +6 -13
- package/dist/unix/index.d.ts +1 -1
- package/dist/unix/index.js +2 -2
- package/dist/unix/interval/intervalCountUnix.d.ts +11 -2
- package/dist/unix/interval/intervalCountUnix.js +7 -0
- package/dist/unix/interval/intervalFromDurationUnix.d.ts +10 -2
- package/dist/unix/interval/intervalFromDurationUnix.js +13 -8
- package/dist/unix/interval/intervalLengthUnix.d.ts +12 -4
- package/dist/unix/interval/intervalLengthUnix.js +8 -2
- package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +10 -2
- package/dist/unix/interval/intervalOverlappingDaysUnix.js +10 -5
- package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +13 -4
- package/dist/unix/interval/splitIntervalByUnitUnix.js +16 -9
- package/dist/unix/parse/parseDateFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseDateFromUnix.js +3 -3
- package/dist/unix/parse/parseDayFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseDayOfWeekFromUnix.js +2 -2
- package/dist/unix/parse/parseHourFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMillisecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMinuteFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMonthFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseNanosecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseSecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseTimeFromUnix.d.ts +5 -2
- package/dist/unix/parse/parseTimeFromUnix.js +4 -3
- package/dist/unix/parse/parseUnitFromUnix.d.ts +10 -4
- package/dist/unix/parse/parseUnitFromUnix.js +21 -14
- package/dist/unix/parse/parseWeekFromUnix.d.ts +3 -2
- package/dist/unix/parse/parseWeekFromUnix.js +4 -4
- package/dist/unix/parse/parseYearFromUnix.d.ts +8 -3
- package/dist/unix/parse/parseYearFromUnix.js +4 -1
- package/dist/unix/validate/isValidUnixUnit.d.ts +1 -1
- package/dist/utc/calculate/addUtc.js +5 -8
- 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 +17 -4
- package/dist/utc/calculate/setUtc.js +23 -9
- 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 +5 -8
- 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 +9 -3
- package/dist/utc/convert/convertUtcToPlainDate.js +12 -9
- package/dist/utc/convert/convertUtcToPlainDateTime.d.ts +10 -3
- package/dist/utc/convert/convertUtcToPlainDateTime.js +14 -15
- package/dist/utc/convert/convertUtcToPlainTime.d.ts +6 -3
- package/dist/utc/convert/convertUtcToPlainTime.js +9 -8
- package/dist/utc/convert/convertUtcToUnix.js +1 -1
- package/dist/utc/convert/convertUtcToZoned.d.ts +6 -2
- package/dist/utc/convert/convertUtcToZoned.js +7 -3
- package/dist/utc/format/formatCalendarUtc.d.ts +12 -7
- package/dist/utc/format/formatCalendarUtc.js +9 -4
- package/dist/utc/format/{formatHttp.d.ts → formatHttpDate.d.ts} +7 -7
- package/dist/utc/format/{formatHttp.js → formatHttpDate.js} +8 -8
- package/dist/utc/format/formatRelativeUtc.d.ts +15 -7
- package/dist/utc/format/formatRelativeUtc.js +17 -9
- package/dist/utc/format/formatUtc.d.ts +15 -10
- package/dist/utc/format/formatUtc.js +12 -8
- package/dist/utc/format/index.d.ts +1 -1
- package/dist/utc/format/index.js +1 -1
- package/dist/utc/get/getUtcDay.d.ts +1 -3
- package/dist/utc/get/getUtcDay.js +6 -13
- package/dist/utc/get/getUtcHour.d.ts +1 -3
- package/dist/utc/get/getUtcHour.js +6 -13
- package/dist/utc/get/getUtcMicrosecond.d.ts +1 -3
- package/dist/utc/get/getUtcMicrosecond.js +5 -12
- package/dist/utc/get/getUtcMillisecond.d.ts +1 -3
- package/dist/utc/get/getUtcMillisecond.js +6 -13
- package/dist/utc/get/getUtcMinute.d.ts +1 -3
- package/dist/utc/get/getUtcMinute.js +6 -13
- package/dist/utc/get/getUtcMonth.d.ts +1 -3
- package/dist/utc/get/getUtcMonth.js +6 -13
- package/dist/utc/get/getUtcNanosecond.d.ts +1 -3
- package/dist/utc/get/getUtcNanosecond.js +5 -12
- package/dist/utc/get/getUtcNow.d.ts +1 -3
- package/dist/utc/get/getUtcNow.js +3 -10
- package/dist/utc/get/getUtcNowUnit.d.ts +2 -0
- package/dist/utc/get/getUtcNowUnit.js +3 -1
- package/dist/utc/get/getUtcSecond.d.ts +1 -3
- package/dist/utc/get/getUtcSecond.js +6 -13
- package/dist/utc/get/getUtcYear.d.ts +3 -3
- package/dist/utc/get/getUtcYear.js +6 -13
- 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 +3 -3
- package/dist/utc/interval/intervalXorUtc.js +1 -1
- package/dist/utc/interval/mergeIntervalsUtc.js +2 -2
- 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/index.d.ts +1 -1
- package/dist/utc/parse/index.js +1 -1
- package/dist/utc/parse/parseDateFromUtc.d.ts +5 -3
- package/dist/utc/parse/parseDateFromUtc.js +3 -3
- package/dist/utc/parse/parseDayFromUtc.d.ts +5 -3
- package/dist/utc/parse/parseDayFromUtc.js +3 -3
- package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +5 -3
- package/dist/utc/parse/parseDayOfWeekFromUtc.js +6 -6
- package/dist/utc/parse/parseHourFromUtc.d.ts +5 -3
- package/dist/utc/parse/parseHourFromUtc.js +3 -3
- package/dist/utc/parse/{parseHttp.d.ts → parseHttpDate.d.ts} +12 -12
- package/dist/utc/parse/{parseHttp.js → parseHttpDate.js} +13 -13
- package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +5 -3
- package/dist/utc/parse/parseMicrosecondFromUtc.js +3 -3
- package/dist/utc/parse/parseMillisecondFromUtc.d.ts +5 -3
- package/dist/utc/parse/parseMillisecondFromUtc.js +3 -3
- package/dist/utc/parse/parseMinuteFromUtc.d.ts +4 -2
- package/dist/utc/parse/parseMinuteFromUtc.js +2 -2
- package/dist/utc/parse/parseMonthFromUtc.d.ts +5 -3
- package/dist/utc/parse/parseMonthFromUtc.js +3 -3
- package/dist/utc/parse/parseNanosecondFromUtc.d.ts +5 -3
- package/dist/utc/parse/parseNanosecondFromUtc.js +3 -3
- package/dist/utc/parse/parseSecondFromUtc.d.ts +5 -3
- package/dist/utc/parse/parseSecondFromUtc.js +3 -3
- package/dist/utc/parse/parseTimeFromUtc.d.ts +6 -3
- package/dist/utc/parse/parseTimeFromUtc.js +7 -6
- package/dist/utc/parse/parseUnitFromUtc.d.ts +12 -5
- package/dist/utc/parse/parseUnitFromUtc.js +13 -7
- package/dist/utc/parse/parseWeekFromUtc.d.ts +5 -3
- package/dist/utc/parse/parseWeekFromUtc.js +6 -6
- package/dist/utc/parse/parseYearFromUtc.d.ts +9 -5
- package/dist/utc/parse/parseYearFromUtc.js +9 -6
- package/dist/utc/validate/index.d.ts +2 -0
- package/dist/utc/validate/index.js +2 -0
- package/dist/utc/validate/isValidHttpDate.d.ts +35 -0
- package/dist/utc/validate/isValidHttpDate.js +38 -0
- package/dist/utc/validate/isValidUtc.d.ts +4 -0
- package/dist/utc/validate/isValidUtc.js +7 -3
- package/dist/utc/validate/isValidUtcRange.js +1 -1
- package/dist/utc/validate/isValidUtcTimestamp.d.ts +43 -0
- package/dist/utc/validate/isValidUtcTimestamp.js +48 -0
- package/dist/workforce/calculate/dutyDayFor.d.ts +38 -0
- package/dist/workforce/calculate/dutyDayFor.js +71 -0
- package/dist/workforce/calculate/dutyTotals.d.ts +24 -0
- package/dist/workforce/calculate/dutyTotals.js +41 -0
- package/dist/workforce/calculate/dutyViolations.d.ts +74 -0
- package/dist/workforce/calculate/dutyViolations.js +65 -0
- package/dist/workforce/calculate/evaluateDutyLog.d.ts +77 -0
- package/dist/workforce/calculate/evaluateDutyLog.js +75 -0
- package/dist/workforce/calculate/index.d.ts +7 -0
- package/dist/workforce/calculate/index.js +7 -0
- package/dist/workforce/calculate/longestRun.d.ts +28 -0
- package/dist/workforce/calculate/longestRun.js +54 -0
- package/dist/workforce/calculate/qualifyingRestPairs.d.ts +37 -0
- package/dist/workforce/calculate/qualifyingRestPairs.js +58 -0
- package/dist/workforce/calculate/qualifyingRests.d.ts +27 -0
- package/dist/workforce/calculate/qualifyingRests.js +49 -0
- package/dist/workforce/index.d.ts +3 -0
- package/dist/workforce/index.js +4 -0
- package/dist/workforce/validate/index.d.ts +1 -0
- package/dist/workforce/validate/index.js +1 -0
- package/dist/workforce/validate/isValidDutyLog.d.ts +24 -0
- package/dist/workforce/validate/isValidDutyLog.js +34 -0
- package/dist/zoned/calculate/addZoned.d.ts +15 -15
- package/dist/zoned/calculate/addZoned.js +19 -22
- 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 +26 -12
- package/dist/zoned/calculate/setZoned.js +33 -16
- 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 +18 -21
- 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 +10 -7
- package/dist/zoned/convert/convertPlainDateTimeToZoned.js +10 -7
- 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 +7 -3
- package/dist/zoned/convert/convertZonedToZoned.js +7 -3
- package/dist/zoned/format/formatCalendarZoned.d.ts +7 -6
- package/dist/zoned/format/formatCalendarZoned.js +7 -6
- package/dist/zoned/format/formatRelativeZoned.d.ts +3 -3
- package/dist/zoned/format/formatRelativeZoned.js +6 -5
- 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 +22 -18
- package/dist/zoned/format/formatTimeZoneName.js +18 -13
- 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 +14 -12
- package/dist/zoned/get/getDstTransitions.js +15 -10
- package/dist/zoned/get/getSystemTimeZone.d.ts +5 -3
- package/dist/zoned/get/getSystemTimeZone.js +7 -4
- package/dist/zoned/get/getTimeZoneOffset.d.ts +15 -7
- package/dist/zoned/get/getTimeZoneOffset.js +23 -10
- package/dist/zoned/get/getTimeZones.d.ts +1 -1
- package/dist/zoned/get/getTimeZones.js +1 -1
- package/dist/zoned/get/getZonedDay.d.ts +3 -2
- package/dist/zoned/get/getZonedDay.js +7 -8
- package/dist/zoned/get/getZonedDayOfWeek.d.ts +3 -2
- package/dist/zoned/get/getZonedDayOfWeek.js +7 -6
- package/dist/zoned/get/getZonedHour.d.ts +3 -2
- package/dist/zoned/get/getZonedHour.js +7 -8
- package/dist/zoned/get/getZonedMicrosecond.d.ts +3 -2
- package/dist/zoned/get/getZonedMicrosecond.js +7 -6
- package/dist/zoned/get/getZonedMillisecond.d.ts +3 -2
- package/dist/zoned/get/getZonedMillisecond.js +7 -8
- package/dist/zoned/get/getZonedMinute.d.ts +3 -2
- package/dist/zoned/get/getZonedMinute.js +7 -8
- package/dist/zoned/get/getZonedMonth.d.ts +3 -2
- package/dist/zoned/get/getZonedMonth.js +7 -8
- package/dist/zoned/get/getZonedNanosecond.d.ts +3 -2
- package/dist/zoned/get/getZonedNanosecond.js +7 -6
- package/dist/zoned/get/getZonedNow.d.ts +9 -5
- package/dist/zoned/get/getZonedNow.js +9 -5
- package/dist/zoned/get/getZonedNowUnit.d.ts +7 -4
- package/dist/zoned/get/getZonedNowUnit.js +11 -8
- package/dist/zoned/get/getZonedSecond.d.ts +3 -2
- package/dist/zoned/get/getZonedSecond.js +7 -8
- package/dist/zoned/get/getZonedToday.d.ts +3 -2
- package/dist/zoned/get/getZonedToday.js +7 -6
- package/dist/zoned/get/getZonedWeekOfYear.d.ts +3 -2
- package/dist/zoned/get/getZonedWeekOfYear.js +7 -6
- package/dist/zoned/get/getZonedYear.d.ts +5 -2
- package/dist/zoned/get/getZonedYear.js +10 -8
- 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 +3 -3
- 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 +3 -3
- 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 +5 -2
- package/dist/zoned/parse/parseUnitFromZoned.js +5 -1
- package/dist/zoned/parse/parseYearFromZoned.d.ts +4 -2
- package/dist/zoned/parse/parseYearFromZoned.js +6 -3
- package/dist/zoned/validate/hasDaylightSaving.d.ts +6 -4
- package/dist/zoned/validate/hasDaylightSaving.js +16 -10
- package/dist/zoned/validate/index.d.ts +2 -0
- package/dist/zoned/validate/index.js +2 -0
- package/dist/zoned/validate/isValidCalendarZonedDateTime.d.ts +8 -8
- package/dist/zoned/validate/isValidCalendarZonedDateTime.js +8 -8
- package/dist/zoned/validate/isValidRfc2822DateTime.d.ts +32 -0
- package/dist/zoned/validate/isValidRfc2822DateTime.js +35 -0
- package/dist/zoned/validate/isValidRfc3339DateTime.d.ts +31 -0
- package/dist/zoned/validate/isValidRfc3339DateTime.js +34 -0
- package/dist/zoned/validate/isValidTimeZone.d.ts +6 -2
- package/dist/zoned/validate/isValidTimeZone.js +8 -19
- 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 +103 -4
- package/skills/gmt-arithmetic/SKILL.md +63 -17
- package/skills/gmt-basics/SKILL.md +83 -21
- package/skills/gmt-gnss/SKILL.md +92 -0
- package/skills/gmt-integration/SKILL.md +58 -10
- package/skills/gmt-intermodal/SKILL.md +189 -0
- package/skills/gmt-timezone/SKILL.md +51 -169
- package/skills/gmt-transport/SKILL.md +133 -0
- package/skills/gmt-workforce/SKILL.md +84 -0
- package/dist/internal/unixZonedDateTime.d.ts +0 -22
- package/dist/internal/unixZonedDateTime.js +0 -32
- package/dist/internal/utcZonedDateTime.d.ts +0 -19
- package/dist/internal/utcZonedDateTime.js +0 -31
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
import { Temporal } from "
|
|
1
|
+
import { Temporal } from "./temporal.js";
|
|
2
2
|
import { type ResolvedBusinessCalendar } from "./businessCalendar.js";
|
|
3
|
-
/**
|
|
4
|
-
* Local days a free-time walk may visit before giving up: the same cap as `bucketRange`. A
|
|
5
|
-
* valid business calendar leaves at least one working day a week, so a working-day count needs
|
|
6
|
-
* at most about seven local days per free or chargeable day. A walk that runs out answers with
|
|
7
|
-
* the sentinel, never a partial ledger.
|
|
8
|
-
*/
|
|
9
|
-
export declare const MAX_WALKED_DAYS = 10000;
|
|
10
3
|
/**
|
|
11
4
|
* The tariff terms reduced to what the walk reads. `calendar` is the working-day calendar free
|
|
12
5
|
* days are counted against, `null` on the calendar basis; `chargeCalendar` is the one charged days
|
|
13
6
|
* are counted against, `null` when every local day after expiry is charged.
|
|
14
7
|
*/
|
|
15
8
|
export type FreeTimeTerms = {
|
|
9
|
+
/**
|
|
10
|
+
* The counting zone as the caller wrote it: a time zone identifier or a stored UTC offset
|
|
11
|
+
* (`±HH:MM[:SS]`), so always readable by `zoneFrame`. The walk's zoned values are placed with
|
|
12
|
+
* `frameZoned` and turned back with `frameEpochNanoseconds` and `Temporal.Instant.fromEpochNanoseconds`.
|
|
13
|
+
*/
|
|
16
14
|
timeZone: string;
|
|
17
15
|
firstDay: "eventDay" | "nextDay";
|
|
18
16
|
calendar: ResolvedBusinessCalendar | null;
|
|
@@ -47,47 +45,42 @@ export declare function bandsByTier(tiers: number[], chargeable: number): {
|
|
|
47
45
|
to: number | null;
|
|
48
46
|
days: number;
|
|
49
47
|
}[];
|
|
50
|
-
/**
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
48
|
+
/**
|
|
49
|
+
* What a free-time walk returns, on epoch days (days from 1970-01-01, `epochDay.ts`) and epoch
|
|
50
|
+
* nanoseconds, so the dwell's length costs no Temporal work: callers format the few values they
|
|
51
|
+
* output.
|
|
52
|
+
*/
|
|
53
|
+
export interface FreeTimeLedger {
|
|
54
|
+
/** The first free day; `null` with no free days. */
|
|
55
|
+
firstFree: number | null;
|
|
56
|
+
/** The last free day; `null` with no free days. */
|
|
57
|
+
lastFree: number | null;
|
|
54
58
|
/**
|
|
55
|
-
*
|
|
56
|
-
*
|
|
59
|
+
* The first instant of the local day after the last free day (with no free days, of day one), in
|
|
60
|
+
* epoch nanoseconds. It includes the frame's shift, so it is the real instant.
|
|
57
61
|
*/
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
/** What `walkFreeTime` returns: the free days, the expiry, and what the dwell used and owes. */
|
|
61
|
-
export interface FreeTimeLedger {
|
|
62
|
-
/** The free days in order, exactly `freeDays` of them. */
|
|
63
|
-
free: LedgerDay[];
|
|
64
|
-
/** The first instant of the local day after the last free day; with no free days, of day one. */
|
|
65
|
-
expiresAt: Temporal.ZonedDateTime;
|
|
62
|
+
expiresAtNs: bigint;
|
|
66
63
|
/** Free days the half-open dwell `[clockStart, clockEnd)` touched; `0` with no `clockEnd`. */
|
|
67
64
|
used: number;
|
|
68
|
-
/** Counted days from `expiresAt` that the dwell touched,
|
|
69
|
-
charged:
|
|
65
|
+
/** Counted days from `expiresAt` that the dwell touched, ascending; empty with no `clockEnd`. */
|
|
66
|
+
charged: number[];
|
|
70
67
|
}
|
|
71
68
|
/**
|
|
72
|
-
*
|
|
69
|
+
* Lay out free time and charges from the clock start, in epoch days (see `FreeTimeLedger`).
|
|
73
70
|
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
71
|
+
* The local days of the terminal are the dates from the event day on, each once, without a date
|
|
72
|
+
* the zone deleted. Free days are the first `freeDays` counted ones (every date on a calendar
|
|
73
|
+
* basis, a working day of `calendar` otherwise); `expiresAt` is the first instant of the visited
|
|
74
|
+
* date after the last of them, or with `freeDays` of `0` of the first counted one. With a
|
|
75
|
+
* `clockEnd` the half-open dwell `[clockStart, clockEnd)` touches a date when it starts before
|
|
76
|
+
* `clockEnd`, and a zero-length dwell touches the date it sits on, as `dwellTime` counts. `used` is
|
|
77
|
+
* the free days touched, `charged` the dates from `expiresAt` touched that `chargeCalendar` charges.
|
|
78
|
+
* The event day is neither free nor charged under `"nextDay"`.
|
|
80
79
|
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
* counts. `used` is the free days touched; `charged` the days from `expiresAt` touched that count
|
|
87
|
-
* on `chargeCalendar`.
|
|
88
|
-
* - An event day that began before the first representable instant is still walked from the
|
|
89
|
-
* clock start; only an expiry that would be that unrepresentable start is refused.
|
|
90
|
-
* - Returns `null` when the walk would visit more than `MAX_WALKED_DAYS` local days, when a day
|
|
91
|
-
* boundary cannot be found, or when the expiry lies outside the representable range.
|
|
80
|
+
* Counts come from closed forms over the zone's offset changes, so the dwell's length costs no
|
|
81
|
+
* work per date. Returns `null` when the walk would visit more than `MAX_WALKED_DAYS` dates, when
|
|
82
|
+
* a day boundary cannot be found, or when the expiry lies outside the representable range. A clock
|
|
83
|
+
* within `MAX_WALKED_DAYS` dates of Temporal's limits, or in a pass that re-enters its date, is
|
|
84
|
+
* laid out day by day (`walkFreeTimeByDay`).
|
|
92
85
|
*/
|
|
93
86
|
export declare function walkFreeTime(clockStart: Temporal.ZonedDateTime, freeDays: number, terms: FreeTimeTerms, clockEnd?: Temporal.ZonedDateTime): FreeTimeLedger | null;
|
|
@@ -1,15 +1,21 @@
|
|
|
1
|
-
import { Temporal } from "
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
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";
|
|
4
7
|
import { isObject } from "./isObject.js";
|
|
8
|
+
import { ensureTimeline, offsetOf, offsetTimeline, startOfDayNs, } from "./offsetTimeline.js";
|
|
5
9
|
import { nextZonedBucketStart, zonedUnitStart } from "./zonedBucket.js";
|
|
10
|
+
import { frameEpochNanoseconds, zoneFrame } from "./zoneFrame.js";
|
|
11
|
+
import { certainlyTouchesMoreBuckets } from "./zoneBucketCap.js";
|
|
6
12
|
/**
|
|
7
13
|
* Local days a free-time walk may visit before giving up: the same cap as `bucketRange`. A
|
|
8
14
|
* valid business calendar leaves at least one working day a week, so a working-day count needs
|
|
9
15
|
* at most about seven local days per free or chargeable day. A walk that runs out answers with
|
|
10
16
|
* the sentinel, never a partial ledger.
|
|
11
17
|
*/
|
|
12
|
-
|
|
18
|
+
const MAX_WALKED_DAYS = 10_000;
|
|
13
19
|
/**
|
|
14
20
|
* Buckets stepped over while looking for a later date. A fall-back that re-enters the previous
|
|
15
21
|
* date (`America/Goose_Bay`, 2010-11-07 00:01 back into the 6th) opens a one-minute 7 November
|
|
@@ -34,7 +40,7 @@ function readFreeTimeTerms(options, readChargeBasis = false) {
|
|
|
34
40
|
if (firstDay !== "eventDay" && firstDay !== "nextDay") {
|
|
35
41
|
return null;
|
|
36
42
|
}
|
|
37
|
-
if (typeof timeZone !== "string" ||
|
|
43
|
+
if (typeof timeZone !== "string" || zoneFrame(timeZone) === null) {
|
|
38
44
|
return null;
|
|
39
45
|
}
|
|
40
46
|
const needsCalendar = basis === "working" || (readChargeBasis && chargeBasis === "working");
|
|
@@ -116,6 +122,260 @@ export function bandsByTier(tiers, chargeable) {
|
|
|
116
122
|
bands.push({ from, to: null, days: Math.max(0, chargeable - from + 1) });
|
|
117
123
|
return bands;
|
|
118
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
|
+
}
|
|
119
379
|
/** The local day holding `zoned`, or `null` when its start cannot be found. */
|
|
120
380
|
function localDayOf(zoned) {
|
|
121
381
|
let start;
|
|
@@ -130,13 +390,13 @@ function localDayOf(zoned) {
|
|
|
130
390
|
// clock start anchors the walk in its place.
|
|
131
391
|
return {
|
|
132
392
|
start: zoned,
|
|
133
|
-
|
|
393
|
+
epochDay: epochDayOfDate(zoned.toPlainDate()),
|
|
134
394
|
clamped: true,
|
|
135
395
|
};
|
|
136
396
|
}
|
|
137
397
|
return start === null
|
|
138
398
|
? null
|
|
139
|
-
: { start,
|
|
399
|
+
: { start, epochDay: epochDayOfDate(start.toPlainDate()) };
|
|
140
400
|
}
|
|
141
401
|
/**
|
|
142
402
|
* The first local day after `day` whose date is later than `day`'s. A bucket that re-enters an
|
|
@@ -163,7 +423,7 @@ function nextLocalDay(day) {
|
|
|
163
423
|
}
|
|
164
424
|
const date = next.toPlainDate();
|
|
165
425
|
if (Temporal.PlainDate.compare(date, current) > 0) {
|
|
166
|
-
return { start: next,
|
|
426
|
+
return { start: next, epochDay: epochDayOfDate(date) };
|
|
167
427
|
}
|
|
168
428
|
cursor = next;
|
|
169
429
|
}
|
|
@@ -190,8 +450,11 @@ function nextLocalDay(day) {
|
|
|
190
450
|
* clock start; only an expiry that would be that unrepresentable start is refused.
|
|
191
451
|
* - Returns `null` when the walk would visit more than `MAX_WALKED_DAYS` local days, when a day
|
|
192
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.
|
|
193
456
|
*/
|
|
194
|
-
|
|
457
|
+
function walkFreeTimeByDay(clockStart, frame, freeDays, terms, clockEnd) {
|
|
195
458
|
// The dwell's last instant, one nanosecond before the exit; a zero-length dwell is its own point.
|
|
196
459
|
const last = clockEnd === undefined
|
|
197
460
|
? undefined
|
|
@@ -199,16 +462,23 @@ export function walkFreeTime(clockStart, freeDays, terms, clockEnd) {
|
|
|
199
462
|
? clockEnd.subtract({ nanoseconds: 1 })
|
|
200
463
|
: clockEnd;
|
|
201
464
|
const touched = (day) => last !== undefined && Temporal.ZonedDateTime.compare(day.start, last) <= 0;
|
|
202
|
-
const
|
|
203
|
-
isBusinessDate(day.start.toPlainDate(), terms.calendar);
|
|
204
|
-
const charges = (day) => terms.chargeCalendar === null ||
|
|
205
|
-
isBusinessDate(day.start.toPlainDate(), terms.chargeCalendar);
|
|
206
|
-
const free = [];
|
|
465
|
+
const countsOn = (day, calendar) => calendar === null || isBusinessDate(day.start.toPlainDate(), calendar);
|
|
207
466
|
const charged = [];
|
|
467
|
+
let firstFree = null;
|
|
468
|
+
let lastFree = null;
|
|
469
|
+
let freeSeen = 0;
|
|
208
470
|
let used = 0;
|
|
209
|
-
let
|
|
471
|
+
let expiresAtNs = null;
|
|
210
472
|
let expiryPending = false;
|
|
211
473
|
let skipEventDay = terms.firstDay === "nextDay";
|
|
474
|
+
// A dwell that certainly touches more local days than the walk may visit ends it with the
|
|
475
|
+
// sentinel anyway: the walk needs one visit for every day the dwell touches, and one more to
|
|
476
|
+
// pass it. Deciding that from the span skips a 10,000-day walk. When it is not certain, the walk
|
|
477
|
+
// runs as before, so no answer changes.
|
|
478
|
+
if (clockEnd !== undefined &&
|
|
479
|
+
certainlyTouchesMoreBuckets(clockStart, clockEnd, "day", MAX_WALKED_DAYS)) {
|
|
480
|
+
return null;
|
|
481
|
+
}
|
|
212
482
|
let day = localDayOf(clockStart);
|
|
213
483
|
if (day === null) {
|
|
214
484
|
return null;
|
|
@@ -216,42 +486,44 @@ export function walkFreeTime(clockStart, freeDays, terms, clockEnd) {
|
|
|
216
486
|
// One more visit than the cap: the day after the last touched one is what ends the walk.
|
|
217
487
|
for (let i = 0; i <= MAX_WALKED_DAYS; i++) {
|
|
218
488
|
const eventDaySkipped = skipEventDay;
|
|
219
|
-
const counted = !skipEventDay &&
|
|
489
|
+
const counted = !skipEventDay && countsOn(day, terms.calendar);
|
|
220
490
|
skipEventDay = false;
|
|
221
491
|
if (expiryPending) {
|
|
222
|
-
|
|
492
|
+
expiresAtNs = frameEpochNanoseconds(day.start, frame);
|
|
223
493
|
expiryPending = false;
|
|
224
494
|
}
|
|
225
|
-
else if (
|
|
495
|
+
else if (expiresAtNs === null && counted) {
|
|
226
496
|
if (freeDays === 0) {
|
|
227
497
|
// With no free time the expiry is day one's start, which must be a real instant.
|
|
228
498
|
if (day.clamped)
|
|
229
499
|
return null;
|
|
230
|
-
|
|
500
|
+
expiresAtNs = frameEpochNanoseconds(day.start, frame);
|
|
231
501
|
}
|
|
232
502
|
else {
|
|
233
|
-
|
|
503
|
+
firstFree ??= day.epochDay;
|
|
504
|
+
lastFree = day.epochDay;
|
|
234
505
|
if (touched(day))
|
|
235
506
|
used++;
|
|
236
|
-
expiryPending =
|
|
507
|
+
expiryPending = ++freeSeen === freeDays;
|
|
237
508
|
}
|
|
238
509
|
}
|
|
239
|
-
if (
|
|
240
|
-
// Free time has ended; with no clock end there is nothing more to lay out.
|
|
241
|
-
if (last === undefined
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
if (Temporal.ZonedDateTime.compare(day.start, last) > 0) {
|
|
245
|
-
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 };
|
|
246
515
|
}
|
|
247
516
|
// The day of the event under `nextDay` is never charged: free time has not started on it.
|
|
248
|
-
if (!eventDaySkipped &&
|
|
249
|
-
charged.push(day);
|
|
517
|
+
if (!eventDaySkipped && countsOn(day, terms.chargeCalendar)) {
|
|
518
|
+
charged.push(day.epochDay);
|
|
519
|
+
}
|
|
250
520
|
}
|
|
251
521
|
const next = nextLocalDay(day);
|
|
252
522
|
if (next === undefined) {
|
|
253
523
|
// No representable day follows: free time can still be laid out only if it has ended.
|
|
254
|
-
return
|
|
524
|
+
return expiresAtNs === null
|
|
525
|
+
? null
|
|
526
|
+
: { firstFree, lastFree, expiresAtNs, used, charged };
|
|
255
527
|
}
|
|
256
528
|
if (next === null) {
|
|
257
529
|
return null;
|
|
@@ -260,3 +532,32 @@ export function walkFreeTime(clockStart, freeDays, terms, clockEnd) {
|
|
|
260
532
|
}
|
|
261
533
|
return null;
|
|
262
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;
|