@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
|
@@ -15,8 +15,8 @@ import type { ZoneBucketUnit } from "../../types/index.js";
|
|
|
15
15
|
* - The range is half-open: an `end` landing exactly on a boundary does not open that bucket.
|
|
16
16
|
* A zero-length range mid-bucket still returns the one bucket holding it; on a boundary it
|
|
17
17
|
* returns `[]`.
|
|
18
|
-
* - Both endpoints are read in `timeZone`.
|
|
19
|
-
* `floorToZone`.
|
|
18
|
+
* - Both endpoints are read in `timeZone`. A bracketed zone they carry never supplies the
|
|
19
|
+
* zone, as in `floorToZone`.
|
|
20
20
|
* - Weeks start on Monday (ISO 8601). `unit` is the same four-unit set `floorToZone` takes,
|
|
21
21
|
* singular or plural, which `isValidZoneBucketUnit` narrows.
|
|
22
22
|
* - A local boundary that does not exist is not invented: the day Samoa deleted crossing the
|
|
@@ -29,11 +29,18 @@ import type { ZoneBucketUnit } from "../../types/index.js";
|
|
|
29
29
|
* if a zone ever presented more transitions inside one bucket than the stepper walks — no
|
|
30
30
|
* IANA zone does, and the whole table was swept to confirm it. A truncated list would be
|
|
31
31
|
* worse than the sentinel, so none is returned in any of those cases.
|
|
32
|
+
* - **Limit at an offset with seconds.** The instant is placed in the offset's whole-minute zone,
|
|
33
|
+
* moved by its seconds, and the moved instant must be inside Temporal's range. So within the
|
|
34
|
+
* offset's seconds (under a minute) of the last instant Temporal supports
|
|
35
|
+
* (`+275760-09-13T00:00:00Z`) for an offset east of UTC, or of the first
|
|
36
|
+
* (`-271821-04-20T00:00:00Z`) for one west, this returns `[]`. An offset to the minute has no
|
|
37
|
+
* such limit.
|
|
32
38
|
*
|
|
33
39
|
* @param start ISO 8601 instant string for the range start (inclusive)
|
|
34
40
|
* @param end ISO 8601 instant string for the range end (exclusive)
|
|
35
|
-
* @param unit bucket unit ("
|
|
36
|
-
* @param timeZone IANA
|
|
41
|
+
* @param unit bucket unit ("month" | "week" | "day" | "hour", or its plural)
|
|
42
|
+
* @param timeZone IANA name or UTC offset the buckets are computed in: a time zone identifier
|
|
43
|
+
* (`+05:30`, `+0530`, `-08`) or a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
|
|
37
44
|
* @returns array of UTC instant strings ending in "Z", or [] on invalid input
|
|
38
45
|
*
|
|
39
46
|
* @example bucketRange("2024-06-15T03:00:00Z", "2024-06-17T03:00:00Z", "day", "America/New_York") // ["2024-06-14T04:00:00Z", "2024-06-15T04:00:00Z", "2024-06-16T04:00:00Z"]
|
|
@@ -45,5 +52,6 @@ import type { ZoneBucketUnit } from "../../types/index.js";
|
|
|
45
52
|
* @example bucketRange("2024-06-16T00:00:00Z", "2024-06-15T00:00:00Z", "day", "UTC") // [] (start after end)
|
|
46
53
|
* @example bucketRange("2024-06-15T03:00:00Z", "2024-06-17T03:00:00Z", "days", "America/New_York") // ["2024-06-14T04:00:00Z", "2024-06-15T04:00:00Z", "2024-06-16T04:00:00Z"] (plural unit name)
|
|
47
54
|
* @example bucketRange("2024-06-15T03:00:00Z", "2024-06-17T03:00:00Z", "year", "UTC") // [] (not a bucketing unit)
|
|
55
|
+
* @example bucketRange("1970-01-01T00:00:00Z", "1970-01-02T01:00:00Z", "day", "-00:44:30") // ["1969-12-31T00:44:30Z", "1970-01-01T00:44:30Z", "1970-01-02T00:44:30Z"]
|
|
48
56
|
*/
|
|
49
57
|
export declare function bucketRange(start: string, end: string, unit: Temporal.SmallestUnit<ZoneBucketUnit>, timeZone: string): string[];
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
-
import {
|
|
2
|
+
import { frameInstant, frameZoned, instantFrom, nextZonedBucketStart, zonedUnitStart, zoneFrame, } from "../../internal/index.js";
|
|
3
3
|
import { isValidInstant } from "../../precision/validate/index.js";
|
|
4
|
-
import { isValidTimeZone } from "../../zoned/validate/index.js";
|
|
5
4
|
import { isValidZoneBucketUnit } from "../validate/index.js";
|
|
6
5
|
import { resolveDateTimeUnit } from "../../internal/resolveDateTimeUnit.js";
|
|
6
|
+
import { certainlyTouchesMoreBuckets } from "../../internal/zoneBucketCap.js";
|
|
7
7
|
/**
|
|
8
8
|
* Buckets a single call will return before giving up.
|
|
9
9
|
*
|
|
@@ -12,58 +12,6 @@ import { resolveDateTimeUnit } from "../../internal/resolveDateTimeUnit.js";
|
|
|
12
12
|
* months — past anything a caller renders or aggregates in one pass.
|
|
13
13
|
*/
|
|
14
14
|
const MAX_BUCKETS = 10_000;
|
|
15
|
-
const NANOSECONDS_PER_HOUR = 3600000000000n;
|
|
16
|
-
/**
|
|
17
|
-
* The longest wall-clock stretch of each unit. Any wall-clock interval this long holds a unit
|
|
18
|
-
* start: an hour holds an hour start, 24 hours a midnight, 7 days a Monday, 31 days a first of
|
|
19
|
-
* the month.
|
|
20
|
-
*/
|
|
21
|
-
const LONGEST_UNIT_NANOSECONDS = {
|
|
22
|
-
hour: NANOSECONDS_PER_HOUR,
|
|
23
|
-
day: 24n * NANOSECONDS_PER_HOUR,
|
|
24
|
-
week: 168n * NANOSECONDS_PER_HOUR,
|
|
25
|
-
month: 744n * NANOSECONDS_PER_HOUR,
|
|
26
|
-
};
|
|
27
|
-
/** Offset transitions read before the pre-count gives up and leaves the answer to the walk. */
|
|
28
|
-
const MAX_PRECOUNT_TRANSITIONS = 4_096;
|
|
29
|
-
/**
|
|
30
|
-
* True when `[start, end)` certainly touches more than `MAX_BUCKETS` buckets, decided from the span
|
|
31
|
-
* instead of stepping bucket by bucket (which costs milliseconds a step in some zones).
|
|
32
|
-
*
|
|
33
|
-
* Over a prefix of the range, the local wall clock runs continuously between offset transitions.
|
|
34
|
-
* Those stretches cover at least the prefix's length less every backward offset change, in at most
|
|
35
|
-
* one stretch more than there are transitions, and each stretch of wall clock holds at least
|
|
36
|
-
* `floor(length / LONGEST_UNIT_NANOSECONDS)` distinct unit starts, each the start of its own
|
|
37
|
-
* bucket before `end`. The count subtracts two per stretch for the partial units at its ends.
|
|
38
|
-
* `false` means "not certain": the walk decides, exactly as before.
|
|
39
|
-
*/
|
|
40
|
-
function certainlyExceedsBucketCap(startZoned, endZoned, unit) {
|
|
41
|
-
const unitNs = LONGEST_UNIT_NANOSECONDS[unit];
|
|
42
|
-
const startNs = startZoned.epochNanoseconds;
|
|
43
|
-
const prefixEndNs = [
|
|
44
|
-
endZoned.epochNanoseconds,
|
|
45
|
-
startNs + 2n * BigInt(MAX_BUCKETS + 1) * unitNs,
|
|
46
|
-
].reduce((a, b) => (a < b ? a : b));
|
|
47
|
-
if (prefixEndNs - startNs <= BigInt(MAX_BUCKETS) * unitNs) {
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
50
|
-
let backwardNs = 0n;
|
|
51
|
-
let transitions = 0;
|
|
52
|
-
try {
|
|
53
|
-
for (let current = startZoned, next = zonedNextTransition(current); next !== null && next.epochNanoseconds < prefixEndNs; current = next, next = zonedNextTransition(current)) {
|
|
54
|
-
if (++transitions > MAX_PRECOUNT_TRANSITIONS) {
|
|
55
|
-
return false;
|
|
56
|
-
}
|
|
57
|
-
const shift = BigInt(current.offsetNanoseconds - next.offsetNanoseconds);
|
|
58
|
-
backwardNs += shift > 0n ? shift : 0n;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
catch {
|
|
62
|
-
return false;
|
|
63
|
-
}
|
|
64
|
-
const wallStarts = (prefixEndNs - startNs - backwardNs) / unitNs;
|
|
65
|
-
return wallStarts - 2n * BigInt(transitions + 1) > BigInt(MAX_BUCKETS);
|
|
66
|
-
}
|
|
67
15
|
/**
|
|
68
16
|
* The bucket start after `current`: `undefined` when it lies past Temporal's last representable
|
|
69
17
|
* instant, null when the stepper cannot find it.
|
|
@@ -93,8 +41,8 @@ function nextBucketStartWithinRange(current, unit) {
|
|
|
93
41
|
* - The range is half-open: an `end` landing exactly on a boundary does not open that bucket.
|
|
94
42
|
* A zero-length range mid-bucket still returns the one bucket holding it; on a boundary it
|
|
95
43
|
* returns `[]`.
|
|
96
|
-
* - Both endpoints are read in `timeZone`.
|
|
97
|
-
* `floorToZone`.
|
|
44
|
+
* - Both endpoints are read in `timeZone`. A bracketed zone they carry never supplies the
|
|
45
|
+
* zone, as in `floorToZone`.
|
|
98
46
|
* - Weeks start on Monday (ISO 8601). `unit` is the same four-unit set `floorToZone` takes,
|
|
99
47
|
* singular or plural, which `isValidZoneBucketUnit` narrows.
|
|
100
48
|
* - A local boundary that does not exist is not invented: the day Samoa deleted crossing the
|
|
@@ -107,11 +55,18 @@ function nextBucketStartWithinRange(current, unit) {
|
|
|
107
55
|
* if a zone ever presented more transitions inside one bucket than the stepper walks — no
|
|
108
56
|
* IANA zone does, and the whole table was swept to confirm it. A truncated list would be
|
|
109
57
|
* worse than the sentinel, so none is returned in any of those cases.
|
|
58
|
+
* - **Limit at an offset with seconds.** The instant is placed in the offset's whole-minute zone,
|
|
59
|
+
* moved by its seconds, and the moved instant must be inside Temporal's range. So within the
|
|
60
|
+
* offset's seconds (under a minute) of the last instant Temporal supports
|
|
61
|
+
* (`+275760-09-13T00:00:00Z`) for an offset east of UTC, or of the first
|
|
62
|
+
* (`-271821-04-20T00:00:00Z`) for one west, this returns `[]`. An offset to the minute has no
|
|
63
|
+
* such limit.
|
|
110
64
|
*
|
|
111
65
|
* @param start ISO 8601 instant string for the range start (inclusive)
|
|
112
66
|
* @param end ISO 8601 instant string for the range end (exclusive)
|
|
113
|
-
* @param unit bucket unit ("
|
|
114
|
-
* @param timeZone IANA
|
|
67
|
+
* @param unit bucket unit ("month" | "week" | "day" | "hour", or its plural)
|
|
68
|
+
* @param timeZone IANA name or UTC offset the buckets are computed in: a time zone identifier
|
|
69
|
+
* (`+05:30`, `+0530`, `-08`) or a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
|
|
115
70
|
* @returns array of UTC instant strings ending in "Z", or [] on invalid input
|
|
116
71
|
*
|
|
117
72
|
* @example bucketRange("2024-06-15T03:00:00Z", "2024-06-17T03:00:00Z", "day", "America/New_York") // ["2024-06-14T04:00:00Z", "2024-06-15T04:00:00Z", "2024-06-16T04:00:00Z"]
|
|
@@ -123,22 +78,24 @@ function nextBucketStartWithinRange(current, unit) {
|
|
|
123
78
|
* @example bucketRange("2024-06-16T00:00:00Z", "2024-06-15T00:00:00Z", "day", "UTC") // [] (start after end)
|
|
124
79
|
* @example bucketRange("2024-06-15T03:00:00Z", "2024-06-17T03:00:00Z", "days", "America/New_York") // ["2024-06-14T04:00:00Z", "2024-06-15T04:00:00Z", "2024-06-16T04:00:00Z"] (plural unit name)
|
|
125
80
|
* @example bucketRange("2024-06-15T03:00:00Z", "2024-06-17T03:00:00Z", "year", "UTC") // [] (not a bucketing unit)
|
|
81
|
+
* @example bucketRange("1970-01-01T00:00:00Z", "1970-01-02T01:00:00Z", "day", "-00:44:30") // ["1969-12-31T00:44:30Z", "1970-01-01T00:44:30Z", "1970-01-02T00:44:30Z"]
|
|
126
82
|
*/
|
|
127
83
|
export function bucketRange(start, end, unit, timeZone) {
|
|
128
84
|
// The singular name; the guard below rejects anything outside the four units.
|
|
129
85
|
const resolvedUnit = resolveDateTimeUnit(unit);
|
|
86
|
+
const frame = zoneFrame(timeZone);
|
|
130
87
|
if (!isValidInstant(start) ||
|
|
131
88
|
!isValidInstant(end) ||
|
|
132
89
|
!isValidZoneBucketUnit(resolvedUnit) ||
|
|
133
|
-
|
|
90
|
+
frame === null) {
|
|
134
91
|
return [];
|
|
135
92
|
}
|
|
136
93
|
try {
|
|
137
|
-
const startZoned =
|
|
138
|
-
const endZoned =
|
|
94
|
+
const startZoned = frameZoned(instantFrom(start), frame);
|
|
95
|
+
const endZoned = frameZoned(instantFrom(end), frame);
|
|
139
96
|
if (Temporal.ZonedDateTime.compare(startZoned, endZoned) > 0)
|
|
140
97
|
return [];
|
|
141
|
-
if (
|
|
98
|
+
if (certainlyTouchesMoreBuckets(startZoned, endZoned, resolvedUnit, MAX_BUCKETS))
|
|
142
99
|
return [];
|
|
143
100
|
const boundaries = [];
|
|
144
101
|
const first = zonedUnitStart(startZoned, resolvedUnit);
|
|
@@ -149,7 +106,7 @@ export function bucketRange(start, end, unit, timeZone) {
|
|
|
149
106
|
if (Temporal.ZonedDateTime.compare(current, endZoned) >= 0) {
|
|
150
107
|
return boundaries;
|
|
151
108
|
}
|
|
152
|
-
boundaries.push(current
|
|
109
|
+
boundaries.push(frameInstant(current, frame).toString());
|
|
153
110
|
const next = nextBucketStartWithinRange(current, resolvedUnit);
|
|
154
111
|
// Past the last representable instant, so after `end`: every touched bucket is collected.
|
|
155
112
|
if (next === undefined)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Temporal } from "@js-temporal/polyfill";
|
|
1
|
+
import type { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import type { ZoneBucketUnit } from "../../types/index.js";
|
|
3
3
|
/**
|
|
4
4
|
* Floor an instant to the start of the `unit` containing it **in `timeZone`**, and return
|
|
@@ -15,17 +15,26 @@ import type { ZoneBucketUnit } from "../../types/index.js";
|
|
|
15
15
|
* can be told apart from a bad instant.
|
|
16
16
|
* - `value` is any instant `isValidInstant` accepts — `Z`, an offset, or a bracketed zone.
|
|
17
17
|
* Only its instant is read: a bracketed zone in `value` is *not* the zone the boundary is
|
|
18
|
-
* computed in, `timeZone` is, and the two may differ freely.
|
|
18
|
+
* computed in, `timeZone` is, and the two may differ freely. An offset written to the minute
|
|
19
|
+
* that is the bracketed zone's sub-minute offset rounded (`-00:45[Africa/Monrovia]`, for
|
|
20
|
+
* −00:44:30) names the instant the zone gives, as `isValidInstant` describes.
|
|
19
21
|
* - The boundary is a real instant in the zone, so it survives the days a local boundary does
|
|
20
22
|
* not exist: a local day whose midnight is skipped by a spring-forward starts at 01:00, and
|
|
21
23
|
* a wall hour repeated by a fall-back floors to whichever pass `value` was in.
|
|
22
24
|
* - Returns a UTC instant string ending in `"Z"`, exactly — no rounding.
|
|
23
25
|
* - Returns `""` on invalid input, and where the boundary itself is not representable — the
|
|
24
26
|
* week or month containing the first instant Temporal supports began before it.
|
|
27
|
+
* - **Limit at an offset with seconds.** The instant is placed in the offset's whole-minute zone,
|
|
28
|
+
* moved by its seconds, and the moved instant must be inside Temporal's range. So within the
|
|
29
|
+
* offset's seconds (under a minute) of the last instant Temporal supports
|
|
30
|
+
* (`+275760-09-13T00:00:00Z`) for an offset east of UTC, or of the first
|
|
31
|
+
* (`-271821-04-20T00:00:00Z`) for one west, this returns `""`. An offset to the minute has no
|
|
32
|
+
* such limit.
|
|
25
33
|
*
|
|
26
34
|
* @param value ISO 8601 instant string (e.g. "2024-06-15T03:00:00Z")
|
|
27
|
-
* @param unit boundary unit ("
|
|
28
|
-
* @param timeZone IANA
|
|
35
|
+
* @param unit boundary unit ("month" | "week" | "day" | "hour", or its plural)
|
|
36
|
+
* @param timeZone IANA name or UTC offset the boundary is computed in: a time zone identifier
|
|
37
|
+
* (`+05:30`, `+0530`, `-08`) or a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
|
|
29
38
|
* @returns UTC instant string ending in "Z", or "" on invalid input
|
|
30
39
|
*
|
|
31
40
|
* @example floorToZone("2024-06-15T03:00:00Z", "day", "America/New_York") // "2024-06-14T04:00:00Z" (the 14 June local midnight — the instant is already 14 June there)
|
|
@@ -38,5 +47,6 @@ import type { ZoneBucketUnit } from "../../types/index.js";
|
|
|
38
47
|
* @example floorToZone("2024-06-15T03:00:00", "day", "UTC") // "" (zoneless, so it names no instant)
|
|
39
48
|
* @example floorToZone("-271821-04-20T00:00:00Z", "month", "UTC") // "" (that month began before Temporal's range does)
|
|
40
49
|
* @example floorToZone("2024-06-15T03:00:00Z", "day", "Invalid/Zone") // ""
|
|
50
|
+
* @example floorToZone("1970-01-01T13:00:00Z", "day", "-00:44:30") // "1970-01-01T00:44:30Z" (local midnight at a stored offset with seconds)
|
|
41
51
|
*/
|
|
42
52
|
export declare function floorToZone(value: string, unit: Temporal.SmallestUnit<ZoneBucketUnit>, timeZone: string): string;
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { zonedUnitStart } from "../../internal/index.js";
|
|
1
|
+
import { frameInstant, frameZoned, instantFrom, zonedUnitStart, zoneFrame, } from "../../internal/index.js";
|
|
3
2
|
import { isValidInstant } from "../../precision/validate/index.js";
|
|
4
|
-
import { isValidTimeZone } from "../../zoned/validate/index.js";
|
|
5
3
|
import { isValidZoneBucketUnit } from "../validate/index.js";
|
|
6
4
|
import { resolveDateTimeUnit } from "../../internal/resolveDateTimeUnit.js";
|
|
7
5
|
/**
|
|
@@ -19,17 +17,26 @@ import { resolveDateTimeUnit } from "../../internal/resolveDateTimeUnit.js";
|
|
|
19
17
|
* can be told apart from a bad instant.
|
|
20
18
|
* - `value` is any instant `isValidInstant` accepts — `Z`, an offset, or a bracketed zone.
|
|
21
19
|
* Only its instant is read: a bracketed zone in `value` is *not* the zone the boundary is
|
|
22
|
-
* computed in, `timeZone` is, and the two may differ freely.
|
|
20
|
+
* computed in, `timeZone` is, and the two may differ freely. An offset written to the minute
|
|
21
|
+
* that is the bracketed zone's sub-minute offset rounded (`-00:45[Africa/Monrovia]`, for
|
|
22
|
+
* −00:44:30) names the instant the zone gives, as `isValidInstant` describes.
|
|
23
23
|
* - The boundary is a real instant in the zone, so it survives the days a local boundary does
|
|
24
24
|
* not exist: a local day whose midnight is skipped by a spring-forward starts at 01:00, and
|
|
25
25
|
* a wall hour repeated by a fall-back floors to whichever pass `value` was in.
|
|
26
26
|
* - Returns a UTC instant string ending in `"Z"`, exactly — no rounding.
|
|
27
27
|
* - Returns `""` on invalid input, and where the boundary itself is not representable — the
|
|
28
28
|
* week or month containing the first instant Temporal supports began before it.
|
|
29
|
+
* - **Limit at an offset with seconds.** The instant is placed in the offset's whole-minute zone,
|
|
30
|
+
* moved by its seconds, and the moved instant must be inside Temporal's range. So within the
|
|
31
|
+
* offset's seconds (under a minute) of the last instant Temporal supports
|
|
32
|
+
* (`+275760-09-13T00:00:00Z`) for an offset east of UTC, or of the first
|
|
33
|
+
* (`-271821-04-20T00:00:00Z`) for one west, this returns `""`. An offset to the minute has no
|
|
34
|
+
* such limit.
|
|
29
35
|
*
|
|
30
36
|
* @param value ISO 8601 instant string (e.g. "2024-06-15T03:00:00Z")
|
|
31
|
-
* @param unit boundary unit ("
|
|
32
|
-
* @param timeZone IANA
|
|
37
|
+
* @param unit boundary unit ("month" | "week" | "day" | "hour", or its plural)
|
|
38
|
+
* @param timeZone IANA name or UTC offset the boundary is computed in: a time zone identifier
|
|
39
|
+
* (`+05:30`, `+0530`, `-08`) or a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
|
|
33
40
|
* @returns UTC instant string ending in "Z", or "" on invalid input
|
|
34
41
|
*
|
|
35
42
|
* @example floorToZone("2024-06-15T03:00:00Z", "day", "America/New_York") // "2024-06-14T04:00:00Z" (the 14 June local midnight — the instant is already 14 June there)
|
|
@@ -42,19 +49,21 @@ import { resolveDateTimeUnit } from "../../internal/resolveDateTimeUnit.js";
|
|
|
42
49
|
* @example floorToZone("2024-06-15T03:00:00", "day", "UTC") // "" (zoneless, so it names no instant)
|
|
43
50
|
* @example floorToZone("-271821-04-20T00:00:00Z", "month", "UTC") // "" (that month began before Temporal's range does)
|
|
44
51
|
* @example floorToZone("2024-06-15T03:00:00Z", "day", "Invalid/Zone") // ""
|
|
52
|
+
* @example floorToZone("1970-01-01T13:00:00Z", "day", "-00:44:30") // "1970-01-01T00:44:30Z" (local midnight at a stored offset with seconds)
|
|
45
53
|
*/
|
|
46
54
|
export function floorToZone(value, unit, timeZone) {
|
|
47
55
|
// The singular name; the guard below rejects anything outside the four units.
|
|
48
56
|
const resolvedUnit = resolveDateTimeUnit(unit);
|
|
57
|
+
const frame = zoneFrame(timeZone);
|
|
49
58
|
if (!isValidInstant(value) ||
|
|
50
59
|
!isValidZoneBucketUnit(resolvedUnit) ||
|
|
51
|
-
|
|
60
|
+
frame === null) {
|
|
52
61
|
return "";
|
|
53
62
|
}
|
|
54
63
|
try {
|
|
55
|
-
const zoned =
|
|
64
|
+
const zoned = frameZoned(instantFrom(value), frame);
|
|
56
65
|
const start = zonedUnitStart(zoned, resolvedUnit);
|
|
57
|
-
return start ? start
|
|
66
|
+
return start ? frameInstant(start, frame).toString() : "";
|
|
58
67
|
}
|
|
59
68
|
catch {
|
|
60
69
|
return "";
|
|
@@ -16,11 +16,11 @@ import type { FiscalCalendar } from "../../types/index.js";
|
|
|
16
16
|
* Saturday falling exactly on January 31. Passing a published year end from a 53-week year
|
|
17
17
|
* instead (`"2024-02-03"`) states a different rule, because that date sits three days off
|
|
18
18
|
* the target the rule is centred on, and yields a different, self-consistent calendar.
|
|
19
|
-
* -
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* -
|
|
23
|
-
*
|
|
19
|
+
* - Weeks are numbered through the fiscal year as the NRF publishes them. A 53rd week is
|
|
20
|
+
* appended to period 12 — the NRF adds it "to the end of the calendar" — which makes a 4-5-4
|
|
21
|
+
* year's final quarter 4-5-5.
|
|
22
|
+
* - The `year` label follows the NRF: fiscal 2023 runs 2023-01-29 to 2024-02-03. Organisations
|
|
23
|
+
* labelling by the end year should add one.
|
|
24
24
|
* - **`year` is not a unique key for a rule anchored near 1 January.** A 52/53-week year is
|
|
25
25
|
* 364 or 371 days, so it drifts against the calendar, and no label taken from a calendar
|
|
26
26
|
* year survives that for every anchor. Under `yearEndsOn: "2022-12-31"` — the Saturday
|
|
@@ -33,9 +33,10 @@ import type { FiscalCalendar } from "../../types/index.js";
|
|
|
33
33
|
* date — which `yearEndsOn` determines, and which is yours to enumerate — not on `year`.
|
|
34
34
|
* GMT does not invent a label the inputs do not fix.
|
|
35
35
|
* - A `yearEndsOn` month-day that does not exist in a year follows Temporal's
|
|
36
|
-
* `overflow: "constrain"`: a February 29 rule reads February 28 in common years. A
|
|
37
|
-
*
|
|
38
|
-
* leap years; this does not — state such a rule
|
|
36
|
+
* `overflow: "constrain"`: a February 29 rule reads February 28 in common years. A rule tied
|
|
37
|
+
* to the end of a month (the weekday nearest to, or last in, the month's final days) would
|
|
38
|
+
* put a February 28 anchor on February 29 in leap years; this does not — state such a rule
|
|
39
|
+
* with a date that exists every year.
|
|
39
40
|
* - Whether a fiscal year has 52 or 53 weeks is derived from the gap between its own two
|
|
40
41
|
* ends, never assumed from a table.
|
|
41
42
|
* - `value` must be zoneless — an ISO date or datetime, as `isValidIsoDateLike` accepts. See
|
|
@@ -58,7 +59,19 @@ import type { FiscalCalendar } from "../../types/index.js";
|
|
|
58
59
|
* @example getFiscalPeriod("invalid", { pattern: "4-5-4", yearEndsOn: "2026-01-31" }) // null
|
|
59
60
|
*/
|
|
60
61
|
export declare function getFiscalPeriod(value: string, calendar: FiscalCalendar): {
|
|
62
|
+
/**
|
|
63
|
+
* The calendar year the fiscal year starts in, not the year it ends in. Two consecutive fiscal
|
|
64
|
+
* years can share this label when `yearEndsOn` sits near 1 January.
|
|
65
|
+
*/
|
|
61
66
|
year: number;
|
|
67
|
+
/**
|
|
68
|
+
* The period of the fiscal year, 1 through 12. Each period is four or five weeks long as
|
|
69
|
+
* `calendar.pattern` sets, and a 53rd week belongs to period 12.
|
|
70
|
+
*/
|
|
62
71
|
period: number;
|
|
72
|
+
/**
|
|
73
|
+
* The week of the fiscal year, 1 through 52, or 53 in a year with an inserted week. Week 1 starts
|
|
74
|
+
* on the fiscal year's first day.
|
|
75
|
+
*/
|
|
63
76
|
week: number;
|
|
64
77
|
} | null;
|
|
@@ -21,11 +21,11 @@ const DAYS_PER_WEEK = 7;
|
|
|
21
21
|
* Saturday falling exactly on January 31. Passing a published year end from a 53-week year
|
|
22
22
|
* instead (`"2024-02-03"`) states a different rule, because that date sits three days off
|
|
23
23
|
* the target the rule is centred on, and yields a different, self-consistent calendar.
|
|
24
|
-
* -
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* -
|
|
28
|
-
*
|
|
24
|
+
* - Weeks are numbered through the fiscal year as the NRF publishes them. A 53rd week is
|
|
25
|
+
* appended to period 12 — the NRF adds it "to the end of the calendar" — which makes a 4-5-4
|
|
26
|
+
* year's final quarter 4-5-5.
|
|
27
|
+
* - The `year` label follows the NRF: fiscal 2023 runs 2023-01-29 to 2024-02-03. Organisations
|
|
28
|
+
* labelling by the end year should add one.
|
|
29
29
|
* - **`year` is not a unique key for a rule anchored near 1 January.** A 52/53-week year is
|
|
30
30
|
* 364 or 371 days, so it drifts against the calendar, and no label taken from a calendar
|
|
31
31
|
* year survives that for every anchor. Under `yearEndsOn: "2022-12-31"` — the Saturday
|
|
@@ -38,9 +38,10 @@ const DAYS_PER_WEEK = 7;
|
|
|
38
38
|
* date — which `yearEndsOn` determines, and which is yours to enumerate — not on `year`.
|
|
39
39
|
* GMT does not invent a label the inputs do not fix.
|
|
40
40
|
* - A `yearEndsOn` month-day that does not exist in a year follows Temporal's
|
|
41
|
-
* `overflow: "constrain"`: a February 29 rule reads February 28 in common years. A
|
|
42
|
-
*
|
|
43
|
-
* leap years; this does not — state such a rule
|
|
41
|
+
* `overflow: "constrain"`: a February 29 rule reads February 28 in common years. A rule tied
|
|
42
|
+
* to the end of a month (the weekday nearest to, or last in, the month's final days) would
|
|
43
|
+
* put a February 28 anchor on February 29 in leap years; this does not — state such a rule
|
|
44
|
+
* with a date that exists every year.
|
|
44
45
|
* - Whether a fiscal year has 52 or 53 weeks is derived from the gap between its own two
|
|
45
46
|
* ends, never assumed from a table.
|
|
46
47
|
* - `value` must be zoneless — an ISO date or datetime, as `isValidIsoDateLike` accepts. See
|
|
@@ -6,11 +6,7 @@
|
|
|
6
6
|
* end of a year, so all three fields come back together rather than as three calls a caller
|
|
7
7
|
* could combine inconsistently.
|
|
8
8
|
*
|
|
9
|
-
* -
|
|
10
|
-
* from the calendar year for late-December and early-January dates.
|
|
11
|
-
* - `week` is 1–53. ISO week 1 is the week containing the year's first Thursday, so a
|
|
12
|
-
* week-numbering year has 53 weeks roughly every five to six years.
|
|
13
|
-
* - `weekday` is 1 (Monday) through 7 (Sunday).
|
|
9
|
+
* - A week-numbering year has 53 weeks roughly every five to six years, and 52 otherwise.
|
|
14
10
|
* - `value` must be zoneless — an ISO date or datetime, as `isValidIsoDateLike` accepts. An
|
|
15
11
|
* offset, a `Z` or a bracketed zone makes it a moment rather than a calendar date; convert
|
|
16
12
|
* it in the zone you mean first (`convertUtcToZoned` then `convertZonedToPlainDateTime`),
|
|
@@ -29,7 +25,16 @@
|
|
|
29
25
|
* @example getIsoWeekDate("invalid") // null
|
|
30
26
|
*/
|
|
31
27
|
export declare function getIsoWeekDate(value: string): {
|
|
28
|
+
/**
|
|
29
|
+
* The ISO 8601 week-numbering year: the calendar year that holds the Thursday of the date's week.
|
|
30
|
+
* It differs from the date's own calendar year for some dates in late December and early January.
|
|
31
|
+
*/
|
|
32
32
|
year: number;
|
|
33
|
+
/**
|
|
34
|
+
* The ISO 8601 week number, 1 through 53. Week 1 is the week that holds the year's first
|
|
35
|
+
* Thursday, and weeks start on Monday.
|
|
36
|
+
*/
|
|
33
37
|
week: number;
|
|
38
|
+
/** The ISO 8601 day of the week, 1 (Monday) through 7 (Sunday). */
|
|
34
39
|
weekday: number;
|
|
35
40
|
} | null;
|
|
@@ -7,11 +7,7 @@ import { zonelessCalendarDate } from "../../internal/index.js";
|
|
|
7
7
|
* end of a year, so all three fields come back together rather than as three calls a caller
|
|
8
8
|
* could combine inconsistently.
|
|
9
9
|
*
|
|
10
|
-
* -
|
|
11
|
-
* from the calendar year for late-December and early-January dates.
|
|
12
|
-
* - `week` is 1–53. ISO week 1 is the week containing the year's first Thursday, so a
|
|
13
|
-
* week-numbering year has 53 weeks roughly every five to six years.
|
|
14
|
-
* - `weekday` is 1 (Monday) through 7 (Sunday).
|
|
10
|
+
* - A week-numbering year has 53 weeks roughly every five to six years, and 52 otherwise.
|
|
15
11
|
* - `value` must be zoneless — an ISO date or datetime, as `isValidIsoDateLike` accepts. An
|
|
16
12
|
* offset, a `Z` or a bracketed zone makes it a moment rather than a calendar date; convert
|
|
17
13
|
* it in the zone you mean first (`convertUtcToZoned` then `convertZonedToPlainDateTime`),
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Return the ISO 8601 ordinal date — calendar year and day of year — for `value`.
|
|
3
3
|
*
|
|
4
|
-
* - `
|
|
5
|
-
*
|
|
6
|
-
* date never disagrees with the calendar year it is written beside.
|
|
4
|
+
* - Unlike `getIsoWeekDate`, whose year is the week-numbering year, an ordinal date never
|
|
5
|
+
* disagrees with the calendar year it is written beside.
|
|
7
6
|
* - `value` must be zoneless — an ISO date or datetime, as `isValidIsoDateLike` accepts. See
|
|
8
7
|
* `getIsoWeekDate` for why a moment is not accepted here.
|
|
9
8
|
* - Returns null on invalid input.
|
|
@@ -20,6 +19,14 @@
|
|
|
20
19
|
* @example getOrdinalDate("invalid") // null
|
|
21
20
|
*/
|
|
22
21
|
export declare function getOrdinalDate(value: string): {
|
|
22
|
+
/**
|
|
23
|
+
* The calendar year of the date. It is not the ISO 8601 week-numbering year, so it always matches
|
|
24
|
+
* the year written in `value`.
|
|
25
|
+
*/
|
|
23
26
|
year: number;
|
|
27
|
+
/**
|
|
28
|
+
* The 1-based day of that year, the ISO 8601 ordinal day: 1 is January 1, and December 31 is 365,
|
|
29
|
+
* or 366 in a leap year.
|
|
30
|
+
*/
|
|
24
31
|
dayOfYear: number;
|
|
25
32
|
} | null;
|
|
@@ -2,9 +2,8 @@ import { zonelessCalendarDate } from "../../internal/index.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* Return the ISO 8601 ordinal date — calendar year and day of year — for `value`.
|
|
4
4
|
*
|
|
5
|
-
* - `
|
|
6
|
-
*
|
|
7
|
-
* date never disagrees with the calendar year it is written beside.
|
|
5
|
+
* - Unlike `getIsoWeekDate`, whose year is the week-numbering year, an ordinal date never
|
|
6
|
+
* disagrees with the calendar year it is written beside.
|
|
8
7
|
* - `value` must be zoneless — an ISO date or datetime, as `isValidIsoDateLike` accepts. See
|
|
9
8
|
* `getIsoWeekDate` for why a moment is not accepted here.
|
|
10
9
|
* - Returns null on invalid input.
|
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Return the quarter `value` falls in, as a year and a quarter number.
|
|
3
3
|
*
|
|
4
|
-
* -
|
|
5
|
-
*
|
|
6
|
-
* -
|
|
7
|
-
* belongs to the previous fiscal year, so `getQuarter("2024-03-31", { fiscalYearStartMonth:
|
|
8
|
-
* 4 })` is Q4 of 2023.
|
|
9
|
-
* - **`year` is the calendar year the fiscal year starts in**, matching the NRF retail
|
|
4
|
+
* - With no options these are the calendar quarters: Q1 is January to March, and `year` is
|
|
5
|
+
* the calendar year.
|
|
6
|
+
* - Labelling a fiscal year by the calendar year it starts in matches the NRF retail
|
|
10
7
|
* convention `getFiscalPeriod` uses. Organisations that label a fiscal year by the calendar
|
|
11
|
-
* year it *ends* in —
|
|
12
|
-
* 2024 — should add one
|
|
8
|
+
* year it *ends* in — for a fiscal year that starts in October, FY2025 begins in October
|
|
9
|
+
* 2024 — should add one to `year`.
|
|
13
10
|
* - `value` must be zoneless — an ISO date or datetime, as `isValidIsoDateLike` accepts. See
|
|
14
11
|
* `getIsoWeekDate` for why a moment is not accepted here.
|
|
15
12
|
* - Returns null on invalid input, including a `fiscalYearStartMonth` that is not an integer
|
|
16
13
|
* from 1 to 12.
|
|
17
14
|
*
|
|
18
15
|
* @param value zoneless ISO 8601 date or datetime string (e.g. "2024-06-15")
|
|
19
|
-
* @param optionsArg
|
|
16
|
+
* @param optionsArg The month the fiscal year starts in
|
|
20
17
|
* @returns { year, quarter }, or null on invalid input
|
|
21
18
|
*
|
|
22
19
|
* @example getQuarter("2024-06-15") // { year: 2024, quarter: 2 }
|
|
@@ -29,8 +26,23 @@
|
|
|
29
26
|
* @example getQuarter("invalid") // null
|
|
30
27
|
*/
|
|
31
28
|
export declare function getQuarter(value: string, optionsArg?: {
|
|
29
|
+
/**
|
|
30
|
+
* The month the year starts in, 1 (January) through 12, which makes the quarters fiscal
|
|
31
|
+
* quarters. A date before it belongs to the previous fiscal year, so with `4` the date
|
|
32
|
+
* `"2024-03-31"` is Q4 of 2023.
|
|
33
|
+
*
|
|
34
|
+
* @defaultValue `1`
|
|
35
|
+
*/
|
|
32
36
|
fiscalYearStartMonth?: number;
|
|
33
37
|
}): {
|
|
38
|
+
/**
|
|
39
|
+
* The year the quarter belongs to. With `fiscalYearStartMonth` set, it is the calendar year the
|
|
40
|
+
* fiscal year starts in, so a date before the start month reports the previous year.
|
|
41
|
+
*/
|
|
34
42
|
year: number;
|
|
43
|
+
/**
|
|
44
|
+
* The quarter of that year, 1 through 4. Quarter 1 begins in the `fiscalYearStartMonth` month,
|
|
45
|
+
* which is January by default.
|
|
46
|
+
*/
|
|
35
47
|
quarter: number;
|
|
36
48
|
} | null;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { zonelessCalendarDate } from "../../internal/index.js";
|
|
2
2
|
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
3
|
+
import { optionOrDefault } from "../../internal/optionOrDefault.js";
|
|
3
4
|
/** Months in a quarter. */
|
|
4
5
|
const MONTHS_PER_QUARTER = 3;
|
|
5
6
|
/** Months in a year. */
|
|
@@ -7,22 +8,19 @@ const MONTHS_PER_YEAR = 12;
|
|
|
7
8
|
/**
|
|
8
9
|
* Return the quarter `value` falls in, as a year and a quarter number.
|
|
9
10
|
*
|
|
10
|
-
* -
|
|
11
|
-
*
|
|
12
|
-
* -
|
|
13
|
-
* belongs to the previous fiscal year, so `getQuarter("2024-03-31", { fiscalYearStartMonth:
|
|
14
|
-
* 4 })` is Q4 of 2023.
|
|
15
|
-
* - **`year` is the calendar year the fiscal year starts in**, matching the NRF retail
|
|
11
|
+
* - With no options these are the calendar quarters: Q1 is January to March, and `year` is
|
|
12
|
+
* the calendar year.
|
|
13
|
+
* - Labelling a fiscal year by the calendar year it starts in matches the NRF retail
|
|
16
14
|
* convention `getFiscalPeriod` uses. Organisations that label a fiscal year by the calendar
|
|
17
|
-
* year it *ends* in —
|
|
18
|
-
* 2024 — should add one
|
|
15
|
+
* year it *ends* in — for a fiscal year that starts in October, FY2025 begins in October
|
|
16
|
+
* 2024 — should add one to `year`.
|
|
19
17
|
* - `value` must be zoneless — an ISO date or datetime, as `isValidIsoDateLike` accepts. See
|
|
20
18
|
* `getIsoWeekDate` for why a moment is not accepted here.
|
|
21
19
|
* - Returns null on invalid input, including a `fiscalYearStartMonth` that is not an integer
|
|
22
20
|
* from 1 to 12.
|
|
23
21
|
*
|
|
24
22
|
* @param value zoneless ISO 8601 date or datetime string (e.g. "2024-06-15")
|
|
25
|
-
* @param optionsArg
|
|
23
|
+
* @param optionsArg The month the fiscal year starts in
|
|
26
24
|
* @returns { year, quarter }, or null on invalid input
|
|
27
25
|
*
|
|
28
26
|
* @example getQuarter("2024-06-15") // { year: 2024, quarter: 2 }
|
|
@@ -39,9 +37,7 @@ export function getQuarter(value, optionsArg) {
|
|
|
39
37
|
if (!isOptionsArgument(optionsArg)) {
|
|
40
38
|
return null;
|
|
41
39
|
}
|
|
42
|
-
const fiscalYearStartMonth = optionsArg?.fiscalYearStartMonth
|
|
43
|
-
? 1
|
|
44
|
-
: optionsArg.fiscalYearStartMonth;
|
|
40
|
+
const fiscalYearStartMonth = optionOrDefault(optionsArg?.fiscalYearStartMonth, 1);
|
|
45
41
|
if (!Number.isInteger(fiscalYearStartMonth) ||
|
|
46
42
|
fiscalYearStartMonth < 1 ||
|
|
47
43
|
fiscalYearStartMonth > MONTHS_PER_YEAR) {
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { Disambiguation, OperatingSchedule } from "../../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Return the instant at which `duration` of open time has elapsed since `start`: the deadline
|
|
4
|
+
* of a service level measured in working hours.
|
|
5
|
+
*
|
|
6
|
+
* - The earliest instant `X` such that `operatingTimeBetween(start, X, schedule)` equals
|
|
7
|
+
* `duration`. The clock stops while the schedule is closed and resumes when it reopens, so an
|
|
8
|
+
* eight-hour SLA raised at Friday 16:00 on a 09:00–17:00 weekday desk falls due on Monday at
|
|
9
|
+
* 16:00. A deadline that lands exactly on a closing time is that closing instant, not the next
|
|
10
|
+
* opening.
|
|
11
|
+
* - `duration` is hours and smaller units (`"PT8H"`, `"PT90M"`). A duration with days, weeks,
|
|
12
|
+
* months or years returns `""`: `P1D` of open time could mean 24 open hours or one working
|
|
13
|
+
* day, and GMT does not guess. `"PT0S"` returns `start` itself, in UTC.
|
|
14
|
+
* - Returns `""` when the deadline would fall past the search horizon, rather than searching
|
|
15
|
+
* forever.
|
|
16
|
+
* - Holidays and overrides apply as in `operatingIntervals`.
|
|
17
|
+
* - Returns `""` on invalid input: an invalid instant, duration or `OperatingSchedule`, a
|
|
18
|
+
* negative `duration`, a `within` that is not a non-negative ISO duration, a `disambiguation`
|
|
19
|
+
* that is not one of the four values, and a search that would go more than 10,000 local dates past the input's date.
|
|
20
|
+
* - **Limit at an offset with seconds.** The instant is placed in the offset's whole-minute zone,
|
|
21
|
+
* moved by its seconds, and the moved instant must be inside Temporal's range. So within the
|
|
22
|
+
* offset's seconds (under a minute) of the last instant Temporal supports
|
|
23
|
+
* (`+275760-09-13T00:00:00Z`) for an offset east of UTC, or of the first
|
|
24
|
+
* (`-271821-04-20T00:00:00Z`) for one west, this returns `""`. An offset to the minute has no
|
|
25
|
+
* such limit.
|
|
26
|
+
*
|
|
27
|
+
* @param start ISO 8601 instant string where the clock starts
|
|
28
|
+
* @param duration ISO 8601 duration of open time, hours and smaller units (e.g. "PT8H")
|
|
29
|
+
* @param schedule `{ timeZone, weekly, holidays?, overrides? }` operating schedule
|
|
30
|
+
* @param optionsArg How far the search goes, and how a window edge on a clock change is resolved
|
|
31
|
+
* @returns UTC instant string ending in "Z", or "" when past the horizon or on invalid input
|
|
32
|
+
*
|
|
33
|
+
* @example addOperatingTime("2024-06-14T20:00:00Z", "PT2H", { timeZone: "America/New_York", weekly: { 1: [{ from: "09:00", to: "17:00" }], 5: [{ from: "09:00", to: "17:00" }] } }) // "2024-06-17T14:00:00Z" — Friday 16:00 to Monday 10:00 local
|
|
34
|
+
* @example addOperatingTime("2024-06-14T20:00:00Z", "PT1H", { timeZone: "America/New_York", weekly: { 5: [{ from: "09:00", to: "17:00" }] } }) // "2024-06-14T21:00:00Z" — due at closing, not at the next opening
|
|
35
|
+
* @example addOperatingTime("2024-06-14T20:00:00Z", "PT2H", { timeZone: "America/New_York", weekly: { 1: [{ from: "09:00", to: "17:00" }], 5: [{ from: "09:00", to: "17:00" }] } }, { within: "P1D" }) // "" — past the horizon
|
|
36
|
+
* @example addOperatingTime("2024-06-15T12:00:00Z", "PT0S", { timeZone: "UTC", weekly: {} }) // "2024-06-15T12:00:00Z"
|
|
37
|
+
* @example addOperatingTime("2024-06-14T20:00:00Z", "P1D", { timeZone: "UTC", weekly: { 5: [{ from: "09:00", to: "17:00" }] } }) // "" — days are not open time
|
|
38
|
+
* @example addOperatingTime("2024-06-14T20:00:00Z", "-PT1H", { timeZone: "UTC", weekly: { 5: [{ from: "09:00", to: "17:00" }] } }) // ""
|
|
39
|
+
*/
|
|
40
|
+
export declare function addOperatingTime(start: string, duration: string, schedule: OperatingSchedule, optionsArg?: {
|
|
41
|
+
/**
|
|
42
|
+
* How far after `start` the search may go, as a non-negative ISO 8601 duration added in the
|
|
43
|
+
* schedule's zone, so `"P1D"` is one local day. A deadline exactly at that horizon counts, and a
|
|
44
|
+
* horizon past Temporal's last instant stops there.
|
|
45
|
+
*
|
|
46
|
+
* @defaultValue `"P1Y"`
|
|
47
|
+
*/
|
|
48
|
+
within?: string;
|
|
49
|
+
/**
|
|
50
|
+
* How a window edge in a repeated or skipped local hour becomes an instant, as `resolveLocal`
|
|
51
|
+
* resolves it. `"compatible"` takes the earlier instant of a repeated fall-back hour and the
|
|
52
|
+
* later one of a skipped spring-forward hour, and `"earlier"` and `"later"` take that side in
|
|
53
|
+
* both cases. `"reject"` returns `""` when a window with such an edge could add open time
|
|
54
|
+
* before the deadline.
|
|
55
|
+
*
|
|
56
|
+
* @defaultValue `"compatible"`, Temporal's default.
|
|
57
|
+
*/
|
|
58
|
+
disambiguation?: Disambiguation;
|
|
59
|
+
}): string;
|