@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
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Temporal } from "./temporal.js";
|
|
2
|
+
import { zonedNextTransition } from "./zonedWallClockOperations.js";
|
|
3
|
+
/**
|
|
4
|
+
* A bounded walk over a zone's local buckets (hours, days, weeks, months) can refuse a span that is
|
|
5
|
+
* certainly too long without stepping through it. `bucketRange` refuses a range past 10,000
|
|
6
|
+
* buckets this way, and the free-time walk a dwell past 10,000 local days. `false` always means
|
|
7
|
+
* "not certain": the caller walks, exactly as it would without this check, so no answer changes.
|
|
8
|
+
*/
|
|
9
|
+
const NANOSECONDS_PER_HOUR = 3600000000000n;
|
|
10
|
+
/**
|
|
11
|
+
* The longest wall-clock stretch of each unit. Any wall-clock interval this long holds a unit
|
|
12
|
+
* start: an hour holds an hour start, 24 hours a midnight, 7 days a Monday, 31 days a first of
|
|
13
|
+
* the month.
|
|
14
|
+
*/
|
|
15
|
+
const LONGEST_UNIT_NANOSECONDS = {
|
|
16
|
+
hour: NANOSECONDS_PER_HOUR,
|
|
17
|
+
day: 24n * NANOSECONDS_PER_HOUR,
|
|
18
|
+
week: 168n * NANOSECONDS_PER_HOUR,
|
|
19
|
+
month: 744n * NANOSECONDS_PER_HOUR,
|
|
20
|
+
};
|
|
21
|
+
/** Offset transitions read before the pre-count gives up and leaves the answer to the walk. */
|
|
22
|
+
const MAX_PRECOUNT_TRANSITIONS = 4_096;
|
|
23
|
+
/**
|
|
24
|
+
* True when `[start, end)` certainly touches more than `max` buckets of `unit`, decided from the span
|
|
25
|
+
* instead of stepping bucket by bucket (which costs milliseconds a step in some zones).
|
|
26
|
+
*
|
|
27
|
+
* Over a prefix of the range, the local wall clock runs continuously between offset transitions.
|
|
28
|
+
* Those stretches cover at least the prefix's length less every backward offset change, in at most
|
|
29
|
+
* one stretch more than there are transitions, and each stretch of wall clock holds at least
|
|
30
|
+
* `floor(length / LONGEST_UNIT_NANOSECONDS)` distinct unit starts, each the start of its own
|
|
31
|
+
* bucket before `end`. The count subtracts two per stretch for the partial units at its ends.
|
|
32
|
+
* The bound also holds for a count of distinct local dates, which the free-time walk keeps by
|
|
33
|
+
* folding a day that re-enters an earlier date: a date can re-enter only at an offset transition,
|
|
34
|
+
* where the two units dropped per stretch already sit, and the starts counted inside one stretch
|
|
35
|
+
* fall on strictly increasing dates.
|
|
36
|
+
* `false` means "not certain": the walk decides, exactly as before.
|
|
37
|
+
*/
|
|
38
|
+
export function certainlyTouchesMoreBuckets(startZoned, endZoned, unit, max) {
|
|
39
|
+
const unitNs = LONGEST_UNIT_NANOSECONDS[unit];
|
|
40
|
+
const startNs = startZoned.epochNanoseconds;
|
|
41
|
+
const prefixEndNs = [
|
|
42
|
+
endZoned.epochNanoseconds,
|
|
43
|
+
startNs + 2n * BigInt(max + 1) * unitNs,
|
|
44
|
+
].reduce((a, b) => (a < b ? a : b));
|
|
45
|
+
if (prefixEndNs - startNs <= BigInt(max) * unitNs) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
let backwardNs = 0n;
|
|
49
|
+
let transitions = 0;
|
|
50
|
+
try {
|
|
51
|
+
for (let current = startZoned, next = zonedNextTransition(current, prefixEndNs - 1n); next !== null; current = next, next = zonedNextTransition(current, prefixEndNs - 1n)) {
|
|
52
|
+
if (++transitions > MAX_PRECOUNT_TRANSITIONS) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
const shift = BigInt(current.offsetNanoseconds - next.offsetNanoseconds);
|
|
56
|
+
backwardNs += shift > 0n ? shift : 0n;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
const wallStarts = (prefixEndNs - startNs - backwardNs) / unitNs;
|
|
63
|
+
return wallStarts - 2n * BigInt(transitions + 1) > BigInt(max);
|
|
64
|
+
}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { Temporal } from "./temporal.js";
|
|
2
|
+
/**
|
|
3
|
+
* How local time is read for a time zone argument: a Temporal time zone, plus the part of a stored
|
|
4
|
+
* UTC offset no time zone identifier can carry.
|
|
5
|
+
*
|
|
6
|
+
* A time zone identifier stops at minutes (TC39 Temporal §13.31, the RFC 9557 / ISO 8601 grammar:
|
|
7
|
+
* `TimeZoneIdentifier ::: UTCOffset[~SubMinutePrecision] | TimeZoneIANAName`), but a zone's real
|
|
8
|
+
* offset does not: `Africa/Monrovia` stood at `-00:44:30` until 1972, and `getTimeZoneOffset`
|
|
9
|
+
* returns it. A fixed offset is still a complete rule for local time, so a function whose result
|
|
10
|
+
* names no zone reads one at any precision.
|
|
11
|
+
*
|
|
12
|
+
* The real offset is the offset of `timeZone` plus `shiftNanoseconds`. One frame serves a whole
|
|
13
|
+
* call, so every value of the call is placed in the same zone.
|
|
14
|
+
*/
|
|
15
|
+
export type ZoneFrame = {
|
|
16
|
+
/**
|
|
17
|
+
* A Temporal time zone identifier. For an offset with seconds it is the offset's whole minutes
|
|
18
|
+
* (`-00:44` for `-00:44:30`, `+02:10` for `+02:10:08`, `+00:00` within a minute of zero).
|
|
19
|
+
*/
|
|
20
|
+
timeZone: string;
|
|
21
|
+
/**
|
|
22
|
+
* `0n`, or the seconds the real offset has beyond the offset of `timeZone`, in nanoseconds:
|
|
23
|
+
* under a minute, with the offset's own sign (east positive).
|
|
24
|
+
*/
|
|
25
|
+
shiftNanoseconds: bigint;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Read a time zone argument that may also be a stored UTC offset.
|
|
29
|
+
*
|
|
30
|
+
* The only place that turns "time zone identifier or stored offset" into something Temporal can
|
|
31
|
+
* use. It accepts exactly what `isValidTimeZone` or `isValidUtcOffset` accepts, by five rules in
|
|
32
|
+
* order:
|
|
33
|
+
*
|
|
34
|
+
* 1. Not a string: null.
|
|
35
|
+
* 2. A time zone identifier (`isValidTimeZone`): that identifier as written, no shift. Every
|
|
36
|
+
* argument that was valid before stored offsets were read takes this branch.
|
|
37
|
+
* 3. Not a stored offset (`±HH:MM[:SS]`): null.
|
|
38
|
+
* 4. A whole number of minutes (`+05:30:00`): the identifier it canonicalises to (`+05:30`), no
|
|
39
|
+
* shift.
|
|
40
|
+
* 5. Otherwise (`-00:44:30`): the offset's whole minutes as the zone (`-00:44`), shifted by its
|
|
41
|
+
* seconds with the offset's own sign (30 seconds further west).
|
|
42
|
+
*
|
|
43
|
+
* - The returned `timeZone` is always a time zone identifier, so it is safe in a bracket or in
|
|
44
|
+
* `Intl.DateTimeFormat`. A seconds offset never becomes one: a caller that writes the zone into
|
|
45
|
+
* its result validates with `isValidTimeZone` instead and does not call this.
|
|
46
|
+
*
|
|
47
|
+
* @param zone the caller's time zone argument
|
|
48
|
+
* @returns the frame, or null when `zone` is neither a time zone identifier nor a stored offset
|
|
49
|
+
*
|
|
50
|
+
* @example zoneFrame("Asia/Kolkata") // { timeZone: "Asia/Kolkata", shiftNanoseconds: 0n }
|
|
51
|
+
* @example zoneFrame("+05:30:00") // { timeZone: "+05:30", shiftNanoseconds: 0n }
|
|
52
|
+
* @example zoneFrame("-00:44:30") // { timeZone: "-00:44", shiftNanoseconds: -30000000000n }
|
|
53
|
+
* @example zoneFrame("Z") // null
|
|
54
|
+
*/
|
|
55
|
+
export declare function zoneFrame(zone: unknown): ZoneFrame | null;
|
|
56
|
+
/**
|
|
57
|
+
* Read the `timeZone` option of a `unix/` or `utc/` function whose result names no zone.
|
|
58
|
+
*
|
|
59
|
+
* - Omitted (`undefined`) is `"UTC"`: an epoch and a UTC string name an instant, so no host zone
|
|
60
|
+
* is read unless asked for.
|
|
61
|
+
* - `"local"` is the system time zone, or null when the host reports none that is valid.
|
|
62
|
+
* - Anything else is read by `zoneFrame`.
|
|
63
|
+
*
|
|
64
|
+
* `normalizeTimeZone` is the twin for a function that writes the zone into its result or hands it
|
|
65
|
+
* to `Intl.DateTimeFormat`: it accepts a time zone identifier only.
|
|
66
|
+
*
|
|
67
|
+
* @param option the caller's `timeZone` option
|
|
68
|
+
* @returns the frame, or null when the option is invalid
|
|
69
|
+
*
|
|
70
|
+
* @example normalizeZoneFrame(undefined) // { timeZone: "UTC", shiftNanoseconds: 0n }
|
|
71
|
+
* @example normalizeZoneFrame("local") // the system zone, e.g. { timeZone: "Asia/Tokyo", shiftNanoseconds: 0n }
|
|
72
|
+
* @example normalizeZoneFrame("-00:44:30") // { timeZone: "-00:44", shiftNanoseconds: -30000000000n }
|
|
73
|
+
* @example normalizeZoneFrame("Asia/Tokio") // null
|
|
74
|
+
*/
|
|
75
|
+
export declare function normalizeZoneFrame(option?: unknown): ZoneFrame | null;
|
|
76
|
+
/**
|
|
77
|
+
* Read an instant on a frame's local wall clock. For a function that only reads fields.
|
|
78
|
+
*
|
|
79
|
+
* - A seconds offset is read with `wallClockAtOffset`, which is exact up to both limits of the
|
|
80
|
+
* instant range; `frameZoned` is not.
|
|
81
|
+
*
|
|
82
|
+
* Throws what Temporal throws; callers wrap it in their own try/catch.
|
|
83
|
+
*
|
|
84
|
+
* @param instant the exact time
|
|
85
|
+
* @param frame the frame from `zoneFrame`
|
|
86
|
+
* @returns the local wall clock
|
|
87
|
+
*
|
|
88
|
+
* @example frameWallClock(Temporal.Instant.from("1970-01-01T12:44:30Z"), zoneFrame("-00:44:30")).toString() // "1970-01-01T12:00:00"
|
|
89
|
+
*/
|
|
90
|
+
export declare function frameWallClock(instant: Temporal.Instant, frame: ZoneFrame): Temporal.PlainDateTime;
|
|
91
|
+
/**
|
|
92
|
+
* Read the current instant on a frame's local wall clock.
|
|
93
|
+
*
|
|
94
|
+
* Throws what Temporal throws; callers wrap it in their own try/catch.
|
|
95
|
+
*
|
|
96
|
+
* @param frame the frame from `zoneFrame`
|
|
97
|
+
* @returns the local wall clock now
|
|
98
|
+
*
|
|
99
|
+
* @example frameNowWallClock(zoneFrame("-00:44:30")).toPlainDate().toString() // today's date at -00:44:30
|
|
100
|
+
*/
|
|
101
|
+
export declare function frameNowWallClock(frame: ZoneFrame): Temporal.PlainDateTime;
|
|
102
|
+
/**
|
|
103
|
+
* Place an instant on a frame's local clock as a `Temporal.ZonedDateTime`, for a body that does
|
|
104
|
+
* arithmetic on one.
|
|
105
|
+
*
|
|
106
|
+
* - For a seconds offset the value sits in the frame's minute zone, at the instant plus the
|
|
107
|
+
* shift, so its wall clock is the real local one. At a constant offset, arithmetic on the wall
|
|
108
|
+
* clock is the same in any fixed-offset zone, and a day is always 24 hours. Its own
|
|
109
|
+
* `epochNanoseconds`, `offset` and `timeZoneId` are not the real ones: turn a result back with
|
|
110
|
+
* `frameInstant`, and never write it as a string.
|
|
111
|
+
* - Every value of one call is placed with the same frame, so all of them sit in one zone and
|
|
112
|
+
* are off by the same shift. Comparing their `epochNanoseconds`, and `until` between them, give
|
|
113
|
+
* what the real instants give.
|
|
114
|
+
* - Throws `RangeError` when the instant plus the shift is outside the instant range: within the
|
|
115
|
+
* shift's length, under a minute, of the last instant for an offset east of UTC, and of the
|
|
116
|
+
* first for one west. The caller returns its sentinel there, and its JSDoc says so. A function
|
|
117
|
+
* that only reads fields uses `frameWallClock`, which has no such edge.
|
|
118
|
+
*
|
|
119
|
+
* Throws what Temporal throws; callers wrap it in their own try/catch.
|
|
120
|
+
*
|
|
121
|
+
* @param instant the exact time
|
|
122
|
+
* @param frame the frame from `zoneFrame`
|
|
123
|
+
* @returns the zoned date-time to compute with
|
|
124
|
+
*
|
|
125
|
+
* @example frameInstant(frameZoned(Temporal.Instant.from("1970-01-01T12:44:30Z"), zoneFrame("-00:44:30")).startOfDay(), zoneFrame("-00:44:30")).toString() // "1970-01-01T00:44:30Z"
|
|
126
|
+
*/
|
|
127
|
+
export declare function frameZoned(instant: Temporal.Instant, frame: ZoneFrame): Temporal.ZonedDateTime;
|
|
128
|
+
/**
|
|
129
|
+
* The real epoch nanoseconds of a value `frameZoned` produced, or one computed from it.
|
|
130
|
+
*
|
|
131
|
+
* @param zoned a zoned date-time on the frame's local clock
|
|
132
|
+
* @param frame the frame it was placed on
|
|
133
|
+
* @returns epoch nanoseconds of the instant it names
|
|
134
|
+
*
|
|
135
|
+
* @example frameEpochNanoseconds(frameZoned(Temporal.Instant.from("1970-01-01T12:44:30Z"), zoneFrame("-00:44:30")), zoneFrame("-00:44:30")) // 45870000000000n
|
|
136
|
+
*/
|
|
137
|
+
export declare function frameEpochNanoseconds(zoned: Temporal.ZonedDateTime, frame: ZoneFrame): bigint;
|
|
138
|
+
/**
|
|
139
|
+
* The real instant of a value `frameZoned` produced, or one computed from it.
|
|
140
|
+
*
|
|
141
|
+
* Throws `RangeError` when the instant is outside Temporal's range; callers wrap it in their own
|
|
142
|
+
* try/catch.
|
|
143
|
+
*
|
|
144
|
+
* @param zoned a zoned date-time on the frame's local clock
|
|
145
|
+
* @param frame the frame it was placed on
|
|
146
|
+
* @returns the instant it names
|
|
147
|
+
*
|
|
148
|
+
* @example frameInstant(frameZoned(Temporal.Instant.from("1970-01-01T12:44:30Z"), zoneFrame("-00:44:30")), zoneFrame("-00:44:30")).toString() // "1970-01-01T12:44:30Z"
|
|
149
|
+
*/
|
|
150
|
+
export declare function frameInstant(zoned: Temporal.ZonedDateTime, frame: ZoneFrame): Temporal.Instant;
|
|
151
|
+
/**
|
|
152
|
+
* A frame's stored offset as text: `±HH:MM:SS` for a seconds offset.
|
|
153
|
+
*
|
|
154
|
+
* Throws `RangeError` for a frame with no shift, whose offset is its zone's to give; callers wrap
|
|
155
|
+
* it in their own try/catch.
|
|
156
|
+
*
|
|
157
|
+
* @param frame a frame whose `shiftNanoseconds` is not `0n`
|
|
158
|
+
* @returns the offset string
|
|
159
|
+
*
|
|
160
|
+
* @example frameOffset(zoneFrame("-00:44:30")) // "-00:44:30"
|
|
161
|
+
*/
|
|
162
|
+
export declare function frameOffset(frame: ZoneFrame): string;
|
|
163
|
+
/**
|
|
164
|
+
* The instant a local wall time names at a frame's stored offset.
|
|
165
|
+
*
|
|
166
|
+
* The wall time and the offset are joined into one date-time string and read by Temporal, which
|
|
167
|
+
* reads an offset with seconds there (TC39 Temporal §13.31,
|
|
168
|
+
* `DateTimeUTCOffset[Z] ::: [+Z] UTCDesignator | UTCOffset[+SubMinutePrecision]`). A fixed offset has no
|
|
169
|
+
* transition, so the wall time is never repeated or skipped and there is nothing to disambiguate.
|
|
170
|
+
* Exact up to both limits of the instant range.
|
|
171
|
+
*
|
|
172
|
+
* Throws what Temporal throws; callers wrap it in their own try/catch.
|
|
173
|
+
*
|
|
174
|
+
* @param wallClock an ISO 8601 `<date>T<time>` body with no offset and no annotation
|
|
175
|
+
* @param frame a frame whose `shiftNanoseconds` is not `0n`
|
|
176
|
+
* @returns the instant
|
|
177
|
+
*
|
|
178
|
+
* @example instantOfWallClock("1970-01-01T12:00:00", zoneFrame("-00:44:30")).toString() // "1970-01-01T12:44:30Z"
|
|
179
|
+
*/
|
|
180
|
+
export declare function instantOfWallClock(wallClock: string, frame: ZoneFrame): Temporal.Instant;
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { Temporal } from "./temporal.js";
|
|
2
|
+
import { getSystemTimeZone } from "../zoned/get/getSystemTimeZone.js";
|
|
3
|
+
import { isValidTimeZone } from "../zoned/validate/isValidTimeZone.js";
|
|
4
|
+
import { instantFrom } from "./instantNanoseconds.js";
|
|
5
|
+
import { formatUtcOffset, parseUtcOffsetNanoseconds } from "./utcOffsetString.js";
|
|
6
|
+
import { wallClockAtOffset } from "./wallClockAtOffset.js";
|
|
7
|
+
const NANOSECONDS_PER_MINUTE = 60000000000n;
|
|
8
|
+
/**
|
|
9
|
+
* Read a time zone argument that may also be a stored UTC offset.
|
|
10
|
+
*
|
|
11
|
+
* The only place that turns "time zone identifier or stored offset" into something Temporal can
|
|
12
|
+
* use. It accepts exactly what `isValidTimeZone` or `isValidUtcOffset` accepts, by five rules in
|
|
13
|
+
* order:
|
|
14
|
+
*
|
|
15
|
+
* 1. Not a string: null.
|
|
16
|
+
* 2. A time zone identifier (`isValidTimeZone`): that identifier as written, no shift. Every
|
|
17
|
+
* argument that was valid before stored offsets were read takes this branch.
|
|
18
|
+
* 3. Not a stored offset (`±HH:MM[:SS]`): null.
|
|
19
|
+
* 4. A whole number of minutes (`+05:30:00`): the identifier it canonicalises to (`+05:30`), no
|
|
20
|
+
* shift.
|
|
21
|
+
* 5. Otherwise (`-00:44:30`): the offset's whole minutes as the zone (`-00:44`), shifted by its
|
|
22
|
+
* seconds with the offset's own sign (30 seconds further west).
|
|
23
|
+
*
|
|
24
|
+
* - The returned `timeZone` is always a time zone identifier, so it is safe in a bracket or in
|
|
25
|
+
* `Intl.DateTimeFormat`. A seconds offset never becomes one: a caller that writes the zone into
|
|
26
|
+
* its result validates with `isValidTimeZone` instead and does not call this.
|
|
27
|
+
*
|
|
28
|
+
* @param zone the caller's time zone argument
|
|
29
|
+
* @returns the frame, or null when `zone` is neither a time zone identifier nor a stored offset
|
|
30
|
+
*
|
|
31
|
+
* @example zoneFrame("Asia/Kolkata") // { timeZone: "Asia/Kolkata", shiftNanoseconds: 0n }
|
|
32
|
+
* @example zoneFrame("+05:30:00") // { timeZone: "+05:30", shiftNanoseconds: 0n }
|
|
33
|
+
* @example zoneFrame("-00:44:30") // { timeZone: "-00:44", shiftNanoseconds: -30000000000n }
|
|
34
|
+
* @example zoneFrame("Z") // null
|
|
35
|
+
*/
|
|
36
|
+
export function zoneFrame(zone) {
|
|
37
|
+
if (typeof zone !== "string") {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
if (isValidTimeZone(zone)) {
|
|
41
|
+
return { timeZone: zone, shiftNanoseconds: 0n };
|
|
42
|
+
}
|
|
43
|
+
const offsetNanoseconds = parseUtcOffsetNanoseconds(zone);
|
|
44
|
+
if (offsetNanoseconds === null) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
// BigInt remainder keeps the dividend's sign, so this is the offset's seconds with its sign,
|
|
48
|
+
// and what is left is its whole minutes: the minute offset between it and zero.
|
|
49
|
+
const shiftNanoseconds = offsetNanoseconds % NANOSECONDS_PER_MINUTE;
|
|
50
|
+
const timeZone = formatUtcOffset(offsetNanoseconds - shiftNanoseconds);
|
|
51
|
+
return timeZone === null ? null : { timeZone, shiftNanoseconds };
|
|
52
|
+
}
|
|
53
|
+
/** The real offset of a frame with a shift: its minute zone's offset plus the shift. */
|
|
54
|
+
function frameOffsetNanoseconds(frame) {
|
|
55
|
+
// The zone of a shifted frame is one `zoneFrame` wrote with `formatUtcOffset`, so it reads back.
|
|
56
|
+
const zoneOffset = parseUtcOffsetNanoseconds(frame.timeZone);
|
|
57
|
+
if (frame.shiftNanoseconds === 0n || zoneOffset === null) {
|
|
58
|
+
throw new RangeError("the frame carries no stored offset");
|
|
59
|
+
}
|
|
60
|
+
return zoneOffset + frame.shiftNanoseconds;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Read the `timeZone` option of a `unix/` or `utc/` function whose result names no zone.
|
|
64
|
+
*
|
|
65
|
+
* - Omitted (`undefined`) is `"UTC"`: an epoch and a UTC string name an instant, so no host zone
|
|
66
|
+
* is read unless asked for.
|
|
67
|
+
* - `"local"` is the system time zone, or null when the host reports none that is valid.
|
|
68
|
+
* - Anything else is read by `zoneFrame`.
|
|
69
|
+
*
|
|
70
|
+
* `normalizeTimeZone` is the twin for a function that writes the zone into its result or hands it
|
|
71
|
+
* to `Intl.DateTimeFormat`: it accepts a time zone identifier only.
|
|
72
|
+
*
|
|
73
|
+
* @param option the caller's `timeZone` option
|
|
74
|
+
* @returns the frame, or null when the option is invalid
|
|
75
|
+
*
|
|
76
|
+
* @example normalizeZoneFrame(undefined) // { timeZone: "UTC", shiftNanoseconds: 0n }
|
|
77
|
+
* @example normalizeZoneFrame("local") // the system zone, e.g. { timeZone: "Asia/Tokyo", shiftNanoseconds: 0n }
|
|
78
|
+
* @example normalizeZoneFrame("-00:44:30") // { timeZone: "-00:44", shiftNanoseconds: -30000000000n }
|
|
79
|
+
* @example normalizeZoneFrame("Asia/Tokio") // null
|
|
80
|
+
*/
|
|
81
|
+
export function normalizeZoneFrame(option) {
|
|
82
|
+
if (option === undefined) {
|
|
83
|
+
return { timeZone: "UTC", shiftNanoseconds: 0n };
|
|
84
|
+
}
|
|
85
|
+
return zoneFrame(option === "local" ? getSystemTimeZone() : option);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Read an instant on a frame's local wall clock. For a function that only reads fields.
|
|
89
|
+
*
|
|
90
|
+
* - A seconds offset is read with `wallClockAtOffset`, which is exact up to both limits of the
|
|
91
|
+
* instant range; `frameZoned` is not.
|
|
92
|
+
*
|
|
93
|
+
* Throws what Temporal throws; callers wrap it in their own try/catch.
|
|
94
|
+
*
|
|
95
|
+
* @param instant the exact time
|
|
96
|
+
* @param frame the frame from `zoneFrame`
|
|
97
|
+
* @returns the local wall clock
|
|
98
|
+
*
|
|
99
|
+
* @example frameWallClock(Temporal.Instant.from("1970-01-01T12:44:30Z"), zoneFrame("-00:44:30")).toString() // "1970-01-01T12:00:00"
|
|
100
|
+
*/
|
|
101
|
+
export function frameWallClock(instant, frame) {
|
|
102
|
+
return frame.shiftNanoseconds === 0n
|
|
103
|
+
? instant.toZonedDateTimeISO(frame.timeZone).toPlainDateTime()
|
|
104
|
+
: wallClockAtOffset(instant, frameOffsetNanoseconds(frame));
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Read the current instant on a frame's local wall clock.
|
|
108
|
+
*
|
|
109
|
+
* Throws what Temporal throws; callers wrap it in their own try/catch.
|
|
110
|
+
*
|
|
111
|
+
* @param frame the frame from `zoneFrame`
|
|
112
|
+
* @returns the local wall clock now
|
|
113
|
+
*
|
|
114
|
+
* @example frameNowWallClock(zoneFrame("-00:44:30")).toPlainDate().toString() // today's date at -00:44:30
|
|
115
|
+
*/
|
|
116
|
+
export function frameNowWallClock(frame) {
|
|
117
|
+
return frame.shiftNanoseconds === 0n
|
|
118
|
+
? Temporal.Now.zonedDateTimeISO(frame.timeZone).toPlainDateTime()
|
|
119
|
+
: wallClockAtOffset(Temporal.Now.instant(), frameOffsetNanoseconds(frame));
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Place an instant on a frame's local clock as a `Temporal.ZonedDateTime`, for a body that does
|
|
123
|
+
* arithmetic on one.
|
|
124
|
+
*
|
|
125
|
+
* - For a seconds offset the value sits in the frame's minute zone, at the instant plus the
|
|
126
|
+
* shift, so its wall clock is the real local one. At a constant offset, arithmetic on the wall
|
|
127
|
+
* clock is the same in any fixed-offset zone, and a day is always 24 hours. Its own
|
|
128
|
+
* `epochNanoseconds`, `offset` and `timeZoneId` are not the real ones: turn a result back with
|
|
129
|
+
* `frameInstant`, and never write it as a string.
|
|
130
|
+
* - Every value of one call is placed with the same frame, so all of them sit in one zone and
|
|
131
|
+
* are off by the same shift. Comparing their `epochNanoseconds`, and `until` between them, give
|
|
132
|
+
* what the real instants give.
|
|
133
|
+
* - Throws `RangeError` when the instant plus the shift is outside the instant range: within the
|
|
134
|
+
* shift's length, under a minute, of the last instant for an offset east of UTC, and of the
|
|
135
|
+
* first for one west. The caller returns its sentinel there, and its JSDoc says so. A function
|
|
136
|
+
* that only reads fields uses `frameWallClock`, which has no such edge.
|
|
137
|
+
*
|
|
138
|
+
* Throws what Temporal throws; callers wrap it in their own try/catch.
|
|
139
|
+
*
|
|
140
|
+
* @param instant the exact time
|
|
141
|
+
* @param frame the frame from `zoneFrame`
|
|
142
|
+
* @returns the zoned date-time to compute with
|
|
143
|
+
*
|
|
144
|
+
* @example frameInstant(frameZoned(Temporal.Instant.from("1970-01-01T12:44:30Z"), zoneFrame("-00:44:30")).startOfDay(), zoneFrame("-00:44:30")).toString() // "1970-01-01T00:44:30Z"
|
|
145
|
+
*/
|
|
146
|
+
export function frameZoned(instant, frame) {
|
|
147
|
+
return frame.shiftNanoseconds === 0n
|
|
148
|
+
? instant.toZonedDateTimeISO(frame.timeZone)
|
|
149
|
+
: instant
|
|
150
|
+
.add({ nanoseconds: Number(frame.shiftNanoseconds) })
|
|
151
|
+
.toZonedDateTimeISO(frame.timeZone);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* The real epoch nanoseconds of a value `frameZoned` produced, or one computed from it.
|
|
155
|
+
*
|
|
156
|
+
* @param zoned a zoned date-time on the frame's local clock
|
|
157
|
+
* @param frame the frame it was placed on
|
|
158
|
+
* @returns epoch nanoseconds of the instant it names
|
|
159
|
+
*
|
|
160
|
+
* @example frameEpochNanoseconds(frameZoned(Temporal.Instant.from("1970-01-01T12:44:30Z"), zoneFrame("-00:44:30")), zoneFrame("-00:44:30")) // 45870000000000n
|
|
161
|
+
*/
|
|
162
|
+
export function frameEpochNanoseconds(zoned, frame) {
|
|
163
|
+
// The value was placed the shift later than its instant, so that the minute zone's wall clock
|
|
164
|
+
// is the real local one: local time = instant + offset (TC39 Temporal GetISODateTimeFor).
|
|
165
|
+
return zoned.epochNanoseconds - frame.shiftNanoseconds;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* The real instant of a value `frameZoned` produced, or one computed from it.
|
|
169
|
+
*
|
|
170
|
+
* Throws `RangeError` when the instant is outside Temporal's range; callers wrap it in their own
|
|
171
|
+
* try/catch.
|
|
172
|
+
*
|
|
173
|
+
* @param zoned a zoned date-time on the frame's local clock
|
|
174
|
+
* @param frame the frame it was placed on
|
|
175
|
+
* @returns the instant it names
|
|
176
|
+
*
|
|
177
|
+
* @example frameInstant(frameZoned(Temporal.Instant.from("1970-01-01T12:44:30Z"), zoneFrame("-00:44:30")), zoneFrame("-00:44:30")).toString() // "1970-01-01T12:44:30Z"
|
|
178
|
+
*/
|
|
179
|
+
export function frameInstant(zoned, frame) {
|
|
180
|
+
return frame.shiftNanoseconds === 0n
|
|
181
|
+
? zoned.toInstant()
|
|
182
|
+
: Temporal.Instant.fromEpochNanoseconds(frameEpochNanoseconds(zoned, frame));
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* A frame's stored offset as text: `±HH:MM:SS` for a seconds offset.
|
|
186
|
+
*
|
|
187
|
+
* Throws `RangeError` for a frame with no shift, whose offset is its zone's to give; callers wrap
|
|
188
|
+
* it in their own try/catch.
|
|
189
|
+
*
|
|
190
|
+
* @param frame a frame whose `shiftNanoseconds` is not `0n`
|
|
191
|
+
* @returns the offset string
|
|
192
|
+
*
|
|
193
|
+
* @example frameOffset(zoneFrame("-00:44:30")) // "-00:44:30"
|
|
194
|
+
*/
|
|
195
|
+
export function frameOffset(frame) {
|
|
196
|
+
const offset = formatUtcOffset(frameOffsetNanoseconds(frame));
|
|
197
|
+
if (offset === null) {
|
|
198
|
+
throw new RangeError("the frame carries no stored offset");
|
|
199
|
+
}
|
|
200
|
+
return offset;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* The instant a local wall time names at a frame's stored offset.
|
|
204
|
+
*
|
|
205
|
+
* The wall time and the offset are joined into one date-time string and read by Temporal, which
|
|
206
|
+
* reads an offset with seconds there (TC39 Temporal §13.31,
|
|
207
|
+
* `DateTimeUTCOffset[Z] ::: [+Z] UTCDesignator | UTCOffset[+SubMinutePrecision]`). A fixed offset has no
|
|
208
|
+
* transition, so the wall time is never repeated or skipped and there is nothing to disambiguate.
|
|
209
|
+
* Exact up to both limits of the instant range.
|
|
210
|
+
*
|
|
211
|
+
* Throws what Temporal throws; callers wrap it in their own try/catch.
|
|
212
|
+
*
|
|
213
|
+
* @param wallClock an ISO 8601 `<date>T<time>` body with no offset and no annotation
|
|
214
|
+
* @param frame a frame whose `shiftNanoseconds` is not `0n`
|
|
215
|
+
* @returns the instant
|
|
216
|
+
*
|
|
217
|
+
* @example instantOfWallClock("1970-01-01T12:00:00", zoneFrame("-00:44:30")).toString() // "1970-01-01T12:44:30Z"
|
|
218
|
+
*/
|
|
219
|
+
export function instantOfWallClock(wallClock, frame) {
|
|
220
|
+
return instantFrom(`${wallClock}${frameOffset(frame)}`);
|
|
221
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Temporal } from "
|
|
1
|
+
import { Temporal } from "./temporal.js";
|
|
2
2
|
import type { DateTimeUnit } from "../types/index.js";
|
|
3
3
|
/**
|
|
4
4
|
* ISO day-of-week a week starts on: 1 = Monday .. 7 = Sunday, as `Temporal`'s `dayOfWeek` reads.
|
|
@@ -59,7 +59,7 @@ export declare function nextZonedBucketStart(current: Temporal.ZonedDateTime, un
|
|
|
59
59
|
* next bucket starts.
|
|
60
60
|
*
|
|
61
61
|
* - Never earlier than `zoned`, because it is measured from the real bucket `zoned` is in —
|
|
62
|
-
*
|
|
62
|
+
* London's second 01:00 hour on a fall-back morning ends at 01:59:59.999999999 +00:00, not
|
|
63
63
|
* at the first pass's.
|
|
64
64
|
* - Walks forward from `zoned` itself, never from its bucket's start. No transition between that
|
|
65
65
|
* start and `zoned` opens a bucket, so both walks reach the same next start — but the start may
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import { Temporal } from "
|
|
1
|
+
import { Temporal } from "./temporal.js";
|
|
2
2
|
import { DURATION_FIELD_BY_UNIT, getUnitSpan } from "./intervalCountHelpers.js";
|
|
3
3
|
import { calendarDateAdd, calendarDateFromFields, calendarDateUntil, calendarFieldsOf, isCalendarArithmeticCompatNeeded, } from "./temporalCompat/index.js";
|
|
4
|
+
import { floorDivide } from "./floorDivide.js";
|
|
5
|
+
import { NANOSECONDS_PER_DAY } from "./foreignEpochs.js";
|
|
6
|
+
import { ISO_WEEKDAYS, isoFieldsOf, isoWeekdayOf } from "./epochDay.js";
|
|
7
|
+
import { offsetTimeline } from "./offsetTimeline.js";
|
|
4
8
|
import { zonedNextTransition, zonedPreviousTransition, } from "./zonedWallClockOperations.js";
|
|
5
9
|
/** The `Temporal.Duration` that advances a wall clock by one `unit`. */
|
|
6
10
|
function oneUnit(unit) {
|
|
@@ -199,7 +203,7 @@ const DATE_LABELLED_UNITS = new Set([
|
|
|
199
203
|
* so the 03:00 hour begins at the transition even though the clock does not read 03:00:00; a
|
|
200
204
|
* local day whose midnight is skipped begins at 01:00 the same way; and `America/Goose_Bay`'s
|
|
201
205
|
* 2010-11-07 fall-back re-enters 6 November, so that 59-minute stretch is its own day.
|
|
202
|
-
* - **The clock lands on a unit boundary** — hours and smaller only.
|
|
206
|
+
* - **The clock lands on a unit boundary** — hours and smaller only. London goes back to
|
|
203
207
|
* 01:00:00 exactly, so a second, separate 01:00 hour begins there — which is why a fall-back
|
|
204
208
|
* day has 25 hour buckets. `Australia/Lord_Howe` goes back to 01:30, mid-hour, so the hour it
|
|
205
209
|
* is already in simply runs longer: 90 minutes.
|
|
@@ -349,7 +353,7 @@ export function nextZonedBucketStart(current, unit, weekStartsOn = 1) {
|
|
|
349
353
|
* next bucket starts.
|
|
350
354
|
*
|
|
351
355
|
* - Never earlier than `zoned`, because it is measured from the real bucket `zoned` is in —
|
|
352
|
-
*
|
|
356
|
+
* London's second 01:00 hour on a fall-back morning ends at 01:59:59.999999999 +00:00, not
|
|
353
357
|
* at the first pass's.
|
|
354
358
|
* - Walks forward from `zoned` itself, never from its bucket's start. No transition between that
|
|
355
359
|
* start and `zoned` opens a bucket, so both walks reach the same next start — but the start may
|
|
@@ -384,6 +388,70 @@ function countFromBucketBeforeRange(start, end, unit, weekStartsOn) {
|
|
|
384
388
|
const rest = countZonedBuckets(next, end, unit, weekStartsOn);
|
|
385
389
|
return rest === null ? null : rest + 1;
|
|
386
390
|
}
|
|
391
|
+
/** Nanoseconds in each unit below a day. */
|
|
392
|
+
const SUB_DAY_NANOSECONDS = {
|
|
393
|
+
hour: 3600000000000n,
|
|
394
|
+
minute: 60000000000n,
|
|
395
|
+
second: 1000000000n,
|
|
396
|
+
millisecond: 1000000n,
|
|
397
|
+
microsecond: 1000n,
|
|
398
|
+
nanosecond: 1n,
|
|
399
|
+
};
|
|
400
|
+
/**
|
|
401
|
+
* Which bucket a wall clock (nanoseconds, read as UTC) falls in, as an integer that rises by one
|
|
402
|
+
* per bucket: the unit's count since the epoch, so a difference is the whole units between two
|
|
403
|
+
* labels. Months and years are ISO; a calendar period of another calendar has no integer form.
|
|
404
|
+
*/
|
|
405
|
+
function bucketIndexOf(unit, weekStartsOn) {
|
|
406
|
+
const fixed = SUB_DAY_NANOSECONDS[unit];
|
|
407
|
+
if (fixed !== undefined) {
|
|
408
|
+
return (wall) => floorDivide(wall, fixed);
|
|
409
|
+
}
|
|
410
|
+
if (unit === "day") {
|
|
411
|
+
return (wall) => floorDivide(wall, NANOSECONDS_PER_DAY);
|
|
412
|
+
}
|
|
413
|
+
if (unit === "week") {
|
|
414
|
+
// Every week start falls on the same weekday, so `(start - anchor) / 7` is whole.
|
|
415
|
+
const anchor = -((isoWeekdayOf(0) - weekStartsOn + ISO_WEEKDAYS) %
|
|
416
|
+
ISO_WEEKDAYS);
|
|
417
|
+
return (wall) => {
|
|
418
|
+
const day = Number(floorDivide(wall, NANOSECONDS_PER_DAY));
|
|
419
|
+
const weekStart = day -
|
|
420
|
+
((isoWeekdayOf(day) - weekStartsOn + ISO_WEEKDAYS) % ISO_WEEKDAYS);
|
|
421
|
+
return BigInt((weekStart - anchor) / ISO_WEEKDAYS);
|
|
422
|
+
};
|
|
423
|
+
}
|
|
424
|
+
return (wall) => {
|
|
425
|
+
const [year, month] = isoFieldsOf(Number(floorDivide(wall, NANOSECONDS_PER_DAY)));
|
|
426
|
+
return BigInt(unit === "year" ? year : year * 12 + month - 1);
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* The two questions `countZonedBuckets` asks of an offset change, in integers where the unit
|
|
431
|
+
* allows: whether a change opens a bucket (`startsNewBucketAt`'s rule), and how many whole units
|
|
432
|
+
* lie between the buckets two instants fall in. A month or year of a non-ISO calendar asks
|
|
433
|
+
* Temporal, and only at a change that crosses a date.
|
|
434
|
+
*/
|
|
435
|
+
function bucketWalker(start, unit, weekStartsOn) {
|
|
436
|
+
const sinceMidnight = (wall) => floorDivide(wall, NANOSECONDS_PER_DAY);
|
|
437
|
+
if (start.calendarId !== "iso8601" && (unit === "month" || unit === "year")) {
|
|
438
|
+
const zonedAt = (ns) => new Temporal.ZonedDateTime(ns, start.timeZoneId, start.calendarId);
|
|
439
|
+
const label = (ns) => truncateLocal(zonedAt(ns).toPlainDateTime(), unit, weekStartsOn);
|
|
440
|
+
return {
|
|
441
|
+
opensBucket: (transition, before, after) => sinceMidnight(transition - 1n + before) !==
|
|
442
|
+
sinceMidnight(transition + after) &&
|
|
443
|
+
startsNewBucketAt(zonedAt(transition), unit, weekStartsOn),
|
|
444
|
+
unitsBetween: (fromNs, _fromOffset, toNs) => getUnitSpan(truncatedWallClockUntil(label(fromNs), label(toNs), unit), unit),
|
|
445
|
+
};
|
|
446
|
+
}
|
|
447
|
+
const index = bucketIndexOf(unit, weekStartsOn);
|
|
448
|
+
const length = SUB_DAY_NANOSECONDS[unit];
|
|
449
|
+
return {
|
|
450
|
+
opensBucket: (transition, before, after) => index(transition - 1n + before) !== index(transition + after) ||
|
|
451
|
+
(length !== undefined && (transition + after) % length === 0n),
|
|
452
|
+
unitsBetween: (fromNs, fromOffset, toNs, toOffset) => Number(index(toNs + toOffset) - index(fromNs + fromOffset)),
|
|
453
|
+
};
|
|
454
|
+
}
|
|
387
455
|
/**
|
|
388
456
|
* Count the local `unit` buckets the half-open interval `[start, end)` touches, in `start`'s
|
|
389
457
|
* zone and calendar. `end` must already be expressed in both.
|
|
@@ -417,27 +485,30 @@ export function countZonedBuckets(start, end, unit, weekStartsOn = 1) {
|
|
|
417
485
|
const startOfEnd = zonedUnitStart(end, unit, weekStartsOn);
|
|
418
486
|
if (!startOfStart || !startOfEnd)
|
|
419
487
|
return null;
|
|
420
|
-
const
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
const
|
|
488
|
+
const timeline = offsetTimeline({ timeZone: start.timeZoneId, shiftNanoseconds: 0n }, startOfStart.epochNanoseconds, startOfEnd.epochNanoseconds, MAX_COUNTED_TRANSITIONS - 1);
|
|
489
|
+
if (timeline === null)
|
|
490
|
+
return null;
|
|
491
|
+
const { changes, offsets } = timeline;
|
|
492
|
+
const walker = bucketWalker(start, unit, weekStartsOn);
|
|
493
|
+
const endNs = startOfEnd.epochNanoseconds;
|
|
494
|
+
const reachesIntoEndBucket = startOfEnd.epochNanoseconds === end.epochNanoseconds ? 0 : 1;
|
|
424
495
|
let spanned = 0;
|
|
425
|
-
let runStart = startOfStart;
|
|
426
|
-
let
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
reachesIntoEndBucket);
|
|
434
|
-
}
|
|
435
|
-
if (startsNewBucketAt(transition, unit, weekStartsOn)) {
|
|
496
|
+
let runStart = startOfStart.epochNanoseconds;
|
|
497
|
+
let runStartOffset = offsets[0];
|
|
498
|
+
let runOffset = offsets[0];
|
|
499
|
+
// One pass over the offset changes in the span, which the cap above bounds.
|
|
500
|
+
for (let index = 0; index < changes.length; index++) {
|
|
501
|
+
const transition = changes[index];
|
|
502
|
+
const after = offsets[index + 1];
|
|
503
|
+
if (walker.opensBucket(transition, runOffset, after)) {
|
|
436
504
|
spanned +=
|
|
437
|
-
unitsBetween(
|
|
505
|
+
walker.unitsBetween(runStart, runStartOffset, transition - 1n, runOffset) + 1;
|
|
438
506
|
runStart = transition;
|
|
507
|
+
runStartOffset = after;
|
|
439
508
|
}
|
|
440
|
-
|
|
509
|
+
runOffset = after;
|
|
441
510
|
}
|
|
442
|
-
return
|
|
511
|
+
return (spanned +
|
|
512
|
+
walker.unitsBetween(runStart, runStartOffset, endNs, runOffset) +
|
|
513
|
+
reachesIntoEndBucket);
|
|
443
514
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @param reference the option as given
|
|
7
7
|
* @returns false for a string of neither form, a non-finite number, or a value of another type
|
|
8
|
-
* @example isValidZonedFormatReference("2024-03-15T09:00:00
|
|
8
|
+
* @example isValidZonedFormatReference("2024-03-15T09:00:00+09:00[Asia/Tokyo]") // true
|
|
9
9
|
* @example isValidZonedFormatReference("2024-03-15T13:00:00Z") // true
|
|
10
10
|
* @example isValidZonedFormatReference(undefined) // true
|
|
11
11
|
* @example isValidZonedFormatReference(Number.NaN) // false
|
|
@@ -7,7 +7,7 @@ import { isValidZonedDateTime } from "../zoned/validate/isValidZonedDateTime.js"
|
|
|
7
7
|
*
|
|
8
8
|
* @param reference the option as given
|
|
9
9
|
* @returns false for a string of neither form, a non-finite number, or a value of another type
|
|
10
|
-
* @example isValidZonedFormatReference("2024-03-15T09:00:00
|
|
10
|
+
* @example isValidZonedFormatReference("2024-03-15T09:00:00+09:00[Asia/Tokyo]") // true
|
|
11
11
|
* @example isValidZonedFormatReference("2024-03-15T13:00:00Z") // true
|
|
12
12
|
* @example isValidZonedFormatReference(undefined) // true
|
|
13
13
|
* @example isValidZonedFormatReference(Number.NaN) // false
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Temporal } from "
|
|
1
|
+
import type { Temporal } from "./temporal.js";
|
|
2
2
|
/**
|
|
3
3
|
* Count the distinct local (ISO) dates of the instants in the closed span `[start, end]`, in
|
|
4
4
|
* `start`'s time zone. `end` must already be expressed in that zone and not precede `start`.
|