@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
|
@@ -5,33 +5,53 @@ export interface BillingDates {
|
|
|
5
5
|
* last incurred or, for a re-bill, the issuance date of the invoice received.
|
|
6
6
|
*/
|
|
7
7
|
anchorOn: string;
|
|
8
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* The date the invoice was issued, once it has been, as an ISO date.
|
|
10
|
+
*
|
|
11
|
+
* @defaultValue None. `issuedByDeadline` and `disputeDeadline` are `null`.
|
|
12
|
+
*/
|
|
9
13
|
invoiceIssuedOn?: string;
|
|
10
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* The date the dispute request was received, once it has been, as an ISO date. It needs
|
|
16
|
+
* `invoiceIssuedOn` and may not precede it.
|
|
17
|
+
*
|
|
18
|
+
* @defaultValue None. `requestedByDeadline` and `resolutionDeadline` are `null`.
|
|
19
|
+
*/
|
|
11
20
|
requestReceivedOn?: string;
|
|
12
21
|
}
|
|
13
22
|
/** The three windows the caller supplies, in calendar days, none defaulted, and an optional agreed resolution date. */
|
|
14
23
|
export interface BillingWindows {
|
|
15
|
-
/**
|
|
24
|
+
/** The days from `anchorOn` within which the invoice must be issued. */
|
|
16
25
|
issueDays: number;
|
|
17
|
-
/**
|
|
26
|
+
/** The days from `invoiceIssuedOn` within which a dispute may be raised. */
|
|
18
27
|
disputeDays: number;
|
|
19
|
-
/**
|
|
28
|
+
/** The days from `requestReceivedOn` within which the dispute must be resolved. */
|
|
20
29
|
resolutionDays: number;
|
|
21
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* A resolution date the parties agreed instead, as an ISO date on or after `requestReceivedOn`;
|
|
32
|
+
* it replaces the computed one.
|
|
33
|
+
*
|
|
34
|
+
* @defaultValue None. `resolutionDeadline` is `requestReceivedOn + resolutionDays`.
|
|
35
|
+
*/
|
|
22
36
|
agreedResolutionOn?: string;
|
|
23
37
|
}
|
|
24
38
|
/** What `billingTimeline` returns: each deadline as an ISO date, and each comparison once its date exists. */
|
|
25
39
|
export interface BillingDeadlines {
|
|
26
|
-
/** `anchorOn + issueDays`. */
|
|
40
|
+
/** The last date the invoice may be issued: `anchorOn + issueDays`. */
|
|
27
41
|
invoiceDeadline: string;
|
|
28
42
|
/** Whether `invoiceIssuedOn` is on or before `invoiceDeadline`; `null` until an invoice date exists. */
|
|
29
43
|
issuedByDeadline: boolean | null;
|
|
30
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* The last date a dispute may be raised: `invoiceIssuedOn + disputeDays`; `null` until an invoice
|
|
46
|
+
* date exists.
|
|
47
|
+
*/
|
|
31
48
|
disputeDeadline: string | null;
|
|
32
49
|
/** Whether `requestReceivedOn` is on or before `disputeDeadline`; `null` until a request date exists. */
|
|
33
50
|
requestedByDeadline: boolean | null;
|
|
34
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* The last date the dispute must be resolved: `requestReceivedOn + resolutionDays`, or
|
|
53
|
+
* `agreedResolutionOn`; `null` until a request date exists.
|
|
54
|
+
*/
|
|
35
55
|
resolutionDeadline: string | null;
|
|
36
56
|
}
|
|
37
57
|
/**
|
|
@@ -76,8 +96,8 @@ export interface BillingDeadlines {
|
|
|
76
96
|
* request exists without an invoice or before it, `agreedResolutionOn` is before the request,
|
|
77
97
|
* or a deadline would leave Temporal's range.
|
|
78
98
|
*
|
|
79
|
-
* @param dates
|
|
80
|
-
* @param windows
|
|
99
|
+
* @param dates The anchor date, and the invoice and request dates once they exist
|
|
100
|
+
* @param windows The three calendar-day windows, none defaulted, and an agreed resolution date
|
|
81
101
|
* @returns { invoiceDeadline, issuedByDeadline, disputeDeadline, requestedByDeadline, resolutionDeadline }, or null on invalid input
|
|
82
102
|
*
|
|
83
103
|
* @example billingTimeline({ anchorOn: "2026-03-01" }, { issueDays: 30, disputeDays: 30, resolutionDays: 30 }) // { invoiceDeadline: "2026-03-31", issuedByDeadline: null, disputeDeadline: null, requestedByDeadline: null, resolutionDeadline: null } (no invoice yet: a forecast)
|
|
@@ -43,8 +43,8 @@ import { isValidDate } from "../../plain/validate/isValidDate.js";
|
|
|
43
43
|
* request exists without an invoice or before it, `agreedResolutionOn` is before the request,
|
|
44
44
|
* or a deadline would leave Temporal's range.
|
|
45
45
|
*
|
|
46
|
-
* @param dates
|
|
47
|
-
* @param windows
|
|
46
|
+
* @param dates The anchor date, and the invoice and request dates once they exist
|
|
47
|
+
* @param windows The three calendar-day windows, none defaulted, and an agreed resolution date
|
|
48
48
|
* @returns { invoiceDeadline, issuedByDeadline, disputeDeadline, requestedByDeadline, resolutionDeadline }, or null on invalid input
|
|
49
49
|
*
|
|
50
50
|
* @example billingTimeline({ anchorOn: "2026-03-01" }, { issueDays: 30, disputeDays: 30, resolutionDays: 30 }) // { invoiceDeadline: "2026-03-31", issuedByDeadline: null, disputeDeadline: null, requestedByDeadline: null, resolutionDeadline: null } (no invoice yet: a forecast)
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import type { FreeTimeBasis, FreeTimeOptions } from "../../types/index.js";
|
|
2
2
|
/** A band of chargeable-day ordinals and how many of the charged days fell in it. */
|
|
3
3
|
export interface TierBand {
|
|
4
|
-
/**
|
|
4
|
+
/** The first chargeable-day ordinal of the band, from 1. */
|
|
5
5
|
from: number;
|
|
6
|
-
/**
|
|
6
|
+
/** The last ordinal of the band, or `null` for the open final band. */
|
|
7
7
|
to: number | null;
|
|
8
|
-
/**
|
|
8
|
+
/** The number of charged days that fell in the band. */
|
|
9
9
|
days: number;
|
|
10
10
|
}
|
|
11
11
|
/** What `chargeableDays` returns: the day count an invoice bills, and the dates that back it. */
|
|
12
12
|
export interface FreeTimeCharges {
|
|
13
|
-
/**
|
|
13
|
+
/** The number of free days the dwell touched, at most the tariff's `freeDays`. */
|
|
14
14
|
freeDaysUsed: number;
|
|
15
|
-
/**
|
|
15
|
+
/** The number of counted days on or after `expiresAt` the dwell touched. */
|
|
16
16
|
chargeableDays: number;
|
|
17
17
|
/** The instant free time ended, as a UTC instant, as `freeTimeExpiry` reports it. */
|
|
18
18
|
expiresAt: string;
|
|
@@ -31,6 +31,13 @@ export type FreeTimeChargeOptions = FreeTimeOptions & {
|
|
|
31
31
|
* working days of `calendar`. No default; see `chargeableDays`.
|
|
32
32
|
*/
|
|
33
33
|
chargeBasis: FreeTimeBasis;
|
|
34
|
+
/**
|
|
35
|
+
* The last chargeable-day ordinal of each band, as strictly ascending positive whole numbers:
|
|
36
|
+
* `[5, 10]` is days 1–5, 6–10 and 11 onward. They are day bands, not rates. Every band is
|
|
37
|
+
* returned, an empty one with `days: 0`, and the last is always open.
|
|
38
|
+
*
|
|
39
|
+
* @defaultValue None. `byTier` is the single open band `{ from: 1, to: null }`.
|
|
40
|
+
*/
|
|
34
41
|
tiers?: number[];
|
|
35
42
|
};
|
|
36
43
|
/**
|
|
@@ -66,20 +73,21 @@ export type FreeTimeChargeOptions = FreeTimeOptions & {
|
|
|
66
73
|
* - **`freeDays` may be `0`** for a tariff with no free time: `expiresAt` is the start of day one,
|
|
67
74
|
* the first day counted on `basis` (under `"nextDay"`, the first after the event day), and days
|
|
68
75
|
* before it are neither free nor charged.
|
|
69
|
-
* - **`tiers` are day bands, not rates.** `[5, 10]` names the last chargeable-day ordinal of
|
|
70
|
-
* each band: days 1–5, 6–10 and 11 onward. Every band is returned, an empty one with
|
|
71
|
-
* `days: 0`, and the last is always open. Omitted, `byTier` is the single open band
|
|
72
|
-
* `{ from: 1, to: null }`. A list that is not strictly ascending positive whole numbers
|
|
73
|
-
* returns `null`.
|
|
74
76
|
* - Returns `null` when either instant is invalid, `clockEnd` is before `clockStart` (an
|
|
75
77
|
* inverted dwell is a data error), `freeDays` is not a whole number of at least `0`, the
|
|
76
78
|
* options fail as they do for `freeTimeExpiry`, `tiers` has a hole, an unsafe integer or does not ascend, or the walk would pass
|
|
77
79
|
* 10,000 local days.
|
|
80
|
+
* - **Limit at an offset with seconds.** The instant is placed in the offset's whole-minute zone,
|
|
81
|
+
* moved by its seconds, and the moved instant must be inside Temporal's range. So within the
|
|
82
|
+
* offset's seconds (under a minute) of the last instant Temporal supports
|
|
83
|
+
* (`+275760-09-13T00:00:00Z`) for an offset east of UTC, or of the first
|
|
84
|
+
* (`-271821-04-20T00:00:00Z`) for one west, this returns `null`. An offset to the minute has no
|
|
85
|
+
* such limit.
|
|
78
86
|
*
|
|
79
87
|
* @param clockStart ISO 8601 instant string of the event that starts the clock
|
|
80
88
|
* @param clockEnd ISO 8601 instant string of the event that stops it (gate-out or empty return)
|
|
81
89
|
* @param freeDays whole number of free days the tariff allows, 0 or more
|
|
82
|
-
* @param options
|
|
90
|
+
* @param options The tariff's counting terms for free time and for charged days, and the tier bands
|
|
83
91
|
* @returns the free days used, the chargeable days, the expiry, the charged dates and the days per tier band, or null on invalid input
|
|
84
92
|
*
|
|
85
93
|
* @example chargeableDays("2024-06-14T19:00:00Z", "2024-06-17T04:00:00Z", 3, { basis: "calendar", chargeBasis: "calendar", timeZone: "America/New_York", firstDay: "eventDay" }) // { freeDaysUsed: 3, chargeableDays: 0, expiresAt: "2024-06-17T04:00:00Z", chargedDates: [], byTier: [{ from: 1, to: null, days: 0 }] } (gate-out exactly at expiry is free)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
-
import { bandsByTier, parseFreeDays, parseFreeTimeTerms, parseTiers, walkFreeTime, } from "../../internal/index.js";
|
|
2
|
+
import { bandsByTier, frameInstant, frameZoned, instantFrom, parseFreeDays, parseFreeTimeTerms, parseTiers, walkFreeTime, zoneFrame, } from "../../internal/index.js";
|
|
3
3
|
import { isValidInstant } from "../../precision/validate/isValidInstant.js";
|
|
4
4
|
/**
|
|
5
5
|
* Count the days a container is charged for between the start of its clock and its exit,
|
|
@@ -34,20 +34,21 @@ import { isValidInstant } from "../../precision/validate/isValidInstant.js";
|
|
|
34
34
|
* - **`freeDays` may be `0`** for a tariff with no free time: `expiresAt` is the start of day one,
|
|
35
35
|
* the first day counted on `basis` (under `"nextDay"`, the first after the event day), and days
|
|
36
36
|
* before it are neither free nor charged.
|
|
37
|
-
* - **`tiers` are day bands, not rates.** `[5, 10]` names the last chargeable-day ordinal of
|
|
38
|
-
* each band: days 1–5, 6–10 and 11 onward. Every band is returned, an empty one with
|
|
39
|
-
* `days: 0`, and the last is always open. Omitted, `byTier` is the single open band
|
|
40
|
-
* `{ from: 1, to: null }`. A list that is not strictly ascending positive whole numbers
|
|
41
|
-
* returns `null`.
|
|
42
37
|
* - Returns `null` when either instant is invalid, `clockEnd` is before `clockStart` (an
|
|
43
38
|
* inverted dwell is a data error), `freeDays` is not a whole number of at least `0`, the
|
|
44
39
|
* options fail as they do for `freeTimeExpiry`, `tiers` has a hole, an unsafe integer or does not ascend, or the walk would pass
|
|
45
40
|
* 10,000 local days.
|
|
41
|
+
* - **Limit at an offset with seconds.** The instant is placed in the offset's whole-minute zone,
|
|
42
|
+
* moved by its seconds, and the moved instant must be inside Temporal's range. So within the
|
|
43
|
+
* offset's seconds (under a minute) of the last instant Temporal supports
|
|
44
|
+
* (`+275760-09-13T00:00:00Z`) for an offset east of UTC, or of the first
|
|
45
|
+
* (`-271821-04-20T00:00:00Z`) for one west, this returns `null`. An offset to the minute has no
|
|
46
|
+
* such limit.
|
|
46
47
|
*
|
|
47
48
|
* @param clockStart ISO 8601 instant string of the event that starts the clock
|
|
48
49
|
* @param clockEnd ISO 8601 instant string of the event that stops it (gate-out or empty return)
|
|
49
50
|
* @param freeDays whole number of free days the tariff allows, 0 or more
|
|
50
|
-
* @param options
|
|
51
|
+
* @param options The tariff's counting terms for free time and for charged days, and the tier bands
|
|
51
52
|
* @returns the free days used, the chargeable days, the expiry, the charged dates and the days per tier band, or null on invalid input
|
|
52
53
|
*
|
|
53
54
|
* @example chargeableDays("2024-06-14T19:00:00Z", "2024-06-17T04:00:00Z", 3, { basis: "calendar", chargeBasis: "calendar", timeZone: "America/New_York", firstDay: "eventDay" }) // { freeDaysUsed: 3, chargeableDays: 0, expiresAt: "2024-06-17T04:00:00Z", chargedDates: [], byTier: [{ from: 1, to: null, days: 0 }] } (gate-out exactly at expiry is free)
|
|
@@ -69,15 +70,17 @@ export function chargeableDays(clockStart, clockEnd, freeDays, options) {
|
|
|
69
70
|
const allowed = parseFreeDays(freeDays, 0);
|
|
70
71
|
// Read after the terms, so a non-object `options` is never read from.
|
|
71
72
|
const tiers = terms === null ? null : parseTiers(options.tiers);
|
|
73
|
+
const frame = terms === null ? null : zoneFrame(terms.timeZone);
|
|
72
74
|
if (!isValidInstant(clockStart) ||
|
|
73
75
|
!isValidInstant(clockEnd) ||
|
|
74
76
|
terms === null ||
|
|
77
|
+
frame === null ||
|
|
75
78
|
allowed === null ||
|
|
76
79
|
tiers === null) {
|
|
77
80
|
return null;
|
|
78
81
|
}
|
|
79
|
-
const start =
|
|
80
|
-
const end =
|
|
82
|
+
const start = frameZoned(instantFrom(clockStart), frame);
|
|
83
|
+
const end = frameZoned(instantFrom(clockEnd), frame);
|
|
81
84
|
if (Temporal.ZonedDateTime.compare(start, end) > 0) {
|
|
82
85
|
return null;
|
|
83
86
|
}
|
|
@@ -88,7 +91,7 @@ export function chargeableDays(clockStart, clockEnd, freeDays, options) {
|
|
|
88
91
|
return {
|
|
89
92
|
freeDaysUsed: ledger.used,
|
|
90
93
|
chargeableDays: ledger.charged.length,
|
|
91
|
-
expiresAt: ledger.expiresAt
|
|
94
|
+
expiresAt: frameInstant(ledger.expiresAt, frame).toString(),
|
|
92
95
|
chargedDates: ledger.charged.map((day) => day.date),
|
|
93
96
|
byTier: bandsByTier(tiers, ledger.charged.length),
|
|
94
97
|
};
|
|
@@ -15,8 +15,9 @@ import type { Interval } from "../../types/index.js";
|
|
|
15
15
|
export type ClockEventType = "discharged" | "available" | "gatedOut" | "emptyReturned" | "emptyReleased" | "gatedIn" | "loaded";
|
|
16
16
|
/** A container event: what happened and the instant it happened. */
|
|
17
17
|
export interface ClockEvent {
|
|
18
|
+
/** What happened to the container, as one of the events a charging clock can start or end at. */
|
|
18
19
|
type: ClockEventType;
|
|
19
|
-
/** ISO 8601
|
|
20
|
+
/** The instant it happened, as an ISO 8601 string: `Z`, an offset, or a bracketed zone. */
|
|
20
21
|
at: string;
|
|
21
22
|
}
|
|
22
23
|
/** Which charge is being clocked. `combined` is the merged demurrage-and-detention clock. */
|
|
@@ -27,9 +28,18 @@ export type ClockDirection = "import" | "export";
|
|
|
27
28
|
export type ClockStartEvent = "discharged" | "available";
|
|
28
29
|
/** The options `demurrageClock` reads. */
|
|
29
30
|
export interface ClockOptions {
|
|
30
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* The leg of the container's cycle, `"import"` or `"export"`; required, because the same scope
|
|
33
|
+
* runs between different events in each.
|
|
34
|
+
*/
|
|
31
35
|
direction: ClockDirection;
|
|
32
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* Where an import demurrage, storage or combined clock starts: `"discharged"`, the classic
|
|
38
|
+
* definition, or `"available"` for tariffs that start at the availability date. Not read for
|
|
39
|
+
* export or detention.
|
|
40
|
+
*
|
|
41
|
+
* @defaultValue `"discharged"`
|
|
42
|
+
*/
|
|
33
43
|
startEvent?: ClockStartEvent;
|
|
34
44
|
}
|
|
35
45
|
/**
|
|
@@ -53,9 +63,8 @@ export interface ClockOptions {
|
|
|
53
63
|
*
|
|
54
64
|
* - **`direction` has no default.** The same scope name selects different events on the import and
|
|
55
65
|
* export legs, and guessing it from the events present would be a silent guess.
|
|
56
|
-
* - **`startEvent` is import only
|
|
57
|
-
*
|
|
58
|
-
* or export, so one options object can serve every scope on a leg. A tariff that starts at
|
|
66
|
+
* - **`startEvent` is import only.** It is not read for detention or export, so one options
|
|
67
|
+
* object can serve every scope on a leg. A tariff that starts at
|
|
59
68
|
* customs release (Hapag-Lloyd Japan) or ends export demurrage at the cut-off or the scheduled
|
|
60
69
|
* sailing passes that instant as the event's `at`; GMT does not invent an event for one tariff.
|
|
61
70
|
* - Events may be in any order, and every one must be `{ type, at }` with a known type and a
|
|
@@ -71,7 +80,7 @@ export interface ClockOptions {
|
|
|
71
80
|
*
|
|
72
81
|
* @param events the container's events, `{ type, at }`, `type` one of discharged, available, gatedOut, emptyReturned, emptyReleased, gatedIn, loaded
|
|
73
82
|
* @param scope "demurrage" | "detention" | "storage" | "combined"
|
|
74
|
-
* @param options
|
|
83
|
+
* @param options Which leg of the cycle the clock is on, and where an import clock starts
|
|
75
84
|
* @returns { start, end } of the requested clock, or null on invalid input
|
|
76
85
|
*
|
|
77
86
|
* @example demurrageClock([{ type: "discharged", at: "2024-06-14T19:00:00Z" }, { type: "available", at: "2024-06-15T12:00:00Z" }, { type: "gatedOut", at: "2024-06-20T14:30:00Z" }, { type: "emptyReturned", at: "2024-06-27T09:00:00Z" }], "demurrage", { direction: "import" }) / { start: "2024-06-14T19:00:00Z", end: "2024-06-20T14:30:00Z" }
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
-
import { isObject } from "../../internal/index.js";
|
|
2
|
+
import { instantFrom, isObject } from "../../internal/index.js";
|
|
3
3
|
import { isValidInstant } from "../../precision/validate/isValidInstant.js";
|
|
4
|
+
import { optionOrDefault } from "../../internal/optionOrDefault.js";
|
|
4
5
|
const CLOCK_EVENT_TYPES = [
|
|
5
6
|
"discharged",
|
|
6
7
|
"available",
|
|
@@ -48,9 +49,8 @@ const EXPORT_CLOCKS = {
|
|
|
48
49
|
*
|
|
49
50
|
* - **`direction` has no default.** The same scope name selects different events on the import and
|
|
50
51
|
* export legs, and guessing it from the events present would be a silent guess.
|
|
51
|
-
* - **`startEvent` is import only
|
|
52
|
-
*
|
|
53
|
-
* or export, so one options object can serve every scope on a leg. A tariff that starts at
|
|
52
|
+
* - **`startEvent` is import only.** It is not read for detention or export, so one options
|
|
53
|
+
* object can serve every scope on a leg. A tariff that starts at
|
|
54
54
|
* customs release (Hapag-Lloyd Japan) or ends export demurrage at the cut-off or the scheduled
|
|
55
55
|
* sailing passes that instant as the event's `at`; GMT does not invent an event for one tariff.
|
|
56
56
|
* - Events may be in any order, and every one must be `{ type, at }` with a known type and a
|
|
@@ -66,7 +66,7 @@ const EXPORT_CLOCKS = {
|
|
|
66
66
|
*
|
|
67
67
|
* @param events the container's events, `{ type, at }`, `type` one of discharged, available, gatedOut, emptyReturned, emptyReleased, gatedIn, loaded
|
|
68
68
|
* @param scope "demurrage" | "detention" | "storage" | "combined"
|
|
69
|
-
* @param options
|
|
69
|
+
* @param options Which leg of the cycle the clock is on, and where an import clock starts
|
|
70
70
|
* @returns { start, end } of the requested clock, or null on invalid input
|
|
71
71
|
*
|
|
72
72
|
* @example demurrageClock([{ type: "discharged", at: "2024-06-14T19:00:00Z" }, { type: "available", at: "2024-06-15T12:00:00Z" }, { type: "gatedOut", at: "2024-06-20T14:30:00Z" }, { type: "emptyReturned", at: "2024-06-27T09:00:00Z" }], "demurrage", { direction: "import" }) / { start: "2024-06-14T19:00:00Z", end: "2024-06-20T14:30:00Z" }
|
|
@@ -107,7 +107,7 @@ function selectClock(events, scope, options) {
|
|
|
107
107
|
return null;
|
|
108
108
|
}
|
|
109
109
|
// An explicit `undefined` is an omission (TC39 GetOption); `null` is a value, and not a valid one.
|
|
110
|
-
const startEvent = options.startEvent
|
|
110
|
+
const startEvent = optionOrDefault(options.startEvent, "discharged");
|
|
111
111
|
if (!CLOCK_START_EVENTS.includes(startEvent)) {
|
|
112
112
|
return null;
|
|
113
113
|
}
|
|
@@ -134,7 +134,7 @@ function selectClock(events, scope, options) {
|
|
|
134
134
|
if (start === null || end === null) {
|
|
135
135
|
return null;
|
|
136
136
|
}
|
|
137
|
-
return Temporal.Instant.compare(
|
|
137
|
+
return Temporal.Instant.compare(instantFrom(start), instantFrom(end)) > 0
|
|
138
138
|
? null
|
|
139
139
|
: { start, end };
|
|
140
140
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { FreeTimeOptions } from "../../types/index.js";
|
|
2
2
|
/** What `freeTimeExpiry` returns: the free-time window as local dates, and the instant it ends. */
|
|
3
3
|
export interface FreeTime {
|
|
4
|
-
/**
|
|
4
|
+
/** The first free day, as a local date in the counting zone. */
|
|
5
5
|
freeTimeStart: string;
|
|
6
6
|
/** The last free day, as a local date in the counting zone. */
|
|
7
7
|
lastFreeDay: string;
|
|
@@ -19,8 +19,9 @@ export interface FreeTime {
|
|
|
19
19
|
* the free time allowed and the dates it starts and ends.
|
|
20
20
|
*
|
|
21
21
|
* - **Days are the terminal's local days.** `clockStart` is an instant (`Z`, an offset, or a
|
|
22
|
-
* bracketed zone, of which only the instant is read
|
|
23
|
-
*
|
|
22
|
+
* bracketed zone, of which only the instant is read, a minute-rounded offset as the zone's
|
|
23
|
+
* real one, as `isValidInstant` describes); its local date in `options.timeZone` is the
|
|
24
|
+
* event day. A container discharged at 23:00 has used a free day by 00:01 under
|
|
24
25
|
* `firstDay: "eventDay"`. Day boundaries are the zone's real ones, as `floorToZone` and
|
|
25
26
|
* `dwellTime` find them: a 23- or 25-hour day is one day, a date the zone deleted is never a
|
|
26
27
|
* free day, and a fall-back that re-enters an earlier date never moves the count backwards.
|
|
@@ -45,10 +46,16 @@ export interface FreeTime {
|
|
|
45
46
|
* least `1`, `options` is not an object, `basis` or `firstDay` is missing or unknown,
|
|
46
47
|
* `timeZone` is invalid, `basis` is `"working"` without a valid `BusinessCalendar`, or the walk
|
|
47
48
|
* would pass 10,000 local days.
|
|
49
|
+
* - **Limit at an offset with seconds.** The instant is placed in the offset's whole-minute zone,
|
|
50
|
+
* moved by its seconds, and the moved instant must be inside Temporal's range. So within the
|
|
51
|
+
* offset's seconds (under a minute) of the last instant Temporal supports
|
|
52
|
+
* (`+275760-09-13T00:00:00Z`) for an offset east of UTC, or of the first
|
|
53
|
+
* (`-271821-04-20T00:00:00Z`) for one west, this returns `null`. An offset to the minute has no
|
|
54
|
+
* such limit.
|
|
48
55
|
*
|
|
49
56
|
* @param clockStart ISO 8601 instant string of the event that starts the clock (discharge, availability or gate-out)
|
|
50
57
|
* @param freeDays whole number of free days the tariff allows, at least 1
|
|
51
|
-
* @param options
|
|
58
|
+
* @param options The tariff's counting terms: which days count, in which zone, and where day one starts
|
|
52
59
|
* @returns the free-time start and last free day as local dates, and the expiry instant, or null on invalid input
|
|
53
60
|
*
|
|
54
61
|
* @example freeTimeExpiry("2024-06-14T19:00:00Z", 3, { basis: "calendar", timeZone: "America/New_York", firstDay: "eventDay" }) // { freeTimeStart: "2024-06-14", lastFreeDay: "2024-06-16", expiresAt: "2024-06-17T04:00:00Z" } (a Friday discharge: the weekend is consumed)
|
|
@@ -62,5 +69,6 @@ export interface FreeTime {
|
|
|
62
69
|
* @example freeTimeExpiry("2024-06-14T19:00:00Z", 3, { basis: "working", timeZone: "America/New_York", firstDay: "eventDay" }) // null (a working-day count needs the terminal's calendar)
|
|
63
70
|
* @example freeTimeExpiry("2024-06-14T19:00:00Z", 0, { basis: "calendar", timeZone: "America/New_York", firstDay: "eventDay" }) // null (no free days means no last free day)
|
|
64
71
|
* @example freeTimeExpiry("2024-06-14T19:00:00", 3, { basis: "calendar", timeZone: "America/New_York", firstDay: "eventDay" }) // null (no offset: not an instant)
|
|
72
|
+
* @example freeTimeExpiry("1970-01-01T00:30:00Z", 3, { basis: "calendar", firstDay: "eventDay", timeZone: "-00:44:30" }) // { freeTimeStart: "1969-12-31", lastFreeDay: "1970-01-02", expiresAt: "1970-01-03T00:44:30Z" }
|
|
65
73
|
*/
|
|
66
74
|
export declare function freeTimeExpiry(clockStart: string, freeDays: number, options: FreeTimeOptions): FreeTime | null;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { parseFreeDays, parseFreeTimeTerms, walkFreeTime, } from "../../internal/index.js";
|
|
1
|
+
import { frameInstant, frameZoned, instantFrom, parseFreeDays, parseFreeTimeTerms, walkFreeTime, zoneFrame, } from "../../internal/index.js";
|
|
3
2
|
import { isValidInstant } from "../../precision/validate/isValidInstant.js";
|
|
4
3
|
/**
|
|
5
4
|
* Lay out a container's free time from the instant its clock started, and say when it ends.
|
|
@@ -12,8 +11,9 @@ import { isValidInstant } from "../../precision/validate/isValidInstant.js";
|
|
|
12
11
|
* the free time allowed and the dates it starts and ends.
|
|
13
12
|
*
|
|
14
13
|
* - **Days are the terminal's local days.** `clockStart` is an instant (`Z`, an offset, or a
|
|
15
|
-
* bracketed zone, of which only the instant is read
|
|
16
|
-
*
|
|
14
|
+
* bracketed zone, of which only the instant is read, a minute-rounded offset as the zone's
|
|
15
|
+
* real one, as `isValidInstant` describes); its local date in `options.timeZone` is the
|
|
16
|
+
* event day. A container discharged at 23:00 has used a free day by 00:01 under
|
|
17
17
|
* `firstDay: "eventDay"`. Day boundaries are the zone's real ones, as `floorToZone` and
|
|
18
18
|
* `dwellTime` find them: a 23- or 25-hour day is one day, a date the zone deleted is never a
|
|
19
19
|
* free day, and a fall-back that re-enters an earlier date never moves the count backwards.
|
|
@@ -38,10 +38,16 @@ import { isValidInstant } from "../../precision/validate/isValidInstant.js";
|
|
|
38
38
|
* least `1`, `options` is not an object, `basis` or `firstDay` is missing or unknown,
|
|
39
39
|
* `timeZone` is invalid, `basis` is `"working"` without a valid `BusinessCalendar`, or the walk
|
|
40
40
|
* would pass 10,000 local days.
|
|
41
|
+
* - **Limit at an offset with seconds.** The instant is placed in the offset's whole-minute zone,
|
|
42
|
+
* moved by its seconds, and the moved instant must be inside Temporal's range. So within the
|
|
43
|
+
* offset's seconds (under a minute) of the last instant Temporal supports
|
|
44
|
+
* (`+275760-09-13T00:00:00Z`) for an offset east of UTC, or of the first
|
|
45
|
+
* (`-271821-04-20T00:00:00Z`) for one west, this returns `null`. An offset to the minute has no
|
|
46
|
+
* such limit.
|
|
41
47
|
*
|
|
42
48
|
* @param clockStart ISO 8601 instant string of the event that starts the clock (discharge, availability or gate-out)
|
|
43
49
|
* @param freeDays whole number of free days the tariff allows, at least 1
|
|
44
|
-
* @param options
|
|
50
|
+
* @param options The tariff's counting terms: which days count, in which zone, and where day one starts
|
|
45
51
|
* @returns the free-time start and last free day as local dates, and the expiry instant, or null on invalid input
|
|
46
52
|
*
|
|
47
53
|
* @example freeTimeExpiry("2024-06-14T19:00:00Z", 3, { basis: "calendar", timeZone: "America/New_York", firstDay: "eventDay" }) // { freeTimeStart: "2024-06-14", lastFreeDay: "2024-06-16", expiresAt: "2024-06-17T04:00:00Z" } (a Friday discharge: the weekend is consumed)
|
|
@@ -55,15 +61,20 @@ import { isValidInstant } from "../../precision/validate/isValidInstant.js";
|
|
|
55
61
|
* @example freeTimeExpiry("2024-06-14T19:00:00Z", 3, { basis: "working", timeZone: "America/New_York", firstDay: "eventDay" }) // null (a working-day count needs the terminal's calendar)
|
|
56
62
|
* @example freeTimeExpiry("2024-06-14T19:00:00Z", 0, { basis: "calendar", timeZone: "America/New_York", firstDay: "eventDay" }) // null (no free days means no last free day)
|
|
57
63
|
* @example freeTimeExpiry("2024-06-14T19:00:00", 3, { basis: "calendar", timeZone: "America/New_York", firstDay: "eventDay" }) // null (no offset: not an instant)
|
|
64
|
+
* @example freeTimeExpiry("1970-01-01T00:30:00Z", 3, { basis: "calendar", firstDay: "eventDay", timeZone: "-00:44:30" }) // { freeTimeStart: "1969-12-31", lastFreeDay: "1970-01-02", expiresAt: "1970-01-03T00:44:30Z" }
|
|
58
65
|
*/
|
|
59
66
|
export function freeTimeExpiry(clockStart, freeDays, options) {
|
|
60
67
|
try {
|
|
61
68
|
const terms = parseFreeTimeTerms(options);
|
|
62
69
|
const allowed = parseFreeDays(freeDays, 1);
|
|
63
|
-
|
|
70
|
+
const frame = terms === null ? null : zoneFrame(terms.timeZone);
|
|
71
|
+
if (!isValidInstant(clockStart) ||
|
|
72
|
+
terms === null ||
|
|
73
|
+
frame === null ||
|
|
74
|
+
allowed === null) {
|
|
64
75
|
return null;
|
|
65
76
|
}
|
|
66
|
-
const start =
|
|
77
|
+
const start = frameZoned(instantFrom(clockStart), frame);
|
|
67
78
|
const ledger = walkFreeTime(start, allowed, terms);
|
|
68
79
|
if (ledger === null) {
|
|
69
80
|
return null;
|
|
@@ -71,7 +82,7 @@ export function freeTimeExpiry(clockStart, freeDays, options) {
|
|
|
71
82
|
return {
|
|
72
83
|
freeTimeStart: ledger.free[0].date,
|
|
73
84
|
lastFreeDay: ledger.free[allowed - 1].date,
|
|
74
|
-
expiresAt: ledger.expiresAt
|
|
85
|
+
expiresAt: frameInstant(ledger.expiresAt, frame).toString(),
|
|
75
86
|
};
|
|
76
87
|
}
|
|
77
88
|
catch {
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { type Leg, type ScheduleDeliveryOptions } from "../../transport/calculate/scheduleDelivery.js";
|
|
2
|
+
/** What `multimodalETA` returns: the end-to-end ETA, with the time moving and the time waiting kept apart. */
|
|
3
|
+
export interface MultimodalJourney {
|
|
4
|
+
/** The last leg's arrival rendered in its `timeZone`, as `scheduleDelivery` gives it. `""` only for an empty legs array. */
|
|
5
|
+
eta: string;
|
|
6
|
+
/** The number of legs in the journey. */
|
|
7
|
+
totalLegs: number;
|
|
8
|
+
/**
|
|
9
|
+
* The time the cargo spent moving: every leg's `duration` added up, as an ISO 8601 duration of
|
|
10
|
+
* elapsed time with hours as the largest unit.
|
|
11
|
+
*/
|
|
12
|
+
totalTransit: string;
|
|
13
|
+
/**
|
|
14
|
+
* The time the cargo spent at the handoffs between legs: each leg's departure minus the previous
|
|
15
|
+
* leg's arrival, added up, in the same form as `totalTransit`. It includes any wait for a
|
|
16
|
+
* scheduled departure on top of the handoff's `dwellAfter`.
|
|
17
|
+
*/
|
|
18
|
+
totalDwell: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Compute an end-to-end ETA across the legs of a multimodal move, and report the time in transit
|
|
22
|
+
* and the time in dwell separately.
|
|
23
|
+
*
|
|
24
|
+
* A truck→ship→rail move spends its time two ways: moving, and sitting at a handoff. The two are
|
|
25
|
+
* forecast differently and fail differently, so one opaque total hides the part a planner needs.
|
|
26
|
+
* `multimodalETA` schedules the legs with `scheduleDelivery` and splits the elapsed time from the
|
|
27
|
+
* first departure to the ETA into the two.
|
|
28
|
+
*
|
|
29
|
+
* - **The legs are `scheduleDelivery`'s.** Each leg's arrival plus its `dwellAfter` is the next
|
|
30
|
+
* leg's departure unless the next leg names a scheduled `departure`; a scheduled departure
|
|
31
|
+
* inside the dwell is a missed connection. Departures, zones and every validity rule are that
|
|
32
|
+
* function's, and `eta` is its `eta`.
|
|
33
|
+
* - **Local-time resolution policy (`"compatible"`), as `scheduleDelivery` applies it.** A zoneless
|
|
34
|
+
* first departure read in `startTimeZone`, a zoneless later-leg departure read in the previous
|
|
35
|
+
* leg's `timeZone`, and a zoned departure written without an offset are wall times. An
|
|
36
|
+
* **ambiguous** one (a fall-back hour the clock ran through twice) resolves to the **earlier**
|
|
37
|
+
* instant and a **nonexistent** one (a spring-forward hour the clock skipped) to the **later**
|
|
38
|
+
* instant, except that on any leg but the first a repeated hour takes the earliest pass at or
|
|
39
|
+
* after the previous arrival plus its dwell, the first the cargo can catch. Write the offset to
|
|
40
|
+
* pick a pass yourself.
|
|
41
|
+
* - **`totalTransit` is every leg's `duration` added up.** Durations are exact time: a day is 24
|
|
42
|
+
* hours, and years, months and weeks return `null`. The sum is elapsed time, so a leg across a
|
|
43
|
+
* DST change counts the hours that passed, not the change in the wall clock.
|
|
44
|
+
* - **`totalDwell` is the time actually spent at the handoffs**: each leg's departure minus the
|
|
45
|
+
* previous leg's arrival. When every leg after the first chains from its predecessor, that is the
|
|
46
|
+
* sum of the `dwellAfter` values. When a leg waits for a scheduled departure, the wait is dwell
|
|
47
|
+
* too: the cargo is at the handoff either way. Dwell is never estimated; it is the caller's
|
|
48
|
+
* `dwellAfter` and schedule.
|
|
49
|
+
* - **Transit plus dwell is the elapsed time** from the first departure to the ETA, exactly.
|
|
50
|
+
* - **The last leg's `dwellAfter` is not dwell.** There is no handoff after it, so it moves
|
|
51
|
+
* nothing; it is still checked as a duration, as `scheduleDelivery` checks it.
|
|
52
|
+
* - Both totals are ISO 8601 durations with hours as the largest unit (`"PT400H"`, `"PT2H15M"`),
|
|
53
|
+
* as `crossingTime` and `dwellTime` report elapsed time; they do not depend on any zone.
|
|
54
|
+
* - Each leg's fields are read once, so the totals always agree with the schedule.
|
|
55
|
+
* - An empty legs array returns `{ eta: "", totalLegs: 0, totalTransit: "PT0S", totalDwell: "PT0S" }`.
|
|
56
|
+
* Returns `null` on invalid input: a non-array, a malformed leg, a missed connection, an invalid
|
|
57
|
+
* `startTimeZone`, or an arrival outside the instant range.
|
|
58
|
+
* - An offset with seconds (`-00:44:30`) as a leg's `timeZone` or as `startTimeZone` returns
|
|
59
|
+
* `null`, as in `scheduleDelivery`. A written zone cannot carry seconds (RFC 9557 §4.1), so `eta`
|
|
60
|
+
* could not name it. Pass the IANA name.
|
|
61
|
+
*
|
|
62
|
+
* @param legs the journey's legs, in travel order
|
|
63
|
+
* @param options The zone a zoneless first-leg departure is read in
|
|
64
|
+
* @returns the ETA, the number of legs, and the total transit and dwell, or null on invalid input
|
|
65
|
+
*
|
|
66
|
+
* @example multimodalETA([{ departure: "2024-06-10T08:00:00+08:00[Asia/Shanghai]", duration: "PT6H", timeZone: "Asia/Shanghai", dwellAfter: "P2D" }, { duration: "P14DT6H", timeZone: "America/Los_Angeles", dwellAfter: "PT36H" }, { duration: "PT52H", timeZone: "America/Chicago" }]) // { eta: "2024-06-29T23:00:00-05:00[America/Chicago]", totalLegs: 3, totalTransit: "PT400H", totalDwell: "PT84H" } (truck, ship and rail: 484 hours door to door)
|
|
67
|
+
* @example multimodalETA([{ departure: "2024-06-15T00:00:00Z", duration: "PT10H", timeZone: "UTC", dwellAfter: "PT2H" }, { duration: "PT5H", timeZone: "Asia/Tokyo" }]) // { eta: "2024-06-16T02:00:00+09:00[Asia/Tokyo]", totalLegs: 2, totalTransit: "PT15H", totalDwell: "PT2H" }
|
|
68
|
+
* @example multimodalETA([{ departure: "2024-06-15T00:00:00Z", duration: "PT10H", timeZone: "UTC", dwellAfter: "PT2H" }, { departure: "2024-06-15T13:00:00Z", duration: "PT1H", timeZone: "UTC" }]) // { eta: "2024-06-15T14:00:00+00:00[UTC]", totalLegs: 2, totalTransit: "PT11H", totalDwell: "PT3H" } (two hours' handling and an hour's wait for the 13:00 departure)
|
|
69
|
+
* @example multimodalETA([{ departure: "2024-06-15T10:00:00Z", duration: "PT36H", timeZone: "Asia/Tokyo", dwellAfter: "PT5H" }]) // { eta: "2024-06-17T07:00:00+09:00[Asia/Tokyo]", totalLegs: 1, totalTransit: "PT36H", totalDwell: "PT0S" } (no handoff after the last leg)
|
|
70
|
+
* @example multimodalETA([{ departure: "2024-06-15T10:00:00", duration: "PT1H", timeZone: "UTC" }], { startTimeZone: "America/New_York" }) // { eta: "2024-06-15T15:00:00+00:00[UTC]", totalLegs: 1, totalTransit: "PT1H", totalDwell: "PT0S" } (a published 10:00 wall time, read in New York)
|
|
71
|
+
* @example multimodalETA([]) // { eta: "", totalLegs: 0, totalTransit: "PT0S", totalDwell: "PT0S" }
|
|
72
|
+
* @example multimodalETA([{ departure: "2024-06-15T00:00:00Z", duration: "PT10H", timeZone: "UTC", dwellAfter: "PT2H" }, { departure: "2024-06-15T11:00:00Z", duration: "PT1H", timeZone: "UTC" }]) // null (the connection leaves inside the dwell: missed)
|
|
73
|
+
* @example multimodalETA([{ departure: "2024-06-15T10:00:00Z", duration: "P1M", timeZone: "UTC" }]) // null (calendar units have no exact length)
|
|
74
|
+
* @example multimodalETA("legs") // null
|
|
75
|
+
*/
|
|
76
|
+
export declare function multimodalETA(legs: Leg[], options?: ScheduleDeliveryOptions): MultimodalJourney | null;
|