@northguild/gmt 1.17.0 → 1.18.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 +462 -22
- package/dist/calendar/calculate/bucketRange.d.ts +3 -3
- package/dist/calendar/calculate/bucketRange.js +6 -6
- package/dist/calendar/calculate/floorToZone.d.ts +5 -3
- package/dist/calendar/calculate/floorToZone.js +6 -5
- 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 +53 -0
- package/dist/calendar/hours/addOperatingTime.js +59 -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 +39 -0
- package/dist/calendar/hours/isOpenAt.js +44 -0
- package/dist/calendar/hours/nextCloseAt.d.ts +49 -0
- package/dist/calendar/hours/nextCloseAt.js +51 -0
- package/dist/calendar/hours/nextOpenAt.d.ts +45 -0
- package/dist/calendar/hours/nextOpenAt.js +47 -0
- package/dist/calendar/hours/operatingIntervals.d.ts +43 -0
- package/dist/calendar/hours/operatingIntervals.js +52 -0
- package/dist/calendar/hours/operatingTimeBetween.d.ts +40 -0
- package/dist/calendar/hours/operatingTimeBetween.js +49 -0
- package/dist/calendar/hours/recurringWindows.d.ts +61 -0
- package/dist/calendar/hours/recurringWindows.js +80 -0
- package/dist/calendar/index.d.ts +1 -0
- package/dist/calendar/index.js +1 -0
- package/dist/duration/calculate/durationAs.d.ts +13 -8
- package/dist/duration/calculate/durationAs.js +4 -8
- package/dist/duration/compare/compareDurations.d.ts +12 -6
- package/dist/duration/compare/compareDurations.js +3 -6
- 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/instant/convert/classifyLocal.d.ts +1 -1
- package/dist/instant/convert/classifyLocal.js +1 -1
- package/dist/instant/convert/fromOffsetInstant.d.ts +3 -1
- package/dist/instant/convert/fromOffsetInstant.js +3 -1
- package/dist/instant/convert/resolveLocal.d.ts +12 -7
- package/dist/instant/convert/resolveLocal.js +6 -10
- package/dist/instant/convert/toOffsetInstant.d.ts +22 -9
- package/dist/instant/convert/toOffsetInstant.js +10 -3
- package/dist/intermodal/calculate/billingTimeline.d.ts +31 -11
- package/dist/intermodal/calculate/billingTimeline.js +2 -2
- package/dist/intermodal/calculate/chargeableDays.d.ts +13 -11
- package/dist/intermodal/calculate/chargeableDays.js +4 -9
- package/dist/intermodal/calculate/demurrageClock.d.ts +16 -7
- package/dist/intermodal/calculate/demurrageClock.js +7 -7
- package/dist/intermodal/calculate/freeTimeExpiry.d.ts +5 -4
- package/dist/intermodal/calculate/freeTimeExpiry.js +6 -6
- package/dist/internal/businessCalendar.d.ts +5 -0
- package/dist/internal/businessCalendar.js +5 -1
- 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/englishCalendarNames.js +1 -2
- 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/index.d.ts +9 -4
- package/dist/internal/index.js +9 -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/joinDateTimeConnector.d.ts +1 -1
- package/dist/internal/monthGridWeekRow.d.ts +2 -1
- package/dist/internal/monthGridWeekRow.js +2 -1
- package/dist/internal/normalizeTimeZone.d.ts +2 -2
- package/dist/internal/normalizeTimeZone.js +2 -2
- package/dist/internal/operatingSchedule.d.ts +129 -0
- package/dist/internal/operatingSchedule.js +668 -0
- package/dist/internal/optionOrDefault.d.ts +18 -0
- package/dist/internal/optionOrDefault.js +20 -0
- package/dist/internal/patternToken.d.ts +2 -2
- package/dist/internal/patternToken.js +28 -13
- 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/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/splitStep.d.ts +24 -1
- package/dist/internal/splitStep.js +34 -2
- 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/utcZonedDateTime.d.ts +5 -2
- package/dist/internal/utcZonedDateTime.js +8 -5
- package/dist/internal/zonedBucket.js +8 -6
- package/dist/internal/zonedLocalDates.js +1 -1
- 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/zonedWallClockOperations.d.ts +26 -13
- package/dist/internal/zonedWallClockOperations.js +87 -34
- 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 +5 -8
- package/dist/plain/calculate/addDateTime.d.ts +7 -4
- package/dist/plain/calculate/addDateTime.js +1 -4
- 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 +8 -2
- 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 +7 -5
- package/dist/plain/calculate/setDate.js +1 -5
- package/dist/plain/calculate/setDateTime.d.ts +8 -5
- package/dist/plain/calculate/setDateTime.js +1 -5
- package/dist/plain/calculate/setTime.d.ts +10 -6
- package/dist/plain/calculate/setTime.js +4 -6
- 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 +8 -1
- package/dist/plain/calculate/startOfTime.js +1 -1
- package/dist/plain/calculate/subtractDate.d.ts +7 -4
- package/dist/plain/calculate/subtractDate.js +1 -4
- package/dist/plain/calculate/subtractDateTime.d.ts +7 -4
- package/dist/plain/calculate/subtractDateTime.js +1 -4
- 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 +21 -16
- 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 +26 -15
- package/dist/plain/format/formatRelativeDateTime.d.ts +16 -3
- package/dist/plain/format/formatRelativeDateTime.js +8 -5
- package/dist/plain/format/formatRelativeTime.d.ts +16 -3
- package/dist/plain/format/formatRelativeTime.js +21 -13
- package/dist/plain/format/formatTime.js +4 -2
- 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/intervalXorAllDateTime.d.ts +9 -0
- package/dist/plain/interval/intervalXorAllTime.d.ts +9 -0
- 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/mergeIntervalsDateTime.d.ts +9 -0
- package/dist/plain/interval/mergeIntervalsTime.d.ts +9 -0
- 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/parseDateTimeWithPattern.d.ts +10 -7
- package/dist/plain/parse/parseDateTimeWithPattern.js +10 -7
- package/dist/plain/parse/parseDateWithPattern.d.ts +10 -7
- package/dist/plain/parse/parseDateWithPattern.js +10 -7
- package/dist/plain/parse/parseTimeWithPattern.d.ts +10 -7
- package/dist/plain/parse/parseTimeWithPattern.js +10 -7
- package/dist/plain/parse/parseUnitFromDate.d.ts +11 -3
- package/dist/plain/parse/parseUnitFromDate.js +3 -3
- package/dist/plain/parse/parseUnitFromDateTime.d.ts +11 -3
- package/dist/plain/parse/parseUnitFromDateTime.js +3 -3
- 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/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/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 +1 -1
- package/dist/precision/convert/fromNanoseconds.js +1 -1
- 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/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 +58 -0
- package/dist/transport/calculate/crossingTime.js +76 -0
- package/dist/transport/calculate/cutoffAt.d.ts +90 -0
- package/dist/transport/calculate/cutoffAt.js +209 -0
- package/dist/transport/calculate/cutoffSchedule.d.ts +70 -0
- package/dist/transport/calculate/cutoffSchedule.js +71 -0
- package/dist/transport/calculate/dwellTime.d.ts +16 -7
- package/dist/transport/calculate/dwellTime.js +12 -8
- 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 +150 -0
- package/dist/transport/calculate/scheduleDelivery.js +300 -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 +7 -0
- package/dist/transport/convert/etaAtZone.js +9 -4
- package/dist/transport/index.d.ts +1 -0
- package/dist/transport/index.js +1 -0
- package/dist/types/business-calendar.d.ts +19 -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/fiscal-calendar.d.ts +1 -1
- package/dist/types/fractional-digit.d.ts +5 -0
- package/dist/types/free-time-options.d.ts +21 -11
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.js +2 -1
- package/dist/types/interval.d.ts +8 -1
- package/dist/types/offset.d.ts +9 -0
- package/dist/types/operating-schedule.d.ts +71 -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/unix/calculate/addUnix.d.ts +19 -5
- package/dist/unix/calculate/addUnix.js +1 -5
- package/dist/unix/calculate/diffUnix.d.ts +13 -3
- package/dist/unix/calculate/diffUnix.js +1 -3
- package/dist/unix/calculate/diffUnixAsDuration.d.ts +13 -3
- package/dist/unix/calculate/diffUnixAsDuration.js +1 -3
- package/dist/unix/calculate/endOfQuarterForUnix.d.ts +13 -3
- package/dist/unix/calculate/endOfQuarterForUnix.js +1 -3
- package/dist/unix/calculate/endOfUnix.d.ts +20 -4
- package/dist/unix/calculate/endOfUnix.js +1 -4
- package/dist/unix/calculate/isBetweenUnix.d.ts +26 -4
- package/dist/unix/calculate/isBetweenUnix.js +4 -6
- package/dist/unix/calculate/roundUnix.d.ts +31 -3
- package/dist/unix/calculate/roundUnix.js +3 -6
- package/dist/unix/calculate/setUnix.d.ts +35 -9
- package/dist/unix/calculate/setUnix.js +4 -13
- package/dist/unix/calculate/startOfQuarterForUnix.d.ts +13 -3
- package/dist/unix/calculate/startOfQuarterForUnix.js +1 -3
- package/dist/unix/calculate/startOfUnix.d.ts +20 -4
- package/dist/unix/calculate/startOfUnix.js +1 -4
- package/dist/unix/calculate/subtractUnix.d.ts +19 -5
- package/dist/unix/calculate/subtractUnix.js +1 -5
- package/dist/unix/compare/areUnixEqual.d.ts +7 -1
- package/dist/unix/compare/areUnixEqual.js +1 -1
- package/dist/unix/compare/areUnixEqualBy.d.ts +24 -7
- package/dist/unix/compare/areUnixEqualBy.js +13 -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 +14 -4
- package/dist/unix/convert/convertUnixToPlainDate.js +2 -4
- package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +14 -4
- package/dist/unix/convert/convertUnixToPlainDateTime.js +2 -4
- package/dist/unix/convert/convertUnixToPlainTime.d.ts +14 -4
- package/dist/unix/convert/convertUnixToPlainTime.js +2 -4
- package/dist/unix/convert/convertUnixToUtc.d.ts +9 -4
- package/dist/unix/convert/convertUnixToUtc.js +3 -4
- package/dist/unix/convert/convertUnixToZoned.d.ts +10 -5
- package/dist/unix/convert/convertUnixToZoned.js +4 -5
- package/dist/unix/format/formatCalendarUnix.d.ts +27 -19
- package/dist/unix/format/formatCalendarUnix.js +4 -5
- package/dist/unix/format/formatRelativeUnix.d.ts +54 -5
- package/dist/unix/format/formatRelativeUnix.js +3 -5
- package/dist/unix/format/formatUnix.d.ts +24 -6
- package/dist/unix/format/formatUnix.js +8 -7
- package/dist/unix/get/getUnixNow.d.ts +8 -3
- package/dist/unix/get/getUnixNow.js +1 -3
- package/dist/unix/interval/intervalCountUnix.d.ts +14 -5
- package/dist/unix/interval/intervalCountUnix.js +2 -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 +33 -5
- package/dist/unix/interval/intervalFromDurationUnix.js +6 -5
- package/dist/unix/interval/intervalIntersectionUnix.d.ts +6 -0
- package/dist/unix/interval/intervalLengthUnix.d.ts +16 -6
- package/dist/unix/interval/intervalLengthUnix.js +4 -6
- package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +13 -3
- package/dist/unix/interval/intervalOverlappingDaysUnix.js +1 -3
- 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 +42 -11
- package/dist/unix/interval/splitIntervalByUnitUnix.js +21 -16
- package/dist/unix/parse/parseDateFromUnix.d.ts +13 -2
- package/dist/unix/parse/parseDateFromUnix.js +1 -2
- package/dist/unix/parse/parseDayFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseDayFromUnix.js +2 -2
- package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +13 -1
- package/dist/unix/parse/parseDayOfWeekFromUnix.js +1 -1
- package/dist/unix/parse/parseHourFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseHourFromUnix.js +2 -2
- package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseMicrosecondFromUnix.js +2 -2
- package/dist/unix/parse/parseMillisecondFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseMillisecondFromUnix.js +2 -2
- package/dist/unix/parse/parseMinuteFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseMinuteFromUnix.js +2 -2
- package/dist/unix/parse/parseMonthFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseMonthFromUnix.js +2 -2
- package/dist/unix/parse/parseNanosecondFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseNanosecondFromUnix.js +2 -2
- package/dist/unix/parse/parseSecondFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseSecondFromUnix.js +2 -2
- package/dist/unix/parse/parseTimeFromUnix.d.ts +13 -2
- package/dist/unix/parse/parseTimeFromUnix.js +1 -2
- package/dist/unix/parse/parseUnitFromUnix.d.ts +22 -3
- package/dist/unix/parse/parseUnitFromUnix.js +2 -3
- package/dist/unix/parse/parseWeekFromUnix.d.ts +23 -7
- package/dist/unix/parse/parseWeekFromUnix.js +3 -7
- package/dist/unix/parse/parseYearFromUnix.d.ts +14 -2
- package/dist/unix/parse/parseYearFromUnix.js +2 -2
- package/dist/unix/validate/isValidUnixRange.d.ts +20 -4
- package/dist/unix/validate/isValidUnixRange.js +1 -4
- package/dist/utc/calculate/addUtc.d.ts +7 -4
- package/dist/utc/calculate/addUtc.js +1 -4
- 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 +7 -4
- package/dist/utc/calculate/setUtc.js +1 -4
- 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 +1 -4
- package/dist/utc/compare/areUtcEqualBy.d.ts +9 -3
- package/dist/utc/compare/areUtcEqualBy.js +2 -3
- package/dist/utc/convert/convertUtcToPlainDate.d.ts +8 -3
- package/dist/utc/convert/convertUtcToPlainDate.js +5 -6
- package/dist/utc/convert/convertUtcToPlainDateTime.d.ts +8 -3
- package/dist/utc/convert/convertUtcToPlainDateTime.js +5 -6
- package/dist/utc/convert/convertUtcToPlainTime.d.ts +8 -3
- package/dist/utc/convert/convertUtcToPlainTime.js +5 -6
- package/dist/utc/convert/convertUtcToUnix.d.ts +9 -4
- package/dist/utc/convert/convertUtcToUnix.js +3 -4
- package/dist/utc/convert/convertUtcToZoned.d.ts +1 -1
- package/dist/utc/convert/convertUtcToZoned.js +1 -1
- package/dist/utc/format/formatCalendarUtc.d.ts +19 -8
- package/dist/utc/format/formatCalendarUtc.js +8 -6
- package/dist/utc/format/formatHttp.d.ts +1 -1
- package/dist/utc/format/formatHttp.js +1 -1
- package/dist/utc/format/formatRelativeUtc.d.ts +30 -10
- package/dist/utc/format/formatRelativeUtc.js +9 -11
- package/dist/utc/format/formatUtc.d.ts +17 -15
- package/dist/utc/format/formatUtc.js +8 -8
- 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/intervalXorUtc.d.ts +6 -0
- package/dist/utc/interval/mergeIntervalsUtc.d.ts +6 -0
- package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +19 -6
- package/dist/utc/interval/splitIntervalByUnitUtc.js +6 -6
- package/dist/utc/parse/parseDateFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseDateFromUtc.js +1 -3
- package/dist/utc/parse/parseDayFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseDayFromUtc.js +1 -3
- package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseDayOfWeekFromUtc.js +4 -6
- package/dist/utc/parse/parseHourFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseHourFromUtc.js +1 -3
- package/dist/utc/parse/parseHttp.d.ts +1 -1
- package/dist/utc/parse/parseHttp.js +1 -1
- package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseMicrosecondFromUtc.js +1 -3
- package/dist/utc/parse/parseMillisecondFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseMillisecondFromUtc.js +1 -3
- package/dist/utc/parse/parseMinuteFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseMinuteFromUtc.js +1 -3
- package/dist/utc/parse/parseMonthFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseMonthFromUtc.js +1 -3
- package/dist/utc/parse/parseNanosecondFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseNanosecondFromUtc.js +1 -3
- package/dist/utc/parse/parseSecondFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseSecondFromUtc.js +1 -3
- package/dist/utc/parse/parseTimeFromUtc.d.ts +8 -3
- package/dist/utc/parse/parseTimeFromUtc.js +5 -6
- package/dist/utc/parse/parseUnitFromUtc.d.ts +17 -5
- package/dist/utc/parse/parseUnitFromUtc.js +6 -8
- package/dist/utc/parse/parseWeekFromUtc.d.ts +18 -10
- package/dist/utc/parse/parseWeekFromUtc.js +7 -13
- package/dist/utc/parse/parseYearFromUtc.d.ts +7 -3
- package/dist/utc/parse/parseYearFromUtc.js +1 -3
- package/dist/utc/validate/isValidUtcRange.d.ts +16 -5
- package/dist/utc/validate/isValidUtcRange.js +2 -5
- package/dist/zoned/calculate/addZoned.d.ts +20 -10
- package/dist/zoned/calculate/addZoned.js +6 -13
- 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 +25 -8
- package/dist/zoned/calculate/setZoned.js +4 -12
- 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 +6 -13
- 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 +18 -5
- package/dist/zoned/convert/convertPlainDateTimeToZoned.js +6 -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 +1 -1
- package/dist/zoned/convert/convertZonedToZoned.js +1 -1
- package/dist/zoned/format/formatCalendarZoned.d.ts +18 -12
- package/dist/zoned/format/formatCalendarZoned.js +13 -9
- package/dist/zoned/format/formatRelativeZoned.d.ts +41 -12
- package/dist/zoned/format/formatRelativeZoned.js +7 -4
- 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 +12 -3
- package/dist/zoned/format/formatTimeZoneName.js +5 -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 +9 -10
- package/dist/zoned/get/getDstTransitions.js +12 -3
- package/dist/zoned/get/getTimeZoneOffset.d.ts +4 -1
- package/dist/zoned/get/getTimeZoneOffset.js +6 -3
- package/dist/zoned/get/getZonedNow.d.ts +13 -1
- package/dist/zoned/get/getZonedNow.js +12 -3
- 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/intervalXorZoned.d.ts +9 -0
- package/dist/zoned/interval/mergeIntervalsZoned.d.ts +9 -0
- 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 +9 -3
- package/dist/zoned/parse/parseUnitFromZoned.js +1 -3
- package/dist/zoned/parse/parseWeekFromZoned.d.ts +10 -3
- package/dist/zoned/parse/parseWeekFromZoned.js +2 -3
- package/dist/zoned/validate/hasDaylightSaving.d.ts +42 -11
- package/dist/zoned/validate/hasDaylightSaving.js +47 -31
- 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 +18 -5
- package/skills/gmt-arithmetic/SKILL.md +1 -1
- package/skills/gmt-basics/SKILL.md +10 -1
- package/skills/gmt-integration/SKILL.md +10 -5
- package/skills/gmt-timezone/SKILL.md +150 -21
- package/dist/internal/resolveReadingTimeZone.d.ts +0 -11
- package/dist/internal/resolveReadingTimeZone.js +0 -18
- package/dist/types/duration-unit.d.ts +0 -5
- /package/dist/types/{duration-unit.js → operating-schedule.js} +0 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import { instantFrom } from "../../internal/index.js";
|
|
3
|
+
import { isValidInstant } from "../../precision/validate/isValidInstant.js";
|
|
4
|
+
/**
|
|
5
|
+
* Report whether a cut-off has passed.
|
|
6
|
+
*
|
|
7
|
+
* The window to meet a cut-off is half-open, `[…, cutoff)`: at the cut-off instant itself it
|
|
8
|
+
* has closed, so `now` equal to `cutoff` is past. This matches the half-open rule GMT's
|
|
9
|
+
* intervals follow, and `timeToCutoff`, which is `PT0S` there.
|
|
10
|
+
*
|
|
11
|
+
* - Both arguments are exact: an instant (`Z`/offset) or a zoned string, as `cutoffAt`
|
|
12
|
+
* returns one. They are compared as instants, so the zone each is written in does not
|
|
13
|
+
* matter, and the two passes of a repeated hour are told apart by their offsets.
|
|
14
|
+
* - **The offset fixes the instant; a bracketed zone only resolves a rounded one.** An offset
|
|
15
|
+
* written to the minute that is the bracketed zone's sub-minute offset rounded
|
|
16
|
+
* (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
|
|
17
|
+
* `Temporal.ZonedDateTime.from` reads it, so a cut-off `cutoffAt` wrote is the instant it
|
|
18
|
+
* computed, except a wall time repeated inside a sub-minute offset change, which reads as
|
|
19
|
+
* its first pass (see `isValidInstant`). Otherwise the bracket is not checked: a zone that does not exist, or that
|
|
20
|
+
* disagrees with the offset, changes nothing.
|
|
21
|
+
* - `now` is the caller's: GMT does not read the clock here, so the answer is reproducible.
|
|
22
|
+
* - Returns `false` on invalid input, including `cutoffAt`'s `""` sentinel — which reads as
|
|
23
|
+
* "not past". Check the cut-off is not `""` before trusting a `false`.
|
|
24
|
+
*
|
|
25
|
+
* @param now ISO 8601 instant or zoned datetime string of the moment asked about
|
|
26
|
+
* @param cutoff ISO 8601 instant or zoned datetime string of the cut-off
|
|
27
|
+
* @returns true when now is at or after the cut-off, false otherwise or on invalid input
|
|
28
|
+
*
|
|
29
|
+
* @example isPastCutoff("2024-06-12T16:00:00Z", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // true
|
|
30
|
+
* @example isPastCutoff("2024-06-12T14:00:00Z", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // false
|
|
31
|
+
* @example isPastCutoff("2024-06-12T15:00:00Z", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // true (at the cut-off, the window has closed)
|
|
32
|
+
* @example isPastCutoff("2024-11-03T01:30:00-05:00[America/New_York]", "2024-11-03T01:30:00-04:00[America/New_York]") // true (the second 01:30 is an hour after the first)
|
|
33
|
+
* @example isPastCutoff("2024-06-12T16:00:00", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // false (a zoneless now is not a moment)
|
|
34
|
+
* @example isPastCutoff("2024-06-12T16:00:00Z", "") // false
|
|
35
|
+
*/
|
|
36
|
+
export function isPastCutoff(now, cutoff) {
|
|
37
|
+
try {
|
|
38
|
+
if (!isValidInstant(now) || !isValidInstant(cutoff)) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
return Temporal.Instant.compare(instantFrom(now), instantFrom(cutoff)) >= 0;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// Never throws (Core Rule 3): a hostile
|
|
45
|
+
// argument is invalid input, not an exception.
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Measure how far an actual time is from its plan: positive when late, negative when early.
|
|
3
|
+
*
|
|
4
|
+
* Every mode publishes a plan and records what happened, and measures the gap the same way. This
|
|
5
|
+
* is that gap; `classifyPunctuality` judges it against a tolerance.
|
|
6
|
+
*
|
|
7
|
+
* - **Exact elapsed time**, as an ISO 8601 duration with hours as the largest unit, so the value
|
|
8
|
+
* never depends on a calendar or a wall clock. A delay across a fall-back night is `PT1H`,
|
|
9
|
+
* never the `PT0S` a wall-clock subtraction reads; across a spring-forward it is `PT1H`, never
|
|
10
|
+
* `PT2H`. Two days late is `PT48H`, not `P2D`.
|
|
11
|
+
* - **Signed:** `actual` after `planned` is positive (late), before it negative (`"-PT5M"`,
|
|
12
|
+
* early), and equal is `"PT0S"`.
|
|
13
|
+
* - Both arguments are exact: an instant (`Z`/offset) or a zoned string. The zone each is written
|
|
14
|
+
* in does not matter. To show a schedule's local time, use `etaAtZone`.
|
|
15
|
+
* - **The offset fixes the instant; a bracketed zone only resolves a rounded one.** Temporal
|
|
16
|
+
* writes a zone's offset rounded to the minute, so an offset written to the minute that is the
|
|
17
|
+
* bracketed zone's sub-minute offset rounded (`-00:45[Africa/Monrovia]`, for −00:44:30) names
|
|
18
|
+
* the instant the zone gives, as `Temporal.ZonedDateTime.from` reads it. A zoned string GMT
|
|
19
|
+
* wrote is therefore measured from the instant it was written for, except a wall time
|
|
20
|
+
* repeated inside a sub-minute offset change, which reads as its first pass
|
|
21
|
+
* (for example `1952-10-15T23:59:59-11:20[Pacific/Niue]`; see `isValidInstant`). Otherwise the bracket is
|
|
22
|
+
* not checked: a zone that does not exist, or that disagrees with the offset, changes nothing.
|
|
23
|
+
* - Returns `""` on invalid input, including a zoneless wall time, which is not a moment.
|
|
24
|
+
*
|
|
25
|
+
* @param planned ISO 8601 instant or zoned datetime string of the planned time
|
|
26
|
+
* @param actual ISO 8601 instant or zoned datetime string of the actual (or compared) time
|
|
27
|
+
* @returns ISO 8601 duration from planned to actual, negative when early, or "" on invalid input
|
|
28
|
+
*
|
|
29
|
+
* @example scheduleDeviation("2024-06-15T10:00:00Z", "2024-06-15T10:14:00Z") // "PT14M"
|
|
30
|
+
* @example scheduleDeviation("2024-06-15T10:00:00Z", "2024-06-15T09:55:00Z") // "-PT5M" (five minutes early)
|
|
31
|
+
* @example scheduleDeviation("2024-06-15T10:00:00Z", "2024-06-15T10:00:00Z") // "PT0S"
|
|
32
|
+
* @example scheduleDeviation("2024-06-15T10:00:00Z", "2024-06-17T11:30:00Z") // "PT49H30M" (hours, never days)
|
|
33
|
+
* @example scheduleDeviation("2024-11-03T01:30:00-04:00[America/New_York]", "2024-11-03T01:30:00-05:00[America/New_York]") // "PT1H" (the same wall time, one hour later across the fall-back)
|
|
34
|
+
* @example scheduleDeviation("2024-06-15T10:00:00Z", "2024-06-15T12:14:00+02:00[Europe/Amsterdam]") // "PT14M" (the zone it is written in does not matter)
|
|
35
|
+
* @example scheduleDeviation("2024-06-15T10:00:00", "2024-06-15T10:14:00Z") // "" (a zoneless plan is not a moment)
|
|
36
|
+
*/
|
|
37
|
+
export declare function scheduleDeviation(planned: string, actual: string): string;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { instantFrom } from "../../internal/index.js";
|
|
2
|
+
import { isValidInstant } from "../../precision/validate/isValidInstant.js";
|
|
3
|
+
/**
|
|
4
|
+
* Measure how far an actual time is from its plan: positive when late, negative when early.
|
|
5
|
+
*
|
|
6
|
+
* Every mode publishes a plan and records what happened, and measures the gap the same way. This
|
|
7
|
+
* is that gap; `classifyPunctuality` judges it against a tolerance.
|
|
8
|
+
*
|
|
9
|
+
* - **Exact elapsed time**, as an ISO 8601 duration with hours as the largest unit, so the value
|
|
10
|
+
* never depends on a calendar or a wall clock. A delay across a fall-back night is `PT1H`,
|
|
11
|
+
* never the `PT0S` a wall-clock subtraction reads; across a spring-forward it is `PT1H`, never
|
|
12
|
+
* `PT2H`. Two days late is `PT48H`, not `P2D`.
|
|
13
|
+
* - **Signed:** `actual` after `planned` is positive (late), before it negative (`"-PT5M"`,
|
|
14
|
+
* early), and equal is `"PT0S"`.
|
|
15
|
+
* - Both arguments are exact: an instant (`Z`/offset) or a zoned string. The zone each is written
|
|
16
|
+
* in does not matter. To show a schedule's local time, use `etaAtZone`.
|
|
17
|
+
* - **The offset fixes the instant; a bracketed zone only resolves a rounded one.** Temporal
|
|
18
|
+
* writes a zone's offset rounded to the minute, so an offset written to the minute that is the
|
|
19
|
+
* bracketed zone's sub-minute offset rounded (`-00:45[Africa/Monrovia]`, for −00:44:30) names
|
|
20
|
+
* the instant the zone gives, as `Temporal.ZonedDateTime.from` reads it. A zoned string GMT
|
|
21
|
+
* wrote is therefore measured from the instant it was written for, except a wall time
|
|
22
|
+
* repeated inside a sub-minute offset change, which reads as its first pass
|
|
23
|
+
* (for example `1952-10-15T23:59:59-11:20[Pacific/Niue]`; see `isValidInstant`). Otherwise the bracket is
|
|
24
|
+
* not checked: a zone that does not exist, or that disagrees with the offset, changes nothing.
|
|
25
|
+
* - Returns `""` on invalid input, including a zoneless wall time, which is not a moment.
|
|
26
|
+
*
|
|
27
|
+
* @param planned ISO 8601 instant or zoned datetime string of the planned time
|
|
28
|
+
* @param actual ISO 8601 instant or zoned datetime string of the actual (or compared) time
|
|
29
|
+
* @returns ISO 8601 duration from planned to actual, negative when early, or "" on invalid input
|
|
30
|
+
*
|
|
31
|
+
* @example scheduleDeviation("2024-06-15T10:00:00Z", "2024-06-15T10:14:00Z") // "PT14M"
|
|
32
|
+
* @example scheduleDeviation("2024-06-15T10:00:00Z", "2024-06-15T09:55:00Z") // "-PT5M" (five minutes early)
|
|
33
|
+
* @example scheduleDeviation("2024-06-15T10:00:00Z", "2024-06-15T10:00:00Z") // "PT0S"
|
|
34
|
+
* @example scheduleDeviation("2024-06-15T10:00:00Z", "2024-06-17T11:30:00Z") // "PT49H30M" (hours, never days)
|
|
35
|
+
* @example scheduleDeviation("2024-11-03T01:30:00-04:00[America/New_York]", "2024-11-03T01:30:00-05:00[America/New_York]") // "PT1H" (the same wall time, one hour later across the fall-back)
|
|
36
|
+
* @example scheduleDeviation("2024-06-15T10:00:00Z", "2024-06-15T12:14:00+02:00[Europe/Amsterdam]") // "PT14M" (the zone it is written in does not matter)
|
|
37
|
+
* @example scheduleDeviation("2024-06-15T10:00:00", "2024-06-15T10:14:00Z") // "" (a zoneless plan is not a moment)
|
|
38
|
+
*/
|
|
39
|
+
export function scheduleDeviation(planned, actual) {
|
|
40
|
+
try {
|
|
41
|
+
if (!isValidInstant(planned) || !isValidInstant(actual)) {
|
|
42
|
+
return "";
|
|
43
|
+
}
|
|
44
|
+
return instantFrom(planned)
|
|
45
|
+
.until(instantFrom(actual), { largestUnit: "hours" })
|
|
46
|
+
.toString();
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// Never throws (Core Rule 3): a hostile
|
|
50
|
+
// argument is invalid input, not an exception.
|
|
51
|
+
return "";
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Measure the time left until a cut-off, negative once it has passed.
|
|
3
|
+
*
|
|
4
|
+
* - Exact elapsed time as an ISO 8601 duration with hours as the largest unit, so the value
|
|
5
|
+
* never depends on a calendar: across a fall-back night, 17:00 to 17:00 the next day is
|
|
6
|
+
* `PT25H`. It is `PT0S` at the cut-off itself, where `isPastCutoff` turns `true`.
|
|
7
|
+
* - Negative (`"-PT1H"`) once `now` is after the cut-off: how late it is.
|
|
8
|
+
* - Both arguments are exact: an instant (`Z`/offset) or a zoned string, as `cutoffAt`
|
|
9
|
+
* returns one. The zone each is written in does not matter.
|
|
10
|
+
* - **The offset fixes the instant; a bracketed zone only resolves a rounded one.** An offset
|
|
11
|
+
* written to the minute that is the bracketed zone's sub-minute offset rounded
|
|
12
|
+
* (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
|
|
13
|
+
* `Temporal.ZonedDateTime.from` reads it, so a cut-off `cutoffAt` wrote is the instant it
|
|
14
|
+
* computed, except a wall time repeated inside a sub-minute offset change, which reads as
|
|
15
|
+
* its first pass (see `isValidInstant`). Otherwise the bracket is not checked: a zone that does not exist, or that
|
|
16
|
+
* disagrees with the offset, changes nothing.
|
|
17
|
+
* - `now` is the caller's: GMT does not read the clock here.
|
|
18
|
+
* - Returns `""` on invalid input, including `cutoffAt`'s `""` sentinel.
|
|
19
|
+
*
|
|
20
|
+
* @param now ISO 8601 instant or zoned datetime string of the moment asked about
|
|
21
|
+
* @param cutoff ISO 8601 instant or zoned datetime string of the cut-off
|
|
22
|
+
* @returns ISO 8601 duration from now to the cut-off, negative after it, or "" on invalid input
|
|
23
|
+
*
|
|
24
|
+
* @example timeToCutoff("2024-06-10T15:00:00Z", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // "PT48H"
|
|
25
|
+
* @example timeToCutoff("2024-06-12T13:30:00Z", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // "PT1H30M"
|
|
26
|
+
* @example timeToCutoff("2024-06-12T16:00:00Z", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // "-PT1H" (an hour past the cut-off)
|
|
27
|
+
* @example timeToCutoff("2024-06-12T15:00:00Z", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // "PT0S"
|
|
28
|
+
* @example timeToCutoff("2024-11-02T17:00:00-04:00[America/New_York]", "2024-11-03T17:00:00-05:00[America/New_York]") // "PT25H" (across the fall-back)
|
|
29
|
+
* @example timeToCutoff("2024-06-12T16:00:00Z", "") // ""
|
|
30
|
+
*/
|
|
31
|
+
export declare function timeToCutoff(now: string, cutoff: string): string;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { instantFrom } from "../../internal/index.js";
|
|
2
|
+
import { isValidInstant } from "../../precision/validate/isValidInstant.js";
|
|
3
|
+
/**
|
|
4
|
+
* Measure the time left until a cut-off, negative once it has passed.
|
|
5
|
+
*
|
|
6
|
+
* - Exact elapsed time as an ISO 8601 duration with hours as the largest unit, so the value
|
|
7
|
+
* never depends on a calendar: across a fall-back night, 17:00 to 17:00 the next day is
|
|
8
|
+
* `PT25H`. It is `PT0S` at the cut-off itself, where `isPastCutoff` turns `true`.
|
|
9
|
+
* - Negative (`"-PT1H"`) once `now` is after the cut-off: how late it is.
|
|
10
|
+
* - Both arguments are exact: an instant (`Z`/offset) or a zoned string, as `cutoffAt`
|
|
11
|
+
* returns one. The zone each is written in does not matter.
|
|
12
|
+
* - **The offset fixes the instant; a bracketed zone only resolves a rounded one.** An offset
|
|
13
|
+
* written to the minute that is the bracketed zone's sub-minute offset rounded
|
|
14
|
+
* (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
|
|
15
|
+
* `Temporal.ZonedDateTime.from` reads it, so a cut-off `cutoffAt` wrote is the instant it
|
|
16
|
+
* computed, except a wall time repeated inside a sub-minute offset change, which reads as
|
|
17
|
+
* its first pass (see `isValidInstant`). Otherwise the bracket is not checked: a zone that does not exist, or that
|
|
18
|
+
* disagrees with the offset, changes nothing.
|
|
19
|
+
* - `now` is the caller's: GMT does not read the clock here.
|
|
20
|
+
* - Returns `""` on invalid input, including `cutoffAt`'s `""` sentinel.
|
|
21
|
+
*
|
|
22
|
+
* @param now ISO 8601 instant or zoned datetime string of the moment asked about
|
|
23
|
+
* @param cutoff ISO 8601 instant or zoned datetime string of the cut-off
|
|
24
|
+
* @returns ISO 8601 duration from now to the cut-off, negative after it, or "" on invalid input
|
|
25
|
+
*
|
|
26
|
+
* @example timeToCutoff("2024-06-10T15:00:00Z", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // "PT48H"
|
|
27
|
+
* @example timeToCutoff("2024-06-12T13:30:00Z", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // "PT1H30M"
|
|
28
|
+
* @example timeToCutoff("2024-06-12T16:00:00Z", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // "-PT1H" (an hour past the cut-off)
|
|
29
|
+
* @example timeToCutoff("2024-06-12T15:00:00Z", "2024-06-12T17:00:00+02:00[Europe/Amsterdam]") // "PT0S"
|
|
30
|
+
* @example timeToCutoff("2024-11-02T17:00:00-04:00[America/New_York]", "2024-11-03T17:00:00-05:00[America/New_York]") // "PT25H" (across the fall-back)
|
|
31
|
+
* @example timeToCutoff("2024-06-12T16:00:00Z", "") // ""
|
|
32
|
+
*/
|
|
33
|
+
export function timeToCutoff(now, cutoff) {
|
|
34
|
+
try {
|
|
35
|
+
if (!isValidInstant(now) || !isValidInstant(cutoff)) {
|
|
36
|
+
return "";
|
|
37
|
+
}
|
|
38
|
+
return instantFrom(now)
|
|
39
|
+
.until(instantFrom(cutoff), { largestUnit: "hours" })
|
|
40
|
+
.toString();
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// Never throws (Core Rule 3): a hostile
|
|
44
|
+
// argument is invalid input, not an exception.
|
|
45
|
+
return "";
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -8,6 +8,13 @@
|
|
|
8
8
|
* - `arrivalUtc` is any instant `isValidInstant` accepts — `Z`, an offset, or an offset with a
|
|
9
9
|
* bracketed zone. Only the instant is read; a bracketed zone in the input is not the zone the
|
|
10
10
|
* result is rendered in, `targetZone` is.
|
|
11
|
+
* - **The offset fixes the instant; a bracketed zone only resolves a rounded one.** An offset
|
|
12
|
+
* written to the minute that is the bracketed zone's sub-minute offset rounded
|
|
13
|
+
* (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
|
|
14
|
+
* `Temporal.ZonedDateTime.from` reads it, so rendering this function's own result again gives
|
|
15
|
+
* the same moment, except a wall time repeated inside a sub-minute offset change, which
|
|
16
|
+
* reads as its first pass (see `isValidInstant`). A zone that does not exist, or that disagrees with the offset, is not
|
|
17
|
+
* checked and changes nothing.
|
|
11
18
|
* - **No disambiguation arises.** The input is a moment, and a moment has exactly one wall
|
|
12
19
|
* time in any zone, so the `disambiguation` vocabulary of `resolveLocal` does not apply here.
|
|
13
20
|
* On a fall-back night two moments an hour apart print the same wall time with different
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { instantFrom } from "../../internal/index.js";
|
|
2
2
|
import { isValidInstant } from "../../precision/validate/isValidInstant.js";
|
|
3
3
|
import { isValidTimeZone } from "../../zoned/validate/isValidTimeZone.js";
|
|
4
4
|
/**
|
|
@@ -11,6 +11,13 @@ import { isValidTimeZone } from "../../zoned/validate/isValidTimeZone.js";
|
|
|
11
11
|
* - `arrivalUtc` is any instant `isValidInstant` accepts — `Z`, an offset, or an offset with a
|
|
12
12
|
* bracketed zone. Only the instant is read; a bracketed zone in the input is not the zone the
|
|
13
13
|
* result is rendered in, `targetZone` is.
|
|
14
|
+
* - **The offset fixes the instant; a bracketed zone only resolves a rounded one.** An offset
|
|
15
|
+
* written to the minute that is the bracketed zone's sub-minute offset rounded
|
|
16
|
+
* (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
|
|
17
|
+
* `Temporal.ZonedDateTime.from` reads it, so rendering this function's own result again gives
|
|
18
|
+
* the same moment, except a wall time repeated inside a sub-minute offset change, which
|
|
19
|
+
* reads as its first pass (see `isValidInstant`). A zone that does not exist, or that disagrees with the offset, is not
|
|
20
|
+
* checked and changes nothing.
|
|
14
21
|
* - **No disambiguation arises.** The input is a moment, and a moment has exactly one wall
|
|
15
22
|
* time in any zone, so the `disambiguation` vocabulary of `resolveLocal` does not apply here.
|
|
16
23
|
* On a fall-back night two moments an hour apart print the same wall time with different
|
|
@@ -41,9 +48,7 @@ export function etaAtZone(arrivalUtc, targetZone) {
|
|
|
41
48
|
if (!isValidInstant(arrivalUtc) || !isValidTimeZone(targetZone)) {
|
|
42
49
|
return "";
|
|
43
50
|
}
|
|
44
|
-
return
|
|
45
|
-
.toZonedDateTimeISO(targetZone)
|
|
46
|
-
.toString();
|
|
51
|
+
return instantFrom(arrivalUtc).toZonedDateTimeISO(targetZone).toString();
|
|
47
52
|
}
|
|
48
53
|
catch {
|
|
49
54
|
// Never throws (Core Rule 3): a hostile
|
package/dist/transport/index.js
CHANGED
|
@@ -2,26 +2,31 @@
|
|
|
2
2
|
* A jurisdiction's working week: which weekdays are weekend, which dates are holidays, and
|
|
3
3
|
* which locality the answer is for.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* Duplicates are ignored; all seven days being weekend leaves no business day and is invalid.
|
|
9
|
-
* - `holidays` is ISO PlainDate strings (`"2024-07-04"`), never datetimes. Order does not
|
|
10
|
-
* matter and duplicates are ignored. GMT bundles no holiday table — holiday data is
|
|
11
|
-
* jurisdictional, changes annually and sometimes with days of notice, so the caller supplies
|
|
12
|
-
* it. No exchange or currency calendar ships either; an opt-in data subpath for them is
|
|
13
|
-
* planned, not published.
|
|
14
|
-
* - `timeZone` is an IANA identifier recording which locality the calendar describes. The
|
|
15
|
-
* business-day functions never read it: they take and return local dates, so the answer is
|
|
16
|
-
* the same whatever it says. It is what a caller holding an *instant* needs, to reduce that
|
|
17
|
-
* instant to a local date first — with `floorToZone` or `getZonedDateTimeFields` — before
|
|
18
|
-
* asking a business-day question.
|
|
5
|
+
* GMT bundles no holiday table — holiday data is jurisdictional, changes annually and sometimes
|
|
6
|
+
* with days of notice, so the caller supplies it. No exchange or currency calendar ships either;
|
|
7
|
+
* an opt-in data subpath for them is planned, not published.
|
|
19
8
|
*
|
|
20
9
|
* Narrow a candidate with `isValidBusinessCalendar`. Compose two jurisdictions' calendars with
|
|
21
10
|
* `mergeCalendars`.
|
|
22
11
|
*/
|
|
23
12
|
export type BusinessCalendar = {
|
|
13
|
+
/**
|
|
14
|
+
* The ISO weekday numbers closed every week, 1 (Monday) through 7 (Sunday). It is explicit
|
|
15
|
+
* because Saturday–Sunday is not universal: much of the Middle East is Friday–Saturday
|
|
16
|
+
* (`[5, 6]`), and some markets keep a one-day weekend (`[7]`). `[]` means no weekly closure,
|
|
17
|
+
* duplicates are ignored, and all seven days leave no business day and are invalid.
|
|
18
|
+
*/
|
|
24
19
|
weekend: number[];
|
|
20
|
+
/**
|
|
21
|
+
* The dates closed in addition to the weekend, as ISO PlainDate strings (`"2024-07-04"`), never
|
|
22
|
+
* datetimes. Order does not matter and duplicates are ignored.
|
|
23
|
+
*/
|
|
25
24
|
holidays: string[];
|
|
25
|
+
/**
|
|
26
|
+
* The time zone recording which locality the calendar describes, an IANA name or a UTC offset. It
|
|
27
|
+
* must be a valid zone, but the business-day functions never use it: they take and return local
|
|
28
|
+
* dates, so the answer is the same whatever it says. A caller holding an instant uses it to
|
|
29
|
+
* reduce that instant to a local date first, with `floorToZone` or `getZonedDateTimeFields`.
|
|
30
|
+
*/
|
|
26
31
|
timeZone: string;
|
|
27
32
|
};
|
|
@@ -4,8 +4,20 @@
|
|
|
4
4
|
* add domain-specific fields like `timeZone` or `epochUnit`.
|
|
5
5
|
*/
|
|
6
6
|
export interface CalendarOptions {
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* The moment the day label is measured from, as an ISO string in the same form as the value
|
|
9
|
+
* being formatted. A value on the same calendar day reads "today", one on the next day
|
|
10
|
+
* "tomorrow".
|
|
11
|
+
*
|
|
12
|
+
* @defaultValue The current date and time.
|
|
13
|
+
*/
|
|
8
14
|
reference?: string;
|
|
9
|
-
/**
|
|
10
|
-
|
|
15
|
+
/**
|
|
16
|
+
* The length of the time-of-day part, as the `timeStyle` of `Intl.DateTimeFormat`. `"short"`
|
|
17
|
+
* writes hours and minutes, `"medium"` adds seconds, `"long"` adds the short time zone name
|
|
18
|
+
* ("EDT") and `"full"` the long one ("Eastern Daylight Time"). Any other value returns `""`.
|
|
19
|
+
*
|
|
20
|
+
* @defaultValue `"short"`
|
|
21
|
+
*/
|
|
22
|
+
timeStyle?: "short" | "medium" | "long" | "full";
|
|
11
23
|
}
|
|
@@ -1 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A date field `cycleDate`, `cycleDateTime` and `cycleZoned` can step and wrap: `"year"`,
|
|
3
|
+
* `"month"` or `"day"`. Narrower than `DateUnit` on purpose: `"week"` is a unit, not a field a
|
|
4
|
+
* date can be set to with Temporal's `with()`.
|
|
5
|
+
*/
|
|
1
6
|
export type DateCycleField = "year" | "month" | "day";
|
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
import type { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
/**
|
|
3
|
+
* A date field of an ISO 8601 duration, in the plural: `"years"`, `"months"`, `"weeks"` or
|
|
4
|
+
* `"days"`. It names the unit an amount of dates is given in or a date difference is measured in.
|
|
5
|
+
*/
|
|
2
6
|
export type DateDurationUnit = keyof Pick<Temporal.DurationLike, "years" | "months" | "weeks" | "days">;
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import type { DateCycleField } from "./date-cycle-field.js";
|
|
2
2
|
import type { TimeCycleField } from "./time-cycle-field.js";
|
|
3
|
+
/**
|
|
4
|
+
* A date or time field `cycleDateTime` and `cycleZoned` can step and wrap: any `DateCycleField`
|
|
5
|
+
* or `TimeCycleField`.
|
|
6
|
+
*/
|
|
3
7
|
export type DateTimeCycleField = DateCycleField | TimeCycleField;
|
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
import type { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
/**
|
|
3
|
+
* Any field of an ISO 8601 duration, in the plural, from `"years"` down to `"nanoseconds"`. It
|
|
4
|
+
* names the unit an amount of time is given in or a difference is measured in.
|
|
5
|
+
*/
|
|
2
6
|
export type DateTimeDurationUnit = keyof Temporal.DurationLike;
|
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
import type { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
/**
|
|
3
|
+
* A date or time unit in the singular, from `"year"` down to `"nanosecond"`, as Temporal's
|
|
4
|
+
* rounding and difference options name units.
|
|
5
|
+
*/
|
|
2
6
|
export type DateTimeUnit = Temporal.TimeUnit | Temporal.DateUnit;
|
|
@@ -1,2 +1,10 @@
|
|
|
1
1
|
import type { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
/**
|
|
3
|
+
* How a local wall time that a time zone's clock shows twice or never is resolved to an instant,
|
|
4
|
+
* as Temporal's `disambiguation` option (`Temporal.ZonedDateTime.from(item, { disambiguation })`).
|
|
5
|
+
*
|
|
6
|
+
* `"compatible"` takes the earlier instant of a repeated time and moves a skipped time forward by
|
|
7
|
+
* the length of the gap. `"earlier"` and `"later"` take that side in both cases, and `"reject"`
|
|
8
|
+
* accepts neither.
|
|
9
|
+
*/
|
|
2
10
|
export type Disambiguation = Temporal.ToInstantOptions["disambiguation"];
|
|
@@ -1,2 +1,10 @@
|
|
|
1
1
|
import type { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
/**
|
|
3
|
+
* The anchor a calendar-unit duration operation is measured from, as Temporal's `relativeTo`
|
|
4
|
+
* option takes it (`Duration.prototype.round`, `Duration.prototype.total`, `Duration.compare`).
|
|
5
|
+
*
|
|
6
|
+
* Years, months and weeks have no fixed length, so any operation touching them needs a starting
|
|
7
|
+
* point; an operation on days and time units alone does not. A string is an ISO 8601 date or
|
|
8
|
+
* date-time, or a zoned date-time with its time zone annotation.
|
|
9
|
+
*/
|
|
2
10
|
export type DurationRelativeTo = Temporal.PlainDateTime | Temporal.ZonedDateTime | Temporal.PlainDateTimeLike | Temporal.ZonedDateTimeLike | string;
|
|
@@ -1,6 +1,34 @@
|
|
|
1
1
|
import type { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
/**
|
|
3
|
+
* Precision options for the ISO 8601 duration string a `diff*AsDuration` function writes, passed
|
|
4
|
+
* to `Temporal.Duration.prototype.toString()`.
|
|
5
|
+
*
|
|
6
|
+
* They are kept apart from `RoundingOptions`, and two of them carry a `toString` prefix, because
|
|
7
|
+
* both sets have a smallest unit and a rounding mode with different Temporal types: one rounds
|
|
8
|
+
* the difference, the other the text written from it.
|
|
9
|
+
*/
|
|
2
10
|
export type DurationStringOptions = {
|
|
11
|
+
/**
|
|
12
|
+
* The smallest unit written in the string: `"second"`, `"millisecond"`, `"microsecond"` or
|
|
13
|
+
* `"nanosecond"`. It sets how many fractional-second digits appear and takes precedence over
|
|
14
|
+
* `fractionalSecondDigits`. `"minute"` is refused, as `Temporal.Duration` refuses it.
|
|
15
|
+
*
|
|
16
|
+
* @defaultValue None. The precision comes from `fractionalSecondDigits`.
|
|
17
|
+
*/
|
|
3
18
|
toStringSmallestUnit?: Temporal.ToStringPrecisionOptions["smallestUnit"];
|
|
19
|
+
/**
|
|
20
|
+
* The number of fractional-second digits written: `0` to `9` writes exactly that many, and
|
|
21
|
+
* `"auto"` writes as many as the duration needs, with no trailing zeros. It has no effect when
|
|
22
|
+
* `toStringSmallestUnit` is given.
|
|
23
|
+
*
|
|
24
|
+
* @defaultValue `"auto"`, Temporal's default.
|
|
25
|
+
*/
|
|
4
26
|
fractionalSecondDigits?: Temporal.ToStringPrecisionOptions["fractionalSecondDigits"];
|
|
27
|
+
/**
|
|
28
|
+
* How the duration is rounded when the precision asked for drops digits. `"trunc"` cuts them
|
|
29
|
+
* off; `"halfExpand"` rounds to the nearest value, a half going away from zero.
|
|
30
|
+
*
|
|
31
|
+
* @defaultValue `"trunc"`, Temporal's default.
|
|
32
|
+
*/
|
|
5
33
|
toStringRoundingMode?: Temporal.ToStringPrecisionOptions["roundingMode"];
|
|
6
34
|
};
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
export type FiscalPattern = "4-5-4" | "4-4-5" | "5-4-4";
|
|
12
12
|
/** Caller-supplied 52/53-week fiscal calendar. GMT bundles none. */
|
|
13
13
|
export interface FiscalCalendar {
|
|
14
|
-
/**
|
|
14
|
+
/** The weeks per period within each quarter. */
|
|
15
15
|
pattern: FiscalPattern;
|
|
16
16
|
/**
|
|
17
17
|
* The year-end rule, stated as one ISO date: fiscal years end on this date's **weekday**,
|
|
@@ -1 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How many fractional-second digits an ISO string is written with, as Temporal's
|
|
3
|
+
* `fractionalSecondDigits` option of `toString()`. `0` to `9` writes exactly that many digits,
|
|
4
|
+
* and `"auto"` writes as many as the value needs, with no trailing zeros.
|
|
5
|
+
*/
|
|
1
6
|
export type FractionalDigit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | "auto";
|
|
@@ -14,21 +14,31 @@ export type FreeTimeFirstDay = "eventDay" | "nextDay";
|
|
|
14
14
|
/**
|
|
15
15
|
* The tariff terms a free-time count needs. Free time is set by carrier, lane, trade and service
|
|
16
16
|
* contract, never by port, so every term is a parameter and no counting term has a default.
|
|
17
|
-
*
|
|
18
|
-
* - `basis`: `"calendar"` counts every local day, so a weekend burns two free days while the
|
|
19
|
-
* terminal is shut; `"working"` counts only the days `calendar` marks as working, and the
|
|
20
|
-
* clock does not run on weekends or holidays.
|
|
21
|
-
* - `timeZone`: the IANA identifier of the terminal, depot or yard whose local midnight ends a
|
|
22
|
-
* day. GMT does not resolve a port or terminal code to a zone. A fixed offset such as
|
|
23
|
-
* `"+02:00"` is accepted, as `isValidTimeZone` accepts it, but observes no DST.
|
|
24
|
-
* - `firstDay`: `"eventDay"` or `"nextDay"`, see `FreeTimeFirstDay`.
|
|
25
|
-
* - `calendar`: the terminal's `BusinessCalendar`, required when `basis` is `"working"` and not
|
|
26
|
-
* read when it is `"calendar"`. Its `timeZone` field is not read either, as the business-day
|
|
27
|
-
* functions never read it: `timeZone` above is the counting zone.
|
|
28
17
|
*/
|
|
29
18
|
export type FreeTimeOptions = {
|
|
19
|
+
/**
|
|
20
|
+
* Which days use up free time. `"calendar"` counts every local day, so a weekend burns two free
|
|
21
|
+
* days while the terminal is shut; `"working"` counts only the days `calendar` marks as
|
|
22
|
+
* working, and the clock does not run on weekends or holidays.
|
|
23
|
+
*/
|
|
30
24
|
basis: FreeTimeBasis;
|
|
25
|
+
/**
|
|
26
|
+
* The time zone of the terminal, depot or yard whose local midnight ends a day: an IANA name or a
|
|
27
|
+
* UTC offset. GMT does not resolve a port or terminal code to a zone. A UTC offset such as
|
|
28
|
+
* `"+02:00"` observes no DST.
|
|
29
|
+
*/
|
|
31
30
|
timeZone: string;
|
|
31
|
+
/**
|
|
32
|
+
* Where free time starts. `"eventDay"` makes the day of the event that starts the clock free
|
|
33
|
+
* day one; `"nextDay"` starts free time on the following counted day.
|
|
34
|
+
*/
|
|
32
35
|
firstDay: FreeTimeFirstDay;
|
|
36
|
+
/**
|
|
37
|
+
* The terminal's working week and holidays. It is required when a counting basis is
|
|
38
|
+
* `"working"` and not read otherwise. Its own `timeZone` is not used: `timeZone` above is the
|
|
39
|
+
* counting zone.
|
|
40
|
+
*
|
|
41
|
+
* @defaultValue None. A `"working"` basis without it is invalid input.
|
|
42
|
+
*/
|
|
33
43
|
calendar?: BusinessCalendar;
|
|
34
44
|
};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -11,13 +11,13 @@ export * from "./datetime-format-options.js";
|
|
|
11
11
|
export * from "./disambiguation.js";
|
|
12
12
|
export * from "./duration-relative-to.js";
|
|
13
13
|
export * from "./duration-string-options.js";
|
|
14
|
-
export * from "./duration-unit.js";
|
|
15
14
|
export * from "./fiscal-calendar.js";
|
|
16
15
|
export * from "./fractional-digit.js";
|
|
17
16
|
export * from "./free-time-options.js";
|
|
18
17
|
export * from "./interval.js";
|
|
19
18
|
export * from "./now-unit.js";
|
|
20
19
|
export * from "./offset.js";
|
|
20
|
+
export * from "./operating-schedule.js";
|
|
21
21
|
export * from "./overflow.js";
|
|
22
22
|
export * from "./relative-date-time-unit.js";
|
|
23
23
|
export * from "./relative-date-unit.js";
|
|
@@ -30,6 +30,7 @@ export * from "./rounding-options.js";
|
|
|
30
30
|
export * from "./time-cycle-field.js";
|
|
31
31
|
export * from "./time-duration-unit.js";
|
|
32
32
|
export * from "./time-unit.js";
|
|
33
|
+
export * from "./transport-timestamps.js";
|
|
33
34
|
export * from "./unix-now-unit.js";
|
|
34
35
|
export * from "./utc-now-unit.js";
|
|
35
36
|
export * from "./zone-bucket-unit.js";
|
package/dist/types/index.js
CHANGED
|
@@ -11,13 +11,13 @@ export * from "./datetime-format-options.js";
|
|
|
11
11
|
export * from "./disambiguation.js";
|
|
12
12
|
export * from "./duration-relative-to.js";
|
|
13
13
|
export * from "./duration-string-options.js";
|
|
14
|
-
export * from "./duration-unit.js";
|
|
15
14
|
export * from "./fiscal-calendar.js";
|
|
16
15
|
export * from "./fractional-digit.js";
|
|
17
16
|
export * from "./free-time-options.js";
|
|
18
17
|
export * from "./interval.js";
|
|
19
18
|
export * from "./now-unit.js";
|
|
20
19
|
export * from "./offset.js";
|
|
20
|
+
export * from "./operating-schedule.js";
|
|
21
21
|
export * from "./overflow.js";
|
|
22
22
|
export * from "./relative-date-time-unit.js";
|
|
23
23
|
export * from "./relative-date-unit.js";
|
|
@@ -30,6 +30,7 @@ export * from "./rounding-options.js";
|
|
|
30
30
|
export * from "./time-cycle-field.js";
|
|
31
31
|
export * from "./time-duration-unit.js";
|
|
32
32
|
export * from "./time-unit.js";
|
|
33
|
+
export * from "./transport-timestamps.js";
|
|
33
34
|
export * from "./unix-now-unit.js";
|
|
34
35
|
export * from "./utc-now-unit.js";
|
|
35
36
|
export * from "./zone-bucket-unit.js";
|
package/dist/types/interval.d.ts
CHANGED
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
* RFC 5545 `DTEND` is non-inclusive). Intervals that touch share no instant.
|
|
6
6
|
* - Both endpoints are instants: an offset (`Z`, `±HH:MM`) is required, a bracketed IANA zone is
|
|
7
7
|
* optional, and the two may name different zones. Leap seconds are rejected; a `[u-ca=...]`
|
|
8
|
-
* annotation is ignored, as `Temporal.Instant.from` ignores it.
|
|
8
|
+
* annotation is ignored, as `Temporal.Instant.from` ignores it. The offset fixes the instant;
|
|
9
|
+
* an offset written to the minute that is the bracketed zone's sub-minute offset rounded
|
|
10
|
+
* (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives.
|
|
9
11
|
* - `start === end` (as instants) is a valid, empty interval: it has a position but contains no
|
|
10
12
|
* instant. `start` after `end` is invalid.
|
|
11
13
|
*
|
|
@@ -13,6 +15,11 @@
|
|
|
13
15
|
* `plain|utc|zoned|unix/interval` functions take positional strings and a different model.
|
|
14
16
|
*/
|
|
15
17
|
export type Interval = {
|
|
18
|
+
/** The first instant inside the interval, as an ISO 8601 instant string with an offset. */
|
|
16
19
|
start: string;
|
|
20
|
+
/**
|
|
21
|
+
* The first instant after the interval, as an ISO 8601 instant string with an offset; it is
|
|
22
|
+
* not itself inside. It may equal `start`, which makes the interval empty, but not precede it.
|
|
23
|
+
*/
|
|
17
24
|
end: string;
|
|
18
25
|
};
|
package/dist/types/offset.d.ts
CHANGED
|
@@ -1,2 +1,11 @@
|
|
|
1
1
|
import type { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
/**
|
|
3
|
+
* What to do when the UTC offset written in a zoned value disagrees with its time zone, as
|
|
4
|
+
* Temporal's `offset` option (`Temporal.ZonedDateTime.prototype.with(item, { offset })`). It is
|
|
5
|
+
* used alongside `Disambiguation`.
|
|
6
|
+
*
|
|
7
|
+
* `"use"` keeps the instant the offset names, `"ignore"` keeps the wall time and takes the offset
|
|
8
|
+
* from the zone, `"prefer"` keeps the offset when it is valid for the zone and otherwise takes
|
|
9
|
+
* the zone's, and `"reject"` refuses the mismatch.
|
|
10
|
+
*/
|
|
2
11
|
export type Offset = Temporal.ZonedDateTimeAssignmentOptions["offset"];
|