@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
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { parseX12Time } from "../parse/parseX12Time.js";
|
|
2
|
+
/**
|
|
3
|
+
* Return true when `value` is an X12 time that states a real time of day: a data element 337
|
|
4
|
+
* value with no qualifier, or a time that fits the data element 1250 format qualifier it
|
|
5
|
+
* arrived with.
|
|
6
|
+
*
|
|
7
|
+
* ### Forms
|
|
8
|
+
* | `format` | Digits | Mask | The dictionary's definition |
|
|
9
|
+
* |---|---|---|---|
|
|
10
|
+
* | omitted | 4, 6, 7 or 8 | `HHMM`, `HHMMSS`, `HHMMSSD`, `HHMMSSDD` | Element 337: "H = hours (00-23), M = minutes (00-59), S = integer seconds (00-59) … D = tenths (0-9) and DD = hundredths (00-99)" |
|
|
11
|
+
* | `TM` | 4 | `HHMM` | "Time Expressed in Format HHMM" |
|
|
12
|
+
* | `TS` | 6 | `HHMMSS` | "Time Expressed in Format HHMMSS" |
|
|
13
|
+
*
|
|
14
|
+
* - True exactly when `parseX12Time` returns a time for the same arguments: the validator calls
|
|
15
|
+
* the parser, so the two cannot disagree.
|
|
16
|
+
* - Omit `format` for the time element of a freight segment (`AT7-06`, `G62-04`, `DTM-03`),
|
|
17
|
+
* which has no qualifier. Pass it for a time that arrives with one (`DTP-02` and `DTP-03`,
|
|
18
|
+
* `DTM-05` and `DTM-06`).
|
|
19
|
+
* - A qualifier is strict: `"143045"` is false under `TM`, and a 7- or 8-digit value is false
|
|
20
|
+
* under either qualifier, although all three are true with none.
|
|
21
|
+
* - A `format` that is present and is not `TM` or `TS` is false.
|
|
22
|
+
* - Hour 24, minute 60, second 60 and a value of 5 or 9 digits are false.
|
|
23
|
+
* - False for a non-string value.
|
|
24
|
+
*
|
|
25
|
+
* @param value The time as transmitted (e.g. "1430")
|
|
26
|
+
* @param format X12 data element 1250 format qualifier the time arrived with; omit it for a data element 337 value
|
|
27
|
+
* @returns boolean indicating validity
|
|
28
|
+
*
|
|
29
|
+
* @example isValidX12Time("1430") // true
|
|
30
|
+
* @example isValidX12Time("1430", "TM") // true
|
|
31
|
+
* @example isValidX12Time("143045", "TS") // true
|
|
32
|
+
* @example isValidX12Time("14300012") // true (hundredths of a second)
|
|
33
|
+
* @example isValidX12Time("14300012", "TS") // false (no 1250 code holds decimal seconds)
|
|
34
|
+
* @example isValidX12Time("143045", "TM") // false (six digits is a TS value)
|
|
35
|
+
* @example isValidX12Time("2430") // false (hour 24)
|
|
36
|
+
* @example isValidX12Time("14304") // false (five digits is not an element 337 form)
|
|
37
|
+
*/
|
|
38
|
+
export function isValidX12Time(value, format) {
|
|
39
|
+
return parseX12Time(value, format) !== "";
|
|
40
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { X12TimeCode } from "../../types/edi.js";
|
|
2
|
+
/**
|
|
3
|
+
* Return true when `timeCode` is one of the 56 X12 data element 623 time codes, the codes
|
|
4
|
+
* `x12TimeCodeOffset` and `x12TimeCodeZone` read between them.
|
|
5
|
+
*
|
|
6
|
+
* - The codes are `01`–`29`, `GM`, `UT`, `LT` and the named zone codes (`AD`, `AS`, `AT`, `CD`,
|
|
7
|
+
* `CS`, `CT`, `ED`, `ES`, `ET`, `HD`, `HS`, `HT`, `MD`, `MS`, `MT`, `ND`, `NS`, `NT`, `PD`,
|
|
8
|
+
* `PS`, `PT`, `TD`, `TS`, `TT`), release 008010, read from
|
|
9
|
+
* [Stedi's X12-licensed dictionary](https://www.stedi.com/edi/x12-008010/element/623); the X12
|
|
10
|
+
* text itself was not reached.
|
|
11
|
+
* - **The function takes no release, so it accepts the superset.**
|
|
12
|
+
* [Release 005010](https://www.stedi.com/edi/x12-005010/element/623) has 51 of the codes:
|
|
13
|
+
* `25`–`29` were added in release 006010 and are not valid in an 004010 or 005010 interchange,
|
|
14
|
+
* although this returns true for them.
|
|
15
|
+
* - `TS`, `TT`, `CD` and `MD` are codes of data element 1250 too, with unrelated meanings there.
|
|
16
|
+
* True here says the value is a time code; check a format qualifier with
|
|
17
|
+
* `isValidX12DateTimePeriodFormat`.
|
|
18
|
+
* - Membership is by the list, never by shape: `00` and `30` are two digits and are not codes.
|
|
19
|
+
* - Matching is exact: two characters, upper case, no padding.
|
|
20
|
+
* - Accepts any input type and returns false for non-string values.
|
|
21
|
+
* - True exactly when one of `x12TimeCodeOffset` and `x12TimeCodeZone` returns a value: the 31
|
|
22
|
+
* codes that state an offset and the 25 that name a zone are the 56. A valid code says the
|
|
23
|
+
* value is in the list, not that it carries an offset: `ES` is valid and names a zone.
|
|
24
|
+
* `classifyX12TimeCode` says which of the two a code is, and narrows it for that reader.
|
|
25
|
+
*
|
|
26
|
+
* @param timeCode candidate value of any type
|
|
27
|
+
* @returns boolean indicating validity
|
|
28
|
+
*
|
|
29
|
+
* @example isValidX12TimeCode("ES") // true
|
|
30
|
+
* @example isValidX12TimeCode("13") // true
|
|
31
|
+
* @example isValidX12TimeCode("LT") // true
|
|
32
|
+
* @example isValidX12TimeCode("27") // true (in release 006010 and later)
|
|
33
|
+
* @example isValidX12TimeCode("et") // false (case is exact)
|
|
34
|
+
* @example isValidX12TimeCode("30") // false (not a 623 code)
|
|
35
|
+
* @example isValidX12TimeCode("EST") // false (an abbreviation, not a 623 code)
|
|
36
|
+
* @example isValidX12TimeCode(null) // false
|
|
37
|
+
*/
|
|
38
|
+
export declare function isValidX12TimeCode(timeCode: unknown): timeCode is X12TimeCode;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { X12_TIME_CODES } from "../../internal/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Return true when `timeCode` is one of the 56 X12 data element 623 time codes, the codes
|
|
4
|
+
* `x12TimeCodeOffset` and `x12TimeCodeZone` read between them.
|
|
5
|
+
*
|
|
6
|
+
* - The codes are `01`–`29`, `GM`, `UT`, `LT` and the named zone codes (`AD`, `AS`, `AT`, `CD`,
|
|
7
|
+
* `CS`, `CT`, `ED`, `ES`, `ET`, `HD`, `HS`, `HT`, `MD`, `MS`, `MT`, `ND`, `NS`, `NT`, `PD`,
|
|
8
|
+
* `PS`, `PT`, `TD`, `TS`, `TT`), release 008010, read from
|
|
9
|
+
* [Stedi's X12-licensed dictionary](https://www.stedi.com/edi/x12-008010/element/623); the X12
|
|
10
|
+
* text itself was not reached.
|
|
11
|
+
* - **The function takes no release, so it accepts the superset.**
|
|
12
|
+
* [Release 005010](https://www.stedi.com/edi/x12-005010/element/623) has 51 of the codes:
|
|
13
|
+
* `25`–`29` were added in release 006010 and are not valid in an 004010 or 005010 interchange,
|
|
14
|
+
* although this returns true for them.
|
|
15
|
+
* - `TS`, `TT`, `CD` and `MD` are codes of data element 1250 too, with unrelated meanings there.
|
|
16
|
+
* True here says the value is a time code; check a format qualifier with
|
|
17
|
+
* `isValidX12DateTimePeriodFormat`.
|
|
18
|
+
* - Membership is by the list, never by shape: `00` and `30` are two digits and are not codes.
|
|
19
|
+
* - Matching is exact: two characters, upper case, no padding.
|
|
20
|
+
* - Accepts any input type and returns false for non-string values.
|
|
21
|
+
* - True exactly when one of `x12TimeCodeOffset` and `x12TimeCodeZone` returns a value: the 31
|
|
22
|
+
* codes that state an offset and the 25 that name a zone are the 56. A valid code says the
|
|
23
|
+
* value is in the list, not that it carries an offset: `ES` is valid and names a zone.
|
|
24
|
+
* `classifyX12TimeCode` says which of the two a code is, and narrows it for that reader.
|
|
25
|
+
*
|
|
26
|
+
* @param timeCode candidate value of any type
|
|
27
|
+
* @returns boolean indicating validity
|
|
28
|
+
*
|
|
29
|
+
* @example isValidX12TimeCode("ES") // true
|
|
30
|
+
* @example isValidX12TimeCode("13") // true
|
|
31
|
+
* @example isValidX12TimeCode("LT") // true
|
|
32
|
+
* @example isValidX12TimeCode("27") // true (in release 006010 and later)
|
|
33
|
+
* @example isValidX12TimeCode("et") // false (case is exact)
|
|
34
|
+
* @example isValidX12TimeCode("30") // false (not a 623 code)
|
|
35
|
+
* @example isValidX12TimeCode("EST") // false (an abbreviation, not a 623 code)
|
|
36
|
+
* @example isValidX12TimeCode(null) // false
|
|
37
|
+
*/
|
|
38
|
+
export function isValidX12TimeCode(timeCode) {
|
|
39
|
+
return (typeof timeCode === "string" &&
|
|
40
|
+
X12_TIME_CODES.includes(timeCode));
|
|
41
|
+
}
|
|
@@ -11,6 +11,11 @@ export type ResolvedBusinessCalendar = {
|
|
|
11
11
|
holidays: Set<string>;
|
|
12
12
|
};
|
|
13
13
|
export declare const DEFAULT_BUSINESS_CALENDAR: ResolvedBusinessCalendar;
|
|
14
|
+
/**
|
|
15
|
+
* Reduce a holiday list to its normalised ISO dates, or `null` when it is not an array of ISO
|
|
16
|
+
* PlainDate strings. Shared with `OperatingSchedule.holidays`, which takes the same list.
|
|
17
|
+
*/
|
|
18
|
+
export declare function parseHolidays(holidays: unknown): Set<string> | null;
|
|
14
19
|
/**
|
|
15
20
|
* Reduce a caller-supplied `BusinessCalendar` to its lookups, or `null` when it is not one.
|
|
16
21
|
*
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import { isValidDate } from "../plain/validate/isValidDate.js";
|
|
3
3
|
import { isValidTimeZone } from "../zoned/validate/isValidTimeZone.js";
|
|
4
|
+
import { isObject } from "./isObject.js";
|
|
5
|
+
import { isoYearString } from "./isoYearString.js";
|
|
4
6
|
const ISO_WEEKDAYS = 7;
|
|
5
7
|
/**
|
|
6
8
|
* The weekend GMT assumed before calendars existed: Saturday and Sunday, no holidays. It is
|
|
@@ -29,7 +31,11 @@ function parseWeekend(weekend) {
|
|
|
29
31
|
// All seven weekdays closed leaves no business day, so every walk would run to its cap.
|
|
30
32
|
return days.size < ISO_WEEKDAYS ? days : null;
|
|
31
33
|
}
|
|
32
|
-
|
|
34
|
+
/**
|
|
35
|
+
* Reduce a holiday list to its normalised ISO dates, or `null` when it is not an array of ISO
|
|
36
|
+
* PlainDate strings. Shared with `OperatingSchedule.holidays`, which takes the same list.
|
|
37
|
+
*/
|
|
38
|
+
export function parseHolidays(holidays) {
|
|
33
39
|
if (!Array.isArray(holidays)) {
|
|
34
40
|
return null;
|
|
35
41
|
}
|
|
@@ -55,9 +61,7 @@ function parseHolidays(holidays) {
|
|
|
55
61
|
* absent calendar as the default Saturday–Sunday week.
|
|
56
62
|
*/
|
|
57
63
|
export function parseBusinessCalendar(calendar) {
|
|
58
|
-
if (
|
|
59
|
-
calendar === null ||
|
|
60
|
-
Array.isArray(calendar)) {
|
|
64
|
+
if (!isObject(calendar) || Array.isArray(calendar)) {
|
|
61
65
|
return null;
|
|
62
66
|
}
|
|
63
67
|
const { weekend, holidays, timeZone } = calendar;
|
|
@@ -102,8 +106,6 @@ const EPOCH_WEEKDAY_OFFSET = 3;
|
|
|
102
106
|
const DAYS_PER_400_YEARS = 146_097;
|
|
103
107
|
/** Days from 0000-03-01, the start of a March-based year, to 1970-01-01. */
|
|
104
108
|
const DAYS_FROM_MARCH_0000_TO_EPOCH = 719_468;
|
|
105
|
-
/** TC39 `PadISOYear`: years 0–9999 print with four digits, any other with a sign and six. */
|
|
106
|
-
const MAX_FOUR_DIGIT_YEAR = 9999;
|
|
107
109
|
/**
|
|
108
110
|
* Days from 1970-01-01 to an ISO date, in the proleptic Gregorian calendar of ECMA-262 §21.4.1
|
|
109
111
|
* that Temporal's ISO calendar extends. Years run from March so the leap day ends each one.
|
|
@@ -143,10 +145,7 @@ function isoFieldsOf(epochDay) {
|
|
|
143
145
|
/** `Temporal.PlainDate#toString` for an ISO date, which is how `holidays` stores its dates. */
|
|
144
146
|
function isoDateString(epochDay) {
|
|
145
147
|
const [year, month, day] = isoFieldsOf(epochDay);
|
|
146
|
-
|
|
147
|
-
? `${year < 0 ? "-" : "+"}${String(Math.abs(year)).padStart(6, "0")}`
|
|
148
|
-
: String(year).padStart(4, "0");
|
|
149
|
-
return `${yearText}-${String(month).padStart(2, "0")}-${String(day).padStart(2, "0")}`;
|
|
148
|
+
return `${isoYearString(year)}-${String(month).padStart(2, "0")}-${String(day).padStart(2, "0")}`;
|
|
150
149
|
}
|
|
151
150
|
/**
|
|
152
151
|
* Days from 1970-01-01 to `date`, an ISO-calendar date. Any other calendar throws a
|
|
@@ -8,10 +8,12 @@
|
|
|
8
8
|
* not by repeatedly correcting a single overflow.
|
|
9
9
|
* - Round path is **not** "round to nearest": it steps by `Math.sign(amount)` first, then snaps to
|
|
10
10
|
* the next multiple of `Math.abs(amount)` in the direction of that sign (ceiling for positive
|
|
11
|
-
* amounts, floor for negative). Multiples are relative to `0`, not `bounds.min`.
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* (the next multiple of 15 above 22), not `15` (the nearest multiple).
|
|
11
|
+
* amounts, floor for negative). Multiples are relative to `0`, not `bounds.min`. GMT's own
|
|
12
|
+
* rule, not a standard's: a cycle always moves the way `amount` points, and the nearest
|
|
13
|
+
* multiple can lie the other way — e.g. minute `22` cycled by `+15` with `round: true` lands on
|
|
14
|
+
* `30` (the next multiple of 15 above 22), not `15` (the nearest multiple).
|
|
15
|
+
* - Comparison: `@internationalized/date`'s `CycleOptions.round` rounds a bounded field the same
|
|
16
|
+
* way.
|
|
15
17
|
*
|
|
16
18
|
* @param current the field's current numeric value
|
|
17
19
|
* @param amount signed amount to cycle by
|
|
@@ -8,10 +8,12 @@
|
|
|
8
8
|
* not by repeatedly correcting a single overflow.
|
|
9
9
|
* - Round path is **not** "round to nearest": it steps by `Math.sign(amount)` first, then snaps to
|
|
10
10
|
* the next multiple of `Math.abs(amount)` in the direction of that sign (ceiling for positive
|
|
11
|
-
* amounts, floor for negative). Multiples are relative to `0`, not `bounds.min`.
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* (the next multiple of 15 above 22), not `15` (the nearest multiple).
|
|
11
|
+
* amounts, floor for negative). Multiples are relative to `0`, not `bounds.min`. GMT's own
|
|
12
|
+
* rule, not a standard's: a cycle always moves the way `amount` points, and the nearest
|
|
13
|
+
* multiple can lie the other way — e.g. minute `22` cycled by `+15` with `round: true` lands on
|
|
14
|
+
* `30` (the next multiple of 15 above 22), not `15` (the nearest multiple).
|
|
15
|
+
* - Comparison: `@internationalized/date`'s `CycleOptions.round` rounds a bounded field the same
|
|
16
|
+
* way.
|
|
15
17
|
*
|
|
16
18
|
* @param current the field's current numeric value
|
|
17
19
|
* @param amount signed amount to cycle by
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
/**
|
|
3
|
+
* Whether an instant is in daylight saving time, read from the zone's offset changes alone.
|
|
4
|
+
*
|
|
5
|
+
* The rule: daylight time runs from a forward change of the clocks to the backward change that
|
|
6
|
+
* undoes it. A backward change undoes the most recent forward change of the same size that is not
|
|
7
|
+
* yet undone, and only if it comes less than 365 days after it. An instant is in daylight time when
|
|
8
|
+
* it is at or after such a forward change and before the backward change paired with it.
|
|
9
|
+
*
|
|
10
|
+
* A forward change that is never undone, or undone a year or more later, is a change of standard
|
|
11
|
+
* time (`Europe/Istanbul` 2016, `Europe/Moscow` 2011 to 2014), as is any backward change with no
|
|
12
|
+
* forward change to undo (`Asia/Almaty` 2024).
|
|
13
|
+
*
|
|
14
|
+
* This is GMT's own definition, not the tz database's daylight flag, which no JavaScript API
|
|
15
|
+
* exposes and offsets do not determine.
|
|
16
|
+
*
|
|
17
|
+
* Cost: one transition lookup forward, then one back, and more only outside the ordinary summer
|
|
18
|
+
* case. A paired change is less than 365 days away, so every lookup is given that limit and reads
|
|
19
|
+
* no further: with GMT's own search (temporalCompat D13) at most 74 offset samples and 51 reads to
|
|
20
|
+
* pin a change, for any zone and any instant.
|
|
21
|
+
*
|
|
22
|
+
* @param zoned the instant, in the zone to read
|
|
23
|
+
* @returns true in daylight time, false in standard time or when the walk exceeds its bound
|
|
24
|
+
*/
|
|
25
|
+
export declare function isInDaylightTime(zoned: Temporal.ZonedDateTime): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Whether a zone observes daylight saving time as of an instant: the instant is in daylight time,
|
|
28
|
+
* or a daylight period begins within the 365 days after it. Same rule as `isInDaylightTime`.
|
|
29
|
+
*
|
|
30
|
+
* @param zoned the instant to judge from, in the zone to read
|
|
31
|
+
* @returns true when the zone observes daylight time then, false otherwise or past the walk bound
|
|
32
|
+
*/
|
|
33
|
+
export declare function observesDaylightTime(zoned: Temporal.ZonedDateTime): boolean;
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { zonedNextTransition, zonedPreviousTransition, } from "./zonedWallClockOperations.js";
|
|
2
|
+
/**
|
|
3
|
+
* The longest a daylight period can last: a forward change and the backward change that undoes it
|
|
4
|
+
* are less than 365 days apart. Daylight time is seasonal, so it recurs within every year, and
|
|
5
|
+
* 365 days is the shortest year. A longer advance is a change of standard time.
|
|
6
|
+
*/
|
|
7
|
+
const DAYLIGHT_PERIOD_LIMIT_NANOSECONDS = 365n * 86400000000000n;
|
|
8
|
+
/**
|
|
9
|
+
* Offset changes read in each direction before the walk gives up and answers `false`, the
|
|
10
|
+
* sentinel: a bounded loop that runs out never returns a partial answer. Every walk here is also
|
|
11
|
+
* limited to 365 days, and a year of `Africa/Casablanca` holds four changes, so no real zone
|
|
12
|
+
* reaches the bound; `daylightTime.test.ts` reaches it with a made-up zone.
|
|
13
|
+
*/
|
|
14
|
+
const MAX_WALKED_CHANGES = 64;
|
|
15
|
+
function offsetChangeAt(transition) {
|
|
16
|
+
return {
|
|
17
|
+
at: transition.epochNanoseconds,
|
|
18
|
+
step: transition.offsetNanoseconds -
|
|
19
|
+
transition.subtract({ nanoseconds: 1 }).offsetNanoseconds,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Apply one change to the list of advances not yet undone. A forward change joins the list. A
|
|
24
|
+
* backward change undoes the most recent advance of the same size, if that advance is less than
|
|
25
|
+
* 365 days old, and returns it; otherwise it undoes nothing.
|
|
26
|
+
*/
|
|
27
|
+
function applyChange(open, change) {
|
|
28
|
+
if (change.step > 0) {
|
|
29
|
+
open.push(change);
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
for (let i = open.length - 1; i >= 0; i--) {
|
|
33
|
+
if (open[i].step !== -change.step) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (change.at - open[i].at >= DAYLIGHT_PERIOD_LIMIT_NANOSECONDS) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
return open.splice(i, 1)[0];
|
|
40
|
+
}
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
/** Whether `to` is less than the daylight period limit after `from`. */
|
|
44
|
+
function isWithinLimit(from, to) {
|
|
45
|
+
return to - from < DAYLIGHT_PERIOD_LIMIT_NANOSECONDS;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The advances still open just before `next`: made in the 365 days before it and not yet undone.
|
|
49
|
+
* An older advance cannot be undone at or after `next`. Null past `MAX_WALKED_CHANGES` changes.
|
|
50
|
+
*
|
|
51
|
+
* @param next the first change after the instant being judged
|
|
52
|
+
* @param latest the change before `next`, already known to be within the limit
|
|
53
|
+
*/
|
|
54
|
+
function openAdvancesBefore(next, latest) {
|
|
55
|
+
const changes = [offsetChangeAt(latest)];
|
|
56
|
+
let cursor = latest;
|
|
57
|
+
for (let i = 0; i <= MAX_WALKED_CHANGES; i++) {
|
|
58
|
+
const previous = zonedPreviousTransition(cursor, next.epochNanoseconds - DAYLIGHT_PERIOD_LIMIT_NANOSECONDS);
|
|
59
|
+
if (previous === null ||
|
|
60
|
+
!isWithinLimit(previous.epochNanoseconds, next.epochNanoseconds)) {
|
|
61
|
+
const open = [];
|
|
62
|
+
for (const change of changes) {
|
|
63
|
+
applyChange(open, change);
|
|
64
|
+
}
|
|
65
|
+
return open;
|
|
66
|
+
}
|
|
67
|
+
changes.unshift(offsetChangeAt(previous));
|
|
68
|
+
cursor = previous;
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Whether a change from `next` onwards undoes one of the `open` advances made at or before `at`.
|
|
74
|
+
* It has to come less than 365 days after `at`, since the advance is no later than `at`.
|
|
75
|
+
*/
|
|
76
|
+
function isUndoneFrom(next, open, at) {
|
|
77
|
+
let cursor = next;
|
|
78
|
+
for (let i = 0; i <= MAX_WALKED_CHANGES; i++) {
|
|
79
|
+
if (cursor === null || !isWithinLimit(at, cursor.epochNanoseconds)) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
const undone = applyChange(open, offsetChangeAt(cursor));
|
|
83
|
+
if (undone !== null && undone.at <= at) {
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
cursor = zonedNextTransition(cursor, at + DAYLIGHT_PERIOD_LIMIT_NANOSECONDS);
|
|
87
|
+
}
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Whether an instant is in daylight saving time, read from the zone's offset changes alone.
|
|
92
|
+
*
|
|
93
|
+
* The rule: daylight time runs from a forward change of the clocks to the backward change that
|
|
94
|
+
* undoes it. A backward change undoes the most recent forward change of the same size that is not
|
|
95
|
+
* yet undone, and only if it comes less than 365 days after it. An instant is in daylight time when
|
|
96
|
+
* it is at or after such a forward change and before the backward change paired with it.
|
|
97
|
+
*
|
|
98
|
+
* A forward change that is never undone, or undone a year or more later, is a change of standard
|
|
99
|
+
* time (`Europe/Istanbul` 2016, `Europe/Moscow` 2011 to 2014), as is any backward change with no
|
|
100
|
+
* forward change to undo (`Asia/Almaty` 2024).
|
|
101
|
+
*
|
|
102
|
+
* This is GMT's own definition, not the tz database's daylight flag, which no JavaScript API
|
|
103
|
+
* exposes and offsets do not determine.
|
|
104
|
+
*
|
|
105
|
+
* Cost: one transition lookup forward, then one back, and more only outside the ordinary summer
|
|
106
|
+
* case. A paired change is less than 365 days away, so every lookup is given that limit and reads
|
|
107
|
+
* no further: with GMT's own search (temporalCompat D13) at most 74 offset samples and 51 reads to
|
|
108
|
+
* pin a change, for any zone and any instant.
|
|
109
|
+
*
|
|
110
|
+
* @param zoned the instant, in the zone to read
|
|
111
|
+
* @returns true in daylight time, false in standard time or when the walk exceeds its bound
|
|
112
|
+
*/
|
|
113
|
+
export function isInDaylightTime(zoned) {
|
|
114
|
+
const at = zoned.epochNanoseconds;
|
|
115
|
+
// Daylight time ends with a clock change. No change ahead, or none within the limit: standard.
|
|
116
|
+
const next = zonedNextTransition(zoned, at + DAYLIGHT_PERIOD_LIMIT_NANOSECONDS);
|
|
117
|
+
if (next === null || !isWithinLimit(at, next.epochNanoseconds)) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
// It begins with one too, and no change in the 365 days before `next` leaves nothing to undo.
|
|
121
|
+
const latest = zonedPreviousTransition(next, next.epochNanoseconds - DAYLIGHT_PERIOD_LIMIT_NANOSECONDS);
|
|
122
|
+
if (latest === null ||
|
|
123
|
+
!isWithinLimit(latest.epochNanoseconds, next.epochNanoseconds)) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
// The ordinary summer: the clocks last went forward, and next go back by as much. The latest
|
|
127
|
+
// advance is the most recent one open, so `next` undoes it whatever came before.
|
|
128
|
+
const latestStep = offsetChangeAt(latest).step;
|
|
129
|
+
const nextStep = next.offsetNanoseconds - zoned.offsetNanoseconds;
|
|
130
|
+
if (latestStep > 0 && nextStep === -latestStep) {
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
const open = openAdvancesBefore(next, latest);
|
|
134
|
+
if (open === null || open.length === 0) {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
return isUndoneFrom(next, open, at);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Whether a zone observes daylight saving time as of an instant: the instant is in daylight time,
|
|
141
|
+
* or a daylight period begins within the 365 days after it. Same rule as `isInDaylightTime`.
|
|
142
|
+
*
|
|
143
|
+
* @param zoned the instant to judge from, in the zone to read
|
|
144
|
+
* @returns true when the zone observes daylight time then, false otherwise or past the walk bound
|
|
145
|
+
*/
|
|
146
|
+
export function observesDaylightTime(zoned) {
|
|
147
|
+
if (isInDaylightTime(zoned)) {
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
let cursor = zoned;
|
|
151
|
+
for (let i = 0; i <= MAX_WALKED_CHANGES; i++) {
|
|
152
|
+
const next = zonedNextTransition(cursor, zoned.epochNanoseconds + DAYLIGHT_PERIOD_LIMIT_NANOSECONDS);
|
|
153
|
+
if (next === null ||
|
|
154
|
+
next.epochNanoseconds - zoned.epochNanoseconds >=
|
|
155
|
+
DAYLIGHT_PERIOD_LIMIT_NANOSECONDS) {
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
if (isInDaylightTime(next)) {
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
cursor = next;
|
|
162
|
+
}
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
@@ -2,16 +2,17 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
|
2
2
|
import { plainDateUntil } from "./plainDateUntil.js";
|
|
3
3
|
import { zonedUntil } from "./zonedWallClockDifference.js";
|
|
4
4
|
export function durationUntilString(start, end, largestUnit, options) {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
// Each option is read once (GetOption); the difference below works on these values.
|
|
6
|
+
const roundingOptions = {
|
|
7
7
|
smallestUnit: options?.smallestUnit,
|
|
8
8
|
roundingIncrement: options?.roundingIncrement,
|
|
9
9
|
roundingMode: options?.roundingMode,
|
|
10
10
|
};
|
|
11
|
+
const untilOptions = { largestUnit, ...roundingOptions };
|
|
11
12
|
const duration = start instanceof Temporal.ZonedDateTime
|
|
12
13
|
? zonedUntil(start, end, untilOptions)
|
|
13
14
|
: start instanceof Temporal.PlainDate
|
|
14
|
-
? plainDateUntil(start, end, largestUnit,
|
|
15
|
+
? plainDateUntil(start, end, largestUnit, roundingOptions)
|
|
15
16
|
: start.until(end, untilOptions);
|
|
16
17
|
return duration.toString({
|
|
17
18
|
smallestUnit: options?.toStringSmallestUnit,
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import type { Disambiguation, DutyViolation, RuleOutcome } from "../types/index.js";
|
|
3
|
+
import { type DutyLogEntry, type DutyRun } from "./dutyLog.js";
|
|
4
|
+
import { type ResolvedWallClock, type UnitScale, type UnitSpan } from "./dutyPeriods.js";
|
|
5
|
+
import { type ResolvedPair, type ResolvedPeriod, type ResolvedRule, type StatusSet } from "./dutyRules.js";
|
|
6
|
+
import { type ZoneFrame } from "./zoneFrame.js";
|
|
7
|
+
/** Everything one call evaluates its rules against. */
|
|
8
|
+
export type DutyContext = {
|
|
9
|
+
entries: readonly DutyLogEntry[];
|
|
10
|
+
frame: ZoneFrame;
|
|
11
|
+
dayStartTime: Temporal.PlainTime | null;
|
|
12
|
+
/** How a day start or local window edge the zone repeats or skips is resolved. */
|
|
13
|
+
disambiguation: Disambiguation;
|
|
14
|
+
scales: Map<string, UnitScale>;
|
|
15
|
+
/** Local window edges already resolved, by local date-time: Temporal resolves each once. */
|
|
16
|
+
wallClocks: Map<string, ResolvedWallClock | null>;
|
|
17
|
+
/**
|
|
18
|
+
* Local window instances already resolved, by window: separate stretches of local dates, each
|
|
19
|
+
* with the span it covers.
|
|
20
|
+
*/
|
|
21
|
+
windowInstances: Map<string, WindowInstances[]>;
|
|
22
|
+
/** The runs of the whole log in a set of statuses, found once per call. */
|
|
23
|
+
runs: Map<StatusSet, DutyRun[]>;
|
|
24
|
+
};
|
|
25
|
+
/** A window a call cannot place in Temporal's range. Caught by the public function. */
|
|
26
|
+
export declare class Unrepresentable extends RangeError {
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Read the log, rules and options `evaluateDutyLog` and `dutyViolations` take, all-or-nothing.
|
|
30
|
+
*
|
|
31
|
+
* - `options` must be an object with a valid `timeZone`; `dayStartTime` is optional, but a rule
|
|
32
|
+
* that counts operator days needs it; `disambiguation` is `"compatible"` when absent. Each
|
|
33
|
+
* member is read once.
|
|
34
|
+
*
|
|
35
|
+
* @param log candidate duty log
|
|
36
|
+
* @param rules candidate rules
|
|
37
|
+
* @param options candidate `{ timeZone, dayStartTime?, disambiguation? }`
|
|
38
|
+
* @returns the context and resolved rules, or null on invalid input
|
|
39
|
+
*/
|
|
40
|
+
export declare function prepareDutyCall(log: unknown, rules: unknown, options: unknown): {
|
|
41
|
+
context: DutyContext;
|
|
42
|
+
rules: ResolvedRule[];
|
|
43
|
+
} | null;
|
|
44
|
+
type StatusTest = StatusSet | ((status: string) => boolean);
|
|
45
|
+
/**
|
|
46
|
+
* Read a status list a helper takes: an array of strings, `[]` allowed. Each element is read once.
|
|
47
|
+
*
|
|
48
|
+
* @param value candidate status list
|
|
49
|
+
* @returns the statuses, or null when `value` is not an array of strings
|
|
50
|
+
*/
|
|
51
|
+
export declare function readStatusList(value: unknown): StatusSet | null;
|
|
52
|
+
/**
|
|
53
|
+
* Maximal runs of touching entries whose status passes `test`, merged as `mergeIntervals` merges
|
|
54
|
+
* them (CORE-6): touching entries join, and a gap or another status ends a run.
|
|
55
|
+
*/
|
|
56
|
+
export declare function runsOf(log: readonly DutyLogEntry[], test: StatusTest): DutyRun[];
|
|
57
|
+
/** The parts of runs inside `[from, to)`, empty parts dropped. */
|
|
58
|
+
export declare function clipRuns(runs: readonly DutyRun[], from: bigint, to: bigint): DutyRun[];
|
|
59
|
+
/** Time in `statuses` inside `[from, to)`. */
|
|
60
|
+
export declare function timeIn(log: readonly DutyLogEntry[], statuses: StatusTest, from: bigint, to: bigint): bigint;
|
|
61
|
+
/**
|
|
62
|
+
* The paired rests among runs of rest: two runs in a row, each shorter than `fullRest` and at
|
|
63
|
+
* least `pair.each`, the longer at least `pair.one` and both together at least `pair.combined`.
|
|
64
|
+
*
|
|
65
|
+
* - A run of `fullRest` or more is a rest on its own: it pairs with nothing, and no pair spans it.
|
|
66
|
+
* - A run shorter than `pair.each` is neither half of a pair nor a break between two runs.
|
|
67
|
+
* - Pairs may chain: of runs a, b and c, both (a, b) and (b, c) are returned when both qualify.
|
|
68
|
+
*
|
|
69
|
+
* @param runs runs of rest, in order
|
|
70
|
+
* @param fullRest the length at which a run is a full rest
|
|
71
|
+
* @param pair the three floors
|
|
72
|
+
* @returns the qualifying pairs, in order
|
|
73
|
+
*/
|
|
74
|
+
export declare function restPairs(runs: readonly DutyRun[], fullRest: bigint, pair: ResolvedPair): {
|
|
75
|
+
first: DutyRun;
|
|
76
|
+
second: DutyRun;
|
|
77
|
+
}[];
|
|
78
|
+
/** One local window on one local date, resolved; `rejected` as `resolveWallClock` reports it. */
|
|
79
|
+
type WindowInstance = {
|
|
80
|
+
start: bigint;
|
|
81
|
+
end: bigint;
|
|
82
|
+
rejected: boolean;
|
|
83
|
+
};
|
|
84
|
+
/** The instances of one local window on the local dates `first` to `last`, covering `[from, to)`. */
|
|
85
|
+
type WindowInstances = {
|
|
86
|
+
from: bigint;
|
|
87
|
+
to: bigint;
|
|
88
|
+
first: Temporal.PlainDate;
|
|
89
|
+
last: Temporal.PlainDate;
|
|
90
|
+
instances: WindowInstance[];
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Evaluate every rule at one instant.
|
|
94
|
+
*
|
|
95
|
+
* @param context the call's context
|
|
96
|
+
* @param rules the resolved rules
|
|
97
|
+
* @param at the instant, epoch nanoseconds
|
|
98
|
+
* @returns one outcome per rule, in order
|
|
99
|
+
*/
|
|
100
|
+
export declare function evaluateDutyRules(context: DutyContext, rules: readonly ResolvedRule[], at: bigint): RuleOutcome[];
|
|
101
|
+
/**
|
|
102
|
+
* Call `visit` with the end of every period of `scale` that ends inside `(from, until]`, starting
|
|
103
|
+
* with the one `from` falls in.
|
|
104
|
+
*
|
|
105
|
+
* - Throws `Unrepresentable` when more than `MAX_PERIOD_COUNT` periods end there, or for a period
|
|
106
|
+
* Temporal cannot hold.
|
|
107
|
+
* - A span of `MAX_PERIOD_COUNT + 1` times `LONGER_THAN_ANY` or more certainly holds more ends
|
|
108
|
+
* than that, so it is refused without a lookup. A shorter span is walked, and the walk decides.
|
|
109
|
+
*/
|
|
110
|
+
export declare function walkBoundaries(scale: UnitScale, unit: Extract<ResolvedPeriod, {
|
|
111
|
+
kind: "units";
|
|
112
|
+
}>["unit"], from: bigint, until: bigint, visit: (boundary: bigint) => void): void;
|
|
113
|
+
/**
|
|
114
|
+
* Every violation of the rules whose severity is `"violation"` inside a range. A moving window's
|
|
115
|
+
* failures are one violation while no check passes between them; a count since a reset, or one
|
|
116
|
+
* fixed period, is one violation however often it is checked. Each is reported by its worst
|
|
117
|
+
* window and listed in the range it began in.
|
|
118
|
+
*
|
|
119
|
+
* @param context the call's context
|
|
120
|
+
* @param rules the resolved rules
|
|
121
|
+
* @param range the range, epoch nanoseconds
|
|
122
|
+
* @returns the violations, ordered by window start and then by rule
|
|
123
|
+
*/
|
|
124
|
+
export declare function scanDutyViolations(context: DutyContext, rules: readonly ResolvedRule[], range: UnitSpan): DutyViolation[];
|
|
125
|
+
export {};
|