@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
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import type { Disambiguation, Offset, Overflow } from "../types/index.js";
|
|
3
|
+
import type { DATE_TIME_FIELDS, SetFields } from "./readSetFields.js";
|
|
3
4
|
type RoundingSmallestUnit = Temporal.SmallestUnit<"day" | "hour" | "minute" | "second" | "millisecond" | "microsecond" | "nanosecond">;
|
|
4
5
|
interface ZonedRoundTo {
|
|
5
6
|
smallestUnit: RoundingSmallestUnit;
|
|
@@ -40,28 +41,40 @@ export declare function zonedWithPlainTime(zoned: Temporal.ZonedDateTime, time?:
|
|
|
40
41
|
*/
|
|
41
42
|
export declare function zonedHoursInDay(zoned: Temporal.ZonedDateTime): number;
|
|
42
43
|
/**
|
|
43
|
-
* `ZonedDateTime#getTimeZoneTransition("next")
|
|
44
|
+
* `ZonedDateTime#getTimeZoneTransition("next")`: TC39 `GetNamedTimeZoneNextTransition`, the first
|
|
45
|
+
* offset change strictly after `zoned`.
|
|
44
46
|
*
|
|
45
|
-
* -
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
47
|
+
* - While the D13 probe fails (two changes inside one of the polyfill's 14-day search steps are
|
|
48
|
+
* skipped, or stall it for ever), a named zone is searched by GMT's own bounded search
|
|
49
|
+
* (`zonedTransitionSearch.ts`) and the polyfill's search is never called.
|
|
50
|
+
* - Otherwise the polyfill answers, corrected before 1847 (defect 3: it never searches there, so
|
|
51
|
+
* the change is found by bisection first) and within its three-year horizon of the maximum
|
|
52
|
+
* instant (defect 2: its forward scan gives up once a step would pass the maximum, so a `null`
|
|
53
|
+
* is re-checked by walking back from the maximum).
|
|
50
54
|
*
|
|
51
55
|
* @param zoned the instant to search after (exclusive)
|
|
52
|
-
* @
|
|
56
|
+
* @param until optional: the last instant to search, in epoch nanoseconds (inclusive). A caller
|
|
57
|
+
* that needs only changes up to there passes it so the search reads no further
|
|
58
|
+
* @returns the next transition, or null when there is none up to `until` or, without it, none
|
|
59
|
+
* that Temporal reports
|
|
53
60
|
*/
|
|
54
|
-
export declare function zonedNextTransition(zoned: Temporal.ZonedDateTime): Temporal.ZonedDateTime | null;
|
|
61
|
+
export declare function zonedNextTransition(zoned: Temporal.ZonedDateTime, until?: bigint): Temporal.ZonedDateTime | null;
|
|
55
62
|
/**
|
|
56
|
-
* `ZonedDateTime#getTimeZoneTransition("previous")
|
|
63
|
+
* `ZonedDateTime#getTimeZoneTransition("previous")`: TC39 `GetNamedTimeZonePreviousTransition`,
|
|
64
|
+
* the last offset change strictly before `zoned`.
|
|
57
65
|
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
66
|
+
* - While the D13 probe fails, a named zone is searched by GMT's own bounded search and the
|
|
67
|
+
* polyfill's search is never called (see `zonedNextTransition`).
|
|
68
|
+
* - Otherwise the polyfill answers, corrected before 1847 (defect 3): when it finds nothing in a
|
|
69
|
+
* named zone, the span from the minimum instant to its floor is checked by comparing offsets
|
|
70
|
+
* and bisecting.
|
|
60
71
|
*
|
|
61
72
|
* @param zoned the instant to search before (exclusive)
|
|
62
|
-
* @
|
|
73
|
+
* @param since optional: where the search stops, in epoch nanoseconds (exclusive). A caller that
|
|
74
|
+
* needs only changes after there passes it so the search reads no further back
|
|
75
|
+
* @returns the previous transition, or null when there is none after `since` or, without it, none
|
|
63
76
|
*/
|
|
64
|
-
export declare function zonedPreviousTransition(zoned: Temporal.ZonedDateTime): Temporal.ZonedDateTime | null;
|
|
77
|
+
export declare function zonedPreviousTransition(zoned: Temporal.ZonedDateTime, since?: bigint): Temporal.ZonedDateTime | null;
|
|
65
78
|
/**
|
|
66
79
|
* `ZonedDateTime#add`, correct at the range limits and in calendars the polyfill gets wrong.
|
|
67
80
|
*
|
|
@@ -96,6 +109,7 @@ export declare function subtractFromZoned(zoned: Temporal.ZonedDateTime, duratio
|
|
|
96
109
|
* "later"/"compatible" forward (DisambiguatePossibleEpochNanoseconds); "reject" throws for both.
|
|
97
110
|
* - The time portion is then added in exact time and is never re-resolved.
|
|
98
111
|
* - With no date portion, the whole duration is exact time and `disambiguation` never applies.
|
|
112
|
+
* - Each option is converted to a string once, as Temporal GetOption converts it.
|
|
99
113
|
*
|
|
100
114
|
* @param zoned the starting value
|
|
101
115
|
* @param duration the duration to add or subtract
|
|
@@ -112,15 +126,17 @@ interface ZonedWithOptions {
|
|
|
112
126
|
disambiguation?: Disambiguation;
|
|
113
127
|
offset?: Offset;
|
|
114
128
|
}
|
|
129
|
+
/** The date and time fields a `set*` function passes, as `readSetFields` checked them. */
|
|
130
|
+
type ZonedWithFields = SetFields<(typeof DATE_TIME_FIELDS)[number]>;
|
|
115
131
|
/**
|
|
116
132
|
* `ZonedDateTime#with`, correct at the range limits.
|
|
117
133
|
*
|
|
118
134
|
* @param zoned the value to change
|
|
119
|
-
* @param fields the date
|
|
135
|
+
* @param fields the date and time fields to set
|
|
120
136
|
* @param options Temporal `overflow` / `disambiguation` / `offset` (default `"prefer"`)
|
|
121
137
|
* @returns the changed value; throws where TC39 Temporal throws
|
|
122
138
|
*/
|
|
123
|
-
export declare function withZonedFields(zoned: Temporal.ZonedDateTime, fields:
|
|
139
|
+
export declare function withZonedFields(zoned: Temporal.ZonedDateTime, fields: ZonedWithFields, options?: ZonedWithOptions): Temporal.ZonedDateTime;
|
|
124
140
|
/**
|
|
125
141
|
* `ZonedDateTime#round`, correct at the range limits and, by day, before 1847.
|
|
126
142
|
*
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import { MAX_EPOCH_NANOSECONDS } from "./epochNanoseconds.js";
|
|
3
|
-
import { calendarDateAdd, isCalendarArithmeticCompatNeeded, } from "./temporalCompat/index.js";
|
|
4
|
-
import {
|
|
3
|
+
import { calendarDateAdd, isCalendarArithmeticCompatNeeded, isTransitionSearchCompatNeeded, } from "./temporalCompat/index.js";
|
|
4
|
+
import { nextTransitionAfter, previousTransitionBefore, } from "./zonedTransitionSearch.js";
|
|
5
|
+
import { epochNanosecondsFor, interpretISODateTimeOffset, isNamedTimeZone, isNearRangeEdge, isValidEpoch, MAX_TRANSITIONS_BEFORE_MAXIMUM, missedNextTransition, missedPreviousTransition, needsOwnDayBoundsSearch, needsOwnStartOfDaySearch, NEXT_TRANSITION_HORIZON_NANOSECONDS, startOfDayEpochNanoseconds, timeZoneIdOf, } from "./zonedWallClock.js";
|
|
6
|
+
import { optionOrDefault } from "./optionOrDefault.js";
|
|
5
7
|
/*
|
|
6
8
|
* Polyfill-first wrappers for the Temporal operations that resolve a wall clock or a start of day
|
|
7
9
|
* inside `@js-temporal/polyfill` 0.5.1, and so inherit its range-limit defects. See the note at the
|
|
@@ -19,6 +21,11 @@ import { epochNanosecondsFor, interpretISODateTimeOffset, isBeforePolyfillTransi
|
|
|
19
21
|
* so the transition and start-of-day wrappers check for it first, and only for a named zone and an
|
|
20
22
|
* instant or local date before that floor (`needsOwnStartOfDay`); everything later goes straight to
|
|
21
23
|
* the polyfill. Retired with the `zoned.E` canary group.
|
|
24
|
+
*
|
|
25
|
+
* Defect 5 (two changes inside one 14-day search step are skipped, or stall the search for ever;
|
|
26
|
+
* temporalCompat D13) cannot be tried and recovered either. While its probe fails, the transition
|
|
27
|
+
* wrappers run GMT's own search (`zonedTransitionSearch.ts`) and the start-of-day wrappers GMT's
|
|
28
|
+
* own `GetStartOfDay`, for every named zone.
|
|
22
29
|
*/
|
|
23
30
|
const NANOSECONDS_PER_HOUR = 3_600_000_000_000;
|
|
24
31
|
const DISAMBIGUATION_PROBE = new Temporal.PlainDateTime(2000, 1, 1);
|
|
@@ -37,11 +44,17 @@ function isAtRangeEdge(timeZone, date) {
|
|
|
37
44
|
}
|
|
38
45
|
/**
|
|
39
46
|
* True when the polyfill's `GetStartOfDay` may return a valid-looking wrong value for this date (or
|
|
40
|
-
* this zoned value's date)
|
|
41
|
-
* 1847-01-01 transition search floor (defect 3)
|
|
47
|
+
* this zoned value's date): a transition skipping its midnight lies before the polyfill's
|
|
48
|
+
* 1847-01-01 transition search floor (defect 3), or the polyfill's search can skip or stall on two
|
|
49
|
+
* changes in one step (defect 5, while the D13 probe fails).
|
|
42
50
|
*/
|
|
43
51
|
function needsOwnStartOfDay(timeZone, value) {
|
|
44
|
-
return isNamedTimeZone(timeZone) &&
|
|
52
|
+
return isNamedTimeZone(timeZone) && needsOwnStartOfDaySearch(timeZone, value);
|
|
53
|
+
}
|
|
54
|
+
/** `needsOwnStartOfDay` for a measure that also reads the next day's start. */
|
|
55
|
+
function needsOwnDayBounds(zoned) {
|
|
56
|
+
return (isNamedTimeZone(zoned.timeZoneId) &&
|
|
57
|
+
needsOwnDayBoundsSearch(zoned.timeZoneId, zoned));
|
|
45
58
|
}
|
|
46
59
|
function inZoneOf(epochNanoseconds, zoned) {
|
|
47
60
|
return new Temporal.ZonedDateTime(epochNanoseconds, zoned.timeZoneId, zoned.calendarId);
|
|
@@ -73,8 +86,6 @@ function plainDateFromOwnStartOfDay(date, timeZone) {
|
|
|
73
86
|
}
|
|
74
87
|
/** A PlainDate's start of day before the polyfill's transition search floor, or null. */
|
|
75
88
|
function plainDateBeforeTransitionSearch(date, timeZoneLike) {
|
|
76
|
-
if (!isBeforePolyfillTransitionSearch(date))
|
|
77
|
-
return null;
|
|
78
89
|
let timeZone;
|
|
79
90
|
try {
|
|
80
91
|
timeZone = timeZoneIdOf(timeZoneLike);
|
|
@@ -82,7 +93,7 @@ function plainDateBeforeTransitionSearch(date, timeZoneLike) {
|
|
|
82
93
|
catch {
|
|
83
94
|
return null;
|
|
84
95
|
}
|
|
85
|
-
return
|
|
96
|
+
return needsOwnStartOfDay(timeZone, date)
|
|
86
97
|
? plainDateFromOwnStartOfDay(date, timeZone)
|
|
87
98
|
: null;
|
|
88
99
|
}
|
|
@@ -194,7 +205,7 @@ function hoursInDayFromOwnStartOfDay(zoned) {
|
|
|
194
205
|
* @returns hours from this day's start to the next day's start; throws where TC39 Temporal throws
|
|
195
206
|
*/
|
|
196
207
|
export function zonedHoursInDay(zoned) {
|
|
197
|
-
if (
|
|
208
|
+
if (needsOwnDayBounds(zoned)) {
|
|
198
209
|
return hoursInDayFromOwnStartOfDay(zoned);
|
|
199
210
|
}
|
|
200
211
|
try {
|
|
@@ -228,19 +239,13 @@ function earliestTransitionBeforeMaximum(zoned) {
|
|
|
228
239
|
}
|
|
229
240
|
return earliest;
|
|
230
241
|
}
|
|
231
|
-
/**
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
* maximum with `getTimeZoneTransition("previous")`, which scans correctly there.
|
|
239
|
-
*
|
|
240
|
-
* @param zoned the instant to search after (exclusive)
|
|
241
|
-
* @returns the next transition, or null when there is none before the maximum instant
|
|
242
|
-
*/
|
|
243
|
-
export function zonedNextTransition(zoned) {
|
|
242
|
+
/** `transition` unless it is null or lies outside the caller's limit. */
|
|
243
|
+
function withinLimit(transition, isInside) {
|
|
244
|
+
return transition !== null && isInside(transition.epochNanoseconds)
|
|
245
|
+
? transition
|
|
246
|
+
: null;
|
|
247
|
+
}
|
|
248
|
+
function polyfillNextTransition(zoned) {
|
|
244
249
|
if (isNamedTimeZone(zoned.timeZoneId)) {
|
|
245
250
|
const missed = missedNextTransition(zoned.timeZoneId, zoned.epochNanoseconds);
|
|
246
251
|
if (missed !== null) {
|
|
@@ -257,15 +262,34 @@ export function zonedNextTransition(zoned) {
|
|
|
257
262
|
return earliestTransitionBeforeMaximum(zoned);
|
|
258
263
|
}
|
|
259
264
|
/**
|
|
260
|
-
* `ZonedDateTime#getTimeZoneTransition("
|
|
265
|
+
* `ZonedDateTime#getTimeZoneTransition("next")`: TC39 `GetNamedTimeZoneNextTransition`, the first
|
|
266
|
+
* offset change strictly after `zoned`.
|
|
261
267
|
*
|
|
262
|
-
*
|
|
263
|
-
*
|
|
268
|
+
* - While the D13 probe fails (two changes inside one of the polyfill's 14-day search steps are
|
|
269
|
+
* skipped, or stall it for ever), a named zone is searched by GMT's own bounded search
|
|
270
|
+
* (`zonedTransitionSearch.ts`) and the polyfill's search is never called.
|
|
271
|
+
* - Otherwise the polyfill answers, corrected before 1847 (defect 3: it never searches there, so
|
|
272
|
+
* the change is found by bisection first) and within its three-year horizon of the maximum
|
|
273
|
+
* instant (defect 2: its forward scan gives up once a step would pass the maximum, so a `null`
|
|
274
|
+
* is re-checked by walking back from the maximum).
|
|
264
275
|
*
|
|
265
|
-
* @param zoned the instant to search
|
|
266
|
-
* @
|
|
276
|
+
* @param zoned the instant to search after (exclusive)
|
|
277
|
+
* @param until optional: the last instant to search, in epoch nanoseconds (inclusive). A caller
|
|
278
|
+
* that needs only changes up to there passes it so the search reads no further
|
|
279
|
+
* @returns the next transition, or null when there is none up to `until` or, without it, none
|
|
280
|
+
* that Temporal reports
|
|
267
281
|
*/
|
|
268
|
-
export function
|
|
282
|
+
export function zonedNextTransition(zoned, until) {
|
|
283
|
+
if (isNamedTimeZone(zoned.timeZoneId) && isTransitionSearchCompatNeeded()) {
|
|
284
|
+
const found = nextTransitionAfter(zoned.timeZoneId, zoned.epochNanoseconds, until);
|
|
285
|
+
return found === null ? null : inZoneOf(found, zoned);
|
|
286
|
+
}
|
|
287
|
+
const next = polyfillNextTransition(zoned);
|
|
288
|
+
return until === undefined
|
|
289
|
+
? next
|
|
290
|
+
: withinLimit(next, (epochNanoseconds) => epochNanoseconds <= until);
|
|
291
|
+
}
|
|
292
|
+
function polyfillPreviousTransition(zoned) {
|
|
269
293
|
const previous = zoned.getTimeZoneTransition("previous");
|
|
270
294
|
if (previous !== null || !isNamedTimeZone(zoned.timeZoneId)) {
|
|
271
295
|
return previous;
|
|
@@ -273,6 +297,31 @@ export function zonedPreviousTransition(zoned) {
|
|
|
273
297
|
const missed = missedPreviousTransition(zoned.timeZoneId, zoned.epochNanoseconds);
|
|
274
298
|
return missed === null ? null : inZoneOf(missed, zoned);
|
|
275
299
|
}
|
|
300
|
+
/**
|
|
301
|
+
* `ZonedDateTime#getTimeZoneTransition("previous")`: TC39 `GetNamedTimeZonePreviousTransition`,
|
|
302
|
+
* the last offset change strictly before `zoned`.
|
|
303
|
+
*
|
|
304
|
+
* - While the D13 probe fails, a named zone is searched by GMT's own bounded search and the
|
|
305
|
+
* polyfill's search is never called (see `zonedNextTransition`).
|
|
306
|
+
* - Otherwise the polyfill answers, corrected before 1847 (defect 3): when it finds nothing in a
|
|
307
|
+
* named zone, the span from the minimum instant to its floor is checked by comparing offsets
|
|
308
|
+
* and bisecting.
|
|
309
|
+
*
|
|
310
|
+
* @param zoned the instant to search before (exclusive)
|
|
311
|
+
* @param since optional: where the search stops, in epoch nanoseconds (exclusive). A caller that
|
|
312
|
+
* needs only changes after there passes it so the search reads no further back
|
|
313
|
+
* @returns the previous transition, or null when there is none after `since` or, without it, none
|
|
314
|
+
*/
|
|
315
|
+
export function zonedPreviousTransition(zoned, since) {
|
|
316
|
+
if (isNamedTimeZone(zoned.timeZoneId) && isTransitionSearchCompatNeeded()) {
|
|
317
|
+
const found = previousTransitionBefore(zoned.timeZoneId, zoned.epochNanoseconds, since);
|
|
318
|
+
return found === null ? null : inZoneOf(found, zoned);
|
|
319
|
+
}
|
|
320
|
+
const previous = polyfillPreviousTransition(zoned);
|
|
321
|
+
return since === undefined
|
|
322
|
+
? previous
|
|
323
|
+
: withinLimit(previous, (epochNanoseconds) => epochNanoseconds > since);
|
|
324
|
+
}
|
|
276
325
|
// ---------------------------------------------------------------------------------------------
|
|
277
326
|
// add / subtract
|
|
278
327
|
// ---------------------------------------------------------------------------------------------
|
|
@@ -403,6 +452,7 @@ export function subtractFromZoned(zoned, duration, options) {
|
|
|
403
452
|
* "later"/"compatible" forward (DisambiguatePossibleEpochNanoseconds); "reject" throws for both.
|
|
404
453
|
* - The time portion is then added in exact time and is never re-resolved.
|
|
405
454
|
* - With no date portion, the whole duration is exact time and `disambiguation` never applies.
|
|
455
|
+
* - Each option is converted to a string once, as Temporal GetOption converts it.
|
|
406
456
|
*
|
|
407
457
|
* @param zoned the starting value
|
|
408
458
|
* @param duration the duration to add or subtract
|
|
@@ -411,7 +461,13 @@ export function subtractFromZoned(zoned, duration, options) {
|
|
|
411
461
|
* @returns the result; throws where TC39 Temporal throws, or when "reject" meets a gap or overlap
|
|
412
462
|
*/
|
|
413
463
|
export function addToZonedDisambiguated(zoned, duration, sign, options) {
|
|
414
|
-
|
|
464
|
+
// Temporal GetOption converts each option once (ToString). The steps below check an option and
|
|
465
|
+
// then use it, some more than once, so both are converted here and every step sees the same
|
|
466
|
+
// string: an option given as an object cannot answer the check one way and the use another.
|
|
467
|
+
const overflow = options.overflow === undefined
|
|
468
|
+
? undefined
|
|
469
|
+
: `${options.overflow}`;
|
|
470
|
+
const disambiguation = `${options.disambiguation}`;
|
|
415
471
|
// Validates `disambiguation` even when no wall clock is resolved below.
|
|
416
472
|
DISAMBIGUATION_PROBE.toZonedDateTime("UTC", { disambiguation });
|
|
417
473
|
const parsed = Temporal.Duration.from(duration);
|
|
@@ -424,35 +480,30 @@ export function addToZonedDisambiguated(zoned, duration, sign, options) {
|
|
|
424
480
|
/** TC39 `ZonedDateTime#with` at the range limits. */
|
|
425
481
|
function withAtEdge(zoned, fields, options) {
|
|
426
482
|
let wall;
|
|
427
|
-
let offset;
|
|
428
483
|
try {
|
|
429
484
|
Temporal.ZonedDateTime.from(zoned, options);
|
|
430
|
-
const { offset: offsetString, ...dateTimeFields } = fields;
|
|
431
485
|
wall = zoned
|
|
432
486
|
.toPlainDateTime()
|
|
433
|
-
.with(
|
|
434
|
-
offset = {
|
|
435
|
-
nanoseconds: offsetString === undefined
|
|
436
|
-
? BigInt(zoned.offsetNanoseconds)
|
|
437
|
-
: utcOffsetStringNanoseconds(offsetString),
|
|
438
|
-
};
|
|
487
|
+
.with(fields, { overflow: options?.overflow });
|
|
439
488
|
}
|
|
440
489
|
catch {
|
|
441
490
|
return null;
|
|
442
491
|
}
|
|
492
|
+
// `fields` holds no offset, so the merged wall clock keeps the receiver's (ZonedDateTime#with).
|
|
493
|
+
const offset = {
|
|
494
|
+
nanoseconds: BigInt(zoned.offsetNanoseconds),
|
|
495
|
+
};
|
|
443
496
|
if (!isAtRangeEdge(zoned.timeZoneId, wall.toPlainDate())) {
|
|
444
497
|
return null;
|
|
445
498
|
}
|
|
446
|
-
const epoch = interpretISODateTimeOffset(zoned.timeZoneId, wall, offset, options?.disambiguation
|
|
447
|
-
? "compatible"
|
|
448
|
-
: options.disambiguation, options?.offset === undefined ? "prefer" : options.offset, false);
|
|
499
|
+
const epoch = interpretISODateTimeOffset(zoned.timeZoneId, wall, offset, optionOrDefault(options?.disambiguation, "compatible"), optionOrDefault(options?.offset, "prefer"), false);
|
|
449
500
|
return inZoneOf(epoch, zoned);
|
|
450
501
|
}
|
|
451
502
|
/**
|
|
452
503
|
* `ZonedDateTime#with`, correct at the range limits.
|
|
453
504
|
*
|
|
454
505
|
* @param zoned the value to change
|
|
455
|
-
* @param fields the date
|
|
506
|
+
* @param fields the date and time fields to set
|
|
456
507
|
* @param options Temporal `overflow` / `disambiguation` / `offset` (default `"prefer"`)
|
|
457
508
|
* @returns the changed value; throws where TC39 Temporal throws
|
|
458
509
|
*/
|
|
@@ -538,8 +589,7 @@ function roundAtEdge(zoned, roundTo) {
|
|
|
538
589
|
* @returns the rounded value; throws where TC39 Temporal throws
|
|
539
590
|
*/
|
|
540
591
|
export function roundZonedDateTime(zoned, roundTo) {
|
|
541
|
-
if (isDayUnit(roundTo.smallestUnit) &&
|
|
542
|
-
needsOwnStartOfDay(zoned.timeZoneId, zoned)) {
|
|
592
|
+
if (isDayUnit(roundTo.smallestUnit) && needsOwnDayBounds(zoned)) {
|
|
543
593
|
// Validates the options exactly as ZonedDateTime#round does, throwing where it throws.
|
|
544
594
|
zoned.toPlainDateTime().round(roundTo);
|
|
545
595
|
return roundToDayFromOwnStartOfDay(zoned, zoned.toPlainDate(), roundTo.roundingMode ?? "halfExpand");
|
|
@@ -4,9 +4,12 @@ import type { Interval } from "../../types/index.js";
|
|
|
4
4
|
*
|
|
5
5
|
* - True when `start` and `end` are ISO 8601 instant strings (offset required, no leap second)
|
|
6
6
|
* and `start` is not after `end`.
|
|
7
|
-
* -
|
|
8
|
-
*
|
|
9
|
-
* (`[foo=bar]`)
|
|
7
|
+
* - A calendar annotation (`[u-ca=hebrew]`, critical or not) and an elective unknown annotation
|
|
8
|
+
* (`[foo=bar]`) are ignored, as `Temporal.Instant.from` ignores them; an unknown critical
|
|
9
|
+
* annotation (`[!foo=bar]`) is rejected. A bracketed zone is not validated. It is read for
|
|
10
|
+
* one thing: an offset written to the minute that is the zone's sub-minute offset rounded
|
|
11
|
+
* (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
|
|
12
|
+
* `Temporal.ZonedDateTime.from` reads it.
|
|
10
13
|
* - Compares instants, not text: `{ start: "2024-01-01T10:00:00+01:00", end: "2024-01-01T09:30:00Z" }`
|
|
11
14
|
* is valid even though it sorts backwards as a string.
|
|
12
15
|
* - `start === end` is valid — an empty interval.
|
|
@@ -4,9 +4,12 @@ import { parseIntervalNanoseconds } from "../../internal/index.js";
|
|
|
4
4
|
*
|
|
5
5
|
* - True when `start` and `end` are ISO 8601 instant strings (offset required, no leap second)
|
|
6
6
|
* and `start` is not after `end`.
|
|
7
|
-
* -
|
|
8
|
-
*
|
|
9
|
-
* (`[foo=bar]`)
|
|
7
|
+
* - A calendar annotation (`[u-ca=hebrew]`, critical or not) and an elective unknown annotation
|
|
8
|
+
* (`[foo=bar]`) are ignored, as `Temporal.Instant.from` ignores them; an unknown critical
|
|
9
|
+
* annotation (`[!foo=bar]`) is rejected. A bracketed zone is not validated. It is read for
|
|
10
|
+
* one thing: an offset written to the minute that is the zone's sub-minute offset rounded
|
|
11
|
+
* (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
|
|
12
|
+
* `Temporal.ZonedDateTime.from` reads it.
|
|
10
13
|
* - Compares instants, not text: `{ start: "2024-01-01T10:00:00+01:00", end: "2024-01-01T09:30:00Z" }`
|
|
11
14
|
* is valid even though it sorts backwards as a string.
|
|
12
15
|
* - `start === end` is valid — an empty interval.
|
|
@@ -10,18 +10,15 @@ import type { DateDurationUnit, Overflow } from "../../types/index.js";
|
|
|
10
10
|
* string is the `"iso8601"` calendar and returns a bare ISO string.
|
|
11
11
|
* - Compatibility: since 1.16.0 calendar strings are RFC 9557 (ISO digits, `[u-ca=<id>]`, canonical
|
|
12
12
|
* calendar ids); see `isValidCalendarDate`.
|
|
13
|
+
* - Whether `overflow: "reject"` returns "" is calendar-dependent: adding 1 year from Hebrew
|
|
14
|
+
* Adar I (a leap-only month) does not (Temporal remaps to the non-leap year's Adar instead of
|
|
15
|
+
* rejecting), while adding 1 month from the Ethiopic 30-day 12th month into the 5/6-day
|
|
16
|
+
* Pagumen does.
|
|
13
17
|
* - Returns "" for invalid inputs.
|
|
14
18
|
*
|
|
15
|
-
* `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. adding 1 month
|
|
16
|
-
* to Jan 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in ""). Whether `reject`
|
|
17
|
-
* actually throws is calendar-dependent: adding 1 year from Hebrew Adar I (a leap-only month)
|
|
18
|
-
* does NOT throw even with `overflow: "reject"` (Temporal remaps to the non-leap year's Adar
|
|
19
|
-
* instead of rejecting), while adding 1 month from the Ethiopic 30-day 12th month into the
|
|
20
|
-
* 5/6-day Pagumen DOES throw.
|
|
21
|
-
*
|
|
22
19
|
* @param value ISO PlainDate string, optionally calendar-annotated
|
|
23
20
|
* @param units Partial<Record<DateDurationUnit, number>> object specifying units to add
|
|
24
|
-
* @param options
|
|
21
|
+
* @param options How an out-of-range result is handled
|
|
25
22
|
* @returns ISO PlainDate string after addition, or "" on invalid input
|
|
26
23
|
*
|
|
27
24
|
* @example addDate("2024-03-10", { days: 5 }) // "2024-03-15"
|
|
@@ -32,5 +29,11 @@ import type { DateDurationUnit, Overflow } from "../../types/index.js";
|
|
|
32
29
|
* @example addDate("2024-10-03[u-ca=japanese;era=reiwa]", { days: 1 }) // "" (not RFC 9557)
|
|
33
30
|
*/
|
|
34
31
|
export declare function addDate(value: string, units: Partial<Record<DateDurationUnit, number>>, options?: {
|
|
32
|
+
/**
|
|
33
|
+
* What to do when the result is not a real date. `"constrain"` clamps it to the last valid day,
|
|
34
|
+
* so Jan 31 + 1 month is Feb 29 or 28; `"reject"` returns `""`.
|
|
35
|
+
*
|
|
36
|
+
* @defaultValue `"constrain"`, Temporal's default.
|
|
37
|
+
*/
|
|
35
38
|
overflow?: Overflow;
|
|
36
39
|
}): string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
|
|
2
|
-
import { calendarSystemOfDateValue, formatDateInCalendar,
|
|
2
|
+
import { calendarSystemOfDateValue, formatDateInCalendar, parseCalendarDateValue, plainDateAdd, readDurationUnits, resolveOverflow, } from "../../internal/index.js";
|
|
3
3
|
import { isValidCalendarDate, isValidDateDurationUnit } from "../validate/index.js";
|
|
4
4
|
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
5
5
|
/**
|
|
@@ -13,18 +13,15 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
13
13
|
* string is the `"iso8601"` calendar and returns a bare ISO string.
|
|
14
14
|
* - Compatibility: since 1.16.0 calendar strings are RFC 9557 (ISO digits, `[u-ca=<id>]`, canonical
|
|
15
15
|
* calendar ids); see `isValidCalendarDate`.
|
|
16
|
+
* - Whether `overflow: "reject"` returns "" is calendar-dependent: adding 1 year from Hebrew
|
|
17
|
+
* Adar I (a leap-only month) does not (Temporal remaps to the non-leap year's Adar instead of
|
|
18
|
+
* rejecting), while adding 1 month from the Ethiopic 30-day 12th month into the 5/6-day
|
|
19
|
+
* Pagumen does.
|
|
16
20
|
* - Returns "" for invalid inputs.
|
|
17
21
|
*
|
|
18
|
-
* `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. adding 1 month
|
|
19
|
-
* to Jan 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in ""). Whether `reject`
|
|
20
|
-
* actually throws is calendar-dependent: adding 1 year from Hebrew Adar I (a leap-only month)
|
|
21
|
-
* does NOT throw even with `overflow: "reject"` (Temporal remaps to the non-leap year's Adar
|
|
22
|
-
* instead of rejecting), while adding 1 month from the Ethiopic 30-day 12th month into the
|
|
23
|
-
* 5/6-day Pagumen DOES throw.
|
|
24
|
-
*
|
|
25
22
|
* @param value ISO PlainDate string, optionally calendar-annotated
|
|
26
23
|
* @param units Partial<Record<DateDurationUnit, number>> object specifying units to add
|
|
27
|
-
* @param options
|
|
24
|
+
* @param options How an out-of-range result is handled
|
|
28
25
|
* @returns ISO PlainDate string after addition, or "" on invalid input
|
|
29
26
|
*
|
|
30
27
|
* @example addDate("2024-03-10", { days: 5 }) // "2024-03-15"
|
|
@@ -40,11 +37,8 @@ export function addDate(value /* ISO 8601 date */, units, options) {
|
|
|
40
37
|
return "";
|
|
41
38
|
}
|
|
42
39
|
const validDate = isValidCalendarDate(value);
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
Object.keys(units).every(isValidDateDurationUnit);
|
|
46
|
-
const validAmounts = validUnits && Object.values(units).every(isValidAmount);
|
|
47
|
-
if (!validDate || !validUnits || !validAmounts) {
|
|
40
|
+
const amounts = readDurationUnits(units, isValidDateDurationUnit);
|
|
41
|
+
if (!validDate || amounts === null) {
|
|
48
42
|
return "";
|
|
49
43
|
}
|
|
50
44
|
try {
|
|
@@ -53,7 +47,7 @@ export function addDate(value /* ISO 8601 date */, units, options) {
|
|
|
53
47
|
return "";
|
|
54
48
|
}
|
|
55
49
|
const date = parseCalendarDateValue(value);
|
|
56
|
-
const result = plainDateAdd(date,
|
|
50
|
+
const result = plainDateAdd(date, amounts, resolveOverflow(options?.overflow));
|
|
57
51
|
return formatDateInCalendar(result, calendar);
|
|
58
52
|
}
|
|
59
53
|
catch {
|
|
@@ -5,12 +5,9 @@ import type { DateTimeDurationUnit, Overflow } from "../../types/index.js";
|
|
|
5
5
|
* - Validates `value`, `units`, and `amount` before performing the add.
|
|
6
6
|
* - Returns "" for invalid inputs.
|
|
7
7
|
*
|
|
8
|
-
* `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. adding 1 month
|
|
9
|
-
* to Jan 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in "").
|
|
10
|
-
*
|
|
11
8
|
* @param value ISO PlainDateTime string
|
|
12
9
|
* @param units Partial<Record<DateTimeDurationUnit, number>> object specifying units to add
|
|
13
|
-
* @param options
|
|
10
|
+
* @param options How an out-of-range result is handled
|
|
14
11
|
* @returns ISO PlainDateTime string after addition, or "" on invalid input
|
|
15
12
|
*
|
|
16
13
|
* @example addDateTime("2024-03-10T12:00:00", { days: 5 }) // "2024-03-15T12:00:00"
|
|
@@ -18,5 +15,11 @@ import type { DateTimeDurationUnit, Overflow } from "../../types/index.js";
|
|
|
18
15
|
* @example addDateTime("2024-01-31T12:00:00", { months: 1 }, { overflow: "reject" }) // ""
|
|
19
16
|
*/
|
|
20
17
|
export declare function addDateTime(value: string, units: Partial<Record<DateTimeDurationUnit, number>>, options?: {
|
|
18
|
+
/**
|
|
19
|
+
* What to do when the result is not a real date. `"constrain"` clamps it to the last valid day,
|
|
20
|
+
* so Jan 31 + 1 month is Feb 29 or 28; `"reject"` returns `""`.
|
|
21
|
+
*
|
|
22
|
+
* @defaultValue `"constrain"`, Temporal's default.
|
|
23
|
+
*/
|
|
21
24
|
overflow?: Overflow;
|
|
22
25
|
}): string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
|
|
2
2
|
import { Temporal } from "@js-temporal/polyfill";
|
|
3
|
-
import {
|
|
3
|
+
import { readDurationUnits, resolveOverflow } from "../../internal/index.js";
|
|
4
4
|
import { isValidDateTime, isValidDateTimeDurationUnit } from "../validate/index.js";
|
|
5
5
|
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
6
6
|
/**
|
|
@@ -9,12 +9,9 @@ import { isOptionsArgument } from "../../internal/isObject.js";
|
|
|
9
9
|
* - Validates `value`, `units`, and `amount` before performing the add.
|
|
10
10
|
* - Returns "" for invalid inputs.
|
|
11
11
|
*
|
|
12
|
-
* `overflow` ("constrain" (default) | "reject") controls out-of-range results, e.g. adding 1 month
|
|
13
|
-
* to Jan 31: "constrain" clamps to Feb 29/28, "reject" throws (resulting in "").
|
|
14
|
-
*
|
|
15
12
|
* @param value ISO PlainDateTime string
|
|
16
13
|
* @param units Partial<Record<DateTimeDurationUnit, number>> object specifying units to add
|
|
17
|
-
* @param options
|
|
14
|
+
* @param options How an out-of-range result is handled
|
|
18
15
|
* @returns ISO PlainDateTime string after addition, or "" on invalid input
|
|
19
16
|
*
|
|
20
17
|
* @example addDateTime("2024-03-10T12:00:00", { days: 5 }) // "2024-03-15T12:00:00"
|
|
@@ -27,17 +24,14 @@ export function addDateTime(value, units, options) {
|
|
|
27
24
|
return "";
|
|
28
25
|
}
|
|
29
26
|
const validDateTime = isValidDateTime(value);
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
Object.keys(units).every(isValidDateTimeDurationUnit);
|
|
33
|
-
const validAmounts = validUnits && Object.values(units).every(isValidAmount);
|
|
34
|
-
if (!validDateTime || !validUnits || !validAmounts) {
|
|
27
|
+
const amounts = readDurationUnits(units, isValidDateTimeDurationUnit);
|
|
28
|
+
if (!validDateTime || amounts === null) {
|
|
35
29
|
return "";
|
|
36
30
|
}
|
|
37
31
|
try {
|
|
38
32
|
const dateTime = Temporal.PlainDateTime.from(value);
|
|
39
33
|
return dateTime
|
|
40
|
-
.add(
|
|
34
|
+
.add(amounts, { overflow: resolveOverflow(options?.overflow) })
|
|
41
35
|
.toString();
|
|
42
36
|
}
|
|
43
37
|
catch {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
|
|
2
2
|
import { Temporal } from "@js-temporal/polyfill";
|
|
3
|
-
import {
|
|
3
|
+
import { readDurationUnits } from "../../internal/index.js";
|
|
4
4
|
import { isValidTime, isValidTimeDurationUnit } from "../validate/index.js";
|
|
5
5
|
/**
|
|
6
6
|
* Return a PlainTime ISO string with `units` added to `value`.
|
|
@@ -22,16 +22,13 @@ import { isValidTime, isValidTimeDurationUnit } from "../validate/index.js";
|
|
|
22
22
|
export function addTime(value, units) {
|
|
23
23
|
try {
|
|
24
24
|
const validTime = isValidTime(value);
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
Object.keys(units).every(isValidTimeDurationUnit);
|
|
28
|
-
const validAmounts = validUnits && Object.values(units).every(isValidAmount);
|
|
29
|
-
if (!validTime || !validUnits || !validAmounts) {
|
|
25
|
+
const amounts = readDurationUnits(units, isValidTimeDurationUnit);
|
|
26
|
+
if (!validTime || amounts === null) {
|
|
30
27
|
return "";
|
|
31
28
|
}
|
|
32
29
|
try {
|
|
33
30
|
const time = Temporal.PlainTime.from(value);
|
|
34
|
-
return time.add(
|
|
31
|
+
return time.add(amounts).toString();
|
|
35
32
|
}
|
|
36
33
|
catch {
|
|
37
34
|
return "";
|
|
@@ -8,24 +8,20 @@ import type { DateCycleField, Overflow } from "../../types/index.js";
|
|
|
8
8
|
* overflow into January of the *next* year. Reach for `addDate` when you want calendar
|
|
9
9
|
* arithmetic; reach for `cycleDate` when a single field (e.g. a datepicker segment) must stay
|
|
10
10
|
* isolated from the others.
|
|
11
|
-
* - `year` has no upper/lower wrap — cycling it is plain addition (or
|
|
11
|
+
* - `year` has no upper/lower wrap — cycling it is plain addition (or a step to a multiple, with
|
|
12
|
+
* `round`): `2022` by `+5` with `round: true` lands on `2025`, the next multiple of 5.
|
|
12
13
|
* `month` wraps `1–12`. `day` wraps `1`–the **current** month's day count, so cycling `day`
|
|
13
14
|
* never changes `month`.
|
|
14
15
|
* - Cycling `month` or `year` can still shift `day` via `overflow` — e.g. cycling `month` from a
|
|
15
16
|
* 31st into a shorter month clamps under the default `"constrain"` (or returns `""` under
|
|
16
17
|
* `"reject"`) exactly the way `setDate`'s own `.with()` call does; this is the same clamping
|
|
17
18
|
* `addDate`'s Jan 31 + 1 month case produces, not new behavior.
|
|
18
|
-
* - `options.round` does **not** round to the nearest increment — it steps to the *next* multiple
|
|
19
|
-
* of `amount` in the direction of its sign (ceiling for positive, floor for negative), matching
|
|
20
|
-
* `@internationalized/date`'s `CycleOptions.round`. E.g. cycling `year` `2022` by `+5` with
|
|
21
|
-
* `round: true` lands on `2025` (the next multiple of 5 above 2022), not `2020` (the nearest
|
|
22
|
-
* multiple).
|
|
23
19
|
* - Returns "" for an invalid `value`, an invalid `field`, or an `amount` that is not a finite number.
|
|
24
20
|
*
|
|
25
21
|
* @param value ISO PlainDate string
|
|
26
22
|
* @param field the field to cycle: "year" | "month" | "day"
|
|
27
23
|
* @param amount signed amount to cycle by
|
|
28
|
-
* @param options
|
|
24
|
+
* @param options How the field is stepped and an out-of-range day is handled
|
|
29
25
|
* @returns ISO PlainDate string with `field` cycled, or "" on invalid input
|
|
30
26
|
*
|
|
31
27
|
* @example cycleDate("2024-06-15", "month", 1) // "2024-07-15"
|
|
@@ -39,6 +35,19 @@ import type { DateCycleField, Overflow } from "../../types/index.js";
|
|
|
39
35
|
* @example cycleDate("invalid", "month", 1) // ""
|
|
40
36
|
*/
|
|
41
37
|
export declare function cycleDate(value: string, field: DateCycleField, amount: number, options?: {
|
|
38
|
+
/**
|
|
39
|
+
* Whether to step to a multiple of `amount` instead of adding it. `true` moves to the next
|
|
40
|
+
* multiple in the direction of the sign of `amount` (the ceiling for a positive amount, the
|
|
41
|
+
* floor for a negative one), not to the nearest one; `false` adds `amount`.
|
|
42
|
+
*
|
|
43
|
+
* @defaultValue `false`
|
|
44
|
+
*/
|
|
42
45
|
round?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* What to do when the cycled `month` or `year` leaves `day` past the end of its month.
|
|
48
|
+
* `"constrain"` clamps `day` to the last day of that month; `"reject"` returns `""`.
|
|
49
|
+
*
|
|
50
|
+
* @defaultValue `"constrain"`, Temporal's default.
|
|
51
|
+
*/
|
|
43
52
|
overflow?: Overflow;
|
|
44
53
|
}): string;
|