@northguild/gmt 1.18.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 -2920
- package/dist/calendar/calculate/bucketRange.d.ts +10 -2
- package/dist/calendar/calculate/bucketRange.js +18 -61
- package/dist/calendar/calculate/floorToZone.d.ts +10 -2
- package/dist/calendar/calculate/floorToZone.js +15 -7
- package/dist/calendar/hours/addOperatingTime.d.ts +6 -0
- package/dist/calendar/hours/addOperatingTime.js +7 -1
- package/dist/calendar/hours/isOpenAt.d.ts +6 -0
- package/dist/calendar/hours/isOpenAt.js +6 -0
- package/dist/calendar/hours/nextCloseAt.d.ts +6 -0
- package/dist/calendar/hours/nextCloseAt.js +7 -1
- package/dist/calendar/hours/nextOpenAt.d.ts +6 -0
- package/dist/calendar/hours/nextOpenAt.js +7 -1
- package/dist/calendar/hours/operatingIntervals.d.ts +5 -0
- package/dist/calendar/hours/operatingIntervals.js +5 -0
- package/dist/calendar/hours/operatingTimeBetween.d.ts +5 -0
- package/dist/calendar/hours/operatingTimeBetween.js +5 -0
- package/dist/calendar/hours/recurringWindows.d.ts +8 -1
- package/dist/calendar/hours/recurringWindows.js +12 -4
- 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/{durationAs.d.ts → totalDuration.d.ts} +25 -19
- package/dist/duration/calculate/{durationAs.js → totalDuration.js} +25 -19
- package/dist/duration/calculate/totalUnits.d.ts +49 -0
- package/dist/duration/calculate/totalUnits.js +73 -0
- package/dist/duration/compare/compareDurations.d.ts +1 -1
- package/dist/duration/compare/compareDurations.js +1 -1
- 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 +4 -0
- package/dist/instant/convert/fromOffsetInstant.js +6 -1
- package/dist/instant/convert/resolveLocal.d.ts +7 -2
- package/dist/instant/convert/resolveLocal.js +16 -8
- package/dist/instant/convert/toOffsetInstant.d.ts +12 -8
- package/dist/instant/convert/toOffsetInstant.js +19 -11
- 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/chargeableDays.d.ts +6 -0
- package/dist/intermodal/calculate/chargeableDays.js +12 -4
- package/dist/intermodal/calculate/freeTimeExpiry.d.ts +7 -0
- package/dist/intermodal/calculate/freeTimeExpiry.js +15 -4
- 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.js +4 -9
- 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 +3 -1
- package/dist/internal/freeTimeLedger.d.ts +5 -0
- package/dist/internal/freeTimeLedger.js +11 -2
- package/dist/internal/index.d.ts +5 -2
- package/dist/internal/index.js +9 -2
- 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/maxPieces.js +2 -1
- package/dist/internal/normalizeTimeZone.d.ts +4 -1
- package/dist/internal/normalizeTimeZone.js +4 -1
- package/dist/internal/operatingSchedule.d.ts +13 -4
- package/dist/internal/operatingSchedule.js +146 -58
- package/dist/internal/patternToken.d.ts +10 -3
- package/dist/internal/patternToken.js +31 -12
- 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/resolveRelativeUnit.d.ts +1 -1
- package/dist/internal/resolveRelativeUnit.js +1 -1
- package/dist/internal/resolveUnixIntervalPair.d.ts +8 -2
- package/dist/internal/resolveUnixIntervalPair.js +11 -7
- package/dist/internal/startOrEndOfUnix.d.ts +2 -1
- package/dist/internal/startOrEndOfUnix.js +9 -6
- 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/zonedNowUnitValue.d.ts +7 -4
- package/dist/internal/zonedNowUnitValue.js +8 -4
- package/dist/internal/zonedWallClockDifference.js +4 -4
- package/dist/internal/zonedWallClockOperations.d.ts +5 -2
- package/dist/internal/zonedWallClockOperations.js +7 -10
- package/dist/plain/calculate/addDate.js +4 -7
- package/dist/plain/calculate/addDateTime.js +4 -7
- package/dist/plain/calculate/addTime.js +4 -7
- package/dist/plain/calculate/endOfTime.d.ts +1 -1
- package/dist/plain/calculate/setDate.d.ts +20 -3
- package/dist/plain/calculate/setDate.js +27 -7
- package/dist/plain/calculate/setDateTime.d.ts +15 -3
- package/dist/plain/calculate/setDateTime.js +22 -7
- package/dist/plain/calculate/setTime.d.ts +13 -1
- package/dist/plain/calculate/setTime.js +21 -6
- package/dist/plain/calculate/startOfTime.d.ts +1 -1
- package/dist/plain/calculate/subtractDate.js +4 -7
- package/dist/plain/calculate/subtractDateTime.js +4 -7
- package/dist/plain/calculate/subtractTime.js +4 -7
- package/dist/plain/format/formatCalendar.js +2 -1
- package/dist/plain/format/formatRelativeDate.js +2 -1
- package/dist/plain/format/formatRelativeDateTime.js +2 -1
- package/dist/plain/format/formatRelativeTime.js +2 -1
- 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/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/intervalXorAllDate.js +2 -2
- package/dist/plain/interval/intervalXorAllDateTime.js +2 -2
- package/dist/plain/interval/intervalXorAllTime.js +2 -2
- package/dist/plain/interval/mergeIntervalsDate.js +2 -2
- package/dist/plain/interval/mergeIntervalsDateTime.js +2 -2
- package/dist/plain/interval/mergeIntervalsTime.js +2 -2
- package/dist/plain/parse/index.d.ts +1 -1
- package/dist/plain/parse/index.js +1 -1
- package/dist/plain/parse/parseDateTimeWithPattern.d.ts +16 -3
- package/dist/plain/parse/parseDateTimeWithPattern.js +20 -5
- package/dist/plain/parse/parseDateWithPattern.d.ts +17 -3
- package/dist/plain/parse/parseDateWithPattern.js +21 -5
- 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.js +1 -0
- package/dist/plain/parse/parseUnitFromDate.d.ts +3 -0
- package/dist/plain/parse/parseUnitFromDate.js +5 -1
- package/dist/plain/parse/parseUnitFromDateTime.d.ts +3 -0
- package/dist/plain/parse/parseUnitFromDateTime.js +5 -1
- 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/isValidSqlDateTime.d.ts +33 -0
- package/dist/plain/validate/isValidSqlDateTime.js +36 -0
- package/dist/precision/convert/fromNanoseconds.d.ts +9 -3
- package/dist/precision/convert/fromNanoseconds.js +9 -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/transport/calculate/crossingTime.d.ts +6 -1
- package/dist/transport/calculate/crossingTime.js +6 -1
- package/dist/transport/calculate/cutoffAt.d.ts +6 -1
- package/dist/transport/calculate/cutoffAt.js +2 -0
- package/dist/transport/calculate/cutoffSchedule.d.ts +6 -1
- package/dist/transport/calculate/cutoffSchedule.js +2 -0
- package/dist/transport/calculate/dwellTime.d.ts +6 -1
- package/dist/transport/calculate/dwellTime.js +6 -1
- package/dist/transport/calculate/scheduleDelivery.d.ts +13 -5
- package/dist/transport/calculate/scheduleDelivery.js +6 -1
- package/dist/transport/convert/etaAtZone.d.ts +6 -1
- package/dist/transport/convert/etaAtZone.js +6 -1
- package/dist/types/business-calendar.d.ts +5 -4
- package/dist/types/duty.d.ts +777 -0
- package/dist/types/duty.js +0 -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/free-time-options.d.ts +4 -3
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.js +5 -0
- package/dist/types/operating-schedule.d.ts +3 -2
- 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 +11 -2
- package/dist/unix/calculate/addUnix.js +14 -11
- package/dist/unix/calculate/diffUnix.d.ts +10 -2
- package/dist/unix/calculate/diffUnix.js +11 -6
- package/dist/unix/calculate/diffUnixAsDuration.d.ts +10 -2
- package/dist/unix/calculate/diffUnixAsDuration.js +10 -5
- package/dist/unix/calculate/endOfQuarterForUnix.d.ts +10 -2
- package/dist/unix/calculate/endOfQuarterForUnix.js +6 -0
- package/dist/unix/calculate/endOfUnix.d.ts +11 -2
- package/dist/unix/calculate/endOfUnix.js +7 -0
- package/dist/unix/calculate/isBetweenUnix.d.ts +3 -2
- package/dist/unix/calculate/isBetweenUnix.js +3 -3
- package/dist/unix/calculate/roundUnix.d.ts +10 -2
- package/dist/unix/calculate/roundUnix.js +13 -6
- package/dist/unix/calculate/setUnix.d.ts +25 -5
- package/dist/unix/calculate/setUnix.js +33 -12
- package/dist/unix/calculate/startOfQuarterForUnix.d.ts +10 -2
- package/dist/unix/calculate/startOfQuarterForUnix.js +6 -0
- package/dist/unix/calculate/startOfUnix.d.ts +11 -2
- package/dist/unix/calculate/startOfUnix.js +7 -0
- package/dist/unix/calculate/subtractUnix.d.ts +10 -2
- package/dist/unix/calculate/subtractUnix.js +13 -11
- package/dist/unix/compare/areUnixEqualBy.d.ts +11 -2
- package/dist/unix/compare/areUnixEqualBy.js +7 -0
- package/dist/unix/convert/convertUnixToPlainDate.d.ts +5 -2
- package/dist/unix/convert/convertUnixToPlainDate.js +5 -4
- package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +5 -2
- package/dist/unix/convert/convertUnixToPlainDateTime.js +5 -4
- package/dist/unix/convert/convertUnixToPlainTime.d.ts +5 -2
- package/dist/unix/convert/convertUnixToPlainTime.js +5 -4
- package/dist/unix/convert/convertUnixToZoned.d.ts +5 -1
- package/dist/unix/convert/convertUnixToZoned.js +5 -1
- package/dist/unix/format/formatCalendarUnix.d.ts +6 -2
- package/dist/unix/format/formatCalendarUnix.js +6 -1
- package/dist/unix/format/formatRelativeUnix.d.ts +11 -3
- package/dist/unix/format/formatRelativeUnix.js +13 -5
- package/dist/unix/format/formatUnix.d.ts +7 -2
- package/dist/unix/format/formatUnix.js +4 -0
- 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/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 +11 -2
- package/dist/unix/interval/intervalCountUnix.js +7 -0
- package/dist/unix/interval/intervalFromDurationUnix.d.ts +10 -2
- package/dist/unix/interval/intervalFromDurationUnix.js +12 -7
- package/dist/unix/interval/intervalLengthUnix.d.ts +10 -2
- package/dist/unix/interval/intervalLengthUnix.js +6 -0
- package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +10 -2
- package/dist/unix/interval/intervalOverlappingDaysUnix.js +10 -5
- package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +10 -2
- package/dist/unix/interval/splitIntervalByUnitUnix.js +12 -6
- package/dist/unix/parse/parseDateFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseDateFromUnix.js +3 -3
- package/dist/unix/parse/parseDayFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseDayOfWeekFromUnix.js +2 -2
- package/dist/unix/parse/parseHourFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMillisecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMinuteFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMonthFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseNanosecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseSecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseTimeFromUnix.d.ts +5 -2
- package/dist/unix/parse/parseTimeFromUnix.js +4 -3
- package/dist/unix/parse/parseUnitFromUnix.d.ts +9 -3
- package/dist/unix/parse/parseUnitFromUnix.js +21 -14
- package/dist/unix/parse/parseWeekFromUnix.d.ts +3 -2
- package/dist/unix/parse/parseWeekFromUnix.js +4 -4
- package/dist/unix/parse/parseYearFromUnix.d.ts +8 -3
- package/dist/unix/parse/parseYearFromUnix.js +4 -1
- package/dist/unix/validate/isValidUnixUnit.d.ts +1 -1
- package/dist/utc/calculate/addUtc.js +4 -7
- package/dist/utc/calculate/setUtc.d.ts +16 -3
- package/dist/utc/calculate/setUtc.js +22 -8
- package/dist/utc/calculate/subtractUtc.js +4 -7
- package/dist/utc/convert/convertUtcToPlainDate.d.ts +8 -2
- package/dist/utc/convert/convertUtcToPlainDate.js +10 -7
- package/dist/utc/convert/convertUtcToPlainDateTime.d.ts +9 -2
- package/dist/utc/convert/convertUtcToPlainDateTime.js +12 -13
- package/dist/utc/convert/convertUtcToPlainTime.d.ts +5 -2
- package/dist/utc/convert/convertUtcToPlainTime.js +7 -6
- package/dist/utc/convert/convertUtcToZoned.d.ts +5 -1
- package/dist/utc/convert/convertUtcToZoned.js +5 -1
- package/dist/utc/format/formatCalendarUtc.d.ts +6 -2
- package/dist/utc/format/formatCalendarUtc.js +6 -1
- package/dist/utc/format/{formatHttp.d.ts → formatHttpDate.d.ts} +7 -7
- package/dist/utc/format/{formatHttp.js → formatHttpDate.js} +7 -7
- package/dist/utc/format/formatRelativeUtc.d.ts +11 -3
- package/dist/utc/format/formatRelativeUtc.js +13 -5
- package/dist/utc/format/formatUtc.d.ts +7 -2
- package/dist/utc/format/formatUtc.js +4 -0
- 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/intervalXorAllUtc.js +2 -2
- package/dist/utc/interval/mergeIntervalsUtc.js +2 -2
- package/dist/utc/parse/index.d.ts +1 -1
- package/dist/utc/parse/index.js +1 -1
- package/dist/utc/parse/parseDateFromUtc.d.ts +4 -2
- package/dist/utc/parse/parseDateFromUtc.js +2 -2
- package/dist/utc/parse/parseDayFromUtc.d.ts +4 -2
- package/dist/utc/parse/parseDayFromUtc.js +2 -2
- package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +4 -2
- package/dist/utc/parse/parseDayOfWeekFromUtc.js +4 -4
- package/dist/utc/parse/parseHourFromUtc.d.ts +4 -2
- package/dist/utc/parse/parseHourFromUtc.js +2 -2
- 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 +4 -2
- package/dist/utc/parse/parseMicrosecondFromUtc.js +2 -2
- package/dist/utc/parse/parseMillisecondFromUtc.d.ts +4 -2
- package/dist/utc/parse/parseMillisecondFromUtc.js +2 -2
- package/dist/utc/parse/parseMinuteFromUtc.d.ts +4 -2
- package/dist/utc/parse/parseMinuteFromUtc.js +2 -2
- package/dist/utc/parse/parseMonthFromUtc.d.ts +4 -2
- package/dist/utc/parse/parseMonthFromUtc.js +2 -2
- package/dist/utc/parse/parseNanosecondFromUtc.d.ts +4 -2
- package/dist/utc/parse/parseNanosecondFromUtc.js +2 -2
- package/dist/utc/parse/parseSecondFromUtc.d.ts +4 -2
- package/dist/utc/parse/parseSecondFromUtc.js +2 -2
- package/dist/utc/parse/parseTimeFromUtc.d.ts +5 -2
- package/dist/utc/parse/parseTimeFromUtc.js +5 -4
- package/dist/utc/parse/parseUnitFromUtc.d.ts +10 -3
- package/dist/utc/parse/parseUnitFromUtc.js +11 -5
- package/dist/utc/parse/parseWeekFromUtc.d.ts +4 -2
- package/dist/utc/parse/parseWeekFromUtc.js +4 -4
- package/dist/utc/parse/parseYearFromUtc.d.ts +8 -4
- package/dist/utc/parse/parseYearFromUtc.js +8 -5
- 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/isValidUtcTimestamp.d.ts +43 -0
- package/dist/utc/validate/isValidUtcTimestamp.js +48 -0
- package/dist/zoned/calculate/addZoned.js +4 -7
- package/dist/zoned/calculate/setZoned.d.ts +19 -5
- package/dist/zoned/calculate/setZoned.js +26 -9
- package/dist/zoned/calculate/subtractZoned.js +4 -7
- package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +4 -1
- package/dist/zoned/convert/convertPlainDateTimeToZoned.js +4 -1
- package/dist/zoned/convert/convertZonedToZoned.d.ts +5 -1
- package/dist/zoned/convert/convertZonedToZoned.js +5 -1
- package/dist/zoned/format/formatCalendarZoned.js +2 -1
- package/dist/zoned/format/formatRelativeZoned.js +2 -1
- package/dist/zoned/format/formatTimeZoneName.d.ts +5 -1
- package/dist/zoned/format/formatTimeZoneName.js +5 -1
- package/dist/zoned/get/getDstTransitions.d.ts +5 -3
- package/dist/zoned/get/getDstTransitions.js +12 -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 +10 -2
- package/dist/zoned/get/getTimeZoneOffset.js +18 -5
- 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 +5 -1
- package/dist/zoned/get/getZonedNow.js +5 -1
- 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/intervalXorAllZoned.js +2 -2
- package/dist/zoned/interval/mergeIntervalsZoned.js +2 -2
- package/dist/zoned/parse/parseUnitFromZoned.d.ts +4 -1
- package/dist/zoned/parse/parseUnitFromZoned.js +5 -1
- package/dist/zoned/parse/parseYearFromZoned.d.ts +4 -2
- package/dist/zoned/parse/parseYearFromZoned.js +6 -3
- package/dist/zoned/validate/hasDaylightSaving.d.ts +4 -2
- package/dist/zoned/validate/hasDaylightSaving.js +13 -7
- 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/package.json +50 -1
- package/skills/gmt-arithmetic/SKILL.md +99 -12
- package/skills/gmt-basics/SKILL.md +57 -15
- package/skills/gmt-integration/SKILL.md +24 -9
- package/skills/gmt-timezone/SKILL.md +134 -29
- package/dist/internal/unixZonedDateTime.d.ts +0 -22
- package/dist/internal/unixZonedDateTime.js +0 -32
- package/dist/internal/utcZonedDateTime.d.ts +0 -19
- package/dist/internal/utcZonedDateTime.js +0 -31
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* RegExp matching the shape of a time zone identifier: Temporal's `TimeZoneIdentifier` grammar
|
|
3
|
-
* (§
|
|
3
|
+
* (§13.31, the ISO 8601 / RFC 9557 grammar),
|
|
4
|
+
* `TimeZoneIdentifier ::: UTCOffset[~SubMinutePrecision] | TimeZoneIANAName`.
|
|
4
5
|
*
|
|
5
6
|
* - An offset identifier (`UTCOffset[~SubMinutePrecision]`): an ASCII sign and a two-digit hour
|
|
6
7
|
* `00`–`23`, optionally followed by two minute digits `00`–`59`, with or without `:` (`+05`,
|
|
7
8
|
* `+0530`, `-08:00`). No seconds and no fraction. `Intl.DateTimeFormat` accepts the same
|
|
8
|
-
* offsets (ECMA-
|
|
9
|
+
* offsets (ECMA-262 `IsTimeZoneOffsetString`, which ECMA-402 calls).
|
|
9
10
|
* - An IANA name (`TimeZoneIANAName`): one or more `/`-separated components. Each starts with a
|
|
10
11
|
* letter, `.` or `_` (`TZLeadingChar`) and continues with letters, digits, `.`, `_`, `-` or `+`
|
|
11
12
|
* (`TZChar`). So single-component names match (`UTC`, `Japan`, `Zulu`, `EST5EDT`, `GMT+0`,
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* RegExp matching the shape of a time zone identifier: Temporal's `TimeZoneIdentifier` grammar
|
|
3
|
-
* (§
|
|
3
|
+
* (§13.31, the ISO 8601 / RFC 9557 grammar),
|
|
4
|
+
* `TimeZoneIdentifier ::: UTCOffset[~SubMinutePrecision] | TimeZoneIANAName`.
|
|
4
5
|
*
|
|
5
6
|
* - An offset identifier (`UTCOffset[~SubMinutePrecision]`): an ASCII sign and a two-digit hour
|
|
6
7
|
* `00`–`23`, optionally followed by two minute digits `00`–`59`, with or without `:` (`+05`,
|
|
7
8
|
* `+0530`, `-08:00`). No seconds and no fraction. `Intl.DateTimeFormat` accepts the same
|
|
8
|
-
* offsets (ECMA-
|
|
9
|
+
* offsets (ECMA-262 `IsTimeZoneOffsetString`, which ECMA-402 calls).
|
|
9
10
|
* - An IANA name (`TimeZoneIANAName`): one or more `/`-separated components. Each starts with a
|
|
10
11
|
* letter, `.` or `_` (`TZLeadingChar`) and continues with letters, digits, `.`, `_`, `-` or `+`
|
|
11
12
|
* (`TZChar`). So single-component names match (`UTC`, `Japan`, `Zulu`, `EST5EDT`, `GMT+0`,
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
* - Sub-second offsets are rejected. ISO 8601 permits them and `Temporal.Instant.from` parses
|
|
13
13
|
* them, but no zone, and no standard that stores this pair, has ever used one.
|
|
14
14
|
* - Shape only. Whether the offset is in Temporal's representable range is a separate check —
|
|
15
|
-
* `internal/utcOffsetString.ts` applies both.
|
|
15
|
+
* `internal/utcOffsetString.ts` applies both. To check a value that may not be a string, use
|
|
16
|
+
* `isValidUtcOffset`: for a string it gives this pattern's answer.
|
|
16
17
|
*
|
|
17
18
|
* @example utcOffset.test("-04:00") // true
|
|
18
19
|
* @example utcOffset.test("+05:45") // true
|
package/dist/regex/utc-offset.js
CHANGED
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
* - Sub-second offsets are rejected. ISO 8601 permits them and `Temporal.Instant.from` parses
|
|
13
13
|
* them, but no zone, and no standard that stores this pair, has ever used one.
|
|
14
14
|
* - Shape only. Whether the offset is in Temporal's representable range is a separate check —
|
|
15
|
-
* `internal/utcOffsetString.ts` applies both.
|
|
15
|
+
* `internal/utcOffsetString.ts` applies both. To check a value that may not be a string, use
|
|
16
|
+
* `isValidUtcOffset`: for a string it gives this pattern's answer.
|
|
16
17
|
*
|
|
17
18
|
* @example utcOffset.test("-04:00") // true
|
|
18
19
|
* @example utcOffset.test("+05:45") // true
|
|
@@ -39,10 +39,15 @@ export interface Crossing {
|
|
|
39
39
|
* - Returns `null` when either instant is invalid, when `exit` is before `entry` (an inverted
|
|
40
40
|
* crossing is a data error, not a negative transit), or when the zone is invalid. A zero-length
|
|
41
41
|
* crossing is `PT0S`.
|
|
42
|
+
* - An offset with seconds (`-00:44:30`) returns `null`. A written zone cannot carry seconds (RFC
|
|
43
|
+
* 9557 §4.1), so the result could not name it. Pass the IANA name, or call
|
|
44
|
+
* `fromOffsetInstant({ instant, offset })` for the local time with its full offset and no
|
|
45
|
+
* bracket.
|
|
42
46
|
*
|
|
43
47
|
* @param entry ISO 8601 zoned datetime or instant string of entering the crossing
|
|
44
48
|
* @param exit ISO 8601 zoned datetime or instant string of leaving it
|
|
45
|
-
* @param targetZone IANA
|
|
49
|
+
* @param targetZone IANA name or a UTC offset to the minute (what `isValidTimeZone` accepts) the
|
|
50
|
+
* crossing is read in
|
|
46
51
|
* @returns exact duration and zone-local entry and exit, or null on invalid input
|
|
47
52
|
*
|
|
48
53
|
* @example crossingTime("2024-06-15T08:00:00Z", "2024-06-15T17:30:00Z", "Europe/Berlin") // { duration: "PT9H30M", enter: "2024-06-15T10:00:00+02:00[Europe/Berlin]", exit: "2024-06-15T19:30:00+02:00[Europe/Berlin]" }
|
|
@@ -31,10 +31,15 @@ import { isValidTimeZone } from "../../zoned/validate/isValidTimeZone.js";
|
|
|
31
31
|
* - Returns `null` when either instant is invalid, when `exit` is before `entry` (an inverted
|
|
32
32
|
* crossing is a data error, not a negative transit), or when the zone is invalid. A zero-length
|
|
33
33
|
* crossing is `PT0S`.
|
|
34
|
+
* - An offset with seconds (`-00:44:30`) returns `null`. A written zone cannot carry seconds (RFC
|
|
35
|
+
* 9557 §4.1), so the result could not name it. Pass the IANA name, or call
|
|
36
|
+
* `fromOffsetInstant({ instant, offset })` for the local time with its full offset and no
|
|
37
|
+
* bracket.
|
|
34
38
|
*
|
|
35
39
|
* @param entry ISO 8601 zoned datetime or instant string of entering the crossing
|
|
36
40
|
* @param exit ISO 8601 zoned datetime or instant string of leaving it
|
|
37
|
-
* @param targetZone IANA
|
|
41
|
+
* @param targetZone IANA name or a UTC offset to the minute (what `isValidTimeZone` accepts) the
|
|
42
|
+
* crossing is read in
|
|
38
43
|
* @returns exact duration and zone-local entry and exit, or null on invalid input
|
|
39
44
|
*
|
|
40
45
|
* @example crossingTime("2024-06-15T08:00:00Z", "2024-06-15T17:30:00Z", "Europe/Berlin") // { duration: "PT9H30M", enter: "2024-06-15T10:00:00+02:00[Europe/Berlin]", exit: "2024-06-15T19:30:00+02:00[Europe/Berlin]" }
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import type { BusinessCalendar, RollConvention } from "../../types/index.js";
|
|
2
2
|
/** Options for `cutoffAt`. */
|
|
3
3
|
export interface CutoffOptions {
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* The time zone the cut-off is read in, the terminal's clock: an IANA name or a UTC offset to the
|
|
6
|
+
* minute (what `isValidTimeZone` accepts).
|
|
7
|
+
*/
|
|
5
8
|
timeZone: string;
|
|
6
9
|
/**
|
|
7
10
|
* The local time of day the cut-off is pinned to (`"17:00"`), as `isValidTime` accepts.
|
|
@@ -69,6 +72,8 @@ export interface CutoffOptions {
|
|
|
69
72
|
* **nonexistent** one (a skipped hour, a deleted day) returns `""` rather than being
|
|
70
73
|
* shifted. An exact result that is not re-resolved stays as it is.
|
|
71
74
|
* - Returns the cut-off as a zoned string in `timeZone`, or `""` on invalid input.
|
|
75
|
+
* - An offset with seconds (`-00:44:30`) returns `""`. A written zone cannot carry seconds (RFC
|
|
76
|
+
* 9557 §4.1), so the result could not name it. Pass the IANA name.
|
|
72
77
|
*
|
|
73
78
|
* @param anchor ISO 8601 instant or zoned datetime string of the event the deadline counts back from
|
|
74
79
|
* @param offset ISO 8601 duration before the anchor
|
|
@@ -144,6 +144,8 @@ function rolledDate(date, options) {
|
|
|
144
144
|
* **nonexistent** one (a skipped hour, a deleted day) returns `""` rather than being
|
|
145
145
|
* shifted. An exact result that is not re-resolved stays as it is.
|
|
146
146
|
* - Returns the cut-off as a zoned string in `timeZone`, or `""` on invalid input.
|
|
147
|
+
* - An offset with seconds (`-00:44:30`) returns `""`. A written zone cannot carry seconds (RFC
|
|
148
|
+
* 9557 §4.1), so the result could not name it. Pass the IANA name.
|
|
147
149
|
*
|
|
148
150
|
* @param anchor ISO 8601 instant or zoned datetime string of the event the deadline counts back from
|
|
149
151
|
* @param offset ISO 8601 duration before the anchor
|
|
@@ -22,7 +22,10 @@ export interface CutoffTime {
|
|
|
22
22
|
}
|
|
23
23
|
/** Options for `cutoffSchedule`: `cutoffAt`'s, with `atLocalTime` read from each entry instead. */
|
|
24
24
|
export interface CutoffScheduleOptions {
|
|
25
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* The time zone every cut-off is read in: an IANA name or a UTC offset to the minute (what
|
|
27
|
+
* `isValidTimeZone` accepts).
|
|
28
|
+
*/
|
|
26
29
|
timeZone: string;
|
|
27
30
|
/**
|
|
28
31
|
* The working week and holidays every cut-off's local date is rolled against. Requires `roll`.
|
|
@@ -55,6 +58,8 @@ export interface CutoffScheduleOptions {
|
|
|
55
58
|
* - Every entry must succeed: one invalid entry, or one cut-off in a skipped local hour,
|
|
56
59
|
* returns `[]` rather than a stack with a deadline silently missing. An empty `cutoffs` array
|
|
57
60
|
* returns `[]`.
|
|
61
|
+
* - An offset with seconds (`-00:44:30`) returns `[]`. A written zone cannot carry seconds (RFC
|
|
62
|
+
* 9557 §4.1), so the result could not name it. Pass the IANA name.
|
|
58
63
|
*
|
|
59
64
|
* @param anchor ISO 8601 instant or zoned datetime string of the event the deadlines count back from
|
|
60
65
|
* @param cutoffs the named deadlines, each with an offset and an optional local time of day
|
|
@@ -20,6 +20,8 @@ import { cutoffAt } from "./cutoffAt.js";
|
|
|
20
20
|
* - Every entry must succeed: one invalid entry, or one cut-off in a skipped local hour,
|
|
21
21
|
* returns `[]` rather than a stack with a deadline silently missing. An empty `cutoffs` array
|
|
22
22
|
* returns `[]`.
|
|
23
|
+
* - An offset with seconds (`-00:44:30`) returns `[]`. A written zone cannot carry seconds (RFC
|
|
24
|
+
* 9557 §4.1), so the result could not name it. Pass the IANA name.
|
|
23
25
|
*
|
|
24
26
|
* @param anchor ISO 8601 instant or zoned datetime string of the event the deadlines count back from
|
|
25
27
|
* @param cutoffs the named deadlines, each with an offset and an optional local time of day
|
|
@@ -60,10 +60,15 @@ export interface Dwell {
|
|
|
60
60
|
* more than 10,000 transitions (about 5,000 years of twice-yearly DST) returns `null`.
|
|
61
61
|
* - Returns `null` when either instant is invalid, when `exit` is before `entry` (an inverted
|
|
62
62
|
* dwell is a data error, not a negative stay), or when no zone can be determined.
|
|
63
|
+
* - An offset with seconds (`-00:44:30`) returns `null`. A written zone cannot carry seconds (RFC
|
|
64
|
+
* 9557 §4.1), so the result could not name it. Pass the IANA name, or call
|
|
65
|
+
* `fromOffsetInstant({ instant, offset })` for the local time with its full offset and no
|
|
66
|
+
* bracket.
|
|
63
67
|
*
|
|
64
68
|
* @param entry ISO 8601 zoned datetime or instant string of the gate-in, arrival or admission
|
|
65
69
|
* @param exit ISO 8601 zoned datetime or instant string of the gate-out, departure or discharge
|
|
66
|
-
* @param targetZone IANA
|
|
70
|
+
* @param targetZone IANA name or a UTC offset to the minute (what `isValidTimeZone` accepts) the
|
|
71
|
+
* days are counted in; defaults to `entry`'s bracketed zone
|
|
67
72
|
* @returns exact duration, zone-local entry and exit, and the local calendar days touched, or null on invalid input
|
|
68
73
|
*
|
|
69
74
|
* @example dwellTime("2024-06-15T23:00:00-04:00[America/New_York]", "2024-06-16T01:00:00-04:00[America/New_York]") // { duration: "PT2H", enter: "2024-06-15T23:00:00-04:00[America/New_York]", exit: "2024-06-16T01:00:00-04:00[America/New_York]", calendarDays: 2 }
|
|
@@ -69,10 +69,15 @@ function dwellZone(entry, targetZone) {
|
|
|
69
69
|
* more than 10,000 transitions (about 5,000 years of twice-yearly DST) returns `null`.
|
|
70
70
|
* - Returns `null` when either instant is invalid, when `exit` is before `entry` (an inverted
|
|
71
71
|
* dwell is a data error, not a negative stay), or when no zone can be determined.
|
|
72
|
+
* - An offset with seconds (`-00:44:30`) returns `null`. A written zone cannot carry seconds (RFC
|
|
73
|
+
* 9557 §4.1), so the result could not name it. Pass the IANA name, or call
|
|
74
|
+
* `fromOffsetInstant({ instant, offset })` for the local time with its full offset and no
|
|
75
|
+
* bracket.
|
|
72
76
|
*
|
|
73
77
|
* @param entry ISO 8601 zoned datetime or instant string of the gate-in, arrival or admission
|
|
74
78
|
* @param exit ISO 8601 zoned datetime or instant string of the gate-out, departure or discharge
|
|
75
|
-
* @param targetZone IANA
|
|
79
|
+
* @param targetZone IANA name or a UTC offset to the minute (what `isValidTimeZone` accepts) the
|
|
80
|
+
* days are counted in; defaults to `entry`'s bracketed zone
|
|
76
81
|
* @returns exact duration, zone-local entry and exit, and the local calendar days touched, or null on invalid input
|
|
77
82
|
*
|
|
78
83
|
* @example dwellTime("2024-06-15T23:00:00-04:00[America/New_York]", "2024-06-16T01:00:00-04:00[America/New_York]") // { duration: "PT2H", enter: "2024-06-15T23:00:00-04:00[America/New_York]", exit: "2024-06-16T01:00:00-04:00[America/New_York]", calendarDays: 2 }
|
|
@@ -12,7 +12,10 @@ export interface Leg {
|
|
|
12
12
|
departure?: string;
|
|
13
13
|
/** The ISO 8601 duration of the leg; time units and 24-hour days only (`transitTime`'s rule). */
|
|
14
14
|
duration: string;
|
|
15
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* The time zone of the destination, the caller's fact: an IANA name or a UTC offset to the minute
|
|
17
|
+
* (what `isValidTimeZone` accepts).
|
|
18
|
+
*/
|
|
16
19
|
timeZone: string;
|
|
17
20
|
/**
|
|
18
21
|
* The handling time at the handoff after this leg; the minimum connect time.
|
|
@@ -57,10 +60,11 @@ export interface LegTime {
|
|
|
57
60
|
/** Options for `scheduleDelivery`. */
|
|
58
61
|
export interface ScheduleDeliveryOptions {
|
|
59
62
|
/**
|
|
60
|
-
* The time zone a zoneless first-leg departure is read in, an IANA name or a UTC offset
|
|
61
|
-
* schedules published as local wall times. An
|
|
62
|
-
*
|
|
63
|
-
* is already exact; never applied to later
|
|
63
|
+
* The time zone a zoneless first-leg departure is read in, an IANA name or a UTC offset to the
|
|
64
|
+
* minute (what `isValidTimeZone` accepts), for schedules published as local wall times. An
|
|
65
|
+
* ambiguous wall time resolves to the earlier instant and a nonexistent one to the later instant
|
|
66
|
+
* (`"compatible"`). Ignored when the first departure is already exact; never applied to later
|
|
67
|
+
* legs.
|
|
64
68
|
*
|
|
65
69
|
* @defaultValue None. A zoneless first-leg departure is invalid input.
|
|
66
70
|
*/
|
|
@@ -128,6 +132,10 @@ export interface DeliverySchedule {
|
|
|
128
132
|
* - An empty legs array is valid vacuous input and returns `{ eta: "", legTimes: [] }`;
|
|
129
133
|
* malformed input (a non-array, a non-object leg, an invalid field) returns `null`.
|
|
130
134
|
* - Returns `null` on invalid input.
|
|
135
|
+
* - An offset with seconds (`-00:44:30`) as a leg's `timeZone` or as `startTimeZone` returns
|
|
136
|
+
* `null`. A written zone cannot carry seconds (RFC 9557 §4.1), so `eta` and `localArrival` could
|
|
137
|
+
* not name it. Pass the IANA name, or call `fromOffsetInstant({ instant, offset })` on a leg's
|
|
138
|
+
* `arrival` for the local time with its full offset and no bracket.
|
|
131
139
|
*
|
|
132
140
|
* @param legs the journey's legs, in travel order
|
|
133
141
|
* @param options The zone a zoneless first-leg departure is read in
|
|
@@ -7,6 +7,7 @@ import { isValidZonedDateTime } from "../../zoned/validate/isValidZonedDateTime.
|
|
|
7
7
|
import { etaAtZone } from "../convert/etaAtZone.js";
|
|
8
8
|
import { transitTime } from "./transitTime.js";
|
|
9
9
|
import { optionOrDefault } from "../../internal/optionOrDefault.js";
|
|
10
|
+
import { isObject } from "../../internal/isObject.js";
|
|
10
11
|
/**
|
|
11
12
|
* A time-zone annotation anywhere in the string (`TIME_ZONE_ANNOTATION`): a bracket without
|
|
12
13
|
* `=`. A departure that names a zone must name a real one that agrees with its offset.
|
|
@@ -172,7 +173,7 @@ function chainLegs(legs, startTimeZone) {
|
|
|
172
173
|
let cursor = null;
|
|
173
174
|
let previousTimeZone;
|
|
174
175
|
for (const [index, leg] of legs.entries()) {
|
|
175
|
-
if (
|
|
176
|
+
if (!isObject(leg)) {
|
|
176
177
|
return null;
|
|
177
178
|
}
|
|
178
179
|
const tags = legTags(leg);
|
|
@@ -253,6 +254,10 @@ function chainLegs(legs, startTimeZone) {
|
|
|
253
254
|
* - An empty legs array is valid vacuous input and returns `{ eta: "", legTimes: [] }`;
|
|
254
255
|
* malformed input (a non-array, a non-object leg, an invalid field) returns `null`.
|
|
255
256
|
* - Returns `null` on invalid input.
|
|
257
|
+
* - An offset with seconds (`-00:44:30`) as a leg's `timeZone` or as `startTimeZone` returns
|
|
258
|
+
* `null`. A written zone cannot carry seconds (RFC 9557 §4.1), so `eta` and `localArrival` could
|
|
259
|
+
* not name it. Pass the IANA name, or call `fromOffsetInstant({ instant, offset })` on a leg's
|
|
260
|
+
* `arrival` for the local time with its full offset and no bracket.
|
|
256
261
|
*
|
|
257
262
|
* @param legs the journey's legs, in travel order
|
|
258
263
|
* @param options The zone a zoneless first-leg departure is read in
|
|
@@ -27,9 +27,14 @@
|
|
|
27
27
|
* identifier, or a fixed offset such as `"+09:00"`, which renders with the offset as its zone.
|
|
28
28
|
* A fixed offset is a legitimate rendering choice for a ship's log (MAR-18); it is not a place.
|
|
29
29
|
* - Returns `""` when the instant or the zone is invalid.
|
|
30
|
+
* - An offset with seconds (`-00:44:30`) returns `""`. A written zone cannot carry seconds (RFC
|
|
31
|
+
* 9557 §4.1), so the result could not name it. Pass the IANA name, or call
|
|
32
|
+
* `fromOffsetInstant({ instant, offset })` for the local time with its full offset and no
|
|
33
|
+
* bracket.
|
|
30
34
|
*
|
|
31
35
|
* @param arrivalUtc ISO 8601 instant string of the arrival
|
|
32
|
-
* @param targetZone IANA
|
|
36
|
+
* @param targetZone IANA name or a UTC offset to the minute (what `isValidTimeZone` accepts), for
|
|
37
|
+
* the place the arrival is read in
|
|
33
38
|
* @returns zoned ISO 8601 string of the local arrival, or "" on invalid input
|
|
34
39
|
*
|
|
35
40
|
* @example etaAtZone("2024-06-15T12:30:00Z", "Asia/Tokyo") // "2024-06-15T21:30:00+09:00[Asia/Tokyo]"
|
|
@@ -30,9 +30,14 @@ import { isValidTimeZone } from "../../zoned/validate/isValidTimeZone.js";
|
|
|
30
30
|
* identifier, or a fixed offset such as `"+09:00"`, which renders with the offset as its zone.
|
|
31
31
|
* A fixed offset is a legitimate rendering choice for a ship's log (MAR-18); it is not a place.
|
|
32
32
|
* - Returns `""` when the instant or the zone is invalid.
|
|
33
|
+
* - An offset with seconds (`-00:44:30`) returns `""`. A written zone cannot carry seconds (RFC
|
|
34
|
+
* 9557 §4.1), so the result could not name it. Pass the IANA name, or call
|
|
35
|
+
* `fromOffsetInstant({ instant, offset })` for the local time with its full offset and no
|
|
36
|
+
* bracket.
|
|
33
37
|
*
|
|
34
38
|
* @param arrivalUtc ISO 8601 instant string of the arrival
|
|
35
|
-
* @param targetZone IANA
|
|
39
|
+
* @param targetZone IANA name or a UTC offset to the minute (what `isValidTimeZone` accepts), for
|
|
40
|
+
* the place the arrival is read in
|
|
36
41
|
* @returns zoned ISO 8601 string of the local arrival, or "" on invalid input
|
|
37
42
|
*
|
|
38
43
|
* @example etaAtZone("2024-06-15T12:30:00Z", "Asia/Tokyo") // "2024-06-15T21:30:00+09:00[Asia/Tokyo]"
|
|
@@ -23,10 +23,11 @@ export type BusinessCalendar = {
|
|
|
23
23
|
*/
|
|
24
24
|
holidays: string[];
|
|
25
25
|
/**
|
|
26
|
-
* The time zone recording which locality the calendar describes, an IANA name or a UTC offset
|
|
27
|
-
* must be a valid zone, but the business-day
|
|
28
|
-
* dates, so the answer is the same whatever it
|
|
29
|
-
* reduce that instant to a local date first, with
|
|
26
|
+
* The time zone recording which locality the calendar describes, an IANA name or a UTC offset to
|
|
27
|
+
* the minute (what `isValidTimeZone` accepts). It must be a valid zone, but the business-day
|
|
28
|
+
* functions never use it: they take and return local dates, so the answer is the same whatever it
|
|
29
|
+
* says. A caller holding an instant uses it to reduce that instant to a local date first, with
|
|
30
|
+
* `floorToZone` or `getZonedDateTimeFields`.
|
|
30
31
|
*/
|
|
31
32
|
timeZone: string;
|
|
32
33
|
};
|