@northguild/gmt 1.17.0 → 1.19.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 -2480
- package/dist/calendar/calculate/bucketRange.d.ts +12 -4
- package/dist/calendar/calculate/bucketRange.js +20 -63
- package/dist/calendar/calculate/floorToZone.d.ts +14 -4
- package/dist/calendar/calculate/floorToZone.js +18 -9
- package/dist/calendar/calculate/getFiscalPeriod.d.ts +21 -8
- package/dist/calendar/calculate/getFiscalPeriod.js +9 -8
- package/dist/calendar/calculate/getIsoWeekDate.d.ts +10 -5
- package/dist/calendar/calculate/getIsoWeekDate.js +1 -5
- package/dist/calendar/calculate/getOrdinalDate.d.ts +10 -3
- package/dist/calendar/calculate/getOrdinalDate.js +2 -3
- package/dist/calendar/calculate/getQuarter.d.ts +21 -9
- package/dist/calendar/calculate/getQuarter.js +8 -12
- package/dist/calendar/hours/addOperatingTime.d.ts +59 -0
- package/dist/calendar/hours/addOperatingTime.js +65 -0
- package/dist/calendar/hours/index.d.ts +7 -0
- package/dist/calendar/hours/index.js +7 -0
- package/dist/calendar/hours/isOpenAt.d.ts +45 -0
- package/dist/calendar/hours/isOpenAt.js +50 -0
- package/dist/calendar/hours/nextCloseAt.d.ts +55 -0
- package/dist/calendar/hours/nextCloseAt.js +57 -0
- package/dist/calendar/hours/nextOpenAt.d.ts +51 -0
- package/dist/calendar/hours/nextOpenAt.js +53 -0
- package/dist/calendar/hours/operatingIntervals.d.ts +48 -0
- package/dist/calendar/hours/operatingIntervals.js +57 -0
- package/dist/calendar/hours/operatingTimeBetween.d.ts +45 -0
- package/dist/calendar/hours/operatingTimeBetween.js +54 -0
- package/dist/calendar/hours/recurringWindows.d.ts +68 -0
- package/dist/calendar/hours/recurringWindows.js +88 -0
- package/dist/calendar/index.d.ts +1 -0
- package/dist/calendar/index.js +1 -0
- package/dist/duration/calculate/durationFromUnits.d.ts +47 -0
- package/dist/duration/calculate/durationFromUnits.js +67 -0
- package/dist/duration/calculate/getDurationUnit.d.ts +2 -2
- package/dist/duration/calculate/getDurationUnit.js +2 -2
- 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 +1 -1
- package/dist/duration/calculate/totalDuration.d.ts +73 -0
- package/dist/duration/calculate/{durationAs.js → totalDuration.js} +29 -27
- package/dist/duration/calculate/totalUnits.d.ts +49 -0
- package/dist/duration/calculate/totalUnits.js +73 -0
- package/dist/duration/compare/compareDurations.d.ts +13 -7
- package/dist/duration/compare/compareDurations.js +4 -7
- package/dist/duration/format/formatDuration.d.ts +16 -4
- package/dist/duration/format/formatDuration.js +4 -5
- package/dist/duration/normalize/normalizeDuration.d.ts +39 -14
- package/dist/duration/normalize/normalizeDuration.js +6 -15
- package/dist/duration/parse/parseDuration.d.ts +21 -3
- package/dist/duration/parse/parseDuration.js +1 -3
- package/dist/duty/calculate/dutyDayFor.d.ts +38 -0
- package/dist/duty/calculate/dutyDayFor.js +71 -0
- package/dist/duty/calculate/dutyTotals.d.ts +24 -0
- package/dist/duty/calculate/dutyTotals.js +41 -0
- package/dist/duty/calculate/dutyViolations.d.ts +74 -0
- package/dist/duty/calculate/dutyViolations.js +65 -0
- package/dist/duty/calculate/evaluateDutyLog.d.ts +77 -0
- package/dist/duty/calculate/evaluateDutyLog.js +75 -0
- package/dist/duty/calculate/index.d.ts +7 -0
- package/dist/duty/calculate/index.js +7 -0
- package/dist/duty/calculate/longestRun.d.ts +28 -0
- package/dist/duty/calculate/longestRun.js +54 -0
- package/dist/duty/calculate/qualifyingRestPairs.d.ts +37 -0
- package/dist/duty/calculate/qualifyingRestPairs.js +58 -0
- package/dist/duty/calculate/qualifyingRests.d.ts +27 -0
- package/dist/duty/calculate/qualifyingRests.js +49 -0
- package/dist/duty/index.d.ts +3 -0
- package/dist/duty/index.js +4 -0
- package/dist/duty/validate/index.d.ts +1 -0
- package/dist/duty/validate/index.js +1 -0
- package/dist/duty/validate/isValidDutyLog.d.ts +24 -0
- package/dist/duty/validate/isValidDutyLog.js +34 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/instant/convert/classifyLocal.d.ts +5 -1
- package/dist/instant/convert/classifyLocal.js +16 -6
- package/dist/instant/convert/fromOffsetInstant.d.ts +7 -1
- package/dist/instant/convert/fromOffsetInstant.js +9 -2
- package/dist/instant/convert/resolveLocal.d.ts +18 -8
- package/dist/instant/convert/resolveLocal.js +21 -17
- package/dist/instant/convert/toOffsetInstant.d.ts +33 -16
- package/dist/instant/convert/toOffsetInstant.js +28 -13
- package/dist/instant/index.d.ts +1 -0
- package/dist/instant/index.js +1 -0
- 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.d.ts +31 -11
- package/dist/intermodal/calculate/billingTimeline.js +2 -2
- package/dist/intermodal/calculate/chargeableDays.d.ts +19 -11
- package/dist/intermodal/calculate/chargeableDays.js +13 -10
- package/dist/intermodal/calculate/demurrageClock.d.ts +16 -7
- package/dist/intermodal/calculate/demurrageClock.js +7 -7
- package/dist/intermodal/calculate/freeTimeExpiry.d.ts +12 -4
- package/dist/intermodal/calculate/freeTimeExpiry.js +19 -8
- 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 +3 -0
- package/dist/intermodal/index.js +3 -0
- 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/businessCalendar.d.ts +5 -0
- package/dist/internal/businessCalendar.js +9 -10
- package/dist/internal/cycleFieldValue.d.ts +6 -4
- package/dist/internal/cycleFieldValue.js +6 -4
- package/dist/internal/daylightTime.d.ts +33 -0
- package/dist/internal/daylightTime.js +164 -0
- package/dist/internal/durationUntilString.js +4 -3
- package/dist/internal/dutyEngine.d.ts +125 -0
- package/dist/internal/dutyEngine.js +1746 -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 +369 -0
- package/dist/internal/dutyRules.d.ts +197 -0
- package/dist/internal/dutyRules.js +484 -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 +3 -1
- package/dist/internal/englishCalendarNames.js +4 -3
- package/dist/internal/epochNanoseconds.d.ts +2 -0
- package/dist/internal/epochNanoseconds.js +2 -0
- package/dist/internal/exactDuration.d.ts +37 -0
- package/dist/internal/exactDuration.js +64 -0
- package/dist/internal/exactMoment.d.ts +72 -0
- package/dist/internal/exactMoment.js +114 -0
- package/dist/internal/fiscalCalendar.d.ts +4 -3
- package/dist/internal/fiscalCalendar.js +4 -3
- package/dist/internal/formatCalendarDays.d.ts +2 -2
- package/dist/internal/formatRelativeDuration.d.ts +21 -1
- package/dist/internal/formatRelativeDuration.js +47 -7
- package/dist/internal/freeTimeLedger.d.ts +5 -0
- package/dist/internal/freeTimeLedger.js +11 -2
- package/dist/internal/index.d.ts +12 -4
- package/dist/internal/index.js +16 -4
- package/dist/internal/instantFormatOptions.js +2 -1
- package/dist/internal/instantNanoseconds.d.ts +75 -9
- package/dist/internal/instantNanoseconds.js +192 -11
- package/dist/internal/intervalNanoseconds.js +2 -1
- package/dist/internal/isObject.d.ts +13 -6
- package/dist/internal/isObject.js +14 -7
- package/dist/internal/isoYearString.d.ts +21 -0
- package/dist/internal/isoYearString.js +27 -0
- package/dist/internal/joinDateTimeConnector.d.ts +1 -1
- package/dist/internal/maxPieces.js +2 -1
- package/dist/internal/monthGridWeekRow.d.ts +2 -1
- package/dist/internal/monthGridWeekRow.js +2 -1
- package/dist/internal/normalizeTimeZone.d.ts +5 -2
- package/dist/internal/normalizeTimeZone.js +5 -2
- package/dist/internal/operatingSchedule.d.ts +138 -0
- package/dist/internal/operatingSchedule.js +756 -0
- package/dist/internal/optionOrDefault.d.ts +18 -0
- package/dist/internal/optionOrDefault.js +20 -0
- package/dist/internal/patternToken.d.ts +12 -5
- package/dist/internal/patternToken.js +59 -25
- package/dist/internal/plainDateUntil.js +10 -6
- package/dist/internal/punctuality.d.ts +38 -0
- package/dist/internal/punctuality.js +59 -0
- package/dist/internal/readDateTimeFormatOptions.d.ts +30 -0
- package/dist/internal/readDateTimeFormatOptions.js +93 -0
- package/dist/internal/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 +4 -0
- package/dist/internal/resolveDurationRelativeTo.js +11 -1
- package/dist/internal/resolveRelativeRounding.d.ts +17 -6
- package/dist/internal/resolveRelativeRounding.js +27 -7
- package/dist/internal/resolveRelativeUnit.d.ts +30 -0
- package/dist/internal/resolveRelativeUnit.js +40 -0
- package/dist/internal/resolveUnixIntervalPair.d.ts +8 -2
- package/dist/internal/resolveUnixIntervalPair.js +11 -7
- package/dist/internal/splitStep.d.ts +24 -1
- package/dist/internal/splitStep.js +34 -2
- package/dist/internal/startOrEndOfUnix.d.ts +2 -1
- package/dist/internal/startOrEndOfUnix.js +9 -6
- package/dist/internal/startOrEndOfZoned.js +2 -3
- package/dist/internal/temporalCompat/capabilities.d.ts +26 -0
- package/dist/internal/temporalCompat/capabilities.js +35 -3
- package/dist/internal/temporalCompat/fieldSearch.js +1 -1
- package/dist/internal/temporalCompat/index.d.ts +1 -1
- package/dist/internal/temporalCompat/index.js +1 -1
- package/dist/internal/temporalCompat/repros.d.ts +1 -1
- package/dist/internal/temporalCompat/repros.js +157 -0
- package/dist/internal/timestampEvents.d.ts +32 -0
- package/dist/internal/timestampEvents.js +76 -0
- package/dist/internal/twoDigitYear.d.ts +19 -0
- package/dist/internal/twoDigitYear.js +22 -0
- package/dist/internal/unixEpochValue.js +3 -2
- package/dist/internal/unixWallClock.d.ts +24 -0
- package/dist/internal/unixWallClock.js +35 -0
- package/dist/internal/utcWallClock.d.ts +20 -0
- package/dist/internal/utcWallClock.js +32 -0
- 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.js +8 -6
- package/dist/internal/zonedLocalDates.js +1 -1
- package/dist/internal/zonedNowUnitValue.d.ts +7 -4
- package/dist/internal/zonedNowUnitValue.js +8 -4
- package/dist/internal/zonedTransitionSearch.d.ts +27 -0
- package/dist/internal/zonedTransitionSearch.js +218 -0
- package/dist/internal/zonedWallClock.d.ts +21 -7
- package/dist/internal/zonedWallClock.js +87 -18
- package/dist/internal/zonedWallClockDifference.js +4 -4
- package/dist/internal/zonedWallClockOperations.d.ts +31 -15
- package/dist/internal/zonedWallClockOperations.js +93 -43
- package/dist/interval/validate/isValidInterval.d.ts +6 -3
- package/dist/interval/validate/isValidInterval.js +6 -3
- package/dist/plain/calculate/addDate.d.ts +11 -8
- package/dist/plain/calculate/addDate.js +9 -15
- package/dist/plain/calculate/addDateTime.d.ts +7 -4
- package/dist/plain/calculate/addDateTime.js +5 -11
- package/dist/plain/calculate/addTime.js +4 -7
- package/dist/plain/calculate/cycleDate.d.ts +16 -7
- package/dist/plain/calculate/cycleDate.js +3 -7
- package/dist/plain/calculate/cycleDateTime.d.ts +14 -4
- package/dist/plain/calculate/cycleDateTime.js +1 -4
- package/dist/plain/calculate/cycleTime.d.ts +10 -5
- package/dist/plain/calculate/cycleTime.js +3 -5
- package/dist/plain/calculate/diffDate.d.ts +1 -1
- package/dist/plain/calculate/diffDate.js +1 -1
- package/dist/plain/calculate/diffDateAsDuration.d.ts +1 -1
- package/dist/plain/calculate/diffDateAsDuration.js +1 -1
- package/dist/plain/calculate/diffDateTime.d.ts +1 -1
- package/dist/plain/calculate/diffDateTime.js +1 -1
- package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +1 -1
- package/dist/plain/calculate/diffDateTimeAsDuration.js +1 -1
- package/dist/plain/calculate/diffTime.d.ts +1 -1
- package/dist/plain/calculate/diffTime.js +1 -1
- package/dist/plain/calculate/endOfDate.d.ts +8 -3
- package/dist/plain/calculate/endOfDate.js +1 -3
- package/dist/plain/calculate/endOfDateTime.d.ts +15 -5
- package/dist/plain/calculate/endOfDateTime.js +1 -5
- package/dist/plain/calculate/endOfTime.d.ts +9 -3
- package/dist/plain/calculate/endOfTime.js +1 -2
- package/dist/plain/calculate/getLocaleWeekYear.d.ts +16 -9
- package/dist/plain/calculate/getLocaleWeekYear.js +9 -9
- package/dist/plain/calculate/getWeekOfMonth.d.ts +7 -4
- package/dist/plain/calculate/getWeekOfMonth.js +7 -4
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +13 -6
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +6 -6
- package/dist/plain/calculate/getWeeksInMonth.d.ts +5 -2
- package/dist/plain/calculate/getWeeksInMonth.js +5 -2
- package/dist/plain/calculate/nextWeekday.d.ts +7 -3
- package/dist/plain/calculate/nextWeekday.js +1 -3
- package/dist/plain/calculate/previousWeekday.d.ts +7 -3
- package/dist/plain/calculate/previousWeekday.js +1 -3
- package/dist/plain/calculate/roundDate.d.ts +20 -7
- package/dist/plain/calculate/roundDate.js +3 -10
- package/dist/plain/calculate/roundDateTime.d.ts +22 -8
- package/dist/plain/calculate/roundDateTime.js +3 -11
- package/dist/plain/calculate/roundTime.d.ts +20 -4
- package/dist/plain/calculate/roundTime.js +3 -7
- package/dist/plain/calculate/setDate.d.ts +27 -8
- package/dist/plain/calculate/setDate.js +28 -12
- package/dist/plain/calculate/setDateTime.d.ts +23 -8
- package/dist/plain/calculate/setDateTime.js +23 -12
- package/dist/plain/calculate/setTime.d.ts +23 -7
- package/dist/plain/calculate/setTime.js +25 -12
- package/dist/plain/calculate/startOfDate.d.ts +8 -2
- package/dist/plain/calculate/startOfDate.js +1 -2
- package/dist/plain/calculate/startOfDateTime.d.ts +15 -2
- package/dist/plain/calculate/startOfDateTime.js +1 -2
- package/dist/plain/calculate/startOfTime.d.ts +9 -2
- package/dist/plain/calculate/startOfTime.js +1 -1
- package/dist/plain/calculate/subtractDate.d.ts +7 -4
- package/dist/plain/calculate/subtractDate.js +5 -11
- package/dist/plain/calculate/subtractDateTime.d.ts +7 -4
- package/dist/plain/calculate/subtractDateTime.js +5 -11
- package/dist/plain/calculate/subtractTime.js +4 -7
- package/dist/plain/compare/areDateTimesEqualBy.d.ts +13 -5
- package/dist/plain/compare/areDateTimesEqualBy.js +6 -5
- package/dist/plain/compare/areDatesEqualBy.d.ts +15 -6
- package/dist/plain/compare/areDatesEqualBy.js +8 -6
- package/dist/plain/compare/isBetweenDate.d.ts +13 -2
- package/dist/plain/compare/isBetweenDate.js +4 -4
- package/dist/plain/compare/isBetweenDateTime.d.ts +13 -2
- package/dist/plain/compare/isBetweenDateTime.js +4 -4
- package/dist/plain/compare/isBetweenTime.d.ts +13 -2
- package/dist/plain/compare/isBetweenTime.js +4 -4
- package/dist/plain/compare/isRelativeDay.d.ts +1 -1
- package/dist/plain/compare/isRelativeDay.js +1 -1
- package/dist/plain/compare/isThisUnit.d.ts +1 -1
- package/dist/plain/compare/isThisUnit.js +1 -1
- package/dist/plain/format/formatCalendar.d.ts +21 -14
- package/dist/plain/format/formatCalendar.js +23 -17
- package/dist/plain/format/formatDate.js +5 -3
- package/dist/plain/format/formatDateRange.js +4 -2
- package/dist/plain/format/formatDateTime.js +4 -2
- package/dist/plain/format/formatDateTimeRange.js +4 -2
- package/dist/plain/format/formatDateTimeToParts.d.ts +15 -4
- package/dist/plain/format/formatDateTimeToParts.js +10 -6
- package/dist/plain/format/formatDateToParts.d.ts +13 -2
- package/dist/plain/format/formatDateToParts.js +8 -4
- package/dist/plain/format/formatRelativeDate.d.ts +16 -3
- package/dist/plain/format/formatRelativeDate.js +28 -16
- package/dist/plain/format/formatRelativeDateTime.d.ts +16 -3
- package/dist/plain/format/formatRelativeDateTime.js +10 -6
- package/dist/plain/format/formatRelativeTime.d.ts +16 -3
- package/dist/plain/format/formatRelativeTime.js +23 -14
- package/dist/plain/format/{formatSql.d.ts → formatSqlDateTime.d.ts} +7 -7
- package/dist/plain/format/{formatSql.js → formatSqlDateTime.js} +7 -7
- package/dist/plain/format/formatTime.js +4 -2
- package/dist/plain/format/index.d.ts +1 -1
- package/dist/plain/format/index.js +1 -1
- package/dist/plain/get/getNowUnit.d.ts +2 -0
- package/dist/plain/get/getNowUnit.js +2 -0
- package/dist/plain/get/getYear.d.ts +2 -0
- package/dist/plain/get/getYear.js +4 -3
- package/dist/plain/interval/intervalDifferenceDate.d.ts +9 -0
- package/dist/plain/interval/intervalDifferenceDateTime.d.ts +9 -0
- package/dist/plain/interval/intervalDifferenceTime.d.ts +9 -0
- package/dist/plain/interval/intervalDivideEquallyDate.d.ts +19 -4
- package/dist/plain/interval/intervalDivideEquallyDate.js +3 -4
- package/dist/plain/interval/intervalDivideEquallyDateTime.d.ts +19 -4
- package/dist/plain/interval/intervalDivideEquallyDateTime.js +3 -4
- package/dist/plain/interval/intervalDivideEquallyTime.d.ts +19 -4
- package/dist/plain/interval/intervalDivideEquallyTime.js +3 -4
- package/dist/plain/interval/intervalFromDurationDate.d.ts +16 -3
- package/dist/plain/interval/intervalFromDurationDate.js +1 -3
- package/dist/plain/interval/intervalFromDurationDateTime.d.ts +16 -3
- package/dist/plain/interval/intervalFromDurationDateTime.js +1 -3
- package/dist/plain/interval/intervalFromDurationTime.d.ts +9 -0
- package/dist/plain/interval/intervalIntersectionDate.d.ts +9 -0
- package/dist/plain/interval/intervalIntersectionDateTime.d.ts +9 -0
- package/dist/plain/interval/intervalIntersectionTime.d.ts +9 -0
- package/dist/plain/interval/intervalSplitAtDate.d.ts +11 -0
- package/dist/plain/interval/intervalSplitAtDate.js +2 -0
- package/dist/plain/interval/intervalSplitAtDateTime.d.ts +11 -0
- package/dist/plain/interval/intervalSplitAtDateTime.js +2 -0
- package/dist/plain/interval/intervalSplitAtTime.d.ts +11 -0
- package/dist/plain/interval/intervalSplitAtTime.js +2 -0
- package/dist/plain/interval/intervalUnionDate.d.ts +9 -0
- package/dist/plain/interval/intervalUnionDateTime.d.ts +9 -0
- package/dist/plain/interval/intervalUnionTime.d.ts +9 -0
- package/dist/plain/interval/intervalXorAllDate.d.ts +9 -0
- package/dist/plain/interval/intervalXorAllDate.js +2 -2
- package/dist/plain/interval/intervalXorAllDateTime.d.ts +9 -0
- package/dist/plain/interval/intervalXorAllDateTime.js +2 -2
- package/dist/plain/interval/intervalXorAllTime.d.ts +9 -0
- package/dist/plain/interval/intervalXorAllTime.js +2 -2
- package/dist/plain/interval/intervalXorDate.d.ts +9 -0
- package/dist/plain/interval/intervalXorDateTime.d.ts +9 -0
- package/dist/plain/interval/intervalXorTime.d.ts +9 -0
- package/dist/plain/interval/mergeIntervalsDate.d.ts +9 -0
- package/dist/plain/interval/mergeIntervalsDate.js +2 -2
- package/dist/plain/interval/mergeIntervalsDateTime.d.ts +9 -0
- package/dist/plain/interval/mergeIntervalsDateTime.js +2 -2
- package/dist/plain/interval/mergeIntervalsTime.d.ts +9 -0
- package/dist/plain/interval/mergeIntervalsTime.js +2 -2
- package/dist/plain/interval/splitIntervalByUnitDate.d.ts +23 -7
- package/dist/plain/interval/splitIntervalByUnitDate.js +7 -7
- package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +22 -6
- package/dist/plain/interval/splitIntervalByUnitDateTime.js +6 -6
- package/dist/plain/interval/splitIntervalByUnitTime.d.ts +17 -4
- package/dist/plain/interval/splitIntervalByUnitTime.js +1 -4
- package/dist/plain/map/mapDatesInRange.d.ts +8 -4
- package/dist/plain/map/mapDatesInRange.js +1 -4
- package/dist/plain/parse/index.d.ts +1 -1
- package/dist/plain/parse/index.js +1 -1
- package/dist/plain/parse/parseDateTimeWithPattern.d.ts +25 -9
- package/dist/plain/parse/parseDateTimeWithPattern.js +29 -11
- package/dist/plain/parse/parseDateWithPattern.d.ts +26 -9
- package/dist/plain/parse/parseDateWithPattern.js +30 -11
- package/dist/plain/parse/{parseSql.d.ts → parseSqlDateTime.d.ts} +8 -8
- package/dist/plain/parse/{parseSql.js → parseSqlDateTime.js} +8 -8
- package/dist/plain/parse/parseTimeWithPattern.d.ts +10 -7
- package/dist/plain/parse/parseTimeWithPattern.js +11 -7
- package/dist/plain/parse/parseUnitFromDate.d.ts +14 -3
- package/dist/plain/parse/parseUnitFromDate.js +8 -4
- package/dist/plain/parse/parseUnitFromDateTime.d.ts +14 -3
- package/dist/plain/parse/parseUnitFromDateTime.js +8 -4
- package/dist/plain/parse/parseWeekFromDate.d.ts +10 -6
- package/dist/plain/parse/parseWeekFromDate.js +2 -6
- package/dist/plain/parse/parseWeekFromDateTime.d.ts +10 -6
- package/dist/plain/parse/parseWeekFromDateTime.js +2 -6
- package/dist/plain/parse/parseYearFromDate.d.ts +5 -2
- package/dist/plain/parse/parseYearFromDate.js +7 -3
- package/dist/plain/parse/parseYearFromDateTime.d.ts +4 -2
- package/dist/plain/parse/parseYearFromDateTime.js +6 -3
- package/dist/plain/validate/index.d.ts +1 -0
- package/dist/plain/validate/index.js +1 -0
- package/dist/plain/validate/isValidDateRange.d.ts +19 -4
- package/dist/plain/validate/isValidDateRange.js +1 -4
- package/dist/plain/validate/isValidDateTimeRange.d.ts +20 -5
- package/dist/plain/validate/isValidDateTimeRange.js +2 -5
- package/dist/plain/validate/isValidSqlDateTime.d.ts +33 -0
- package/dist/plain/validate/isValidSqlDateTime.js +36 -0
- package/dist/plain/validate/isValidTimeRange.d.ts +20 -5
- package/dist/plain/validate/isValidTimeRange.js +2 -5
- package/dist/precision/convert/fromExcelSerial.d.ts +10 -4
- package/dist/precision/convert/fromExcelSerial.js +4 -5
- package/dist/precision/convert/fromNanoseconds.d.ts +9 -3
- package/dist/precision/convert/fromNanoseconds.js +9 -3
- package/dist/precision/convert/toExcelSerial.d.ts +9 -3
- package/dist/precision/convert/toExcelSerial.js +3 -4
- package/dist/precision/convert/toNanoseconds.d.ts +11 -6
- package/dist/precision/convert/toNanoseconds.js +11 -6
- package/dist/precision/validate/isValidInstant.d.ts +12 -3
- package/dist/precision/validate/isValidInstant.js +12 -3
- package/dist/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 +1 -0
- package/dist/regex/index.js +1 -0
- 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 +3 -2
- package/dist/regex/time-zone-like.js +3 -2
- package/dist/regex/utc-offset.d.ts +2 -1
- package/dist/regex/utc-offset.js +2 -1
- package/dist/span/calculate/spanMs.d.ts +10 -4
- package/dist/span/calculate/spanMs.js +10 -4
- package/dist/span/calculate/spanNs.d.ts +10 -4
- package/dist/span/calculate/spanNs.js +10 -4
- package/dist/span/validate/isValidSpan.d.ts +8 -3
- package/dist/span/validate/isValidSpan.js +8 -3
- package/dist/transport/calculate/bestAvailable.d.ts +47 -0
- package/dist/transport/calculate/bestAvailable.js +76 -0
- package/dist/transport/calculate/crossingTime.d.ts +63 -0
- package/dist/transport/calculate/crossingTime.js +81 -0
- package/dist/transport/calculate/cutoffAt.d.ts +95 -0
- package/dist/transport/calculate/cutoffAt.js +211 -0
- package/dist/transport/calculate/cutoffSchedule.d.ts +75 -0
- package/dist/transport/calculate/cutoffSchedule.js +73 -0
- package/dist/transport/calculate/dwellTime.d.ts +22 -8
- package/dist/transport/calculate/dwellTime.js +18 -9
- package/dist/transport/calculate/estimateDrift.d.ts +65 -0
- package/dist/transport/calculate/estimateDrift.js +75 -0
- package/dist/transport/calculate/index.d.ts +8 -0
- package/dist/transport/calculate/index.js +8 -0
- package/dist/transport/calculate/nextDeparture.d.ts +78 -0
- package/dist/transport/calculate/nextDeparture.js +131 -0
- package/dist/transport/calculate/punctualityRate.d.ts +42 -0
- package/dist/transport/calculate/punctualityRate.js +59 -0
- package/dist/transport/calculate/scheduleDelivery.d.ts +158 -0
- package/dist/transport/calculate/scheduleDelivery.js +305 -0
- package/dist/transport/calculate/transitTime.d.ts +21 -3
- package/dist/transport/calculate/transitTime.js +29 -46
- package/dist/transport/compare/classifyPunctuality.d.ts +46 -0
- package/dist/transport/compare/classifyPunctuality.js +64 -0
- package/dist/transport/compare/index.d.ts +4 -0
- package/dist/transport/compare/index.js +4 -0
- package/dist/transport/compare/isPastCutoff.d.ts +33 -0
- package/dist/transport/compare/isPastCutoff.js +48 -0
- package/dist/transport/compare/scheduleDeviation.d.ts +37 -0
- package/dist/transport/compare/scheduleDeviation.js +53 -0
- package/dist/transport/compare/timeToCutoff.d.ts +31 -0
- package/dist/transport/compare/timeToCutoff.js +47 -0
- package/dist/transport/convert/etaAtZone.d.ts +13 -1
- package/dist/transport/convert/etaAtZone.js +15 -5
- package/dist/transport/index.d.ts +1 -0
- package/dist/transport/index.js +1 -0
- package/dist/types/business-calendar.d.ts +20 -14
- package/dist/types/calendar-options.d.ts +15 -3
- package/dist/types/date-cycle-field.d.ts +5 -0
- package/dist/types/date-duration-unit.d.ts +4 -0
- package/dist/types/date-time-cycle-field.d.ts +4 -0
- package/dist/types/date-time-duration-units.d.ts +4 -0
- package/dist/types/date-time-unit.d.ts +4 -0
- package/dist/types/date-unit.d.ts +4 -0
- package/dist/types/disambiguation.d.ts +8 -0
- package/dist/types/duration-relative-to.d.ts +8 -0
- package/dist/types/duration-string-options.d.ts +28 -0
- package/dist/types/duty.d.ts +777 -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 +1 -1
- package/dist/types/fractional-digit.d.ts +5 -0
- package/dist/types/free-time-options.d.ts +22 -11
- package/dist/types/index.d.ts +7 -1
- package/dist/types/index.js +7 -1
- package/dist/types/interval.d.ts +8 -1
- package/dist/types/offset.d.ts +9 -0
- package/dist/types/operating-schedule.d.ts +72 -0
- package/dist/types/operating-schedule.js +0 -0
- package/dist/types/overflow.d.ts +6 -0
- package/dist/types/relative-rounding-method.d.ts +6 -0
- package/dist/types/relative-time-options.d.ts +33 -5
- package/dist/types/rounding-options.d.ts +27 -0
- package/dist/types/time-cycle-field.d.ts +4 -0
- package/dist/types/time-duration-unit.d.ts +4 -0
- package/dist/types/time-unit.d.ts +4 -0
- package/dist/types/transport-timestamps.d.ts +54 -0
- package/dist/types/transport-timestamps.js +0 -0
- package/dist/types/two-digit-year.d.ts +23 -0
- package/dist/types/two-digit-year.js +0 -0
- package/dist/types/zone-bucket-unit.d.ts +1 -1
- package/dist/unix/calculate/addUnix.d.ts +28 -5
- package/dist/unix/calculate/addUnix.js +15 -16
- package/dist/unix/calculate/diffUnix.d.ts +21 -3
- package/dist/unix/calculate/diffUnix.js +12 -9
- package/dist/unix/calculate/diffUnixAsDuration.d.ts +21 -3
- package/dist/unix/calculate/diffUnixAsDuration.js +11 -8
- package/dist/unix/calculate/endOfQuarterForUnix.d.ts +21 -3
- package/dist/unix/calculate/endOfQuarterForUnix.js +7 -3
- package/dist/unix/calculate/endOfUnix.d.ts +29 -4
- package/dist/unix/calculate/endOfUnix.js +8 -4
- package/dist/unix/calculate/isBetweenUnix.d.ts +27 -4
- package/dist/unix/calculate/isBetweenUnix.js +7 -9
- package/dist/unix/calculate/roundUnix.d.ts +39 -3
- package/dist/unix/calculate/roundUnix.js +16 -12
- package/dist/unix/calculate/setUnix.d.ts +58 -12
- package/dist/unix/calculate/setUnix.js +37 -25
- package/dist/unix/calculate/startOfQuarterForUnix.d.ts +21 -3
- package/dist/unix/calculate/startOfQuarterForUnix.js +7 -3
- package/dist/unix/calculate/startOfUnix.d.ts +29 -4
- package/dist/unix/calculate/startOfUnix.js +8 -4
- package/dist/unix/calculate/subtractUnix.d.ts +27 -5
- package/dist/unix/calculate/subtractUnix.js +14 -16
- package/dist/unix/compare/areUnixEqual.d.ts +7 -1
- package/dist/unix/compare/areUnixEqual.js +1 -1
- package/dist/unix/compare/areUnixEqualBy.d.ts +33 -7
- package/dist/unix/compare/areUnixEqualBy.js +20 -9
- package/dist/unix/compare/isAfterUnix.d.ts +7 -1
- package/dist/unix/compare/isAfterUnix.js +1 -1
- package/dist/unix/compare/isBeforeUnix.d.ts +7 -1
- package/dist/unix/compare/isBeforeUnix.js +1 -1
- package/dist/unix/convert/convertUnixToPlainDate.d.ts +17 -4
- package/dist/unix/convert/convertUnixToPlainDate.js +7 -8
- package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +17 -4
- package/dist/unix/convert/convertUnixToPlainDateTime.js +7 -8
- package/dist/unix/convert/convertUnixToPlainTime.d.ts +17 -4
- package/dist/unix/convert/convertUnixToPlainTime.js +7 -8
- package/dist/unix/convert/convertUnixToUtc.d.ts +9 -4
- package/dist/unix/convert/convertUnixToUtc.js +3 -4
- package/dist/unix/convert/convertUnixToZoned.d.ts +14 -5
- package/dist/unix/convert/convertUnixToZoned.js +8 -5
- package/dist/unix/format/formatCalendarUnix.d.ts +31 -19
- package/dist/unix/format/formatCalendarUnix.js +10 -6
- package/dist/unix/format/formatRelativeUnix.d.ts +62 -5
- package/dist/unix/format/formatRelativeUnix.js +16 -10
- package/dist/unix/format/formatUnix.d.ts +29 -6
- package/dist/unix/format/formatUnix.js +12 -7
- package/dist/unix/get/getUnixDay.d.ts +1 -3
- package/dist/unix/get/getUnixDay.js +5 -12
- package/dist/unix/get/getUnixHour.d.ts +1 -3
- package/dist/unix/get/getUnixHour.js +5 -12
- package/dist/unix/get/getUnixMicrosecond.d.ts +1 -3
- package/dist/unix/get/getUnixMicrosecond.js +4 -11
- package/dist/unix/get/getUnixMillisecond.d.ts +1 -3
- package/dist/unix/get/getUnixMillisecond.js +5 -12
- package/dist/unix/get/getUnixMinute.d.ts +1 -3
- package/dist/unix/get/getUnixMinute.js +5 -12
- package/dist/unix/get/getUnixMonth.d.ts +1 -3
- package/dist/unix/get/getUnixMonth.js +5 -12
- package/dist/unix/get/getUnixNanosecond.d.ts +1 -3
- package/dist/unix/get/getUnixNanosecond.js +4 -11
- package/dist/unix/get/getUnixNow.d.ts +8 -3
- package/dist/unix/get/getUnixNow.js +1 -3
- package/dist/unix/get/getUnixNowUnit.d.ts +2 -0
- package/dist/unix/get/getUnixNowUnit.js +2 -0
- package/dist/unix/get/getUnixSecond.d.ts +1 -3
- package/dist/unix/get/getUnixSecond.js +5 -12
- package/dist/unix/get/getUnixYear.d.ts +3 -3
- package/dist/unix/get/getUnixYear.js +5 -12
- package/dist/unix/interval/intervalCountUnix.d.ts +23 -5
- package/dist/unix/interval/intervalCountUnix.js +9 -5
- package/dist/unix/interval/intervalDifferenceUnix.d.ts +6 -0
- package/dist/unix/interval/intervalDivideEquallyUnix.d.ts +18 -4
- package/dist/unix/interval/intervalDivideEquallyUnix.js +5 -4
- package/dist/unix/interval/intervalFromDurationUnix.d.ts +41 -5
- package/dist/unix/interval/intervalFromDurationUnix.js +18 -12
- package/dist/unix/interval/intervalIntersectionUnix.d.ts +6 -0
- package/dist/unix/interval/intervalLengthUnix.d.ts +24 -6
- package/dist/unix/interval/intervalLengthUnix.js +10 -6
- package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +21 -3
- package/dist/unix/interval/intervalOverlappingDaysUnix.js +11 -8
- package/dist/unix/interval/intervalSplitAtUnix.d.ts +8 -0
- package/dist/unix/interval/intervalSplitAtUnix.js +2 -0
- package/dist/unix/interval/intervalUnionUnix.d.ts +6 -0
- package/dist/unix/interval/intervalXorAllUnix.d.ts +6 -0
- package/dist/unix/interval/intervalXorUnix.d.ts +6 -0
- package/dist/unix/interval/mergeIntervalsUnix.d.ts +6 -0
- package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +50 -11
- package/dist/unix/interval/splitIntervalByUnitUnix.js +33 -22
- package/dist/unix/parse/parseDateFromUnix.d.ts +15 -2
- package/dist/unix/parse/parseDateFromUnix.js +4 -5
- package/dist/unix/parse/parseDayFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseDayFromUnix.js +2 -2
- package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +15 -1
- package/dist/unix/parse/parseDayOfWeekFromUnix.js +3 -3
- package/dist/unix/parse/parseHourFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseHourFromUnix.js +2 -2
- package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseMicrosecondFromUnix.js +2 -2
- package/dist/unix/parse/parseMillisecondFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseMillisecondFromUnix.js +2 -2
- package/dist/unix/parse/parseMinuteFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseMinuteFromUnix.js +2 -2
- package/dist/unix/parse/parseMonthFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseMonthFromUnix.js +2 -2
- package/dist/unix/parse/parseNanosecondFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseNanosecondFromUnix.js +2 -2
- package/dist/unix/parse/parseSecondFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseSecondFromUnix.js +2 -2
- package/dist/unix/parse/parseTimeFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseTimeFromUnix.js +5 -5
- package/dist/unix/parse/parseUnitFromUnix.d.ts +29 -4
- package/dist/unix/parse/parseUnitFromUnix.js +23 -17
- package/dist/unix/parse/parseWeekFromUnix.d.ts +24 -7
- package/dist/unix/parse/parseWeekFromUnix.js +7 -11
- package/dist/unix/parse/parseYearFromUnix.d.ts +20 -3
- package/dist/unix/parse/parseYearFromUnix.js +6 -3
- package/dist/unix/validate/isValidUnixRange.d.ts +20 -4
- package/dist/unix/validate/isValidUnixRange.js +1 -4
- package/dist/unix/validate/isValidUnixUnit.d.ts +1 -1
- package/dist/utc/calculate/addUtc.d.ts +7 -4
- package/dist/utc/calculate/addUtc.js +5 -11
- package/dist/utc/calculate/diffUtc.d.ts +1 -1
- package/dist/utc/calculate/diffUtc.js +1 -1
- package/dist/utc/calculate/diffUtcAsDuration.d.ts +1 -1
- package/dist/utc/calculate/diffUtcAsDuration.js +1 -1
- package/dist/utc/calculate/endOfUtc.d.ts +16 -3
- package/dist/utc/calculate/endOfUtc.js +2 -3
- package/dist/utc/calculate/isBetweenUtc.d.ts +13 -2
- package/dist/utc/calculate/isBetweenUtc.js +4 -4
- package/dist/utc/calculate/roundUtc.d.ts +26 -9
- package/dist/utc/calculate/roundUtc.js +3 -12
- package/dist/utc/calculate/setUtc.d.ts +23 -7
- package/dist/utc/calculate/setUtc.js +23 -12
- package/dist/utc/calculate/startOfUtc.d.ts +15 -2
- package/dist/utc/calculate/startOfUtc.js +1 -2
- package/dist/utc/calculate/subtractUtc.d.ts +7 -4
- package/dist/utc/calculate/subtractUtc.js +5 -11
- package/dist/utc/compare/areUtcEqualBy.d.ts +9 -3
- package/dist/utc/compare/areUtcEqualBy.js +2 -3
- package/dist/utc/convert/convertUtcToPlainDate.d.ts +14 -3
- package/dist/utc/convert/convertUtcToPlainDate.js +12 -10
- package/dist/utc/convert/convertUtcToPlainDateTime.d.ts +15 -3
- package/dist/utc/convert/convertUtcToPlainDateTime.js +14 -16
- package/dist/utc/convert/convertUtcToPlainTime.d.ts +11 -3
- package/dist/utc/convert/convertUtcToPlainTime.js +9 -9
- package/dist/utc/convert/convertUtcToUnix.d.ts +9 -4
- package/dist/utc/convert/convertUtcToUnix.js +3 -4
- package/dist/utc/convert/convertUtcToZoned.d.ts +5 -1
- package/dist/utc/convert/convertUtcToZoned.js +5 -1
- package/dist/utc/format/formatCalendarUtc.d.ts +23 -8
- package/dist/utc/format/formatCalendarUtc.js +14 -7
- package/dist/utc/format/{formatHttp.d.ts → formatHttpDate.d.ts} +8 -8
- package/dist/utc/format/{formatHttp.js → formatHttpDate.js} +8 -8
- package/dist/utc/format/formatRelativeUtc.d.ts +38 -10
- package/dist/utc/format/formatRelativeUtc.js +22 -16
- package/dist/utc/format/formatUtc.d.ts +22 -15
- 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 +5 -12
- package/dist/utc/get/getUtcHour.d.ts +1 -3
- package/dist/utc/get/getUtcHour.js +5 -12
- package/dist/utc/get/getUtcMicrosecond.d.ts +1 -3
- package/dist/utc/get/getUtcMicrosecond.js +4 -11
- package/dist/utc/get/getUtcMillisecond.d.ts +1 -3
- package/dist/utc/get/getUtcMillisecond.js +5 -12
- package/dist/utc/get/getUtcMinute.d.ts +1 -3
- package/dist/utc/get/getUtcMinute.js +5 -12
- package/dist/utc/get/getUtcMonth.d.ts +1 -3
- package/dist/utc/get/getUtcMonth.js +5 -12
- package/dist/utc/get/getUtcNanosecond.d.ts +1 -3
- package/dist/utc/get/getUtcNanosecond.js +4 -11
- package/dist/utc/get/getUtcNow.d.ts +1 -3
- package/dist/utc/get/getUtcNow.js +2 -9
- package/dist/utc/get/getUtcNowUnit.d.ts +2 -0
- package/dist/utc/get/getUtcNowUnit.js +2 -0
- package/dist/utc/get/getUtcSecond.d.ts +1 -3
- package/dist/utc/get/getUtcSecond.js +5 -12
- package/dist/utc/get/getUtcYear.d.ts +3 -3
- package/dist/utc/get/getUtcYear.js +5 -12
- package/dist/utc/interval/intervalDifferenceUtc.d.ts +6 -0
- package/dist/utc/interval/intervalDivideEquallyUtc.d.ts +18 -4
- package/dist/utc/interval/intervalDivideEquallyUtc.js +5 -4
- package/dist/utc/interval/intervalFromDurationUtc.d.ts +13 -3
- package/dist/utc/interval/intervalFromDurationUtc.js +1 -3
- package/dist/utc/interval/intervalIntersectionUtc.d.ts +6 -0
- package/dist/utc/interval/intervalSplitAtUtc.d.ts +8 -0
- package/dist/utc/interval/intervalSplitAtUtc.js +2 -0
- package/dist/utc/interval/intervalUnionUtc.d.ts +6 -0
- package/dist/utc/interval/intervalXorAllUtc.d.ts +6 -0
- package/dist/utc/interval/intervalXorAllUtc.js +2 -2
- package/dist/utc/interval/intervalXorUtc.d.ts +6 -0
- package/dist/utc/interval/mergeIntervalsUtc.d.ts +6 -0
- package/dist/utc/interval/mergeIntervalsUtc.js +2 -2
- package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +19 -6
- package/dist/utc/interval/splitIntervalByUnitUtc.js +6 -6
- package/dist/utc/parse/index.d.ts +1 -1
- package/dist/utc/parse/index.js +1 -1
- package/dist/utc/parse/parseDateFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseDateFromUtc.js +3 -5
- package/dist/utc/parse/parseDayFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseDayFromUtc.js +3 -5
- package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseDayOfWeekFromUtc.js +5 -7
- package/dist/utc/parse/parseHourFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseHourFromUtc.js +3 -5
- package/dist/utc/parse/{parseHttp.d.ts → parseHttpDate.d.ts} +12 -12
- package/dist/utc/parse/{parseHttp.js → parseHttpDate.js} +12 -12
- package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseMicrosecondFromUtc.js +3 -5
- package/dist/utc/parse/parseMillisecondFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseMillisecondFromUtc.js +3 -5
- package/dist/utc/parse/parseMinuteFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseMinuteFromUtc.js +3 -5
- package/dist/utc/parse/parseMonthFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseMonthFromUtc.js +3 -5
- package/dist/utc/parse/parseNanosecondFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseNanosecondFromUtc.js +3 -5
- package/dist/utc/parse/parseSecondFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseSecondFromUtc.js +3 -5
- package/dist/utc/parse/parseTimeFromUtc.d.ts +11 -3
- package/dist/utc/parse/parseTimeFromUtc.js +7 -7
- package/dist/utc/parse/parseUnitFromUtc.d.ts +25 -6
- package/dist/utc/parse/parseUnitFromUtc.js +14 -10
- package/dist/utc/parse/parseWeekFromUtc.d.ts +20 -10
- package/dist/utc/parse/parseWeekFromUtc.js +8 -14
- package/dist/utc/parse/parseYearFromUtc.d.ts +13 -5
- package/dist/utc/parse/parseYearFromUtc.js +9 -8
- 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 +4 -0
- package/dist/utc/validate/isValidUtcRange.d.ts +16 -5
- package/dist/utc/validate/isValidUtcRange.js +2 -5
- package/dist/utc/validate/isValidUtcTimestamp.d.ts +43 -0
- package/dist/utc/validate/isValidUtcTimestamp.js +48 -0
- package/dist/zoned/calculate/addZoned.d.ts +20 -10
- package/dist/zoned/calculate/addZoned.js +10 -20
- package/dist/zoned/calculate/cycleZoned.d.ts +33 -8
- package/dist/zoned/calculate/cycleZoned.js +1 -8
- package/dist/zoned/calculate/diffZoned.d.ts +1 -1
- package/dist/zoned/calculate/diffZoned.js +1 -1
- package/dist/zoned/calculate/diffZonedAsDuration.d.ts +1 -1
- package/dist/zoned/calculate/diffZonedAsDuration.js +1 -1
- package/dist/zoned/calculate/endOfQuarterForZoned.d.ts +9 -2
- package/dist/zoned/calculate/endOfQuarterForZoned.js +4 -5
- package/dist/zoned/calculate/endOfZoned.d.ts +16 -3
- package/dist/zoned/calculate/endOfZoned.js +2 -3
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +10 -3
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +5 -6
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +7 -1
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +3 -4
- package/dist/zoned/calculate/roundZoned.d.ts +21 -4
- package/dist/zoned/calculate/roundZoned.js +3 -7
- package/dist/zoned/calculate/setZoned.d.ts +44 -13
- package/dist/zoned/calculate/setZoned.js +30 -21
- package/dist/zoned/calculate/startOfQuarterForZoned.d.ts +7 -2
- package/dist/zoned/calculate/startOfQuarterForZoned.js +3 -5
- package/dist/zoned/calculate/startOfZoned.d.ts +15 -3
- package/dist/zoned/calculate/startOfZoned.js +1 -3
- package/dist/zoned/calculate/subtractZoned.d.ts +20 -10
- package/dist/zoned/calculate/subtractZoned.js +10 -20
- package/dist/zoned/compare/areZonedEqualBy.d.ts +14 -5
- package/dist/zoned/compare/areZonedEqualBy.js +7 -5
- package/dist/zoned/compare/isBetweenZoned.d.ts +13 -1
- package/dist/zoned/compare/isBetweenZoned.js +4 -3
- package/dist/zoned/compare/isInDaylightSaving.d.ts +38 -11
- package/dist/zoned/compare/isInDaylightSaving.js +40 -44
- package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +21 -5
- package/dist/zoned/convert/convertPlainDateTimeToZoned.js +9 -11
- package/dist/zoned/convert/convertZonedToUnix.d.ts +9 -4
- package/dist/zoned/convert/convertZonedToUnix.js +2 -4
- package/dist/zoned/convert/convertZonedToZoned.d.ts +5 -1
- package/dist/zoned/convert/convertZonedToZoned.js +5 -1
- package/dist/zoned/format/formatCalendarZoned.d.ts +18 -12
- package/dist/zoned/format/formatCalendarZoned.js +15 -10
- package/dist/zoned/format/formatRelativeZoned.d.ts +41 -12
- package/dist/zoned/format/formatRelativeZoned.js +9 -5
- package/dist/zoned/format/formatRfc2822.d.ts +2 -2
- package/dist/zoned/format/formatRfc2822.js +2 -2
- package/dist/zoned/format/formatRfc3339.d.ts +2 -3
- package/dist/zoned/format/formatRfc3339.js +2 -3
- package/dist/zoned/format/formatTimeZoneName.d.ts +16 -3
- package/dist/zoned/format/formatTimeZoneName.js +9 -4
- package/dist/zoned/format/formatZonedDateTime.js +2 -1
- package/dist/zoned/format/formatZonedRange.js +2 -1
- package/dist/zoned/format/formatZonedToParts.d.ts +15 -4
- package/dist/zoned/format/formatZonedToParts.js +8 -5
- package/dist/zoned/get/getDstTransitions.d.ts +11 -10
- package/dist/zoned/get/getDstTransitions.js +21 -7
- package/dist/zoned/get/getSystemTimeZone.d.ts +3 -1
- package/dist/zoned/get/getSystemTimeZone.js +5 -2
- package/dist/zoned/get/getTimeZoneOffset.d.ts +13 -2
- package/dist/zoned/get/getTimeZoneOffset.js +22 -6
- package/dist/zoned/get/getZonedDay.d.ts +2 -1
- package/dist/zoned/get/getZonedDay.js +6 -7
- package/dist/zoned/get/getZonedDayOfWeek.d.ts +2 -1
- package/dist/zoned/get/getZonedDayOfWeek.js +6 -5
- package/dist/zoned/get/getZonedHour.d.ts +2 -1
- package/dist/zoned/get/getZonedHour.js +6 -7
- package/dist/zoned/get/getZonedMicrosecond.d.ts +2 -1
- package/dist/zoned/get/getZonedMicrosecond.js +6 -5
- package/dist/zoned/get/getZonedMillisecond.d.ts +2 -1
- package/dist/zoned/get/getZonedMillisecond.js +6 -7
- package/dist/zoned/get/getZonedMinute.d.ts +2 -1
- package/dist/zoned/get/getZonedMinute.js +6 -7
- package/dist/zoned/get/getZonedMonth.d.ts +2 -1
- package/dist/zoned/get/getZonedMonth.js +6 -7
- package/dist/zoned/get/getZonedNanosecond.d.ts +2 -1
- package/dist/zoned/get/getZonedNanosecond.js +6 -5
- package/dist/zoned/get/getZonedNow.d.ts +18 -2
- package/dist/zoned/get/getZonedNow.js +17 -4
- package/dist/zoned/get/getZonedNowUnit.d.ts +6 -3
- package/dist/zoned/get/getZonedNowUnit.js +10 -7
- package/dist/zoned/get/getZonedSecond.d.ts +2 -1
- package/dist/zoned/get/getZonedSecond.js +6 -7
- package/dist/zoned/get/getZonedToday.d.ts +2 -1
- package/dist/zoned/get/getZonedToday.js +6 -5
- package/dist/zoned/get/getZonedWeekOfYear.d.ts +2 -1
- package/dist/zoned/get/getZonedWeekOfYear.js +6 -5
- package/dist/zoned/get/getZonedYear.d.ts +4 -1
- package/dist/zoned/get/getZonedYear.js +9 -7
- package/dist/zoned/interval/intervalDifferenceZoned.d.ts +9 -0
- package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +22 -4
- package/dist/zoned/interval/intervalDivideEquallyZoned.js +6 -4
- package/dist/zoned/interval/intervalFromDurationZoned.d.ts +29 -10
- package/dist/zoned/interval/intervalFromDurationZoned.js +6 -13
- package/dist/zoned/interval/intervalIntersectionZoned.d.ts +9 -0
- package/dist/zoned/interval/intervalSplitAtZoned.d.ts +11 -0
- package/dist/zoned/interval/intervalSplitAtZoned.js +2 -0
- package/dist/zoned/interval/intervalUnionZoned.d.ts +9 -0
- package/dist/zoned/interval/intervalXorAllZoned.d.ts +9 -0
- package/dist/zoned/interval/intervalXorAllZoned.js +2 -2
- package/dist/zoned/interval/intervalXorZoned.d.ts +9 -0
- package/dist/zoned/interval/mergeIntervalsZoned.d.ts +9 -0
- package/dist/zoned/interval/mergeIntervalsZoned.js +2 -2
- package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +27 -6
- package/dist/zoned/interval/splitIntervalByUnitZoned.js +11 -6
- package/dist/zoned/map/mapZonedDatesInRange.d.ts +9 -4
- package/dist/zoned/map/mapZonedDatesInRange.js +2 -4
- package/dist/zoned/parse/parseRfc2822.d.ts +1 -1
- package/dist/zoned/parse/parseRfc2822.js +1 -1
- package/dist/zoned/parse/parseUnitFromZoned.d.ts +13 -4
- package/dist/zoned/parse/parseUnitFromZoned.js +6 -4
- package/dist/zoned/parse/parseWeekFromZoned.d.ts +10 -3
- package/dist/zoned/parse/parseWeekFromZoned.js +2 -3
- package/dist/zoned/parse/parseYearFromZoned.d.ts +4 -2
- package/dist/zoned/parse/parseYearFromZoned.js +6 -3
- package/dist/zoned/validate/hasDaylightSaving.d.ts +45 -12
- package/dist/zoned/validate/hasDaylightSaving.js +54 -32
- package/dist/zoned/validate/index.d.ts +2 -0
- package/dist/zoned/validate/index.js +2 -0
- 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 +5 -1
- package/dist/zoned/validate/isValidTimeZone.js +6 -2
- package/dist/zoned/validate/isValidZonedDateTime.d.ts +13 -0
- package/dist/zoned/validate/isValidZonedDateTime.js +14 -1
- package/dist/zoned/validate/isValidZonedRange.d.ts +15 -4
- package/dist/zoned/validate/isValidZonedRange.js +1 -4
- package/package.json +67 -5
- package/skills/gmt-arithmetic/SKILL.md +99 -12
- package/skills/gmt-basics/SKILL.md +64 -13
- package/skills/gmt-integration/SKILL.md +33 -13
- package/skills/gmt-timezone/SKILL.md +265 -31
- package/dist/duration/calculate/durationAs.d.ts +0 -62
- package/dist/internal/resolveReadingTimeZone.d.ts +0 -11
- package/dist/internal/resolveReadingTimeZone.js +0 -18
- package/dist/internal/unixZonedDateTime.d.ts +0 -22
- package/dist/internal/unixZonedDateTime.js +0 -32
- package/dist/internal/utcZonedDateTime.d.ts +0 -16
- package/dist/internal/utcZonedDateTime.js +0 -28
- package/dist/types/duration-unit.d.ts +0 -5
- /package/dist/types/{duration-unit.js → duty.js} +0 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { Disambiguation, Interval, OperatingSchedule } from "../../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Return the instants a weekly pattern of local windows is open inside `range`, read in
|
|
4
|
+
* `timeZone`: the primitive under operating hours, curfews and recurring crew windows.
|
|
5
|
+
*
|
|
6
|
+
* - `weekly` maps ISO weekdays (1 = Monday … 7 = Sunday) to `LocalWindow`s of wall time. A
|
|
7
|
+
* window whose `to` is at or before its `from` wraps past midnight and belongs to the date it
|
|
8
|
+
* starts on: `{ from: "23:00", to: "06:00" }` under 5 is Friday 23:00 to Saturday 06:00, and
|
|
9
|
+
* `{ from: "00:00", to: "00:00" }` is the whole day. No holidays or overrides; see
|
|
10
|
+
* `operatingIntervals` for those.
|
|
11
|
+
* - Each window edge is a local wall time resolved with `resolveLocal`. An edge in a skipped
|
|
12
|
+
* spring-forward hour is shifted by the gap: forward, or back when it is read `"earlier"` (TC39
|
|
13
|
+
* DisambiguatePossibleEpochNanoseconds), so in a zone that skips midnight a date's early
|
|
14
|
+
* window can open on the previous local date, before the date's own first instant; it still
|
|
15
|
+
* belongs to its own date.
|
|
16
|
+
* - A window "reaches the range" for `"reject"` when the widest span it could cover (its `from`
|
|
17
|
+
* read `"earlier"`, its `to` read `"later"`) overlaps `range`. A rejected window elsewhere
|
|
18
|
+
* does not matter.
|
|
19
|
+
* - Windows are elapsed time between their resolved edges, so the wall-clock length is not the
|
|
20
|
+
* real one on transition nights: in New York, 23:00–06:00 is 8 hours across the fall-back
|
|
21
|
+
* night and 6 across the spring-forward one, and 00:00–00:00 is 25 and 23 hours.
|
|
22
|
+
* - A window whose edges resolve to an empty or inverted span on a transition night — only a
|
|
23
|
+
* window shorter than the gap it straddles — is empty that day and left out.
|
|
24
|
+
* - The result is clipped to `range` (half-open), sorted, and merged where windows overlap or
|
|
25
|
+
* touch, so a run of whole-day windows is one interval. Endpoints are UTC instants ending in
|
|
26
|
+
* `Z`, except a clipped edge, which is `range`'s own string.
|
|
27
|
+
* - Local dates follow the zone's real days: a date the zone deleted (`Pacific/Apia` skipped
|
|
28
|
+
* 2011-12-30) has no windows, and a date re-entered after a fall-back is counted once.
|
|
29
|
+
* - `[]` is both a legitimate result (closed throughout, or an empty `range`) and the sentinel.
|
|
30
|
+
* - Returns `[]` when `weekly` has a key other than `"1"`–`"7"` or a malformed window, when
|
|
31
|
+
* `range` is not a valid `Interval`, when `timeZone` is invalid, when `disambiguation` is not
|
|
32
|
+
* one of the four values, and when the range spans more than 10,000 local dates (about 27
|
|
33
|
+
* years) counted from the date `range.start` falls on, rather than a truncated list.
|
|
34
|
+
* - **Limit at an offset with seconds.** The instant is placed in the offset's whole-minute zone,
|
|
35
|
+
* moved by its seconds, and the moved instant must be inside Temporal's range. So within the
|
|
36
|
+
* offset's seconds (under a minute) of the first instant Temporal supports
|
|
37
|
+
* (`-271821-04-20T00:00:00Z`), for an offset west of UTC, this returns `[]`. An offset to the
|
|
38
|
+
* minute has no such limit.
|
|
39
|
+
*
|
|
40
|
+
* @param weekly windows by ISO weekday, `{ 1: [{ from: "09:00", to: "17:00" }], … }`
|
|
41
|
+
* @param range `{ start, end }` record of ISO 8601 instant strings to expand the pattern inside
|
|
42
|
+
* @param timeZone IANA name or UTC offset the windows are read in: a time zone identifier
|
|
43
|
+
* (`+05:30`, `+0530`, `-08`) or a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
|
|
44
|
+
* @param optionsArg How a window edge on a clock change is resolved
|
|
45
|
+
* @returns sorted, merged `{ start, end }` records of the open instants, or [] on invalid input
|
|
46
|
+
*
|
|
47
|
+
* @example recurringWindows({ 1: [{ from: "09:00", to: "17:00" }] }, { start: "2024-06-10T00:00:00Z", end: "2024-06-11T00:00:00Z" }, "America/New_York") // [{ start: "2024-06-10T13:00:00Z", end: "2024-06-10T21:00:00Z" }]
|
|
48
|
+
* @example recurringWindows({ 5: [{ from: "23:00", to: "06:00" }] }, { start: "2024-06-14T00:00:00Z", end: "2024-06-16T00:00:00Z" }, "UTC") // [{ start: "2024-06-14T23:00:00Z", end: "2024-06-15T06:00:00Z" }] — Friday night into Saturday
|
|
49
|
+
* @example recurringWindows({ 6: [{ from: "23:00", to: "06:00" }] }, { start: "2024-11-02T00:00:00Z", end: "2024-11-04T00:00:00Z" }, "America/New_York") // [{ start: "2024-11-03T03:00:00Z", end: "2024-11-03T11:00:00Z" }] — 8 hours across the fall-back night
|
|
50
|
+
* @example recurringWindows({ 7: [{ from: "02:30", to: "04:00" }] }, { start: "2024-03-10T00:00:00Z", end: "2024-03-11T00:00:00Z" }, "America/New_York") // [{ start: "2024-03-10T07:30:00Z", end: "2024-03-10T08:00:00Z" }] — 02:30 does not exist; "compatible" reads it as 03:30
|
|
51
|
+
* @example recurringWindows({ 7: [{ from: "02:30", to: "04:00" }] }, { start: "2024-03-10T00:00:00Z", end: "2024-03-11T00:00:00Z" }, "America/New_York", { disambiguation: "reject" }) // []
|
|
52
|
+
* @example recurringWindows({ 1: [{ from: "00:00", to: "00:00" }], 2: [{ from: "00:00", to: "00:00" }] }, { start: "2024-06-10T00:00:00Z", end: "2024-06-13T00:00:00Z" }, "UTC") // [{ start: "2024-06-10T00:00:00Z", end: "2024-06-12T00:00:00Z" }] — touching days merge
|
|
53
|
+
* @example recurringWindows({ 8: [{ from: "09:00", to: "17:00" }] }, { start: "2024-06-10T00:00:00Z", end: "2024-06-11T00:00:00Z" }, "UTC") // [] — not an ISO weekday
|
|
54
|
+
* @example recurringWindows({ 1: [{ from: "9am", to: "17:00" }] }, { start: "2024-06-10T00:00:00Z", end: "2024-06-11T00:00:00Z" }, "UTC") // [] — malformed window
|
|
55
|
+
* @example recurringWindows({ 1: [{ from: "09:00", to: "17:00" }] }, { start: "2024-06-10T00:00:00Z", end: "2024-06-11T00:00:00Z" }, "Invalid/Zone") // []
|
|
56
|
+
* @example recurringWindows({ 4: [{ from: "08:00", to: "17:00" }] }, { start: "1970-01-01T00:00:00Z", end: "1970-01-02T00:00:00Z" }, "-00:44:30") // [{ start: "1970-01-01T08:44:30Z", end: "1970-01-01T17:44:30Z" }]
|
|
57
|
+
*/
|
|
58
|
+
export declare function recurringWindows(weekly: OperatingSchedule["weekly"], range: Interval, timeZone: string, optionsArg?: {
|
|
59
|
+
/**
|
|
60
|
+
* How a window edge in a repeated or skipped local hour becomes an instant, as `resolveLocal`
|
|
61
|
+
* resolves it. `"compatible"` takes the earlier instant of a repeated fall-back hour and the
|
|
62
|
+
* later one of a skipped spring-forward hour, and `"earlier"` and `"later"` take that side in
|
|
63
|
+
* both cases. `"reject"` returns `[]` when a window with such an edge reaches the range.
|
|
64
|
+
*
|
|
65
|
+
* @defaultValue `"compatible"`, Temporal's default.
|
|
66
|
+
*/
|
|
67
|
+
disambiguation?: Disambiguation;
|
|
68
|
+
}): Interval[];
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { parseIntervalNanoseconds, zoneFrame } from "../../internal/index.js";
|
|
2
|
+
import { parseScheduleDisambiguation, parseWeeklyPattern, scheduleRunsWithin, } from "../../internal/operatingSchedule.js";
|
|
3
|
+
/**
|
|
4
|
+
* Return the instants a weekly pattern of local windows is open inside `range`, read in
|
|
5
|
+
* `timeZone`: the primitive under operating hours, curfews and recurring crew windows.
|
|
6
|
+
*
|
|
7
|
+
* - `weekly` maps ISO weekdays (1 = Monday … 7 = Sunday) to `LocalWindow`s of wall time. A
|
|
8
|
+
* window whose `to` is at or before its `from` wraps past midnight and belongs to the date it
|
|
9
|
+
* starts on: `{ from: "23:00", to: "06:00" }` under 5 is Friday 23:00 to Saturday 06:00, and
|
|
10
|
+
* `{ from: "00:00", to: "00:00" }` is the whole day. No holidays or overrides; see
|
|
11
|
+
* `operatingIntervals` for those.
|
|
12
|
+
* - Each window edge is a local wall time resolved with `resolveLocal`. An edge in a skipped
|
|
13
|
+
* spring-forward hour is shifted by the gap: forward, or back when it is read `"earlier"` (TC39
|
|
14
|
+
* DisambiguatePossibleEpochNanoseconds), so in a zone that skips midnight a date's early
|
|
15
|
+
* window can open on the previous local date, before the date's own first instant; it still
|
|
16
|
+
* belongs to its own date.
|
|
17
|
+
* - A window "reaches the range" for `"reject"` when the widest span it could cover (its `from`
|
|
18
|
+
* read `"earlier"`, its `to` read `"later"`) overlaps `range`. A rejected window elsewhere
|
|
19
|
+
* does not matter.
|
|
20
|
+
* - Windows are elapsed time between their resolved edges, so the wall-clock length is not the
|
|
21
|
+
* real one on transition nights: in New York, 23:00–06:00 is 8 hours across the fall-back
|
|
22
|
+
* night and 6 across the spring-forward one, and 00:00–00:00 is 25 and 23 hours.
|
|
23
|
+
* - A window whose edges resolve to an empty or inverted span on a transition night — only a
|
|
24
|
+
* window shorter than the gap it straddles — is empty that day and left out.
|
|
25
|
+
* - The result is clipped to `range` (half-open), sorted, and merged where windows overlap or
|
|
26
|
+
* touch, so a run of whole-day windows is one interval. Endpoints are UTC instants ending in
|
|
27
|
+
* `Z`, except a clipped edge, which is `range`'s own string.
|
|
28
|
+
* - Local dates follow the zone's real days: a date the zone deleted (`Pacific/Apia` skipped
|
|
29
|
+
* 2011-12-30) has no windows, and a date re-entered after a fall-back is counted once.
|
|
30
|
+
* - `[]` is both a legitimate result (closed throughout, or an empty `range`) and the sentinel.
|
|
31
|
+
* - Returns `[]` when `weekly` has a key other than `"1"`–`"7"` or a malformed window, when
|
|
32
|
+
* `range` is not a valid `Interval`, when `timeZone` is invalid, when `disambiguation` is not
|
|
33
|
+
* one of the four values, and when the range spans more than 10,000 local dates (about 27
|
|
34
|
+
* years) counted from the date `range.start` falls on, rather than a truncated list.
|
|
35
|
+
* - **Limit at an offset with seconds.** The instant is placed in the offset's whole-minute zone,
|
|
36
|
+
* moved by its seconds, and the moved instant must be inside Temporal's range. So within the
|
|
37
|
+
* offset's seconds (under a minute) of the first instant Temporal supports
|
|
38
|
+
* (`-271821-04-20T00:00:00Z`), for an offset west of UTC, this returns `[]`. An offset to the
|
|
39
|
+
* minute has no such limit.
|
|
40
|
+
*
|
|
41
|
+
* @param weekly windows by ISO weekday, `{ 1: [{ from: "09:00", to: "17:00" }], … }`
|
|
42
|
+
* @param range `{ start, end }` record of ISO 8601 instant strings to expand the pattern inside
|
|
43
|
+
* @param timeZone IANA name or UTC offset the windows are read in: a time zone identifier
|
|
44
|
+
* (`+05:30`, `+0530`, `-08`) or a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
|
|
45
|
+
* @param optionsArg How a window edge on a clock change is resolved
|
|
46
|
+
* @returns sorted, merged `{ start, end }` records of the open instants, or [] on invalid input
|
|
47
|
+
*
|
|
48
|
+
* @example recurringWindows({ 1: [{ from: "09:00", to: "17:00" }] }, { start: "2024-06-10T00:00:00Z", end: "2024-06-11T00:00:00Z" }, "America/New_York") // [{ start: "2024-06-10T13:00:00Z", end: "2024-06-10T21:00:00Z" }]
|
|
49
|
+
* @example recurringWindows({ 5: [{ from: "23:00", to: "06:00" }] }, { start: "2024-06-14T00:00:00Z", end: "2024-06-16T00:00:00Z" }, "UTC") // [{ start: "2024-06-14T23:00:00Z", end: "2024-06-15T06:00:00Z" }] — Friday night into Saturday
|
|
50
|
+
* @example recurringWindows({ 6: [{ from: "23:00", to: "06:00" }] }, { start: "2024-11-02T00:00:00Z", end: "2024-11-04T00:00:00Z" }, "America/New_York") // [{ start: "2024-11-03T03:00:00Z", end: "2024-11-03T11:00:00Z" }] — 8 hours across the fall-back night
|
|
51
|
+
* @example recurringWindows({ 7: [{ from: "02:30", to: "04:00" }] }, { start: "2024-03-10T00:00:00Z", end: "2024-03-11T00:00:00Z" }, "America/New_York") // [{ start: "2024-03-10T07:30:00Z", end: "2024-03-10T08:00:00Z" }] — 02:30 does not exist; "compatible" reads it as 03:30
|
|
52
|
+
* @example recurringWindows({ 7: [{ from: "02:30", to: "04:00" }] }, { start: "2024-03-10T00:00:00Z", end: "2024-03-11T00:00:00Z" }, "America/New_York", { disambiguation: "reject" }) // []
|
|
53
|
+
* @example recurringWindows({ 1: [{ from: "00:00", to: "00:00" }], 2: [{ from: "00:00", to: "00:00" }] }, { start: "2024-06-10T00:00:00Z", end: "2024-06-13T00:00:00Z" }, "UTC") // [{ start: "2024-06-10T00:00:00Z", end: "2024-06-12T00:00:00Z" }] — touching days merge
|
|
54
|
+
* @example recurringWindows({ 8: [{ from: "09:00", to: "17:00" }] }, { start: "2024-06-10T00:00:00Z", end: "2024-06-11T00:00:00Z" }, "UTC") // [] — not an ISO weekday
|
|
55
|
+
* @example recurringWindows({ 1: [{ from: "9am", to: "17:00" }] }, { start: "2024-06-10T00:00:00Z", end: "2024-06-11T00:00:00Z" }, "UTC") // [] — malformed window
|
|
56
|
+
* @example recurringWindows({ 1: [{ from: "09:00", to: "17:00" }] }, { start: "2024-06-10T00:00:00Z", end: "2024-06-11T00:00:00Z" }, "Invalid/Zone") // []
|
|
57
|
+
* @example recurringWindows({ 4: [{ from: "08:00", to: "17:00" }] }, { start: "1970-01-01T00:00:00Z", end: "1970-01-02T00:00:00Z" }, "-00:44:30") // [{ start: "1970-01-01T08:44:30Z", end: "1970-01-01T17:44:30Z" }]
|
|
58
|
+
*/
|
|
59
|
+
export function recurringWindows(weekly, range, timeZone, optionsArg) {
|
|
60
|
+
try {
|
|
61
|
+
const disambiguation = parseScheduleDisambiguation(optionsArg);
|
|
62
|
+
const weeklyWindows = parseWeeklyPattern(weekly);
|
|
63
|
+
const bounds = parseIntervalNanoseconds(range);
|
|
64
|
+
const frame = zoneFrame(timeZone);
|
|
65
|
+
if (disambiguation === null ||
|
|
66
|
+
weeklyWindows === null ||
|
|
67
|
+
bounds === null ||
|
|
68
|
+
typeof timeZone !== "string" ||
|
|
69
|
+
frame === null) {
|
|
70
|
+
return [];
|
|
71
|
+
}
|
|
72
|
+
const runs = scheduleRunsWithin({
|
|
73
|
+
timeZone,
|
|
74
|
+
frame,
|
|
75
|
+
weekly: weeklyWindows,
|
|
76
|
+
holidays: new Set(),
|
|
77
|
+
overrides: new Map(),
|
|
78
|
+
}, bounds, disambiguation);
|
|
79
|
+
return runs === null
|
|
80
|
+
? []
|
|
81
|
+
: runs.map((run) => ({ start: run.startText, end: run.endText }));
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
// Never throws (Core Rule 3): a hostile
|
|
85
|
+
// argument is invalid input, not an exception.
|
|
86
|
+
return [];
|
|
87
|
+
}
|
|
88
|
+
}
|
package/dist/calendar/index.d.ts
CHANGED
package/dist/calendar/index.js
CHANGED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { DateTimeDurationUnit } from "../../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Write an amount given as a unit object, such as `{ minutes: 15 }`, as an ISO 8601 duration
|
|
4
|
+
* string.
|
|
5
|
+
*
|
|
6
|
+
* - Uses Temporal.Duration.from to read the fields, then .toString() to write them.
|
|
7
|
+
* - Which function to use: `durationFromUnits` turns a unit object into the duration string that
|
|
8
|
+
* the other duration functions take. `totalUnits` totals a unit object of exact units in one
|
|
9
|
+
* call. `totalDuration` totals a duration string.
|
|
10
|
+
* - Takes all ten units, from years down to nanoseconds: writing a year, a month or a week needs
|
|
11
|
+
* no date to measure from. To total a calendar amount, pass the result to `totalDuration` with
|
|
12
|
+
* `relativeTo`.
|
|
13
|
+
* - Years down to minutes are written as given, and nothing is carried into a larger unit:
|
|
14
|
+
* `{ minutes: 90 }` is "PT90M". `normalizeDuration` with `largestUnit` carries it.
|
|
15
|
+
* - Seconds, milliseconds, microseconds and nanoseconds are written together as one decimal
|
|
16
|
+
* number of seconds, as Temporal's `Duration.prototype.toString` writes them:
|
|
17
|
+
* `{ milliseconds: 1500 }` is "PT1.5S". Reading that string back gives 1 second and 500
|
|
18
|
+
* milliseconds.
|
|
19
|
+
* - A zero amount is "PT0S", the one spelling Temporal writes for every zero duration.
|
|
20
|
+
* - Every key is a unit name in the plural, and every amount is a whole finite number. All
|
|
21
|
+
* nonzero amounts share one sign, as Temporal requires of a duration. A unit set to `undefined`
|
|
22
|
+
* is absent, as Temporal reads it.
|
|
23
|
+
* - An unknown key returns "", even beside a valid one. Temporal on its own ignores an unknown
|
|
24
|
+
* key, so a misspelt `{ minutes: 15, hour: 1 }` would be written "PT15M" with no warning.
|
|
25
|
+
* - Returns "" on an object with no unit, a non-object `units` (a duration string included), an
|
|
26
|
+
* invalid amount, or an amount past Temporal's duration range.
|
|
27
|
+
*
|
|
28
|
+
* @param units Partial<Record<DateTimeDurationUnit, number>> object holding the amount to write
|
|
29
|
+
* @returns ISO 8601 duration string, or "" on invalid input
|
|
30
|
+
*
|
|
31
|
+
* @example durationFromUnits({ minutes: 15 }) // "PT15M"
|
|
32
|
+
* @example durationFromUnits({ days: 1, hours: 12 }) // "P1DT12H"
|
|
33
|
+
* @example durationFromUnits({ minutes: 90 }) // "PT90M" (not carried into hours)
|
|
34
|
+
* @example durationFromUnits({ years: 1, months: 2 }) // "P1Y2M"
|
|
35
|
+
* @example durationFromUnits({ weeks: 1 }) // "P1W"
|
|
36
|
+
* @example durationFromUnits({ milliseconds: 1500 }) // "PT1.5S"
|
|
37
|
+
* @example durationFromUnits({ seconds: 59, milliseconds: 1500 }) // "PT60.5S" (one decimal number of seconds)
|
|
38
|
+
* @example durationFromUnits({ minutes: 15, hours: undefined }) // "PT15M" (an undefined unit is absent)
|
|
39
|
+
* @example durationFromUnits({ minutes: -15 }) // "-PT15M"
|
|
40
|
+
* @example durationFromUnits({ minutes: 0 }) // "PT0S"
|
|
41
|
+
* @example durationFromUnits({ minutes: 15, hour: 1 }) // "" (unknown key "hour")
|
|
42
|
+
* @example durationFromUnits({ minutes: 1.5 }) // "" (fractional amount)
|
|
43
|
+
* @example durationFromUnits({ hours: 1, minutes: -30 }) // "" (mixed signs)
|
|
44
|
+
* @example durationFromUnits({}) // ""
|
|
45
|
+
* @example durationFromUnits("PT15M") // "" (already a duration string)
|
|
46
|
+
*/
|
|
47
|
+
export declare function durationFromUnits(units: Partial<Record<DateTimeDurationUnit, number>>): string;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import { readDurationUnits } from "../../internal/index.js";
|
|
3
|
+
import { isValidDateTimeDurationUnit } from "../../plain/validate/index.js";
|
|
4
|
+
/**
|
|
5
|
+
* Write an amount given as a unit object, such as `{ minutes: 15 }`, as an ISO 8601 duration
|
|
6
|
+
* string.
|
|
7
|
+
*
|
|
8
|
+
* - Uses Temporal.Duration.from to read the fields, then .toString() to write them.
|
|
9
|
+
* - Which function to use: `durationFromUnits` turns a unit object into the duration string that
|
|
10
|
+
* the other duration functions take. `totalUnits` totals a unit object of exact units in one
|
|
11
|
+
* call. `totalDuration` totals a duration string.
|
|
12
|
+
* - Takes all ten units, from years down to nanoseconds: writing a year, a month or a week needs
|
|
13
|
+
* no date to measure from. To total a calendar amount, pass the result to `totalDuration` with
|
|
14
|
+
* `relativeTo`.
|
|
15
|
+
* - Years down to minutes are written as given, and nothing is carried into a larger unit:
|
|
16
|
+
* `{ minutes: 90 }` is "PT90M". `normalizeDuration` with `largestUnit` carries it.
|
|
17
|
+
* - Seconds, milliseconds, microseconds and nanoseconds are written together as one decimal
|
|
18
|
+
* number of seconds, as Temporal's `Duration.prototype.toString` writes them:
|
|
19
|
+
* `{ milliseconds: 1500 }` is "PT1.5S". Reading that string back gives 1 second and 500
|
|
20
|
+
* milliseconds.
|
|
21
|
+
* - A zero amount is "PT0S", the one spelling Temporal writes for every zero duration.
|
|
22
|
+
* - Every key is a unit name in the plural, and every amount is a whole finite number. All
|
|
23
|
+
* nonzero amounts share one sign, as Temporal requires of a duration. A unit set to `undefined`
|
|
24
|
+
* is absent, as Temporal reads it.
|
|
25
|
+
* - An unknown key returns "", even beside a valid one. Temporal on its own ignores an unknown
|
|
26
|
+
* key, so a misspelt `{ minutes: 15, hour: 1 }` would be written "PT15M" with no warning.
|
|
27
|
+
* - Returns "" on an object with no unit, a non-object `units` (a duration string included), an
|
|
28
|
+
* invalid amount, or an amount past Temporal's duration range.
|
|
29
|
+
*
|
|
30
|
+
* @param units Partial<Record<DateTimeDurationUnit, number>> object holding the amount to write
|
|
31
|
+
* @returns ISO 8601 duration string, or "" on invalid input
|
|
32
|
+
*
|
|
33
|
+
* @example durationFromUnits({ minutes: 15 }) // "PT15M"
|
|
34
|
+
* @example durationFromUnits({ days: 1, hours: 12 }) // "P1DT12H"
|
|
35
|
+
* @example durationFromUnits({ minutes: 90 }) // "PT90M" (not carried into hours)
|
|
36
|
+
* @example durationFromUnits({ years: 1, months: 2 }) // "P1Y2M"
|
|
37
|
+
* @example durationFromUnits({ weeks: 1 }) // "P1W"
|
|
38
|
+
* @example durationFromUnits({ milliseconds: 1500 }) // "PT1.5S"
|
|
39
|
+
* @example durationFromUnits({ seconds: 59, milliseconds: 1500 }) // "PT60.5S" (one decimal number of seconds)
|
|
40
|
+
* @example durationFromUnits({ minutes: 15, hours: undefined }) // "PT15M" (an undefined unit is absent)
|
|
41
|
+
* @example durationFromUnits({ minutes: -15 }) // "-PT15M"
|
|
42
|
+
* @example durationFromUnits({ minutes: 0 }) // "PT0S"
|
|
43
|
+
* @example durationFromUnits({ minutes: 15, hour: 1 }) // "" (unknown key "hour")
|
|
44
|
+
* @example durationFromUnits({ minutes: 1.5 }) // "" (fractional amount)
|
|
45
|
+
* @example durationFromUnits({ hours: 1, minutes: -30 }) // "" (mixed signs)
|
|
46
|
+
* @example durationFromUnits({}) // ""
|
|
47
|
+
* @example durationFromUnits("PT15M") // "" (already a duration string)
|
|
48
|
+
*/
|
|
49
|
+
export function durationFromUnits(units) {
|
|
50
|
+
try {
|
|
51
|
+
const amounts = readDurationUnits(units, isValidDateTimeDurationUnit);
|
|
52
|
+
if (amounts === null) {
|
|
53
|
+
return "";
|
|
54
|
+
}
|
|
55
|
+
try {
|
|
56
|
+
return Temporal.Duration.from(amounts).toString();
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return "";
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
// Never throws (Core Rule 3): a hostile
|
|
64
|
+
// argument is invalid input, not an exception.
|
|
65
|
+
return "";
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -5,10 +5,10 @@ import type { DateTimeDurationUnit } from "../../types/index.js";
|
|
|
5
5
|
*
|
|
6
6
|
* - Uses Temporal.Duration.from and reads the named field directly — this is the value as
|
|
7
7
|
* *stored*, not a converted total: getDurationUnit("PT90M", "hours") is 0, because "PT90M"
|
|
8
|
-
* holds 90 in its minutes field and nothing in its hours field. Use `
|
|
8
|
+
* holds 90 in its minutes field and nothing in its hours field. Use `totalDuration` for a
|
|
9
9
|
* converted total.
|
|
10
10
|
* - Never needs `relativeTo`: reading a field is not a unit conversion, so calendar units
|
|
11
|
-
* (years/months/weeks) work here even though they require an anchor in `
|
|
11
|
+
* (years/months/weeks) work here even though they require an anchor in `totalDuration`.
|
|
12
12
|
* - Temporal balances fractional units at parse time, so getDurationUnit("PT1.5H", "minutes")
|
|
13
13
|
* is 30 — the input's own precision, not the caller's spelling of it, decides the fields.
|
|
14
14
|
* - A negative duration stores *every* field as negative, so this returns a negative number
|
|
@@ -7,10 +7,10 @@ import { resolveDurationUnit } from "../../internal/resolveDurationUnit.js";
|
|
|
7
7
|
*
|
|
8
8
|
* - Uses Temporal.Duration.from and reads the named field directly — this is the value as
|
|
9
9
|
* *stored*, not a converted total: getDurationUnit("PT90M", "hours") is 0, because "PT90M"
|
|
10
|
-
* holds 90 in its minutes field and nothing in its hours field. Use `
|
|
10
|
+
* holds 90 in its minutes field and nothing in its hours field. Use `totalDuration` for a
|
|
11
11
|
* converted total.
|
|
12
12
|
* - Never needs `relativeTo`: reading a field is not a unit conversion, so calendar units
|
|
13
|
-
* (years/months/weeks) work here even though they require an anchor in `
|
|
13
|
+
* (years/months/weeks) work here even though they require an anchor in `totalDuration`.
|
|
14
14
|
* - Temporal balances fractional units at parse time, so getDurationUnit("PT1.5H", "minutes")
|
|
15
15
|
* is 30 — the input's own precision, not the caller's spelling of it, decides the fields.
|
|
16
16
|
* - A negative duration stores *every* field as negative, so this returns a negative number
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export * from "./absDuration.js";
|
|
2
2
|
export * from "./addDuration.js";
|
|
3
|
-
export * from "./
|
|
3
|
+
export * from "./durationFromUnits.js";
|
|
4
4
|
export * from "./getDurationSign.js";
|
|
5
5
|
export * from "./getDurationUnit.js";
|
|
6
6
|
export * from "./negateDuration.js";
|
|
7
7
|
export * from "./subtractDuration.js";
|
|
8
|
+
export * from "./totalDuration.js";
|
|
9
|
+
export * from "./totalUnits.js";
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export * from "./absDuration.js";
|
|
2
2
|
export * from "./addDuration.js";
|
|
3
|
-
export * from "./
|
|
3
|
+
export * from "./durationFromUnits.js";
|
|
4
4
|
export * from "./getDurationSign.js";
|
|
5
5
|
export * from "./getDurationUnit.js";
|
|
6
6
|
export * from "./negateDuration.js";
|
|
7
7
|
export * from "./subtractDuration.js";
|
|
8
|
+
export * from "./totalDuration.js";
|
|
9
|
+
export * from "./totalUnits.js";
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* - Uses Temporal.Duration.from and .negated, then .toString() to re-emit.
|
|
5
5
|
* - Negating is a pure sign flip on every component, so it never needs `relativeTo` —
|
|
6
|
-
* calendar-unit durations round-trip through it fine, unlike `addDuration`/`
|
|
6
|
+
* calendar-unit durations round-trip through it fine, unlike `addDuration`/`totalDuration`.
|
|
7
7
|
* - A zero-length duration has no sign to flip and comes back as "PT0S", the canonical
|
|
8
8
|
* spelling Temporal emits for every zero duration (so "P0D" also renders "PT0S").
|
|
9
9
|
* - Returns "" when `value` is not a valid ISO 8601 duration string.
|
|
@@ -5,7 +5,7 @@ import { isValidDuration } from "../validate/isValidDuration.js";
|
|
|
5
5
|
*
|
|
6
6
|
* - Uses Temporal.Duration.from and .negated, then .toString() to re-emit.
|
|
7
7
|
* - Negating is a pure sign flip on every component, so it never needs `relativeTo` —
|
|
8
|
-
* calendar-unit durations round-trip through it fine, unlike `addDuration`/`
|
|
8
|
+
* calendar-unit durations round-trip through it fine, unlike `addDuration`/`totalDuration`.
|
|
9
9
|
* - A zero-length duration has no sign to flip and comes back as "PT0S", the canonical
|
|
10
10
|
* spelling Temporal emits for every zero duration (so "P0D" also renders "PT0S").
|
|
11
11
|
* - Returns "" when `value` is not a valid ISO 8601 duration string.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import type { DateTimeDurationUnit, DurationRelativeTo } from "../../types/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* Express an ISO 8601 duration as a single fractional total in one unit.
|
|
5
|
+
*
|
|
6
|
+
* - Uses Temporal.Duration.from and .total — the whole duration is converted, so
|
|
7
|
+
* totalDuration("P1DT2H30M", "hours") is 26.5, not the 2 that `getDurationUnit` reads.
|
|
8
|
+
* - Which function to use: `totalDuration` takes an ISO 8601 duration string. `totalUnits` takes
|
|
9
|
+
* a unit object of exact units, such as `{ minutes: 15 }`. `durationFromUnits` turns a unit
|
|
10
|
+
* object into the duration string this function takes. To total a calendar amount written as a
|
|
11
|
+
* unit object, such as `{ months: 1 }`, pass the result of `durationFromUnits` here with
|
|
12
|
+
* `relativeTo`.
|
|
13
|
+
* - The result is fractional, not rounded: totalDuration("P1DT2H30M", "days") is
|
|
14
|
+
* 1.1041666666666667. Round it yourself, or reach for `normalizeDuration` instead. It is a
|
|
15
|
+
* JavaScript number, so a total past 2^53 is the nearest double.
|
|
16
|
+
* - The calendar-unit rule of `relativeTo` is the same one `normalizeDuration` (A3) carries;
|
|
17
|
+
* `addDuration`/`subtractDuration` (A2) have it worse still, since Temporal gives them no
|
|
18
|
+
* `relativeTo` option at all.
|
|
19
|
+
* - The requested-unit half of that rule bites even on day/time-only input: "P1DT2H30M" has
|
|
20
|
+
* no calendar component, yet totalDuration("P1DT2H30M", "weeks") is still null — a week is a
|
|
21
|
+
* calendar quantity to Temporal regardless of what it is being measured from.
|
|
22
|
+
* - A zoned `relativeTo` string resolves its wall time with disambiguation "compatible" and
|
|
23
|
+
* offset "reject", as Temporal does: an ambiguous wall time takes the earlier instant, a
|
|
24
|
+
* nonexistent one the later instant, and an offset that does not match the zone returns null.
|
|
25
|
+
* Pass an explicit offset to pick the other reading of an ambiguous wall time.
|
|
26
|
+
* - A `relativeTo` string is ISO 8601 extended format before its first `[`:
|
|
27
|
+
* a date, a date-time, or with a time zone annotation a zoned date-time (`<date>T<time>`, then
|
|
28
|
+
* nothing, `Z` or `±HH:MM`). Basic format (`"20240101"`), a space or lower-case `t` separator, a
|
|
29
|
+
* lower-case `z`, a UTC offset without a zone and a zoned date without a time are invalid.
|
|
30
|
+
* - A `relativeTo` string takes a calendar in RFC 9557 form, as `convertDateToCalendar` and
|
|
31
|
+
* `convertZonedToCalendar` write it: ISO digits and a `[u-ca=<id>]` annotation, after the zone
|
|
32
|
+
* for a zoned string (`"2024-02-24[u-ca=hebrew]"`, `"2024-02-24T00:00:00-05:00[America/New_York][u-ca=hebrew]"`).
|
|
33
|
+
* The annotations are read as Temporal reads them: the critical flag and the id's letter case
|
|
34
|
+
* are accepted, elective unknown annotations are ignored, the first `u-ca` names the calendar,
|
|
35
|
+
* and a string with a time zone annotation is zoned. An unknown critical annotation, a critical
|
|
36
|
+
* duplicate calendar, a calendar before the zone, an unsupported calendar and a leap second in
|
|
37
|
+
* any spelling return null.
|
|
38
|
+
* Compatibility: before 1.16.0 the digits were read as the calendar's own year, month and day.
|
|
39
|
+
* - `unit` accepts the plural or singular name (`"hours"` or `"hour"`), as Temporal does.
|
|
40
|
+
* - Returns null on a non-duration `value`, an invalid `unit`, or an invalid `relativeTo`.
|
|
41
|
+
*
|
|
42
|
+
* @param value ISO 8601 duration string
|
|
43
|
+
* @param unit DateTimeDurationUnit to total into ("years" | "months" | "weeks" | "days" | "hours" | "minutes" | "seconds" | "milliseconds" | "microseconds" | "nanoseconds", or the singular name)
|
|
44
|
+
* @param options The anchor calendar units are measured from
|
|
45
|
+
* @returns the fractional total in `unit`, or null on invalid input
|
|
46
|
+
*
|
|
47
|
+
* @example totalDuration("P1DT2H30M", "hours") // 26.5
|
|
48
|
+
* @example totalDuration("P1DT2H30M", "minutes") // 1590
|
|
49
|
+
* @example totalDuration("PT36H", "days") // 1.5
|
|
50
|
+
* @example totalDuration("-PT90M", "hours") // -1.5
|
|
51
|
+
* @example totalDuration("P1M", "days") // null (calendar unit needs relativeTo)
|
|
52
|
+
* @example totalDuration("P1M", "days", { relativeTo: "2024-02-01" }) // 29
|
|
53
|
+
* @example totalDuration("P1M", "days", { relativeTo: "20240201" }) // null (basic format)
|
|
54
|
+
* @example totalDuration("P1D", "hours", { relativeTo: "2024-03-10T00:00:00-05:00[America/New_York]" }) // 23 (spring-forward)
|
|
55
|
+
* @example totalDuration("P1D", "hours", { relativeTo: "2024-11-03T01:30[America/New_York]" }) // 25
|
|
56
|
+
* @example totalDuration("P1DT2H30M", "minute") // 1590 (singular unit name)
|
|
57
|
+
* @example totalDuration("not a duration", "hours") // null
|
|
58
|
+
* @example totalDuration("P1Y", "days", { relativeTo: "2024-02-24[u-ca=hebrew]" }) // 385 (Hebrew leap year 5784)
|
|
59
|
+
* @example totalDuration("P1M", "days", { relativeTo: "2024-02-10[!u-ca=hebrew]" }) // 30 (1 Adar I 5784; the critical flag is accepted)
|
|
60
|
+
* @example totalDuration("P1M", "days", { relativeTo: "2024-02-10T00:00:00[u-ca=hebrew]" }) // 30 (a date-time without a zone reads as its date, as Temporal reads relativeTo)
|
|
61
|
+
*/
|
|
62
|
+
export declare function totalDuration(value: string, unit: DateTimeDurationUnit | Temporal.DateTimeUnit, options?: {
|
|
63
|
+
/**
|
|
64
|
+
* The date or zoned date-time the duration is measured from. It is required whenever a year,
|
|
65
|
+
* month or week is involved, as the `unit` asked for or as a nonzero field of the duration.
|
|
66
|
+
* With a zoned value, days follow that zone's clock changes, so a day spanning a
|
|
67
|
+
* spring-forward transition totals 23 hours.
|
|
68
|
+
*
|
|
69
|
+
* @defaultValue None. Days are 24 hours, and a duration or `unit` that involves a year, month
|
|
70
|
+
* or week returns `null`.
|
|
71
|
+
*/
|
|
72
|
+
relativeTo?: DurationRelativeTo;
|
|
73
|
+
}): number | null;
|
|
@@ -8,19 +8,21 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
8
8
|
* Express an ISO 8601 duration as a single fractional total in one unit.
|
|
9
9
|
*
|
|
10
10
|
* - Uses Temporal.Duration.from and .total — the whole duration is converted, so
|
|
11
|
-
*
|
|
12
|
-
* -
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
11
|
+
* totalDuration("P1DT2H30M", "hours") is 26.5, not the 2 that `getDurationUnit` reads.
|
|
12
|
+
* - Which function to use: `totalDuration` takes an ISO 8601 duration string. `totalUnits` takes
|
|
13
|
+
* a unit object of exact units, such as `{ minutes: 15 }`. `durationFromUnits` turns a unit
|
|
14
|
+
* object into the duration string this function takes. To total a calendar amount written as a
|
|
15
|
+
* unit object, such as `{ months: 1 }`, pass the result of `durationFromUnits` here with
|
|
16
|
+
* `relativeTo`.
|
|
17
|
+
* - The result is fractional, not rounded: totalDuration("P1DT2H30M", "days") is
|
|
18
|
+
* 1.1041666666666667. Round it yourself, or reach for `normalizeDuration` instead. It is a
|
|
19
|
+
* JavaScript number, so a total past 2^53 is the nearest double.
|
|
20
|
+
* - The calendar-unit rule of `relativeTo` is the same one `normalizeDuration` (A3) carries;
|
|
21
|
+
* `addDuration`/`subtractDuration` (A2) have it worse still, since Temporal gives them no
|
|
22
|
+
* `relativeTo` option at all.
|
|
19
23
|
* - The requested-unit half of that rule bites even on day/time-only input: "P1DT2H30M" has
|
|
20
|
-
* no calendar component, yet
|
|
24
|
+
* no calendar component, yet totalDuration("P1DT2H30M", "weeks") is still null — a week is a
|
|
21
25
|
* calendar quantity to Temporal regardless of what it is being measured from.
|
|
22
|
-
* - `relativeTo` changes the answer for non-calendar units too when it names a zoned instant:
|
|
23
|
-
* a day spanning a DST spring-forward transition totals 23 hours, not 24.
|
|
24
26
|
* - A zoned `relativeTo` string resolves its wall time with disambiguation "compatible" and
|
|
25
27
|
* offset "reject", as Temporal does: an ambiguous wall time takes the earlier instant, a
|
|
26
28
|
* nonexistent one the later instant, and an offset that does not match the zone returns null.
|
|
@@ -43,25 +45,25 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
43
45
|
*
|
|
44
46
|
* @param value ISO 8601 duration string
|
|
45
47
|
* @param unit DateTimeDurationUnit to total into ("years" | "months" | "weeks" | "days" | "hours" | "minutes" | "seconds" | "milliseconds" | "microseconds" | "nanoseconds", or the singular name)
|
|
46
|
-
* @param options
|
|
48
|
+
* @param options The anchor calendar units are measured from
|
|
47
49
|
* @returns the fractional total in `unit`, or null on invalid input
|
|
48
50
|
*
|
|
49
|
-
* @example
|
|
50
|
-
* @example
|
|
51
|
-
* @example
|
|
52
|
-
* @example
|
|
53
|
-
* @example
|
|
54
|
-
* @example
|
|
55
|
-
* @example
|
|
56
|
-
* @example
|
|
57
|
-
* @example
|
|
58
|
-
* @example
|
|
59
|
-
* @example
|
|
60
|
-
* @example
|
|
61
|
-
* @example
|
|
62
|
-
* @example
|
|
51
|
+
* @example totalDuration("P1DT2H30M", "hours") // 26.5
|
|
52
|
+
* @example totalDuration("P1DT2H30M", "minutes") // 1590
|
|
53
|
+
* @example totalDuration("PT36H", "days") // 1.5
|
|
54
|
+
* @example totalDuration("-PT90M", "hours") // -1.5
|
|
55
|
+
* @example totalDuration("P1M", "days") // null (calendar unit needs relativeTo)
|
|
56
|
+
* @example totalDuration("P1M", "days", { relativeTo: "2024-02-01" }) // 29
|
|
57
|
+
* @example totalDuration("P1M", "days", { relativeTo: "20240201" }) // null (basic format)
|
|
58
|
+
* @example totalDuration("P1D", "hours", { relativeTo: "2024-03-10T00:00:00-05:00[America/New_York]" }) // 23 (spring-forward)
|
|
59
|
+
* @example totalDuration("P1D", "hours", { relativeTo: "2024-11-03T01:30[America/New_York]" }) // 25
|
|
60
|
+
* @example totalDuration("P1DT2H30M", "minute") // 1590 (singular unit name)
|
|
61
|
+
* @example totalDuration("not a duration", "hours") // null
|
|
62
|
+
* @example totalDuration("P1Y", "days", { relativeTo: "2024-02-24[u-ca=hebrew]" }) // 385 (Hebrew leap year 5784)
|
|
63
|
+
* @example totalDuration("P1M", "days", { relativeTo: "2024-02-10[!u-ca=hebrew]" }) // 30 (1 Adar I 5784; the critical flag is accepted)
|
|
64
|
+
* @example totalDuration("P1M", "days", { relativeTo: "2024-02-10T00:00:00[u-ca=hebrew]" }) // 30 (a date-time without a zone reads as its date, as Temporal reads relativeTo)
|
|
63
65
|
*/
|
|
64
|
-
export function
|
|
66
|
+
export function totalDuration(value, unit, options) {
|
|
65
67
|
if (!isOptionsArgument(options)) {
|
|
66
68
|
return null;
|
|
67
69
|
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { ExactDurationUnit, TimeUnit } from "../../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Express an amount written as a unit object, such as `{ minutes: 15 }`, as a single fractional
|
|
4
|
+
* total in one unit.
|
|
5
|
+
*
|
|
6
|
+
* - Uses Temporal.Duration.from and .total: every field is converted, so
|
|
7
|
+
* totalUnits({ days: 1, hours: 12 }, "seconds") is 129600.
|
|
8
|
+
* - Which function to use: `totalUnits` takes a unit object. `totalDuration` takes an ISO 8601
|
|
9
|
+
* duration string (`"PT15M"`). `durationFromUnits` turns a unit object into the duration string
|
|
10
|
+
* that the other duration functions take.
|
|
11
|
+
* - Takes exact units only: days, hours, minutes, seconds, milliseconds, microseconds and
|
|
12
|
+
* nanoseconds. A day is 24 hours, as Temporal's `Duration.prototype.total` reads a day when it
|
|
13
|
+
* has no `relativeTo`. For a day in a time zone, which can be 23 or 25 hours across a clock
|
|
14
|
+
* change, use `totalDuration` with a zoned `relativeTo`.
|
|
15
|
+
* - A year, a month or a week returns null, as a key and as `unit`: Temporal gives them no length
|
|
16
|
+
* without a date to measure from. Write a week as `{ days: 7 }`. For a calendar amount, build
|
|
17
|
+
* the string with `durationFromUnits` and pass it to `totalDuration` with `relativeTo`.
|
|
18
|
+
* - The result is fractional, not rounded: totalUnits({ hours: 36 }, "days") is 1.5. It is a
|
|
19
|
+
* JavaScript number, so a total past 2^53 is the nearest double.
|
|
20
|
+
* - Every key is a unit name in the plural, and every amount is a whole finite number. All
|
|
21
|
+
* nonzero amounts share one sign, as Temporal requires of a duration. A unit set to `undefined`
|
|
22
|
+
* is absent, as Temporal reads it.
|
|
23
|
+
* - An unknown key returns null, even beside a valid one. Temporal on its own ignores an unknown
|
|
24
|
+
* key, so a misspelt `{ minutes: 15, hour: 1 }` would total 900 with no warning.
|
|
25
|
+
* - `unit` accepts the plural or singular name (`"seconds"` or `"second"`), as Temporal does.
|
|
26
|
+
* - Returns null on an object with no unit, a non-object `units` (a duration string included), an
|
|
27
|
+
* invalid amount, an amount past Temporal's duration range, or an invalid `unit`.
|
|
28
|
+
*
|
|
29
|
+
* @param units Partial<Record<ExactDurationUnit, number>> object holding the amount to total
|
|
30
|
+
* @param unit ExactDurationUnit to total into ("days" | "hours" | "minutes" | "seconds" | "milliseconds" | "microseconds" | "nanoseconds", or the singular name)
|
|
31
|
+
* @returns the fractional total in `unit`, or null on invalid input
|
|
32
|
+
*
|
|
33
|
+
* @example totalUnits({ minutes: 15 }, "seconds") // 900
|
|
34
|
+
* @example totalUnits({ days: 30 }, "seconds") // 2592000
|
|
35
|
+
* @example totalUnits({ days: 1, hours: 12 }, "seconds") // 129600
|
|
36
|
+
* @example totalUnits({ hours: 36 }, "days") // 1.5
|
|
37
|
+
* @example totalUnits({ minutes: -90 }, "hours") // -1.5
|
|
38
|
+
* @example totalUnits({ seconds: 10 }, "millisecond") // 10000 (singular unit name)
|
|
39
|
+
* @example totalUnits({ minutes: 0 }, "seconds") // 0
|
|
40
|
+
* @example totalUnits({ minutes: 15, hours: undefined }, "seconds") // 900 (an undefined unit is absent)
|
|
41
|
+
* @example totalUnits({ weeks: 1 }, "days") // null (a week has no exact length; write { days: 7 })
|
|
42
|
+
* @example totalUnits({ days: 7 }, "weeks") // null (a week has no exact length)
|
|
43
|
+
* @example totalUnits({ minutes: 15, hour: 1 }, "seconds") // null (unknown key "hour")
|
|
44
|
+
* @example totalUnits({ minutes: 1.5 }, "seconds") // null (fractional amount)
|
|
45
|
+
* @example totalUnits({ hours: 1, minutes: -30 }, "seconds") // null (mixed signs)
|
|
46
|
+
* @example totalUnits({}, "seconds") // null
|
|
47
|
+
* @example totalUnits("PT15M", "seconds") // null (a duration string goes to totalDuration)
|
|
48
|
+
*/
|
|
49
|
+
export declare function totalUnits(units: Partial<Record<ExactDurationUnit, number>>, unit: ExactDurationUnit | "day" | TimeUnit): number | null;
|