@northguild/gmt 1.18.0 → 1.20.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/business/businessDaysBetween.d.ts +2 -2
- package/dist/calendar/business/businessDaysBetween.js +11 -35
- package/dist/calendar/business/mergeCalendars.d.ts +1 -1
- package/dist/calendar/business/mergeCalendars.js +8 -9
- package/dist/calendar/business/nextBusinessDay.d.ts +2 -2
- package/dist/calendar/business/nextBusinessDay.js +2 -2
- package/dist/calendar/business/previousBusinessDay.d.ts +2 -2
- package/dist/calendar/business/previousBusinessDay.js +2 -2
- package/dist/calendar/business/rollDate.d.ts +3 -3
- package/dist/calendar/business/rollDate.js +10 -43
- package/dist/calendar/calculate/bucketRange.d.ts +19 -11
- package/dist/calendar/calculate/bucketRange.js +27 -70
- package/dist/calendar/calculate/floorToZone.d.ts +12 -4
- package/dist/calendar/calculate/floorToZone.js +16 -8
- package/dist/calendar/calculate/getFiscalPeriod.d.ts +50 -40
- package/dist/calendar/calculate/getFiscalPeriod.js +78 -57
- package/dist/calendar/calculate/getQuarter.d.ts +26 -21
- package/dist/calendar/calculate/getQuarter.js +48 -19
- package/dist/calendar/hours/addOperatingTime.d.ts +9 -3
- package/dist/calendar/hours/addOperatingTime.js +10 -4
- package/dist/calendar/hours/isOpenAt.d.ts +9 -3
- package/dist/calendar/hours/isOpenAt.js +9 -3
- package/dist/calendar/hours/nextCloseAt.d.ts +8 -2
- package/dist/calendar/hours/nextCloseAt.js +9 -3
- package/dist/calendar/hours/nextOpenAt.d.ts +9 -3
- package/dist/calendar/hours/nextOpenAt.js +10 -4
- package/dist/calendar/hours/operatingIntervals.d.ts +7 -2
- package/dist/calendar/hours/operatingIntervals.js +9 -6
- package/dist/calendar/hours/operatingTimeBetween.d.ts +8 -3
- package/dist/calendar/hours/operatingTimeBetween.js +11 -8
- package/dist/calendar/hours/recurringWindows.d.ts +13 -6
- package/dist/calendar/hours/recurringWindows.js +21 -14
- package/dist/calendar/index.d.ts +1 -1
- package/dist/calendar/index.js +2 -2
- package/dist/calendar/validate/index.d.ts +3 -0
- package/dist/calendar/validate/index.js +3 -0
- package/dist/calendar/validate/isValidFiscalCalendar.d.ts +23 -0
- package/dist/calendar/validate/isValidFiscalCalendar.js +44 -0
- package/dist/calendar/validate/isValidFiscalExtraWeek.d.ts +19 -0
- package/dist/calendar/validate/isValidFiscalExtraWeek.js +23 -0
- package/dist/calendar/validate/isValidFiscalPattern.d.ts +7 -7
- package/dist/calendar/validate/isValidFiscalPattern.js +7 -7
- package/dist/calendar/validate/isValidFiscalYearLabel.d.ts +20 -0
- package/dist/calendar/validate/isValidFiscalYearLabel.js +24 -0
- package/dist/calendar/validate/isValidRollConvention.js +2 -10
- package/dist/calendar/validate/isValidZoneBucketUnit.d.ts +1 -1
- package/dist/duration/calculate/absDuration.js +1 -1
- package/dist/duration/calculate/addDuration.js +1 -1
- package/dist/duration/calculate/durationFromUnits.d.ts +47 -0
- package/dist/duration/calculate/durationFromUnits.js +67 -0
- package/dist/duration/calculate/getDurationSign.js +1 -1
- package/dist/duration/calculate/getDurationUnit.d.ts +3 -3
- package/dist/duration/calculate/getDurationUnit.js +3 -3
- 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 +2 -2
- package/dist/duration/calculate/subtractDuration.js +1 -1
- package/dist/duration/calculate/{durationAs.d.ts → totalDuration.d.ts} +27 -21
- package/dist/duration/calculate/{durationAs.js → totalDuration.js} +27 -21
- package/dist/duration/calculate/totalUnits.d.ts +49 -0
- package/dist/duration/calculate/totalUnits.js +73 -0
- package/dist/duration/compare/compareDurations.d.ts +4 -4
- package/dist/duration/compare/compareDurations.js +4 -4
- package/dist/duration/format/formatDuration.d.ts +9 -9
- package/dist/duration/format/formatDuration.js +14 -13
- package/dist/duration/index.d.ts +1 -1
- package/dist/duration/index.js +2 -2
- package/dist/duration/normalize/normalizeDuration.d.ts +3 -3
- package/dist/duration/normalize/normalizeDuration.js +3 -3
- package/dist/duration/parse/parseDuration.d.ts +1 -1
- package/dist/duration/parse/parseDuration.js +1 -1
- package/dist/duration/validate/isValidDuration.js +2 -11
- package/dist/gnss/convert/gnssToUtc.d.ts +24 -0
- package/dist/gnss/convert/gnssToUtc.js +39 -0
- package/dist/gnss/convert/gnssWeekToUtc.d.ts +53 -0
- package/dist/gnss/convert/gnssWeekToUtc.js +80 -0
- package/dist/gnss/convert/index.d.ts +6 -0
- package/dist/gnss/convert/index.js +6 -0
- package/dist/gnss/convert/rinexWeekToUtc.d.ts +34 -0
- package/dist/gnss/convert/rinexWeekToUtc.js +57 -0
- package/dist/gnss/convert/utcToGnss.d.ts +38 -0
- package/dist/gnss/convert/utcToGnss.js +53 -0
- package/dist/gnss/convert/utcToGnssWeek.d.ts +24 -0
- package/dist/gnss/convert/utcToGnssWeek.js +40 -0
- package/dist/gnss/convert/utcToRinexWeek.d.ts +19 -0
- package/dist/gnss/convert/utcToRinexWeek.js +45 -0
- package/dist/gnss/index.d.ts +2 -0
- package/dist/gnss/index.js +3 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.js +4 -1
- package/dist/instant/convert/classifyLocal.d.ts +9 -5
- package/dist/instant/convert/classifyLocal.js +19 -20
- package/dist/instant/convert/fromOffsetInstant.d.ts +8 -4
- package/dist/instant/convert/fromOffsetInstant.js +11 -6
- package/dist/instant/convert/resolveLocal.d.ts +16 -11
- package/dist/instant/convert/resolveLocal.js +25 -17
- package/dist/instant/convert/toOffsetInstant.d.ts +23 -19
- package/dist/instant/convert/toOffsetInstant.js +29 -38
- package/dist/instant/index.d.ts +2 -1
- package/dist/instant/index.js +3 -2
- 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.js +1 -1
- package/dist/intermodal/calculate/chargeableDays.d.ts +18 -12
- package/dist/intermodal/calculate/chargeableDays.js +27 -18
- package/dist/intermodal/calculate/demurrageClock.d.ts +1 -1
- package/dist/intermodal/calculate/demurrageClock.js +2 -2
- package/dist/intermodal/calculate/freeTimeExpiry.d.ts +17 -10
- package/dist/intermodal/calculate/freeTimeExpiry.js +32 -17
- 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 +4 -1
- package/dist/intermodal/index.js +5 -2
- 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/advanceToWeekday.d.ts +1 -1
- package/dist/internal/businessCalendar.d.ts +28 -12
- package/dist/internal/businessCalendar.js +131 -125
- package/dist/internal/businessDayValues.js +1 -1
- package/dist/internal/calendarDatePairPolicy.d.ts +1 -1
- package/dist/internal/calendarDateString.d.ts +1 -1
- package/dist/internal/calendarDateString.js +1 -1
- package/dist/internal/calendarSystemIds.js +1 -1
- package/dist/internal/calendarValueOfDate.js +1 -1
- package/dist/internal/calendarZonedPairPolicy.d.ts +1 -1
- package/dist/internal/calendarZonedString.d.ts +3 -3
- package/dist/internal/calendarZonedString.js +4 -4
- package/dist/internal/compareUnixEpochs.js +1 -1
- package/dist/internal/cutoffAtResolved.d.ts +62 -0
- package/dist/internal/cutoffAtResolved.js +162 -0
- package/dist/internal/cycleFieldValue.d.ts +0 -2
- package/dist/internal/cycleFieldValue.js +0 -2
- package/dist/internal/dateTimeUnitHelpers.d.ts +1 -1
- package/dist/internal/dateUnitHelpers.d.ts +1 -1
- package/dist/internal/daylightTime.d.ts +1 -1
- package/dist/internal/differenceRecord.d.ts +1 -1
- package/dist/internal/durationUntilString.d.ts +1 -1
- package/dist/internal/durationUntilString.js +1 -1
- package/dist/internal/dutyEngine.d.ts +125 -0
- package/dist/internal/dutyEngine.js +1755 -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 +375 -0
- package/dist/internal/dutyRules.d.ts +198 -0
- package/dist/internal/dutyRules.js +484 -0
- package/dist/internal/dutyRunIndex.d.ts +150 -0
- package/dist/internal/dutyRunIndex.js +398 -0
- package/dist/internal/earlierOccurrence.d.ts +41 -0
- package/dist/internal/earlierOccurrence.js +57 -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 +4 -2
- package/dist/internal/englishCalendarNames.js +3 -1
- package/dist/internal/epochDay.d.ts +41 -0
- package/dist/internal/epochDay.js +129 -0
- package/dist/internal/exactDuration.js +1 -1
- package/dist/internal/exactMoment.d.ts +4 -4
- package/dist/internal/exactMoment.js +5 -5
- package/dist/internal/fiscalCalendar.d.ts +41 -7
- package/dist/internal/fiscalCalendar.js +77 -9
- package/dist/internal/foreignEpochs.d.ts +5 -0
- package/dist/internal/foreignEpochs.js +5 -0
- package/dist/internal/formatCalendarDays.d.ts +4 -4
- package/dist/internal/formatCalendarDays.js +6 -5
- package/dist/internal/formatDateInCalendar.d.ts +1 -1
- package/dist/internal/formatRelativeDuration.d.ts +7 -7
- package/dist/internal/formatRelativeDuration.js +8 -7
- package/dist/internal/formatterCache.d.ts +40 -0
- package/dist/internal/formatterCache.js +181 -0
- package/dist/internal/freeTimeLedger.d.ts +35 -42
- package/dist/internal/freeTimeLedger.js +332 -31
- package/dist/internal/getLocaleWeekYearBounds.d.ts +1 -1
- package/dist/internal/gnssTimeScales.d.ts +53 -0
- package/dist/internal/gnssTimeScales.js +128 -0
- package/dist/internal/gnssWeek.d.ts +92 -0
- package/dist/internal/gnssWeek.js +212 -0
- package/dist/internal/halfOpenIntervals.d.ts +1 -1
- package/dist/internal/halfOpenIntervals.js +1 -1
- package/dist/internal/hasCalendarAnnotation.d.ts +3 -3
- package/dist/internal/hasCalendarAnnotation.js +3 -3
- package/dist/internal/hourDurationString.js +1 -1
- package/dist/internal/httpDateFields.js +1 -1
- package/dist/internal/index.d.ts +14 -5
- package/dist/internal/index.js +18 -5
- package/dist/internal/inputChecks.d.ts +53 -0
- package/dist/internal/inputChecks.js +132 -0
- package/dist/internal/instantFormatOptions.d.ts +1 -1
- package/dist/internal/instantFormatOptions.js +4 -8
- package/dist/internal/instantIntervalText.js +1 -1
- package/dist/internal/instantNanoseconds.d.ts +2 -2
- package/dist/internal/instantNanoseconds.js +2 -2
- package/dist/internal/intervalCountHelpers.d.ts +1 -1
- 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/isoStringBody.d.ts +2 -2
- package/dist/internal/isoStringBody.js +2 -2
- package/dist/internal/isoYearString.d.ts +21 -0
- package/dist/internal/isoYearString.js +27 -0
- package/dist/internal/joinDateTimeConnector.js +3 -2
- package/dist/internal/leapSeconds.d.ts +63 -0
- package/dist/internal/leapSeconds.js +162 -0
- package/dist/internal/localeWeekInfo.d.ts +1 -1
- package/dist/internal/localeWeekInfo.js +1 -1
- package/dist/internal/maxPieces.js +2 -1
- package/dist/internal/monthGridWeekRow.d.ts +1 -1
- package/dist/internal/normalizeDateTime.d.ts +2 -1
- package/dist/internal/normalizeDateTime.js +3 -2
- package/dist/internal/normalizeTimeZone.d.ts +5 -2
- package/dist/internal/normalizeTimeZone.js +5 -2
- package/dist/internal/offsetTimeline.d.ts +56 -0
- package/dist/internal/offsetTimeline.js +166 -0
- package/dist/internal/operatingSchedule.d.ts +39 -34
- package/dist/internal/operatingSchedule.js +672 -222
- package/dist/internal/patternToken.d.ts +10 -3
- package/dist/internal/patternToken.js +41 -19
- package/dist/internal/plainDateAdd.d.ts +1 -1
- package/dist/internal/plainDateAdd.js +1 -1
- package/dist/internal/plainDateUntil.d.ts +1 -1
- package/dist/internal/plainDateUntil.js +1 -1
- 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 +1 -1
- package/dist/internal/resolveDurationRelativeTo.js +1 -1
- package/dist/internal/resolveLocale.d.ts +2 -2
- package/dist/internal/resolveLocale.js +2 -2
- package/dist/internal/resolveManualRoundingOptions.d.ts +1 -1
- package/dist/internal/resolveRelativeUnit.d.ts +1 -1
- package/dist/internal/resolveRelativeUnit.js +1 -1
- package/dist/internal/resolveUnixIntervalPair.d.ts +9 -3
- package/dist/internal/resolveUnixIntervalPair.js +11 -7
- package/dist/internal/rinexWeek.d.ts +22 -0
- package/dist/internal/rinexWeek.js +30 -0
- package/dist/internal/rollBusinessDate.d.ts +15 -0
- package/dist/internal/rollBusinessDate.js +46 -0
- package/dist/internal/splitStep.d.ts +1 -1
- package/dist/internal/splitStep.js +1 -1
- package/dist/internal/startOrEndOfUnix.d.ts +3 -2
- package/dist/internal/startOrEndOfUnix.js +9 -6
- package/dist/internal/startOrEndOfUtc.d.ts +1 -1
- package/dist/internal/startOrEndOfUtc.js +1 -1
- package/dist/internal/startOrEndOfZoned.d.ts +1 -1
- package/dist/internal/temporal.d.ts +5 -0
- package/dist/internal/temporal.js +5 -0
- package/dist/internal/temporalCompat/calendarDateArithmetic.d.ts +1 -1
- package/dist/internal/temporalCompat/calendarDateFromFields.d.ts +1 -1
- package/dist/internal/temporalCompat/calendarDateFromFields.js +1 -1
- package/dist/internal/temporalCompat/calendarFields.d.ts +1 -1
- package/dist/internal/temporalCompat/capabilities.d.ts +27 -5
- package/dist/internal/temporalCompat/capabilities.js +28 -4
- package/dist/internal/temporalCompat/fieldSearch.d.ts +1 -1
- package/dist/internal/temporalCompat/fieldSearch.js +1 -1
- package/dist/internal/temporalCompat/fixedDay.d.ts +1 -1
- package/dist/internal/temporalCompat/fixedDay.js +1 -1
- package/dist/internal/temporalCompat/index.d.ts +1 -1
- package/dist/internal/temporalCompat/index.js +1 -1
- package/dist/internal/temporalCompat/largeMonthSpan.js +1 -1
- package/dist/internal/temporalCompat/nonIsoArithmetic.d.ts +1 -1
- package/dist/internal/temporalCompat/nonIsoArithmetic.js +1 -1
- package/dist/internal/temporalCompat/probeRepros.d.ts +35 -0
- package/dist/internal/temporalCompat/probeRepros.js +571 -0
- package/dist/internal/temporalCompat/readArithmeticModel.js +2 -2
- package/dist/internal/temporalCompat/repros.d.ts +3 -10
- package/dist/internal/temporalCompat/repros.js +13 -520
- package/dist/internal/timeScaleString.d.ts +47 -0
- package/dist/internal/timeScaleString.js +86 -0
- package/dist/internal/toInstantFromUtc.d.ts +1 -1
- package/dist/internal/toInstantFromUtc.js +1 -1
- package/dist/internal/twoDigitYear.d.ts +19 -0
- package/dist/internal/twoDigitYear.js +22 -0
- package/dist/internal/unixEpochValue.d.ts +1 -1
- package/dist/internal/unixEpochValue.js +4 -3
- package/dist/internal/unixFormatReference.d.ts +1 -1
- package/dist/internal/unixFormatReference.js +1 -1
- package/dist/internal/unixWallClock.d.ts +24 -0
- package/dist/internal/unixWallClock.js +35 -0
- package/dist/internal/utcOffsetString.d.ts +16 -0
- package/dist/internal/utcOffsetString.js +31 -1
- package/dist/internal/utcReading.d.ts +59 -0
- package/dist/internal/utcReading.js +113 -0
- package/dist/internal/utcWallClock.d.ts +20 -0
- package/dist/internal/utcWallClock.js +32 -0
- package/dist/internal/validatedZones.d.ts +20 -0
- package/dist/internal/validatedZones.js +33 -0
- package/dist/internal/wallClockAtOffset.d.ts +1 -1
- 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.d.ts +2 -2
- package/dist/internal/zonedBucket.js +92 -21
- package/dist/internal/zonedFormatReference.d.ts +1 -1
- package/dist/internal/zonedFormatReference.js +1 -1
- package/dist/internal/zonedLocalDates.d.ts +1 -1
- package/dist/internal/zonedLocalDates.js +22 -19
- package/dist/internal/zonedNowUnitValue.d.ts +8 -5
- package/dist/internal/zonedNowUnitValue.js +9 -5
- package/dist/internal/zonedTransitionSearch.d.ts +2 -0
- package/dist/internal/zonedTransitionSearch.js +165 -16
- package/dist/internal/zonedWallClock.d.ts +15 -4
- package/dist/internal/zonedWallClock.js +34 -6
- package/dist/internal/zonedWallClockDifference.d.ts +1 -1
- package/dist/internal/zonedWallClockDifference.js +6 -6
- package/dist/internal/zonedWallClockOperations.d.ts +7 -4
- package/dist/internal/zonedWallClockOperations.js +58 -16
- package/dist/internal/zonelessCalendarDate.d.ts +1 -1
- package/dist/internal/zonelessCalendarDate.js +1 -1
- package/dist/interval/index.d.ts +1 -1
- package/dist/interval/index.js +2 -2
- package/dist/plain/calculate/addBusinessDays.d.ts +2 -2
- package/dist/plain/calculate/addBusinessDays.js +2 -2
- package/dist/plain/calculate/addDate.js +4 -7
- package/dist/plain/calculate/addDateTime.js +5 -8
- package/dist/plain/calculate/addTime.js +5 -8
- package/dist/plain/calculate/clampDate.js +1 -1
- package/dist/plain/calculate/closestDateTo.js +1 -1
- package/dist/plain/calculate/cycleDate.js +1 -1
- package/dist/plain/calculate/cycleDateTime.js +1 -1
- package/dist/plain/calculate/cycleTime.js +1 -1
- package/dist/plain/calculate/diffDate.d.ts +1 -1
- package/dist/plain/calculate/diffDateAsDuration.d.ts +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 +1 -1
- package/dist/plain/calculate/endOfDate.js +1 -1
- package/dist/plain/calculate/endOfDateTime.d.ts +1 -1
- package/dist/plain/calculate/endOfDateTime.js +1 -1
- package/dist/plain/calculate/endOfQuarterForDate.js +1 -1
- package/dist/plain/calculate/endOfQuarterForDateTime.js +1 -1
- package/dist/plain/calculate/endOfTime.d.ts +2 -2
- package/dist/plain/calculate/endOfTime.js +1 -1
- package/dist/plain/calculate/getDayOfYear.js +1 -1
- package/dist/plain/calculate/getDaysInMonth.js +1 -1
- package/dist/plain/calculate/getDaysInYear.js +1 -1
- package/dist/plain/calculate/getLargestDateDurationUnit.d.ts +1 -1
- package/dist/plain/calculate/getLargestDateTimeDurationUnit.d.ts +1 -1
- package/dist/plain/calculate/getLargestTimeDurationUnit.d.ts +1 -1
- package/dist/plain/calculate/getLocaleDayOfWeek.d.ts +6 -6
- package/dist/plain/calculate/getLocaleDayOfWeek.js +7 -7
- package/dist/plain/calculate/getLocaleEndOfWeek.d.ts +4 -4
- package/dist/plain/calculate/getLocaleEndOfWeek.js +5 -5
- package/dist/plain/calculate/getLocaleStartOfWeek.d.ts +5 -5
- package/dist/plain/calculate/getLocaleStartOfWeek.js +6 -6
- package/dist/plain/calculate/getLocaleWeekYear.d.ts +10 -10
- package/dist/plain/calculate/getLocaleWeekYear.js +11 -11
- package/dist/plain/calculate/getQuarterForDate.js +1 -1
- package/dist/plain/calculate/getQuarterForDateTime.js +1 -1
- package/dist/plain/calculate/getWeekNumber.js +1 -1
- package/dist/plain/calculate/getWeekOfMonth.d.ts +10 -14
- package/dist/plain/calculate/getWeekOfMonth.js +11 -15
- package/dist/plain/calculate/getWeekYear.js +1 -1
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +7 -7
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +8 -8
- package/dist/plain/calculate/getWeeksInMonth.d.ts +8 -11
- package/dist/plain/calculate/getWeeksInMonth.js +9 -12
- package/dist/plain/calculate/getWeeksInYear.js +1 -1
- package/dist/plain/calculate/maxDate.js +1 -1
- package/dist/plain/calculate/maxDateTime.js +1 -1
- package/dist/plain/calculate/maxTime.js +1 -1
- package/dist/plain/calculate/minDate.js +1 -1
- package/dist/plain/calculate/minDateTime.js +1 -1
- package/dist/plain/calculate/minTime.js +1 -1
- package/dist/plain/calculate/nextWeekday.d.ts +14 -12
- package/dist/plain/calculate/nextWeekday.js +15 -13
- package/dist/plain/calculate/previousWeekday.d.ts +14 -12
- package/dist/plain/calculate/previousWeekday.js +15 -13
- package/dist/plain/calculate/roundDate.d.ts +1 -1
- package/dist/plain/calculate/roundDate.js +1 -1
- package/dist/plain/calculate/roundDateTime.d.ts +1 -1
- package/dist/plain/calculate/roundDateTime.js +1 -1
- package/dist/plain/calculate/roundTime.d.ts +1 -1
- package/dist/plain/calculate/roundTime.js +1 -1
- package/dist/plain/calculate/setDate.d.ts +21 -4
- package/dist/plain/calculate/setDate.js +28 -8
- package/dist/plain/calculate/setDateTime.d.ts +16 -4
- package/dist/plain/calculate/setDateTime.js +23 -8
- package/dist/plain/calculate/setTime.d.ts +14 -2
- package/dist/plain/calculate/setTime.js +22 -7
- package/dist/plain/calculate/sortDateTimes.js +1 -1
- package/dist/plain/calculate/sortDates.js +1 -1
- package/dist/plain/calculate/sortTimes.js +1 -1
- package/dist/plain/calculate/startOfDate.d.ts +1 -1
- package/dist/plain/calculate/startOfDate.js +1 -1
- package/dist/plain/calculate/startOfDateTime.d.ts +1 -1
- package/dist/plain/calculate/startOfDateTime.js +1 -1
- package/dist/plain/calculate/startOfQuarterForDate.js +1 -1
- package/dist/plain/calculate/startOfQuarterForDateTime.js +1 -1
- package/dist/plain/calculate/startOfTime.d.ts +2 -2
- package/dist/plain/calculate/startOfTime.js +1 -1
- package/dist/plain/calculate/subtractBusinessDays.d.ts +2 -2
- package/dist/plain/calculate/subtractBusinessDays.js +2 -2
- package/dist/plain/calculate/subtractDate.js +5 -8
- package/dist/plain/calculate/subtractDateTime.js +5 -8
- package/dist/plain/calculate/subtractTime.js +5 -8
- package/dist/plain/calculate/weekOfYearForDate.js +1 -1
- package/dist/plain/calculate/weekOfYearForDateTime.js +1 -1
- package/dist/plain/chop/chopDate.js +1 -1
- package/dist/plain/chop/chopMilliseconds.js +1 -1
- package/dist/plain/chop/chopSeconds.js +1 -1
- package/dist/plain/chop/chopTime.js +1 -1
- package/dist/plain/compare/areDateTimesEqual.js +1 -1
- package/dist/plain/compare/areDateTimesEqualBy.d.ts +2 -4
- package/dist/plain/compare/areDateTimesEqualBy.js +2 -4
- package/dist/plain/compare/areDatesEqual.js +1 -1
- package/dist/plain/compare/areDatesEqualBy.d.ts +5 -5
- package/dist/plain/compare/areDatesEqualBy.js +5 -5
- package/dist/plain/compare/areTimesEqual.js +1 -1
- package/dist/plain/compare/isAfterDate.js +1 -1
- package/dist/plain/compare/isAfterDateTime.js +1 -1
- package/dist/plain/compare/isAfterTime.js +1 -1
- package/dist/plain/compare/isBeforeDate.js +1 -1
- package/dist/plain/compare/isBeforeDateTime.js +1 -1
- package/dist/plain/compare/isBeforeTime.js +1 -1
- package/dist/plain/compare/isBetweenDate.js +1 -1
- package/dist/plain/compare/isBetweenDateTime.js +1 -1
- package/dist/plain/compare/isBetweenTime.js +1 -1
- package/dist/plain/compare/isBusinessDay.d.ts +2 -2
- package/dist/plain/compare/isBusinessDay.js +3 -3
- package/dist/plain/compare/isRelativeDay.d.ts +1 -1
- package/dist/plain/compare/isRelativeDay.js +1 -1
- package/dist/plain/compare/isThisUnit.d.ts +8 -6
- package/dist/plain/compare/isThisUnit.js +7 -5
- package/dist/plain/compare/isWeekend.d.ts +5 -5
- package/dist/plain/compare/isWeekend.js +6 -6
- package/dist/plain/format/formatCalendar.d.ts +3 -5
- package/dist/plain/format/formatCalendar.js +12 -10
- package/dist/plain/format/formatDate.d.ts +4 -4
- package/dist/plain/format/formatDate.js +8 -7
- package/dist/plain/format/formatDateRange.d.ts +4 -4
- package/dist/plain/format/formatDateRange.js +8 -7
- package/dist/plain/format/formatDateTime.d.ts +4 -4
- package/dist/plain/format/formatDateTime.js +8 -7
- package/dist/plain/format/formatDateTimeRange.d.ts +4 -4
- package/dist/plain/format/formatDateTimeRange.js +8 -7
- package/dist/plain/format/formatDateTimeToParts.d.ts +6 -6
- package/dist/plain/format/formatDateTimeToParts.js +10 -9
- package/dist/plain/format/formatDateToParts.d.ts +6 -6
- package/dist/plain/format/formatDateToParts.js +10 -9
- package/dist/plain/format/formatRelativeDate.d.ts +3 -3
- package/dist/plain/format/formatRelativeDate.js +6 -5
- package/dist/plain/format/formatRelativeDateTime.d.ts +3 -3
- package/dist/plain/format/formatRelativeDateTime.js +6 -5
- package/dist/plain/format/formatRelativeTime.d.ts +3 -3
- package/dist/plain/format/formatRelativeTime.js +6 -5
- package/dist/plain/format/{formatSql.d.ts → formatSqlDateTime.d.ts} +7 -7
- package/dist/plain/format/{formatSql.js → formatSqlDateTime.js} +8 -8
- package/dist/plain/format/formatTime.d.ts +4 -4
- package/dist/plain/format/formatTime.js +8 -7
- package/dist/plain/format/index.d.ts +1 -1
- package/dist/plain/format/index.js +1 -1
- package/dist/plain/get/getDay.js +1 -1
- package/dist/plain/get/getDayOfWeek.js +1 -1
- package/dist/plain/get/getHour.js +1 -1
- package/dist/plain/get/getMicrosecond.js +1 -1
- package/dist/plain/get/getMillisecond.js +1 -1
- package/dist/plain/get/getMinute.js +1 -1
- package/dist/plain/get/getMonth.js +1 -1
- package/dist/plain/get/getNanosecond.js +1 -1
- package/dist/plain/get/getNow.js +1 -1
- package/dist/plain/get/getNowUnit.d.ts +2 -0
- package/dist/plain/get/getNowUnit.js +3 -1
- package/dist/plain/get/getSecond.js +1 -1
- package/dist/plain/get/getToday.js +1 -1
- package/dist/plain/get/getWeekOfYear.js +1 -1
- package/dist/plain/get/getYear.d.ts +2 -0
- package/dist/plain/get/getYear.js +5 -4
- package/dist/plain/index.d.ts +1 -1
- package/dist/plain/index.js +2 -2
- package/dist/plain/interval/intervalAbutsDate.d.ts +1 -2
- package/dist/plain/interval/intervalAbutsDate.js +2 -3
- package/dist/plain/interval/intervalAbutsDateTime.js +1 -1
- package/dist/plain/interval/intervalAbutsTime.js +1 -1
- package/dist/plain/interval/intervalContainsDate.d.ts +1 -1
- package/dist/plain/interval/intervalContainsDate.js +2 -2
- package/dist/plain/interval/intervalContainsDateTime.js +1 -1
- package/dist/plain/interval/intervalContainsTime.js +1 -1
- package/dist/plain/interval/intervalCountDate.js +1 -1
- package/dist/plain/interval/intervalCountDateTime.js +1 -1
- package/dist/plain/interval/intervalCountTime.js +1 -1
- package/dist/plain/interval/intervalDifferenceDate.d.ts +1 -1
- package/dist/plain/interval/intervalDifferenceDate.js +2 -2
- package/dist/plain/interval/intervalDifferenceDateTime.js +1 -1
- package/dist/plain/interval/intervalDifferenceTime.js +1 -1
- package/dist/plain/interval/intervalDivideEquallyDate.d.ts +3 -3
- package/dist/plain/interval/intervalDivideEquallyDate.js +3 -3
- package/dist/plain/interval/intervalDivideEquallyDateTime.js +1 -1
- package/dist/plain/interval/intervalDivideEquallyTime.js +1 -1
- package/dist/plain/interval/intervalEngulfsDate.d.ts +1 -1
- package/dist/plain/interval/intervalEngulfsDate.js +2 -2
- package/dist/plain/interval/intervalEngulfsDateTime.js +1 -1
- package/dist/plain/interval/intervalEngulfsTime.js +1 -1
- package/dist/plain/interval/intervalFromDurationDate.js +1 -1
- package/dist/plain/interval/intervalFromDurationDateTime.js +1 -1
- package/dist/plain/interval/intervalFromDurationTime.js +1 -1
- package/dist/plain/interval/intervalIntersectionDate.d.ts +1 -1
- package/dist/plain/interval/intervalIntersectionDate.js +2 -2
- package/dist/plain/interval/intervalIntersectionDateTime.js +1 -1
- package/dist/plain/interval/intervalIntersectionTime.js +1 -1
- package/dist/plain/interval/intervalLengthDateTime.js +1 -1
- package/dist/plain/interval/intervalLengthTime.js +1 -1
- package/dist/plain/interval/intervalOverlappingDaysDate.js +1 -1
- package/dist/plain/interval/intervalOverlappingDaysDateTime.js +1 -1
- package/dist/plain/interval/intervalSplitAtDate.d.ts +1 -1
- package/dist/plain/interval/intervalSplitAtDate.js +2 -2
- package/dist/plain/interval/intervalSplitAtDateTime.js +1 -1
- package/dist/plain/interval/intervalSplitAtTime.js +1 -1
- package/dist/plain/interval/intervalUnionDate.d.ts +2 -2
- package/dist/plain/interval/intervalUnionDate.js +3 -3
- package/dist/plain/interval/intervalUnionDateTime.js +1 -1
- package/dist/plain/interval/intervalUnionTime.js +1 -1
- package/dist/plain/interval/intervalXorAllDate.d.ts +1 -1
- package/dist/plain/interval/intervalXorAllDate.js +4 -4
- package/dist/plain/interval/intervalXorAllDateTime.js +3 -3
- package/dist/plain/interval/intervalXorAllTime.js +3 -3
- package/dist/plain/interval/intervalXorDate.d.ts +1 -1
- package/dist/plain/interval/intervalXorDate.js +2 -2
- package/dist/plain/interval/intervalXorDateTime.js +1 -1
- package/dist/plain/interval/intervalXorTime.js +1 -1
- package/dist/plain/interval/intervalsOverlapDate.d.ts +1 -1
- package/dist/plain/interval/intervalsOverlapDate.js +2 -2
- package/dist/plain/interval/intervalsOverlapDateTime.js +1 -1
- package/dist/plain/interval/intervalsOverlapTime.js +1 -1
- package/dist/plain/interval/mergeIntervalsDate.d.ts +1 -1
- package/dist/plain/interval/mergeIntervalsDate.js +4 -4
- package/dist/plain/interval/mergeIntervalsDateTime.js +3 -3
- package/dist/plain/interval/mergeIntervalsTime.js +3 -3
- package/dist/plain/interval/splitIntervalByUnitDate.d.ts +2 -3
- package/dist/plain/interval/splitIntervalByUnitDate.js +3 -4
- package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +2 -1
- package/dist/plain/interval/splitIntervalByUnitDateTime.js +3 -2
- package/dist/plain/interval/splitIntervalByUnitTime.js +1 -1
- package/dist/plain/interval/validate/isValidDateInterval.d.ts +1 -1
- package/dist/plain/interval/validate/isValidDateInterval.js +2 -2
- package/dist/plain/interval/validate/isValidDateTimeInterval.js +1 -1
- package/dist/plain/interval/validate/isValidTimeInterval.js +1 -1
- package/dist/plain/locale/getLocaleEraNames.d.ts +6 -6
- package/dist/plain/locale/getLocaleEraNames.js +8 -7
- package/dist/plain/locale/getLocaleMeridiems.d.ts +5 -5
- package/dist/plain/locale/getLocaleMeridiems.js +7 -6
- package/dist/plain/locale/getLocaleMonthNames.d.ts +6 -6
- package/dist/plain/locale/getLocaleMonthNames.js +17 -11
- package/dist/plain/locale/getLocaleWeekdayNames.d.ts +3 -3
- package/dist/plain/locale/getLocaleWeekdayNames.js +12 -5
- package/dist/plain/map/mapDatesInRange.js +1 -1
- package/dist/plain/map/mapDaysInMonth.js +1 -1
- package/dist/plain/parse/index.d.ts +1 -1
- package/dist/plain/parse/index.js +1 -1
- package/dist/plain/parse/parseDateTimeWithPattern.d.ts +28 -14
- package/dist/plain/parse/parseDateTimeWithPattern.js +33 -17
- package/dist/plain/parse/parseDateWithPattern.d.ts +29 -14
- package/dist/plain/parse/parseDateWithPattern.js +34 -17
- package/dist/plain/parse/parseDayFromDate.js +1 -1
- package/dist/plain/parse/parseDayFromDateTime.js +1 -1
- package/dist/plain/parse/parseDayOfWeekFromDate.js +1 -1
- package/dist/plain/parse/parseDayOfWeekFromDateTime.js +1 -1
- package/dist/plain/parse/parseHourFromDateTime.js +1 -1
- package/dist/plain/parse/parseHourFromTime.js +1 -1
- package/dist/plain/parse/parseMicrosecondFromDateTime.js +1 -1
- package/dist/plain/parse/parseMicrosecondFromTime.js +1 -1
- package/dist/plain/parse/parseMillisecondFromDateTime.js +1 -1
- package/dist/plain/parse/parseMillisecondFromTime.js +1 -1
- package/dist/plain/parse/parseMinuteFromDateTime.js +1 -1
- package/dist/plain/parse/parseMinuteFromTime.js +1 -1
- package/dist/plain/parse/parseMonthFromDate.js +1 -1
- package/dist/plain/parse/parseMonthFromDateTime.js +1 -1
- package/dist/plain/parse/parseNanosecondFromDateTime.js +1 -1
- package/dist/plain/parse/parseNanosecondFromTime.js +1 -1
- package/dist/plain/parse/parseSecondFromDateTime.js +1 -1
- package/dist/plain/parse/parseSecondFromTime.js +1 -1
- package/dist/plain/parse/{parseSql.d.ts → parseSqlDateTime.d.ts} +8 -8
- package/dist/plain/parse/{parseSql.js → parseSqlDateTime.js} +9 -9
- package/dist/plain/parse/parseTimeWithPattern.d.ts +6 -4
- package/dist/plain/parse/parseTimeWithPattern.js +8 -5
- package/dist/plain/parse/parseUnitFromDate.d.ts +4 -1
- package/dist/plain/parse/parseUnitFromDate.js +6 -2
- package/dist/plain/parse/parseUnitFromDateTime.d.ts +4 -1
- package/dist/plain/parse/parseUnitFromDateTime.js +6 -2
- package/dist/plain/parse/parseUnitFromTime.d.ts +1 -1
- package/dist/plain/parse/parseUnitFromTime.js +1 -1
- package/dist/plain/parse/parseWeekFromDateTime.js +1 -1
- package/dist/plain/parse/parseYearFromDate.d.ts +5 -2
- package/dist/plain/parse/parseYearFromDate.js +8 -4
- package/dist/plain/parse/parseYearFromDateTime.d.ts +4 -2
- package/dist/plain/parse/parseYearFromDateTime.js +7 -4
- package/dist/plain/validate/{isLeapSecond.d.ts → hasSecond60.d.ts} +16 -14
- package/dist/plain/validate/{isLeapSecond.js → hasSecond60.js} +16 -14
- package/dist/plain/validate/index.d.ts +2 -1
- package/dist/plain/validate/index.js +2 -1
- package/dist/plain/validate/isLeapYear.js +1 -1
- package/dist/plain/validate/isValidDate.js +2 -17
- package/dist/plain/validate/isValidDateRange.js +1 -1
- package/dist/plain/validate/isValidDateTime.d.ts +1 -1
- package/dist/plain/validate/isValidDateTime.js +4 -4
- package/dist/plain/validate/isValidDateTimeRange.js +1 -1
- package/dist/plain/validate/isValidIsoDateLike.js +3 -3
- package/dist/plain/validate/isValidSqlDateTime.d.ts +33 -0
- package/dist/plain/validate/isValidSqlDateTime.js +36 -0
- package/dist/plain/validate/isValidTime.js +2 -18
- package/dist/plain/validate/isValidTimeRange.js +1 -1
- package/dist/precision/convert/fromNanoseconds.d.ts +11 -5
- package/dist/precision/convert/fromNanoseconds.js +12 -6
- package/dist/precision/convert/toNanoseconds.d.ts +2 -2
- package/dist/precision/convert/toNanoseconds.js +2 -2
- package/dist/precision/index.d.ts +1 -1
- package/dist/precision/index.js +2 -2
- package/dist/precision/validate/isValidInstant.d.ts +1 -1
- package/dist/precision/validate/isValidInstant.js +1 -1
- package/dist/regex/calendar-zoned-date-time.d.ts +4 -4
- package/dist/regex/calendar-zoned-date-time.js +4 -4
- 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 +2 -1
- package/dist/regex/index.js +3 -2
- package/dist/regex/leap-second.d.ts +1 -1
- package/dist/regex/leap-second.js +1 -1
- 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 +5 -4
- package/dist/regex/time-zone-like.js +5 -4
- package/dist/regex/utc-offset.d.ts +2 -1
- package/dist/regex/utc-offset.js +2 -1
- package/dist/span/calculate/spanMs.d.ts +4 -3
- package/dist/span/calculate/spanMs.js +4 -3
- package/dist/span/calculate/spanNs.d.ts +4 -3
- package/dist/span/calculate/spanNs.js +4 -3
- package/dist/span/calculate/spanWallClock.d.ts +12 -12
- package/dist/span/calculate/spanWallClock.js +13 -13
- package/dist/span/index.d.ts +1 -1
- package/dist/span/index.js +2 -2
- package/dist/span/validate/isValidSpan.d.ts +3 -3
- package/dist/span/validate/isValidSpan.js +3 -3
- package/dist/timescale/calculate/index.d.ts +3 -0
- package/dist/timescale/calculate/index.js +3 -0
- package/dist/timescale/calculate/leapSecondsBetween.d.ts +26 -0
- package/dist/timescale/calculate/leapSecondsBetween.js +62 -0
- package/dist/timescale/calculate/nextLeapSecond.d.ts +18 -0
- package/dist/timescale/calculate/nextLeapSecond.js +33 -0
- package/dist/timescale/calculate/taiMinusUtc.d.ts +21 -0
- package/dist/timescale/calculate/taiMinusUtc.js +38 -0
- package/dist/timescale/convert/fromTAI.d.ts +22 -0
- package/dist/timescale/convert/fromTAI.js +35 -0
- package/dist/timescale/convert/index.d.ts +2 -0
- package/dist/timescale/convert/index.js +2 -0
- package/dist/timescale/convert/toTAI.d.ts +23 -0
- package/dist/timescale/convert/toTAI.js +39 -0
- package/dist/timescale/index.d.ts +4 -0
- package/dist/timescale/index.js +5 -0
- package/dist/timescale/validate/index.d.ts +1 -0
- package/dist/timescale/validate/index.js +1 -0
- package/dist/timescale/validate/isLeapSecond.d.ts +25 -0
- package/dist/timescale/validate/isLeapSecond.js +36 -0
- package/dist/transport/calculate/crossingTime.d.ts +8 -3
- package/dist/transport/calculate/crossingTime.js +9 -4
- package/dist/transport/calculate/cutoffAt.d.ts +10 -5
- package/dist/transport/calculate/cutoffAt.js +26 -133
- package/dist/transport/calculate/cutoffSchedule.d.ts +8 -3
- package/dist/transport/calculate/cutoffSchedule.js +54 -20
- package/dist/transport/calculate/dwellTime.d.ts +9 -4
- package/dist/transport/calculate/dwellTime.js +10 -5
- package/dist/transport/calculate/estimateDrift.d.ts +1 -1
- package/dist/transport/calculate/estimateDrift.js +1 -1
- package/dist/transport/calculate/nextDeparture.d.ts +2 -2
- package/dist/transport/calculate/nextDeparture.js +2 -2
- package/dist/transport/calculate/scheduleDelivery.d.ts +15 -7
- package/dist/transport/calculate/scheduleDelivery.js +9 -4
- package/dist/transport/calculate/transitTime.d.ts +11 -11
- package/dist/transport/calculate/transitTime.js +11 -11
- package/dist/transport/compare/classifyPunctuality.d.ts +1 -1
- package/dist/transport/compare/classifyPunctuality.js +1 -1
- package/dist/transport/compare/isPastCutoff.d.ts +1 -1
- package/dist/transport/compare/isPastCutoff.js +2 -2
- package/dist/transport/compare/scheduleDeviation.d.ts +1 -1
- package/dist/transport/compare/scheduleDeviation.js +1 -1
- package/dist/transport/compare/timeToCutoff.d.ts +1 -1
- package/dist/transport/compare/timeToCutoff.js +1 -1
- package/dist/transport/convert/etaAtZone.d.ts +8 -3
- package/dist/transport/convert/etaAtZone.js +8 -3
- package/dist/transport/index.d.ts +1 -1
- package/dist/transport/index.js +2 -2
- package/dist/types/business-calendar.d.ts +5 -4
- package/dist/types/date-duration-unit.d.ts +1 -1
- package/dist/types/date-time-duration-units.d.ts +1 -1
- package/dist/types/date-time-unit.d.ts +1 -1
- package/dist/types/date-unit.d.ts +1 -1
- package/dist/types/disambiguation.d.ts +1 -1
- package/dist/types/duration-relative-to.d.ts +1 -1
- package/dist/types/duration-string-options.d.ts +1 -1
- 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/fiscal-calendar.d.ts +40 -4
- package/dist/types/free-time-options.d.ts +4 -3
- package/dist/types/gnss.d.ts +51 -0
- package/dist/types/gnss.js +0 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.js +7 -0
- package/dist/types/now-unit.d.ts +1 -1
- package/dist/types/offset.d.ts +1 -1
- package/dist/types/operating-schedule.d.ts +3 -2
- package/dist/types/overflow.d.ts +1 -1
- package/dist/types/rounding-options.d.ts +1 -1
- package/dist/types/stored-zoned-classification.d.ts +83 -0
- package/dist/types/stored-zoned-classification.js +0 -0
- package/dist/types/time-duration-unit.d.ts +1 -1
- package/dist/types/time-unit.d.ts +1 -1
- package/dist/types/two-digit-year.d.ts +23 -0
- package/dist/types/two-digit-year.js +0 -0
- package/dist/types/utc-now-unit.d.ts +1 -1
- 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 +11 -3
- package/dist/unix/calculate/diffUnix.js +11 -6
- package/dist/unix/calculate/diffUnixAsDuration.d.ts +11 -3
- 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 +13 -4
- package/dist/unix/calculate/endOfUnix.js +8 -1
- package/dist/unix/calculate/isBetweenUnix.d.ts +3 -2
- package/dist/unix/calculate/isBetweenUnix.js +4 -4
- package/dist/unix/calculate/roundUnix.d.ts +17 -7
- package/dist/unix/calculate/roundUnix.js +19 -10
- package/dist/unix/calculate/setUnix.d.ts +28 -8
- package/dist/unix/calculate/setUnix.js +35 -14
- package/dist/unix/calculate/startOfQuarterForUnix.d.ts +10 -2
- package/dist/unix/calculate/startOfQuarterForUnix.js +6 -0
- package/dist/unix/calculate/startOfUnix.d.ts +13 -4
- package/dist/unix/calculate/startOfUnix.js +8 -1
- package/dist/unix/calculate/subtractUnix.d.ts +10 -2
- package/dist/unix/calculate/subtractUnix.js +13 -11
- package/dist/unix/compare/areUnixEqualBy.d.ts +13 -4
- package/dist/unix/compare/areUnixEqualBy.js +8 -1
- 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 +6 -3
- package/dist/unix/convert/convertUnixToPlainTime.js +6 -5
- package/dist/unix/convert/convertUnixToZoned.d.ts +6 -2
- package/dist/unix/convert/convertUnixToZoned.js +6 -2
- package/dist/unix/format/formatCalendarUnix.d.ts +16 -11
- package/dist/unix/format/formatCalendarUnix.js +12 -7
- package/dist/unix/format/formatRelativeUnix.d.ts +17 -9
- package/dist/unix/format/formatRelativeUnix.js +19 -11
- package/dist/unix/format/formatUnix.d.ts +16 -11
- package/dist/unix/format/formatUnix.js +13 -9
- package/dist/unix/get/getUnixDay.d.ts +1 -3
- package/dist/unix/get/getUnixDay.js +6 -13
- package/dist/unix/get/getUnixHour.d.ts +1 -3
- package/dist/unix/get/getUnixHour.js +6 -13
- package/dist/unix/get/getUnixMicrosecond.d.ts +1 -3
- package/dist/unix/get/getUnixMicrosecond.js +5 -12
- package/dist/unix/get/getUnixMillisecond.d.ts +1 -3
- package/dist/unix/get/getUnixMillisecond.js +6 -13
- package/dist/unix/get/getUnixMinute.d.ts +1 -3
- package/dist/unix/get/getUnixMinute.js +6 -13
- package/dist/unix/get/getUnixMonth.d.ts +1 -3
- package/dist/unix/get/getUnixMonth.js +6 -13
- package/dist/unix/get/getUnixNanosecond.d.ts +1 -3
- package/dist/unix/get/getUnixNanosecond.js +5 -12
- package/dist/unix/get/getUnixNow.js +1 -1
- package/dist/unix/get/getUnixNowUnit.d.ts +3 -1
- package/dist/unix/get/getUnixNowUnit.js +3 -1
- package/dist/unix/get/getUnixSecond.d.ts +1 -3
- package/dist/unix/get/getUnixSecond.js +6 -13
- package/dist/unix/get/getUnixYear.d.ts +3 -3
- package/dist/unix/get/getUnixYear.js +6 -13
- package/dist/unix/index.d.ts +1 -1
- package/dist/unix/index.js +2 -2
- 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 +13 -8
- package/dist/unix/interval/intervalLengthUnix.d.ts +12 -4
- package/dist/unix/interval/intervalLengthUnix.js +8 -2
- package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +10 -2
- package/dist/unix/interval/intervalOverlappingDaysUnix.js +10 -5
- package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +13 -4
- package/dist/unix/interval/splitIntervalByUnitUnix.js +16 -9
- 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 +10 -4
- 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 +5 -8
- 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/endOfQuarterForUtc.js +1 -1
- package/dist/utc/calculate/endOfUtc.d.ts +1 -1
- package/dist/utc/calculate/isBetweenUtc.js +1 -1
- package/dist/utc/calculate/maxUtc.js +1 -1
- package/dist/utc/calculate/minUtc.js +1 -1
- package/dist/utc/calculate/roundUtc.d.ts +1 -1
- package/dist/utc/calculate/roundUtc.js +1 -1
- package/dist/utc/calculate/setUtc.d.ts +17 -4
- package/dist/utc/calculate/setUtc.js +23 -9
- package/dist/utc/calculate/sortUtc.js +1 -1
- package/dist/utc/calculate/startOfQuarterForUtc.js +1 -1
- package/dist/utc/calculate/startOfUtc.d.ts +1 -1
- package/dist/utc/calculate/subtractUtc.js +5 -8
- package/dist/utc/compare/areUtcEqual.js +1 -1
- package/dist/utc/compare/areUtcEqualBy.d.ts +2 -2
- package/dist/utc/compare/areUtcEqualBy.js +2 -2
- package/dist/utc/compare/isAfterUtc.js +1 -1
- package/dist/utc/compare/isBeforeUtc.js +1 -1
- package/dist/utc/convert/convertUtcToPlainDate.d.ts +9 -3
- package/dist/utc/convert/convertUtcToPlainDate.js +12 -9
- package/dist/utc/convert/convertUtcToPlainDateTime.d.ts +10 -3
- package/dist/utc/convert/convertUtcToPlainDateTime.js +14 -15
- package/dist/utc/convert/convertUtcToPlainTime.d.ts +6 -3
- package/dist/utc/convert/convertUtcToPlainTime.js +9 -8
- package/dist/utc/convert/convertUtcToUnix.js +1 -1
- package/dist/utc/convert/convertUtcToZoned.d.ts +6 -2
- package/dist/utc/convert/convertUtcToZoned.js +7 -3
- package/dist/utc/format/formatCalendarUtc.d.ts +12 -7
- package/dist/utc/format/formatCalendarUtc.js +9 -4
- package/dist/utc/format/{formatHttp.d.ts → formatHttpDate.d.ts} +7 -7
- package/dist/utc/format/{formatHttp.js → formatHttpDate.js} +8 -8
- package/dist/utc/format/formatRelativeUtc.d.ts +15 -7
- package/dist/utc/format/formatRelativeUtc.js +17 -9
- package/dist/utc/format/formatUtc.d.ts +15 -10
- 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 +6 -13
- package/dist/utc/get/getUtcHour.d.ts +1 -3
- package/dist/utc/get/getUtcHour.js +6 -13
- package/dist/utc/get/getUtcMicrosecond.d.ts +1 -3
- package/dist/utc/get/getUtcMicrosecond.js +5 -12
- package/dist/utc/get/getUtcMillisecond.d.ts +1 -3
- package/dist/utc/get/getUtcMillisecond.js +6 -13
- package/dist/utc/get/getUtcMinute.d.ts +1 -3
- package/dist/utc/get/getUtcMinute.js +6 -13
- package/dist/utc/get/getUtcMonth.d.ts +1 -3
- package/dist/utc/get/getUtcMonth.js +6 -13
- package/dist/utc/get/getUtcNanosecond.d.ts +1 -3
- package/dist/utc/get/getUtcNanosecond.js +5 -12
- package/dist/utc/get/getUtcNow.d.ts +1 -3
- package/dist/utc/get/getUtcNow.js +3 -10
- package/dist/utc/get/getUtcNowUnit.d.ts +2 -0
- package/dist/utc/get/getUtcNowUnit.js +3 -1
- package/dist/utc/get/getUtcSecond.d.ts +1 -3
- package/dist/utc/get/getUtcSecond.js +6 -13
- package/dist/utc/get/getUtcYear.d.ts +3 -3
- package/dist/utc/get/getUtcYear.js +6 -13
- package/dist/utc/index.d.ts +1 -1
- package/dist/utc/index.js +2 -2
- package/dist/utc/interval/intervalAbutsUtc.js +1 -1
- package/dist/utc/interval/intervalContainsUtc.js +1 -1
- package/dist/utc/interval/intervalCountUtc.js +1 -1
- package/dist/utc/interval/intervalDivideEquallyUtc.js +1 -1
- package/dist/utc/interval/intervalEngulfsUtc.js +1 -1
- package/dist/utc/interval/intervalFromDurationUtc.js +1 -1
- package/dist/utc/interval/intervalLengthUtc.js +1 -1
- package/dist/utc/interval/intervalOverlappingDaysUtc.js +1 -1
- package/dist/utc/interval/intervalSplitAtUtc.js +1 -1
- package/dist/utc/interval/intervalXorAllUtc.js +3 -3
- package/dist/utc/interval/intervalXorUtc.js +1 -1
- package/dist/utc/interval/mergeIntervalsUtc.js +2 -2
- package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +2 -1
- package/dist/utc/interval/splitIntervalByUnitUtc.js +3 -2
- package/dist/utc/interval/validate/isValidUtcInterval.js +1 -1
- package/dist/utc/parse/index.d.ts +1 -1
- package/dist/utc/parse/index.js +1 -1
- package/dist/utc/parse/parseDateFromUtc.d.ts +5 -3
- package/dist/utc/parse/parseDateFromUtc.js +3 -3
- package/dist/utc/parse/parseDayFromUtc.d.ts +5 -3
- package/dist/utc/parse/parseDayFromUtc.js +3 -3
- package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +5 -3
- package/dist/utc/parse/parseDayOfWeekFromUtc.js +6 -6
- package/dist/utc/parse/parseHourFromUtc.d.ts +5 -3
- package/dist/utc/parse/parseHourFromUtc.js +3 -3
- package/dist/utc/parse/{parseHttp.d.ts → parseHttpDate.d.ts} +12 -12
- package/dist/utc/parse/{parseHttp.js → parseHttpDate.js} +13 -13
- package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +5 -3
- package/dist/utc/parse/parseMicrosecondFromUtc.js +3 -3
- package/dist/utc/parse/parseMillisecondFromUtc.d.ts +5 -3
- package/dist/utc/parse/parseMillisecondFromUtc.js +3 -3
- package/dist/utc/parse/parseMinuteFromUtc.d.ts +4 -2
- package/dist/utc/parse/parseMinuteFromUtc.js +2 -2
- package/dist/utc/parse/parseMonthFromUtc.d.ts +5 -3
- package/dist/utc/parse/parseMonthFromUtc.js +3 -3
- package/dist/utc/parse/parseNanosecondFromUtc.d.ts +5 -3
- package/dist/utc/parse/parseNanosecondFromUtc.js +3 -3
- package/dist/utc/parse/parseSecondFromUtc.d.ts +5 -3
- package/dist/utc/parse/parseSecondFromUtc.js +3 -3
- package/dist/utc/parse/parseTimeFromUtc.d.ts +6 -3
- package/dist/utc/parse/parseTimeFromUtc.js +7 -6
- package/dist/utc/parse/parseUnitFromUtc.d.ts +12 -5
- package/dist/utc/parse/parseUnitFromUtc.js +13 -7
- package/dist/utc/parse/parseWeekFromUtc.d.ts +5 -3
- package/dist/utc/parse/parseWeekFromUtc.js +6 -6
- package/dist/utc/parse/parseYearFromUtc.d.ts +9 -5
- package/dist/utc/parse/parseYearFromUtc.js +9 -6
- 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 +7 -3
- package/dist/utc/validate/isValidUtcRange.js +1 -1
- package/dist/utc/validate/isValidUtcTimestamp.d.ts +43 -0
- package/dist/utc/validate/isValidUtcTimestamp.js +48 -0
- package/dist/workforce/calculate/dutyDayFor.d.ts +38 -0
- package/dist/workforce/calculate/dutyDayFor.js +71 -0
- package/dist/workforce/calculate/dutyTotals.d.ts +24 -0
- package/dist/workforce/calculate/dutyTotals.js +41 -0
- package/dist/workforce/calculate/dutyViolations.d.ts +74 -0
- package/dist/workforce/calculate/dutyViolations.js +65 -0
- package/dist/workforce/calculate/evaluateDutyLog.d.ts +77 -0
- package/dist/workforce/calculate/evaluateDutyLog.js +75 -0
- package/dist/workforce/calculate/index.d.ts +7 -0
- package/dist/workforce/calculate/index.js +7 -0
- package/dist/workforce/calculate/longestRun.d.ts +28 -0
- package/dist/workforce/calculate/longestRun.js +54 -0
- package/dist/workforce/calculate/qualifyingRestPairs.d.ts +37 -0
- package/dist/workforce/calculate/qualifyingRestPairs.js +58 -0
- package/dist/workforce/calculate/qualifyingRests.d.ts +27 -0
- package/dist/workforce/calculate/qualifyingRests.js +49 -0
- package/dist/workforce/index.d.ts +3 -0
- package/dist/workforce/index.js +4 -0
- package/dist/workforce/validate/index.d.ts +1 -0
- package/dist/workforce/validate/index.js +1 -0
- package/dist/workforce/validate/isValidDutyLog.d.ts +24 -0
- package/dist/workforce/validate/isValidDutyLog.js +34 -0
- package/dist/zoned/calculate/addZoned.d.ts +15 -15
- package/dist/zoned/calculate/addZoned.js +19 -22
- package/dist/zoned/calculate/addZonedBusinessDays.d.ts +5 -4
- package/dist/zoned/calculate/addZonedBusinessDays.js +5 -4
- package/dist/zoned/calculate/clampZoned.js +1 -1
- package/dist/zoned/calculate/diffZoned.d.ts +8 -8
- package/dist/zoned/calculate/diffZoned.js +7 -7
- package/dist/zoned/calculate/diffZonedAsDuration.d.ts +5 -5
- package/dist/zoned/calculate/diffZonedAsDuration.js +4 -4
- package/dist/zoned/calculate/endOfZoned.d.ts +3 -3
- package/dist/zoned/calculate/endOfZoned.js +2 -2
- package/dist/zoned/calculate/getHoursInZonedDay.d.ts +2 -2
- package/dist/zoned/calculate/getHoursInZonedDay.js +2 -2
- package/dist/zoned/calculate/getLocaleZonedDayOfWeek.d.ts +6 -5
- package/dist/zoned/calculate/getLocaleZonedDayOfWeek.js +6 -5
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +5 -5
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +5 -5
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +6 -6
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +6 -6
- package/dist/zoned/calculate/maxZoned.d.ts +2 -2
- package/dist/zoned/calculate/maxZoned.js +3 -3
- package/dist/zoned/calculate/minZoned.d.ts +2 -2
- package/dist/zoned/calculate/minZoned.js +3 -3
- package/dist/zoned/calculate/roundZoned.d.ts +11 -9
- package/dist/zoned/calculate/roundZoned.js +11 -9
- package/dist/zoned/calculate/setZoned.d.ts +26 -12
- package/dist/zoned/calculate/setZoned.js +33 -16
- package/dist/zoned/calculate/sortZoned.d.ts +3 -3
- package/dist/zoned/calculate/sortZoned.js +4 -4
- package/dist/zoned/calculate/startOfZoned.d.ts +3 -3
- package/dist/zoned/calculate/startOfZoned.js +2 -2
- package/dist/zoned/calculate/subtractZoned.d.ts +14 -14
- package/dist/zoned/calculate/subtractZoned.js +18 -21
- package/dist/zoned/calculate/subtractZonedBusinessDays.d.ts +5 -4
- package/dist/zoned/calculate/subtractZonedBusinessDays.js +5 -4
- package/dist/zoned/chop/chopZonedDate.d.ts +1 -1
- package/dist/zoned/chop/chopZonedDate.js +1 -1
- package/dist/zoned/chop/chopZonedMilliseconds.d.ts +1 -1
- package/dist/zoned/chop/chopZonedMilliseconds.js +1 -1
- package/dist/zoned/chop/chopZonedSeconds.d.ts +1 -1
- package/dist/zoned/chop/chopZonedSeconds.js +1 -1
- package/dist/zoned/chop/chopZonedTime.d.ts +1 -1
- package/dist/zoned/chop/chopZonedTime.js +1 -1
- package/dist/zoned/chop/chopZonedTimezone.d.ts +1 -1
- package/dist/zoned/chop/chopZonedTimezone.js +1 -1
- package/dist/zoned/classify/classifyStoredZoned.d.ts +46 -0
- package/dist/zoned/classify/classifyStoredZoned.js +177 -0
- package/dist/zoned/classify/index.d.ts +1 -0
- package/dist/zoned/classify/index.js +1 -0
- package/dist/zoned/compare/areZonedEqual.js +1 -1
- package/dist/zoned/compare/areZonedEqualBy.d.ts +8 -10
- package/dist/zoned/compare/areZonedEqualBy.js +8 -10
- package/dist/zoned/compare/isAfterZoned.js +1 -1
- package/dist/zoned/compare/isBeforeZoned.d.ts +2 -2
- package/dist/zoned/compare/isBeforeZoned.js +3 -3
- package/dist/zoned/compare/isBetweenZoned.js +1 -1
- package/dist/zoned/compare/isInDaylightSaving.d.ts +2 -2
- package/dist/zoned/compare/isInDaylightSaving.js +2 -2
- package/dist/zoned/compare/isZonedBusinessDay.d.ts +7 -6
- package/dist/zoned/compare/isZonedBusinessDay.js +7 -6
- package/dist/zoned/compare/isZonedFuture.js +1 -1
- package/dist/zoned/compare/isZonedPast.js +1 -1
- package/dist/zoned/compare/isZonedRelativeDay.d.ts +2 -2
- package/dist/zoned/compare/isZonedRelativeDay.js +3 -3
- package/dist/zoned/compare/isZonedThisUnit.d.ts +7 -7
- package/dist/zoned/compare/isZonedThisUnit.js +7 -7
- package/dist/zoned/compare/isZonedWeekend.d.ts +5 -5
- package/dist/zoned/compare/isZonedWeekend.js +5 -5
- package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +10 -7
- package/dist/zoned/convert/convertPlainDateTimeToZoned.js +10 -7
- package/dist/zoned/convert/convertZonedToCalendar.d.ts +5 -5
- package/dist/zoned/convert/convertZonedToCalendar.js +5 -5
- package/dist/zoned/convert/convertZonedToPlainDateTime.d.ts +3 -3
- package/dist/zoned/convert/convertZonedToPlainDateTime.js +3 -3
- package/dist/zoned/convert/convertZonedToZoned.d.ts +7 -3
- package/dist/zoned/convert/convertZonedToZoned.js +7 -3
- package/dist/zoned/format/formatCalendarZoned.d.ts +7 -6
- package/dist/zoned/format/formatCalendarZoned.js +7 -6
- package/dist/zoned/format/formatRelativeZoned.d.ts +3 -3
- package/dist/zoned/format/formatRelativeZoned.js +6 -5
- package/dist/zoned/format/formatRfc2822.d.ts +3 -3
- package/dist/zoned/format/formatRfc2822.js +3 -3
- package/dist/zoned/format/formatRfc3339.d.ts +2 -2
- package/dist/zoned/format/formatRfc3339.js +2 -2
- package/dist/zoned/format/formatTimeZoneName.d.ts +22 -18
- package/dist/zoned/format/formatTimeZoneName.js +18 -13
- package/dist/zoned/format/formatZonedDateTime.d.ts +10 -10
- package/dist/zoned/format/formatZonedDateTime.js +12 -11
- package/dist/zoned/format/formatZonedRange.d.ts +7 -7
- package/dist/zoned/format/formatZonedRange.js +9 -8
- package/dist/zoned/format/formatZonedToParts.d.ts +11 -11
- package/dist/zoned/format/formatZonedToParts.js +13 -12
- package/dist/zoned/get/getDstTransitions.d.ts +14 -12
- package/dist/zoned/get/getDstTransitions.js +15 -10
- package/dist/zoned/get/getSystemTimeZone.d.ts +5 -3
- package/dist/zoned/get/getSystemTimeZone.js +7 -4
- package/dist/zoned/get/getTimeZoneOffset.d.ts +15 -7
- package/dist/zoned/get/getTimeZoneOffset.js +23 -10
- package/dist/zoned/get/getTimeZones.d.ts +1 -1
- package/dist/zoned/get/getTimeZones.js +1 -1
- package/dist/zoned/get/getZonedDay.d.ts +3 -2
- package/dist/zoned/get/getZonedDay.js +7 -8
- package/dist/zoned/get/getZonedDayOfWeek.d.ts +3 -2
- package/dist/zoned/get/getZonedDayOfWeek.js +7 -6
- package/dist/zoned/get/getZonedHour.d.ts +3 -2
- package/dist/zoned/get/getZonedHour.js +7 -8
- package/dist/zoned/get/getZonedMicrosecond.d.ts +3 -2
- package/dist/zoned/get/getZonedMicrosecond.js +7 -6
- package/dist/zoned/get/getZonedMillisecond.d.ts +3 -2
- package/dist/zoned/get/getZonedMillisecond.js +7 -8
- package/dist/zoned/get/getZonedMinute.d.ts +3 -2
- package/dist/zoned/get/getZonedMinute.js +7 -8
- package/dist/zoned/get/getZonedMonth.d.ts +3 -2
- package/dist/zoned/get/getZonedMonth.js +7 -8
- package/dist/zoned/get/getZonedNanosecond.d.ts +3 -2
- package/dist/zoned/get/getZonedNanosecond.js +7 -6
- package/dist/zoned/get/getZonedNow.d.ts +9 -5
- package/dist/zoned/get/getZonedNow.js +9 -5
- package/dist/zoned/get/getZonedNowUnit.d.ts +7 -4
- package/dist/zoned/get/getZonedNowUnit.js +11 -8
- package/dist/zoned/get/getZonedSecond.d.ts +3 -2
- package/dist/zoned/get/getZonedSecond.js +7 -8
- package/dist/zoned/get/getZonedToday.d.ts +3 -2
- package/dist/zoned/get/getZonedToday.js +7 -6
- package/dist/zoned/get/getZonedWeekOfYear.d.ts +3 -2
- package/dist/zoned/get/getZonedWeekOfYear.js +7 -6
- package/dist/zoned/get/getZonedYear.d.ts +5 -2
- package/dist/zoned/get/getZonedYear.js +10 -8
- package/dist/zoned/index.d.ts +2 -1
- package/dist/zoned/index.js +3 -2
- package/dist/zoned/interval/intervalAbutsZoned.d.ts +2 -2
- package/dist/zoned/interval/intervalAbutsZoned.js +3 -3
- package/dist/zoned/interval/intervalContainsZoned.d.ts +1 -1
- package/dist/zoned/interval/intervalContainsZoned.js +2 -2
- package/dist/zoned/interval/intervalCountZoned.d.ts +4 -4
- package/dist/zoned/interval/intervalCountZoned.js +5 -5
- package/dist/zoned/interval/intervalDifferenceZoned.js +1 -1
- package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +1 -1
- package/dist/zoned/interval/intervalDivideEquallyZoned.js +2 -2
- package/dist/zoned/interval/intervalEngulfsZoned.d.ts +1 -1
- package/dist/zoned/interval/intervalEngulfsZoned.js +2 -2
- package/dist/zoned/interval/intervalFromDurationZoned.d.ts +6 -6
- package/dist/zoned/interval/intervalFromDurationZoned.js +7 -7
- package/dist/zoned/interval/intervalIntersectionZoned.js +1 -1
- package/dist/zoned/interval/intervalLengthZoned.d.ts +5 -5
- package/dist/zoned/interval/intervalLengthZoned.js +5 -5
- package/dist/zoned/interval/intervalOverlappingDaysZoned.d.ts +2 -2
- package/dist/zoned/interval/intervalOverlappingDaysZoned.js +3 -3
- package/dist/zoned/interval/intervalSplitAtZoned.js +14 -16
- package/dist/zoned/interval/intervalUnionZoned.js +1 -1
- package/dist/zoned/interval/intervalXorAllZoned.js +3 -3
- package/dist/zoned/interval/intervalXorZoned.js +1 -1
- package/dist/zoned/interval/intervalsOverlapZoned.d.ts +2 -2
- package/dist/zoned/interval/intervalsOverlapZoned.js +3 -3
- package/dist/zoned/interval/mergeIntervalsZoned.js +3 -3
- package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +2 -1
- package/dist/zoned/interval/splitIntervalByUnitZoned.js +3 -2
- package/dist/zoned/interval/validate/isValidCalendarZonedInterval.d.ts +2 -2
- package/dist/zoned/interval/validate/isValidCalendarZonedInterval.js +3 -3
- package/dist/zoned/interval/validate/isValidZonedInterval.d.ts +1 -1
- package/dist/zoned/interval/validate/isValidZonedInterval.js +2 -2
- package/dist/zoned/map/mapZonedDatesInRange.js +1 -1
- package/dist/zoned/map/mapZonedHoursInDay.d.ts +1 -1
- package/dist/zoned/map/mapZonedHoursInDay.js +2 -2
- package/dist/zoned/parse/getZonedOffset.d.ts +1 -1
- package/dist/zoned/parse/getZonedOffset.js +1 -1
- package/dist/zoned/parse/getZonedOffsetAs.d.ts +6 -6
- package/dist/zoned/parse/getZonedOffsetAs.js +3 -3
- package/dist/zoned/parse/parseDateTimeFromZoned.js +2 -2
- package/dist/zoned/parse/parseRfc2822.js +1 -1
- package/dist/zoned/parse/parseRfc3339.js +1 -1
- package/dist/zoned/parse/parseUnitFromZoned.d.ts +5 -2
- 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 +6 -4
- package/dist/zoned/validate/hasDaylightSaving.js +16 -10
- package/dist/zoned/validate/index.d.ts +2 -0
- package/dist/zoned/validate/index.js +2 -0
- package/dist/zoned/validate/isValidCalendarZonedDateTime.d.ts +8 -8
- package/dist/zoned/validate/isValidCalendarZonedDateTime.js +8 -8
- 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 +6 -2
- package/dist/zoned/validate/isValidTimeZone.js +8 -19
- package/dist/zoned/validate/isValidZonedDateTime.d.ts +7 -7
- package/dist/zoned/validate/isValidZonedDateTime.js +9 -9
- package/dist/zoned/validate/isValidZonedRange.d.ts +1 -1
- package/dist/zoned/validate/isValidZonedRange.js +5 -5
- package/package.json +103 -4
- package/skills/gmt-arithmetic/SKILL.md +63 -17
- package/skills/gmt-basics/SKILL.md +83 -21
- package/skills/gmt-gnss/SKILL.md +92 -0
- package/skills/gmt-integration/SKILL.md +58 -10
- package/skills/gmt-intermodal/SKILL.md +189 -0
- package/skills/gmt-timezone/SKILL.md +51 -169
- package/skills/gmt-transport/SKILL.md +133 -0
- package/skills/gmt-workforce/SKILL.md +84 -0
- 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
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { readEdiValue } from "../../internal/ediDateTimeFields.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse an X12 Date Time Period value that states a calendar date, as an ISO 8601 date.
|
|
4
|
+
*
|
|
5
|
+
* A `DTP` segment carries a format qualifier in `DTP-02` (data element **1250**) and its value
|
|
6
|
+
* in `DTP-03` (data element **1251**); `DTM-05` and `DTM-06` carry the same pair. This function
|
|
7
|
+
* reads the codes whose value is a date. Codes are release 005010, read from
|
|
8
|
+
* [Stedi's X12-licensed dictionary](https://www.stedi.com/edi/x12-005010/element/1250); the X12
|
|
9
|
+
* text itself was not reached.
|
|
10
|
+
*
|
|
11
|
+
* ### Format codes
|
|
12
|
+
* | Code | Mask | The dictionary's definition |
|
|
13
|
+
* |---|---|---|
|
|
14
|
+
* | `D8` | `CCYYMMDD` | "Date Expressed in Format CCYYMMDD" |
|
|
15
|
+
* | `DB` | `MMDDCCYY` | "Date Expressed in Format MMDDCCYY" |
|
|
16
|
+
*
|
|
17
|
+
* - The value must be the eight digits of its code's mask. The same digits can read two ways,
|
|
18
|
+
* so the code decides: `"12112010"` is 11 December 2010 under `DB` and not a date under `D8`.
|
|
19
|
+
* - **`D8` also reads data element 373 (Date)**, the `CCYYMMDD` date element of `AT7`, `G62`
|
|
20
|
+
* and `DTM-02`. To read that date and its time element together, use `parseX12DateAndTime`.
|
|
21
|
+
* - Fields are checked, not clamped: month 13, 31 June and 29 February 2023 return `""`.
|
|
22
|
+
* - A two-digit year (`D6` `YYMMDD`, `TT` `MMDDYY`) is not read: X12 does not say which century
|
|
23
|
+
* it belongs to. Read one with
|
|
24
|
+
* `parseDateWithPattern("240615", "yyMMdd", undefined, { yearWindow: 2000 })`.
|
|
25
|
+
* - Returns `""` for any other code, a code of another kind included (`DT` is read by
|
|
26
|
+
* `parseX12DateTime`), and for a non-string argument.
|
|
27
|
+
*
|
|
28
|
+
* @param value The data element 1251 value (e.g. "20240615")
|
|
29
|
+
* @param format X12 data element 1250 format qualifier
|
|
30
|
+
* @returns the date as `YYYY-MM-DD`, or "" on invalid input
|
|
31
|
+
*
|
|
32
|
+
* @example parseX12Date("20240615", "D8") // "2024-06-15"
|
|
33
|
+
* @example parseX12Date("06152024", "DB") // "2024-06-15"
|
|
34
|
+
* @example parseX12Date("20240615", "DB") // "" (20 is not a month)
|
|
35
|
+
* @example parseX12Date("20230229", "D8") // "" (2023 has no 29 February)
|
|
36
|
+
* @example parseX12Date("240615", "D8") // "" (a two-digit year is not read)
|
|
37
|
+
* @example parseX12Date("202406151430", "DT") // "" (a date-time code: use parseX12DateTime)
|
|
38
|
+
*/
|
|
39
|
+
export function parseX12Date(value, format) {
|
|
40
|
+
try {
|
|
41
|
+
return readEdiValue("x12", "date", format, value);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// Never throws (Core Rule 3): a hostile argument is invalid input, not an exception.
|
|
45
|
+
return "";
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read the date and the time of an X12 segment, sent as two elements, as one ISO 8601 local
|
|
3
|
+
* date-time.
|
|
4
|
+
*
|
|
5
|
+
* X12 freight segments carry a moment as separate elements, and this function takes the two as
|
|
6
|
+
* they are transmitted: `AT7-05` and `AT7-06` (in a 214 shipment status), `G62-02` and `G62-04`
|
|
7
|
+
* (a 204 load tender) and `DTM-02` and `DTM-03`. Definitions are release 005010, read from
|
|
8
|
+
* [Stedi's X12-licensed dictionary](https://www.stedi.com/edi/x12-005010/segment/DTM); the X12
|
|
9
|
+
* text itself was not reached.
|
|
10
|
+
*
|
|
11
|
+
* ### The two elements
|
|
12
|
+
* | Element | Name | The dictionary's definition |
|
|
13
|
+
* |---|---|---|
|
|
14
|
+
* | [373](https://www.stedi.com/edi/x12-005010/element/373) | Date | "Date expressed as CCYYMMDD where CC represents the first two digits of the calendar year" |
|
|
15
|
+
* | [337](https://www.stedi.com/edi/x12-005010/element/337) | Time | "Time expressed in 24-hour clock time as follows: HHMM, or HHMMSS, or HHMMSSD, or HHMMSSDD" |
|
|
16
|
+
*
|
|
17
|
+
* - **The result is local, never UTC.** It has no `Z` and no offset. `AT7` says what a blank
|
|
18
|
+
* time code means: "If AT707 is not present then AT706 represents local time of the status".
|
|
19
|
+
* Reading the value as UTC is the most common EDI timestamp bug.
|
|
20
|
+
* - **The time code beside them (data element 623) says where the clock was.** For a code that
|
|
21
|
+
* states an offset, resolve the result at that offset:
|
|
22
|
+
* `resolveLocal(parseX12DateAndTime("20240615", "1430"), x12TimeCodeOffset("20"))` is
|
|
23
|
+
* `"2024-06-15T19:30:00Z"`. For a code that names a zone (`x12TimeCodeZone`), pass the result
|
|
24
|
+
* and the IANA zone you map the name to, to `resolveLocal`.
|
|
25
|
+
* - **Both elements are required.** A missing or empty date or time returns `""`: read a date
|
|
26
|
+
* alone with `parseX12Date(value, "D8")` and a time alone with `parseX12Time`.
|
|
27
|
+
* - The time is one of the four element 337 forms, 4, 6, 7 or 8 digits. Seconds are always
|
|
28
|
+
* written, `00` for `HHMM`. Tenths and hundredths become the fraction of the second exactly:
|
|
29
|
+
* `14300012` is `14:30:00.12`. A zero fraction is not written.
|
|
30
|
+
* - **To write the two elements back**, write the date with `formatX12Date(date, "D8")` and the
|
|
31
|
+
* time with `formatX12TimeElement`, naming the element 337 form by its mask:
|
|
32
|
+
* `formatX12TimeElement("14:30:00.12", "HHMMSSDD")` is `14300012`.
|
|
33
|
+
* - Fields are checked, not clamped: 29 February 2023, 31 June, hour 24, minute or second 60
|
|
34
|
+
* and a time of 5 or 9 digits return `""`.
|
|
35
|
+
* - The date has a four-digit year. Before release 004010, element 373 was `YYMMDD`: read such
|
|
36
|
+
* a date with `parseDateWithPattern("240615", "yyMMdd", undefined, { yearWindow: 2000 })`.
|
|
37
|
+
* - Returns `""` for a non-string argument.
|
|
38
|
+
*
|
|
39
|
+
* @param date The data element 373 date as transmitted, `CCYYMMDD` (e.g. "20240615")
|
|
40
|
+
* @param time The data element 337 time as transmitted (e.g. "1430")
|
|
41
|
+
* @returns the local date-time as `YYYY-MM-DDTHH:MM:SS`, with a fraction when the time has one, or "" on invalid input
|
|
42
|
+
*
|
|
43
|
+
* @example parseX12DateAndTime("20240615", "1430") // "2024-06-15T14:30:00"
|
|
44
|
+
* @example parseX12DateAndTime("20240615", "143045") // "2024-06-15T14:30:45"
|
|
45
|
+
* @example parseX12DateAndTime("20240615", "14300012") // "2024-06-15T14:30:00.12" (hundredths of a second)
|
|
46
|
+
* @example parseX12DateAndTime("20240615", "") // "" (both elements are required)
|
|
47
|
+
* @example parseX12DateAndTime("", "1430") // "" (both elements are required)
|
|
48
|
+
* @example parseX12DateAndTime("20230229", "1430") // "" (2023 has no 29 February)
|
|
49
|
+
* @example parseX12DateAndTime("20240615", "2430") // "" (hour 24)
|
|
50
|
+
* @example parseX12DateAndTime("240615", "1430") // "" (the date element has a four-digit year)
|
|
51
|
+
*/
|
|
52
|
+
export declare function parseX12DateAndTime(date: string, time: string): string;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { readX12DateAndTime } from "../../internal/ediDateTimeFields.js";
|
|
2
|
+
/**
|
|
3
|
+
* Read the date and the time of an X12 segment, sent as two elements, as one ISO 8601 local
|
|
4
|
+
* date-time.
|
|
5
|
+
*
|
|
6
|
+
* X12 freight segments carry a moment as separate elements, and this function takes the two as
|
|
7
|
+
* they are transmitted: `AT7-05` and `AT7-06` (in a 214 shipment status), `G62-02` and `G62-04`
|
|
8
|
+
* (a 204 load tender) and `DTM-02` and `DTM-03`. Definitions are release 005010, read from
|
|
9
|
+
* [Stedi's X12-licensed dictionary](https://www.stedi.com/edi/x12-005010/segment/DTM); the X12
|
|
10
|
+
* text itself was not reached.
|
|
11
|
+
*
|
|
12
|
+
* ### The two elements
|
|
13
|
+
* | Element | Name | The dictionary's definition |
|
|
14
|
+
* |---|---|---|
|
|
15
|
+
* | [373](https://www.stedi.com/edi/x12-005010/element/373) | Date | "Date expressed as CCYYMMDD where CC represents the first two digits of the calendar year" |
|
|
16
|
+
* | [337](https://www.stedi.com/edi/x12-005010/element/337) | Time | "Time expressed in 24-hour clock time as follows: HHMM, or HHMMSS, or HHMMSSD, or HHMMSSDD" |
|
|
17
|
+
*
|
|
18
|
+
* - **The result is local, never UTC.** It has no `Z` and no offset. `AT7` says what a blank
|
|
19
|
+
* time code means: "If AT707 is not present then AT706 represents local time of the status".
|
|
20
|
+
* Reading the value as UTC is the most common EDI timestamp bug.
|
|
21
|
+
* - **The time code beside them (data element 623) says where the clock was.** For a code that
|
|
22
|
+
* states an offset, resolve the result at that offset:
|
|
23
|
+
* `resolveLocal(parseX12DateAndTime("20240615", "1430"), x12TimeCodeOffset("20"))` is
|
|
24
|
+
* `"2024-06-15T19:30:00Z"`. For a code that names a zone (`x12TimeCodeZone`), pass the result
|
|
25
|
+
* and the IANA zone you map the name to, to `resolveLocal`.
|
|
26
|
+
* - **Both elements are required.** A missing or empty date or time returns `""`: read a date
|
|
27
|
+
* alone with `parseX12Date(value, "D8")` and a time alone with `parseX12Time`.
|
|
28
|
+
* - The time is one of the four element 337 forms, 4, 6, 7 or 8 digits. Seconds are always
|
|
29
|
+
* written, `00` for `HHMM`. Tenths and hundredths become the fraction of the second exactly:
|
|
30
|
+
* `14300012` is `14:30:00.12`. A zero fraction is not written.
|
|
31
|
+
* - **To write the two elements back**, write the date with `formatX12Date(date, "D8")` and the
|
|
32
|
+
* time with `formatX12TimeElement`, naming the element 337 form by its mask:
|
|
33
|
+
* `formatX12TimeElement("14:30:00.12", "HHMMSSDD")` is `14300012`.
|
|
34
|
+
* - Fields are checked, not clamped: 29 February 2023, 31 June, hour 24, minute or second 60
|
|
35
|
+
* and a time of 5 or 9 digits return `""`.
|
|
36
|
+
* - The date has a four-digit year. Before release 004010, element 373 was `YYMMDD`: read such
|
|
37
|
+
* a date with `parseDateWithPattern("240615", "yyMMdd", undefined, { yearWindow: 2000 })`.
|
|
38
|
+
* - Returns `""` for a non-string argument.
|
|
39
|
+
*
|
|
40
|
+
* @param date The data element 373 date as transmitted, `CCYYMMDD` (e.g. "20240615")
|
|
41
|
+
* @param time The data element 337 time as transmitted (e.g. "1430")
|
|
42
|
+
* @returns the local date-time as `YYYY-MM-DDTHH:MM:SS`, with a fraction when the time has one, or "" on invalid input
|
|
43
|
+
*
|
|
44
|
+
* @example parseX12DateAndTime("20240615", "1430") // "2024-06-15T14:30:00"
|
|
45
|
+
* @example parseX12DateAndTime("20240615", "143045") // "2024-06-15T14:30:45"
|
|
46
|
+
* @example parseX12DateAndTime("20240615", "14300012") // "2024-06-15T14:30:00.12" (hundredths of a second)
|
|
47
|
+
* @example parseX12DateAndTime("20240615", "") // "" (both elements are required)
|
|
48
|
+
* @example parseX12DateAndTime("", "1430") // "" (both elements are required)
|
|
49
|
+
* @example parseX12DateAndTime("20230229", "1430") // "" (2023 has no 29 February)
|
|
50
|
+
* @example parseX12DateAndTime("20240615", "2430") // "" (hour 24)
|
|
51
|
+
* @example parseX12DateAndTime("240615", "1430") // "" (the date element has a four-digit year)
|
|
52
|
+
*/
|
|
53
|
+
export function parseX12DateAndTime(date, time) {
|
|
54
|
+
try {
|
|
55
|
+
return readX12DateAndTime(date, time);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// Never throws (Core Rule 3): a hostile argument is invalid input, not an exception.
|
|
59
|
+
return "";
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { EdiDatePeriod, X12DateRangeFormat } from "../../types/edi.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse an X12 Date Time Period value that states a range between two calendar dates, as its
|
|
4
|
+
* start and end.
|
|
5
|
+
*
|
|
6
|
+
* A `DTP` segment carries a format qualifier in `DTP-02` (data element **1250**) and its value
|
|
7
|
+
* in `DTP-03` (data element **1251**); `DTM-05` and `DTM-06` carry the same pair. Codes are
|
|
8
|
+
* release 005010, read from
|
|
9
|
+
* [Stedi's X12-licensed dictionary](https://www.stedi.com/edi/x12-005010/element/1250); the X12
|
|
10
|
+
* text itself was not reached.
|
|
11
|
+
*
|
|
12
|
+
* ### Format codes
|
|
13
|
+
* | Code | Mask | The dictionary's definition |
|
|
14
|
+
* |---|---|---|
|
|
15
|
+
* | `RD8` | `CCYYMMDD-CCYYMMDD` | "Range of Dates Expressed in Format CCYYMMDD-CCYYMMDD" |
|
|
16
|
+
* | `RD` | `MMDDCCYY-MMDDCCYY` | "Range of Dates Expressed in Format MMDDCCYY-MMDDCCYY" |
|
|
17
|
+
*
|
|
18
|
+
* - **A range is transmitted with exactly one hyphen.** Each definition gives the format with
|
|
19
|
+
* its hyphen: `"20240615-20240620"` reads, and `"2024061520240620"` returns `null`.
|
|
20
|
+
* - **`start` and `end` are the two dates as transmitted**, each `YYYY-MM-DD`. X12 does not say
|
|
21
|
+
* here whether the end date is inside the range: that is the segment's to define, so no day
|
|
22
|
+
* is added or removed. Pass the pair to the plain interval functions as `(start, end)`, for
|
|
23
|
+
* example `intervalLengthDate(range.start, range.end, "days")`; they leave `end` outside the
|
|
24
|
+
* interval.
|
|
25
|
+
* - **An end before its start returns `null`**: a reversed range names no span of time. An end
|
|
26
|
+
* equal to its start is a valid range.
|
|
27
|
+
* - Fields are checked, not clamped: month 13, 31 June and 29 February 2023 return `null`.
|
|
28
|
+
* - A two-digit year (`RD6`, `YYMMDD-YYMMDD`) is not read. Split such a value at its hyphen and
|
|
29
|
+
* read each half with `parseDateWithPattern`, a `yy` pattern and its `yearWindow` option.
|
|
30
|
+
* - Returns `null` for any other code, a code of another kind included (`RDT` is read by
|
|
31
|
+
* `parseX12DateTimeRange`), and for a non-string argument.
|
|
32
|
+
*
|
|
33
|
+
* @param value The data element 1251 value (e.g. "20240615-20240620")
|
|
34
|
+
* @param format X12 data element 1250 format qualifier
|
|
35
|
+
* @returns `{ start, end }`, two ISO 8601 dates, or null on invalid input
|
|
36
|
+
*
|
|
37
|
+
* @example parseX12DateRange("20240615-20240620", "RD8") // { start: "2024-06-15", end: "2024-06-20" }
|
|
38
|
+
* @example parseX12DateRange("06152024-06202024", "RD") // { start: "2024-06-15", end: "2024-06-20" }
|
|
39
|
+
* @example parseX12DateRange("2024061520240620", "RD8") // null (a range is transmitted with its hyphen)
|
|
40
|
+
* @example parseX12DateRange("20240620-20240615", "RD8") // null (the end precedes the start)
|
|
41
|
+
* @example parseX12DateRange("20230229-20240620", "RD8") // null (2023 has no 29 February)
|
|
42
|
+
* @example parseX12DateRange("20240615", "D8") // null (a date code: use parseX12Date)
|
|
43
|
+
*/
|
|
44
|
+
export declare function parseX12DateRange(value: string, format: X12DateRangeFormat): EdiDatePeriod | null;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { readEdiRange } from "../../internal/ediDateTimeFields.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse an X12 Date Time Period value that states a range between two calendar dates, as its
|
|
4
|
+
* start and end.
|
|
5
|
+
*
|
|
6
|
+
* A `DTP` segment carries a format qualifier in `DTP-02` (data element **1250**) and its value
|
|
7
|
+
* in `DTP-03` (data element **1251**); `DTM-05` and `DTM-06` carry the same pair. Codes are
|
|
8
|
+
* release 005010, read from
|
|
9
|
+
* [Stedi's X12-licensed dictionary](https://www.stedi.com/edi/x12-005010/element/1250); the X12
|
|
10
|
+
* text itself was not reached.
|
|
11
|
+
*
|
|
12
|
+
* ### Format codes
|
|
13
|
+
* | Code | Mask | The dictionary's definition |
|
|
14
|
+
* |---|---|---|
|
|
15
|
+
* | `RD8` | `CCYYMMDD-CCYYMMDD` | "Range of Dates Expressed in Format CCYYMMDD-CCYYMMDD" |
|
|
16
|
+
* | `RD` | `MMDDCCYY-MMDDCCYY` | "Range of Dates Expressed in Format MMDDCCYY-MMDDCCYY" |
|
|
17
|
+
*
|
|
18
|
+
* - **A range is transmitted with exactly one hyphen.** Each definition gives the format with
|
|
19
|
+
* its hyphen: `"20240615-20240620"` reads, and `"2024061520240620"` returns `null`.
|
|
20
|
+
* - **`start` and `end` are the two dates as transmitted**, each `YYYY-MM-DD`. X12 does not say
|
|
21
|
+
* here whether the end date is inside the range: that is the segment's to define, so no day
|
|
22
|
+
* is added or removed. Pass the pair to the plain interval functions as `(start, end)`, for
|
|
23
|
+
* example `intervalLengthDate(range.start, range.end, "days")`; they leave `end` outside the
|
|
24
|
+
* interval.
|
|
25
|
+
* - **An end before its start returns `null`**: a reversed range names no span of time. An end
|
|
26
|
+
* equal to its start is a valid range.
|
|
27
|
+
* - Fields are checked, not clamped: month 13, 31 June and 29 February 2023 return `null`.
|
|
28
|
+
* - A two-digit year (`RD6`, `YYMMDD-YYMMDD`) is not read. Split such a value at its hyphen and
|
|
29
|
+
* read each half with `parseDateWithPattern`, a `yy` pattern and its `yearWindow` option.
|
|
30
|
+
* - Returns `null` for any other code, a code of another kind included (`RDT` is read by
|
|
31
|
+
* `parseX12DateTimeRange`), and for a non-string argument.
|
|
32
|
+
*
|
|
33
|
+
* @param value The data element 1251 value (e.g. "20240615-20240620")
|
|
34
|
+
* @param format X12 data element 1250 format qualifier
|
|
35
|
+
* @returns `{ start, end }`, two ISO 8601 dates, or null on invalid input
|
|
36
|
+
*
|
|
37
|
+
* @example parseX12DateRange("20240615-20240620", "RD8") // { start: "2024-06-15", end: "2024-06-20" }
|
|
38
|
+
* @example parseX12DateRange("06152024-06202024", "RD") // { start: "2024-06-15", end: "2024-06-20" }
|
|
39
|
+
* @example parseX12DateRange("2024061520240620", "RD8") // null (a range is transmitted with its hyphen)
|
|
40
|
+
* @example parseX12DateRange("20240620-20240615", "RD8") // null (the end precedes the start)
|
|
41
|
+
* @example parseX12DateRange("20230229-20240620", "RD8") // null (2023 has no 29 February)
|
|
42
|
+
* @example parseX12DateRange("20240615", "D8") // null (a date code: use parseX12Date)
|
|
43
|
+
*/
|
|
44
|
+
export function parseX12DateRange(value, format) {
|
|
45
|
+
try {
|
|
46
|
+
return readEdiRange("x12", "dateRange", format, value);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// Never throws (Core Rule 3): a hostile argument is invalid input, not an exception.
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { X12DateTimeFormat } from "../../types/edi.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse an X12 Date Time Period value that states a date and a time, as an ISO 8601 local
|
|
4
|
+
* date-time.
|
|
5
|
+
*
|
|
6
|
+
* A `DTP` segment carries a format qualifier in `DTP-02` (data element **1250**) and its value
|
|
7
|
+
* in `DTP-03` (data element **1251**); `DTM-05` and `DTM-06` carry the same pair. This function
|
|
8
|
+
* reads the codes whose value is one date-time. Codes are release 005010, read from
|
|
9
|
+
* [Stedi's X12-licensed dictionary](https://www.stedi.com/edi/x12-005010/element/1250); the X12
|
|
10
|
+
* text itself was not reached.
|
|
11
|
+
*
|
|
12
|
+
* ### Format codes
|
|
13
|
+
* | Code | Mask | The dictionary's definition |
|
|
14
|
+
* |---|---|---|
|
|
15
|
+
* | `DT` | `CCYYMMDDHHMM` | "Date and Time Expressed in Format CCYYMMDDHHMM" |
|
|
16
|
+
* | `RTS` | `CCYYMMDDHHMMSS` | "Date and Time Expressed in Format CCYYMMDDHHMMSS" |
|
|
17
|
+
*
|
|
18
|
+
* - **The result is local, never UTC.** No 1250 code carries an offset, so the result has no
|
|
19
|
+
* `Z` and no offset. Pass it and the place's IANA zone to `resolveLocal` to get the instant.
|
|
20
|
+
* - `RTS` is one date-time, despite the `R` that marks a range in other codes.
|
|
21
|
+
* - The value must be the digits of its code's mask: `"202406151430"` is a `DT` value and not
|
|
22
|
+
* an `RTS` one.
|
|
23
|
+
* - Seconds are always written in the result, `00` for `DT`.
|
|
24
|
+
* - Fields are checked, not clamped: hour 24, second 60, 31 June and 29 February 2023 return
|
|
25
|
+
* `""`.
|
|
26
|
+
* - **A freight segment sends the date and the time as two elements** (373 and 337 in `AT7`,
|
|
27
|
+
* `G62` and `DTM-02`/`03`), not as one 1250 value: read those with `parseX12DateAndTime`.
|
|
28
|
+
* - A two-digit year (`TR`, `DDMMYYHHMM`) is not read: X12 does not say which century it
|
|
29
|
+
* belongs to. Read one with
|
|
30
|
+
* `parseDateTimeWithPattern("1506241430", "ddMMyyHHmm", undefined, { yearWindow: 2000 })`.
|
|
31
|
+
* - Returns `""` for any other code, a code of another kind included (`D8` is read by
|
|
32
|
+
* `parseX12Date`), and for a non-string argument.
|
|
33
|
+
*
|
|
34
|
+
* @param value The data element 1251 value (e.g. "202406151430")
|
|
35
|
+
* @param format X12 data element 1250 format qualifier
|
|
36
|
+
* @returns the local date-time as `YYYY-MM-DDTHH:MM:SS`, or "" on invalid input
|
|
37
|
+
*
|
|
38
|
+
* @example parseX12DateTime("202406151430", "DT") // "2024-06-15T14:30:00"
|
|
39
|
+
* @example parseX12DateTime("20240615143045", "RTS") // "2024-06-15T14:30:45"
|
|
40
|
+
* @example parseX12DateTime("202406151430", "RTS") // "" (twelve digits is a DT value)
|
|
41
|
+
* @example parseX12DateTime("202302291430", "DT") // "" (2023 has no 29 February)
|
|
42
|
+
* @example parseX12DateTime("202406152430", "DT") // "" (hour 24)
|
|
43
|
+
* @example parseX12DateTime("20240615", "D8") // "" (a date code: use parseX12Date)
|
|
44
|
+
*/
|
|
45
|
+
export declare function parseX12DateTime(value: string, format: X12DateTimeFormat): string;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { readEdiValue } from "../../internal/ediDateTimeFields.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse an X12 Date Time Period value that states a date and a time, as an ISO 8601 local
|
|
4
|
+
* date-time.
|
|
5
|
+
*
|
|
6
|
+
* A `DTP` segment carries a format qualifier in `DTP-02` (data element **1250**) and its value
|
|
7
|
+
* in `DTP-03` (data element **1251**); `DTM-05` and `DTM-06` carry the same pair. This function
|
|
8
|
+
* reads the codes whose value is one date-time. Codes are release 005010, read from
|
|
9
|
+
* [Stedi's X12-licensed dictionary](https://www.stedi.com/edi/x12-005010/element/1250); the X12
|
|
10
|
+
* text itself was not reached.
|
|
11
|
+
*
|
|
12
|
+
* ### Format codes
|
|
13
|
+
* | Code | Mask | The dictionary's definition |
|
|
14
|
+
* |---|---|---|
|
|
15
|
+
* | `DT` | `CCYYMMDDHHMM` | "Date and Time Expressed in Format CCYYMMDDHHMM" |
|
|
16
|
+
* | `RTS` | `CCYYMMDDHHMMSS` | "Date and Time Expressed in Format CCYYMMDDHHMMSS" |
|
|
17
|
+
*
|
|
18
|
+
* - **The result is local, never UTC.** No 1250 code carries an offset, so the result has no
|
|
19
|
+
* `Z` and no offset. Pass it and the place's IANA zone to `resolveLocal` to get the instant.
|
|
20
|
+
* - `RTS` is one date-time, despite the `R` that marks a range in other codes.
|
|
21
|
+
* - The value must be the digits of its code's mask: `"202406151430"` is a `DT` value and not
|
|
22
|
+
* an `RTS` one.
|
|
23
|
+
* - Seconds are always written in the result, `00` for `DT`.
|
|
24
|
+
* - Fields are checked, not clamped: hour 24, second 60, 31 June and 29 February 2023 return
|
|
25
|
+
* `""`.
|
|
26
|
+
* - **A freight segment sends the date and the time as two elements** (373 and 337 in `AT7`,
|
|
27
|
+
* `G62` and `DTM-02`/`03`), not as one 1250 value: read those with `parseX12DateAndTime`.
|
|
28
|
+
* - A two-digit year (`TR`, `DDMMYYHHMM`) is not read: X12 does not say which century it
|
|
29
|
+
* belongs to. Read one with
|
|
30
|
+
* `parseDateTimeWithPattern("1506241430", "ddMMyyHHmm", undefined, { yearWindow: 2000 })`.
|
|
31
|
+
* - Returns `""` for any other code, a code of another kind included (`D8` is read by
|
|
32
|
+
* `parseX12Date`), and for a non-string argument.
|
|
33
|
+
*
|
|
34
|
+
* @param value The data element 1251 value (e.g. "202406151430")
|
|
35
|
+
* @param format X12 data element 1250 format qualifier
|
|
36
|
+
* @returns the local date-time as `YYYY-MM-DDTHH:MM:SS`, or "" on invalid input
|
|
37
|
+
*
|
|
38
|
+
* @example parseX12DateTime("202406151430", "DT") // "2024-06-15T14:30:00"
|
|
39
|
+
* @example parseX12DateTime("20240615143045", "RTS") // "2024-06-15T14:30:45"
|
|
40
|
+
* @example parseX12DateTime("202406151430", "RTS") // "" (twelve digits is a DT value)
|
|
41
|
+
* @example parseX12DateTime("202302291430", "DT") // "" (2023 has no 29 February)
|
|
42
|
+
* @example parseX12DateTime("202406152430", "DT") // "" (hour 24)
|
|
43
|
+
* @example parseX12DateTime("20240615", "D8") // "" (a date code: use parseX12Date)
|
|
44
|
+
*/
|
|
45
|
+
export function parseX12DateTime(value, format) {
|
|
46
|
+
try {
|
|
47
|
+
return readEdiValue("x12", "dateTime", format, value);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// Never throws (Core Rule 3): a hostile argument is invalid input, not an exception.
|
|
51
|
+
return "";
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { EdiDateTimePeriod, X12DateTimeRangeFormat } from "../../types/edi.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse an X12 Date Time Period value that states a range between two local date-times, as its
|
|
4
|
+
* start and end.
|
|
5
|
+
*
|
|
6
|
+
* A `DTP` segment carries a format qualifier in `DTP-02` (data element **1250**) and its value
|
|
7
|
+
* in `DTP-03` (data element **1251**); `DTM-05` and `DTM-06` carry the same pair. Codes are
|
|
8
|
+
* release 005010, read from
|
|
9
|
+
* [Stedi's X12-licensed dictionary](https://www.stedi.com/edi/x12-005010/element/1250); the X12
|
|
10
|
+
* text itself was not reached.
|
|
11
|
+
*
|
|
12
|
+
* ### Format codes
|
|
13
|
+
* | Code | Mask | The dictionary's definition |
|
|
14
|
+
* |---|---|---|
|
|
15
|
+
* | `RDT` | `CCYYMMDDHHMM-CCYYMMDDHHMM` | "Range of Date and Time, Expressed in Format CCYYMMDDHHMM-CCYYMMDDHHMM" |
|
|
16
|
+
* | `DTS` | `CCYYMMDDHHMMSS-CCYYMMDDHHMMSS` | "Range of Date and Time Expressed in Format CCYYMMDDHHMMSS-CCYYMMDDHHMMSS" |
|
|
17
|
+
*
|
|
18
|
+
* - **A range is transmitted with exactly one hyphen**: `"202406151430-202406201600"` reads,
|
|
19
|
+
* and the same digits run together return `null`.
|
|
20
|
+
* - **`start` and `end` are local date-times as transmitted**, each `YYYY-MM-DDTHH:MM:SS`, with
|
|
21
|
+
* seconds `00` for `RDT`. No 1250 code carries an offset, so neither names an instant: pass
|
|
22
|
+
* each and the place's IANA zone to `resolveLocal`.
|
|
23
|
+
* - X12 does not say here whether the end is inside the range. Pass the pair to the plain
|
|
24
|
+
* interval functions as `(start, end)`, for example
|
|
25
|
+
* `intervalLengthDateTime(range.start, range.end, "hours")`; they leave `end` outside the
|
|
26
|
+
* interval.
|
|
27
|
+
* - `DTS` is a range, despite having no `R`.
|
|
28
|
+
* - **An end before its start returns `null`**: a reversed range names no span of time. An end
|
|
29
|
+
* equal to its start is a valid range.
|
|
30
|
+
* - Fields are checked, not clamped: hour 24, second 60 and 29 February 2023 return `null`.
|
|
31
|
+
* - A range with a date on one side and a date-time on the other (`DDT`, `DTD`) is not read,
|
|
32
|
+
* and neither is a range of times with no date (`RTM`).
|
|
33
|
+
* - Returns `null` for any other code, a code of another kind included (`RD8` is read by
|
|
34
|
+
* `parseX12DateRange`), and for a non-string argument.
|
|
35
|
+
*
|
|
36
|
+
* @param value The data element 1251 value (e.g. "202406151430-202406201600")
|
|
37
|
+
* @param format X12 data element 1250 format qualifier
|
|
38
|
+
* @returns `{ start, end }`, two ISO 8601 local date-times, or null on invalid input
|
|
39
|
+
*
|
|
40
|
+
* @example parseX12DateTimeRange("202406151430-202406201600", "RDT") // { start: "2024-06-15T14:30:00", end: "2024-06-20T16:00:00" }
|
|
41
|
+
* @example parseX12DateTimeRange("20240615143045-20240620160030", "DTS") // { start: "2024-06-15T14:30:45", end: "2024-06-20T16:00:30" }
|
|
42
|
+
* @example parseX12DateTimeRange("202406151430202406201600", "RDT") // null (a range is transmitted with its hyphen)
|
|
43
|
+
* @example parseX12DateTimeRange("202406151431-202406151430", "RDT") // null (the end precedes the start)
|
|
44
|
+
* @example parseX12DateTimeRange("20240615-20240620", "RD8") // null (a date range code: use parseX12DateRange)
|
|
45
|
+
*/
|
|
46
|
+
export declare function parseX12DateTimeRange(value: string, format: X12DateTimeRangeFormat): EdiDateTimePeriod | null;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { readEdiRange } from "../../internal/ediDateTimeFields.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse an X12 Date Time Period value that states a range between two local date-times, as its
|
|
4
|
+
* start and end.
|
|
5
|
+
*
|
|
6
|
+
* A `DTP` segment carries a format qualifier in `DTP-02` (data element **1250**) and its value
|
|
7
|
+
* in `DTP-03` (data element **1251**); `DTM-05` and `DTM-06` carry the same pair. Codes are
|
|
8
|
+
* release 005010, read from
|
|
9
|
+
* [Stedi's X12-licensed dictionary](https://www.stedi.com/edi/x12-005010/element/1250); the X12
|
|
10
|
+
* text itself was not reached.
|
|
11
|
+
*
|
|
12
|
+
* ### Format codes
|
|
13
|
+
* | Code | Mask | The dictionary's definition |
|
|
14
|
+
* |---|---|---|
|
|
15
|
+
* | `RDT` | `CCYYMMDDHHMM-CCYYMMDDHHMM` | "Range of Date and Time, Expressed in Format CCYYMMDDHHMM-CCYYMMDDHHMM" |
|
|
16
|
+
* | `DTS` | `CCYYMMDDHHMMSS-CCYYMMDDHHMMSS` | "Range of Date and Time Expressed in Format CCYYMMDDHHMMSS-CCYYMMDDHHMMSS" |
|
|
17
|
+
*
|
|
18
|
+
* - **A range is transmitted with exactly one hyphen**: `"202406151430-202406201600"` reads,
|
|
19
|
+
* and the same digits run together return `null`.
|
|
20
|
+
* - **`start` and `end` are local date-times as transmitted**, each `YYYY-MM-DDTHH:MM:SS`, with
|
|
21
|
+
* seconds `00` for `RDT`. No 1250 code carries an offset, so neither names an instant: pass
|
|
22
|
+
* each and the place's IANA zone to `resolveLocal`.
|
|
23
|
+
* - X12 does not say here whether the end is inside the range. Pass the pair to the plain
|
|
24
|
+
* interval functions as `(start, end)`, for example
|
|
25
|
+
* `intervalLengthDateTime(range.start, range.end, "hours")`; they leave `end` outside the
|
|
26
|
+
* interval.
|
|
27
|
+
* - `DTS` is a range, despite having no `R`.
|
|
28
|
+
* - **An end before its start returns `null`**: a reversed range names no span of time. An end
|
|
29
|
+
* equal to its start is a valid range.
|
|
30
|
+
* - Fields are checked, not clamped: hour 24, second 60 and 29 February 2023 return `null`.
|
|
31
|
+
* - A range with a date on one side and a date-time on the other (`DDT`, `DTD`) is not read,
|
|
32
|
+
* and neither is a range of times with no date (`RTM`).
|
|
33
|
+
* - Returns `null` for any other code, a code of another kind included (`RD8` is read by
|
|
34
|
+
* `parseX12DateRange`), and for a non-string argument.
|
|
35
|
+
*
|
|
36
|
+
* @param value The data element 1251 value (e.g. "202406151430-202406201600")
|
|
37
|
+
* @param format X12 data element 1250 format qualifier
|
|
38
|
+
* @returns `{ start, end }`, two ISO 8601 local date-times, or null on invalid input
|
|
39
|
+
*
|
|
40
|
+
* @example parseX12DateTimeRange("202406151430-202406201600", "RDT") // { start: "2024-06-15T14:30:00", end: "2024-06-20T16:00:00" }
|
|
41
|
+
* @example parseX12DateTimeRange("20240615143045-20240620160030", "DTS") // { start: "2024-06-15T14:30:45", end: "2024-06-20T16:00:30" }
|
|
42
|
+
* @example parseX12DateTimeRange("202406151430202406201600", "RDT") // null (a range is transmitted with its hyphen)
|
|
43
|
+
* @example parseX12DateTimeRange("202406151431-202406151430", "RDT") // null (the end precedes the start)
|
|
44
|
+
* @example parseX12DateTimeRange("20240615-20240620", "RD8") // null (a date range code: use parseX12DateRange)
|
|
45
|
+
*/
|
|
46
|
+
export function parseX12DateTimeRange(value, format) {
|
|
47
|
+
try {
|
|
48
|
+
return readEdiRange("x12", "dateTimeRange", format, value);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
// Never throws (Core Rule 3): a hostile argument is invalid input, not an exception.
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { X12TimeFormat } from "../../types/edi.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse an X12 time as an ISO 8601 time: a data element 337 value with no qualifier, or a time
|
|
4
|
+
* that arrives with a data element 1250 format qualifier.
|
|
5
|
+
*
|
|
6
|
+
* X12 sends a time two ways, and `format` says which the caller holds:
|
|
7
|
+
*
|
|
8
|
+
* - **With no qualifier**: the time element of a freight segment (`AT7-06`, `G62-04`,
|
|
9
|
+
* `DTM-03`) is data element 337, which fixes its own four forms. Omit `format`.
|
|
10
|
+
* - **With a qualifier**: a `DTP` segment (`DTP-02` and `DTP-03`), and `DTM-05` and `DTM-06`,
|
|
11
|
+
* send a data element 1250 format qualifier beside the value. Pass it as `format`, and the
|
|
12
|
+
* value is read against that qualifier's mask alone.
|
|
13
|
+
*
|
|
14
|
+
* Definitions are release 005010, read from Stedi's X12-licensed dictionary
|
|
15
|
+
* ([337](https://www.stedi.com/edi/x12-005010/element/337),
|
|
16
|
+
* [1250](https://www.stedi.com/edi/x12-005010/element/1250)); the X12 text itself was not
|
|
17
|
+
* reached.
|
|
18
|
+
*
|
|
19
|
+
* ### Forms
|
|
20
|
+
* | `format` | Digits | Mask | The dictionary's definition |
|
|
21
|
+
* |---|---|---|---|
|
|
22
|
+
* | 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)" |
|
|
23
|
+
* | `TM` | 4 | `HHMM` | "Time Expressed in Format HHMM" |
|
|
24
|
+
* | `TS` | 6 | `HHMMSS` | "Time Expressed in Format HHMMSS" |
|
|
25
|
+
*
|
|
26
|
+
* - **A qualifier is strict.** `"143045"` is a `TS` value and returns `""` under `TM`, and no
|
|
27
|
+
* 1250 code holds decimal seconds, so a 7- or 8-digit value returns `""` under either
|
|
28
|
+
* qualifier. The same values read when `format` is omitted.
|
|
29
|
+
* - **A `format` that is present and is not `TM` or `TS` returns `""`**, never the unqualified
|
|
30
|
+
* read: a code of another kind (`D8`), a code that is not read (`RTM`, `TT`), an empty string
|
|
31
|
+
* and a non-string. Only an omitted or `undefined` format means "no qualifier".
|
|
32
|
+
* - Seconds are always written in the result, `00` for `HHMM`.
|
|
33
|
+
* - With no qualifier, tenths and hundredths become the fraction of the second exactly:
|
|
34
|
+
* `1430001` is `14:30:00.1` and `14300012` is `14:30:00.12`. A zero fraction is not written
|
|
35
|
+
* (`14300000` is `14:30:00`).
|
|
36
|
+
* - **To write the value back**, use `formatX12TimeElement` for an element 337 time and name
|
|
37
|
+
* the form by its mask: `formatX12TimeElement("14:30:00.12", "HHMMSSDD")` is `14300012`. Use
|
|
38
|
+
* `formatX12Time` for a time that travels with a `TM` or `TS` qualifier.
|
|
39
|
+
* - Fields are checked, not clamped: hour 24, minute 60, second 60 and a value of 5 or 9 digits
|
|
40
|
+
* return `""`.
|
|
41
|
+
* - **The time is local to a place the value does not name.** In a freight segment the time
|
|
42
|
+
* code beside it (data element 623) says where the clock was: classify it with
|
|
43
|
+
* `classifyX12TimeCode`. To read the date and time elements together, use
|
|
44
|
+
* `parseX12DateAndTime`.
|
|
45
|
+
* - A range of times (`RTM`, `HHMM-HHMM`) is not read.
|
|
46
|
+
* - Returns `""` for a non-string value.
|
|
47
|
+
*
|
|
48
|
+
* @param value The time as transmitted (e.g. "1430")
|
|
49
|
+
* @param format X12 data element 1250 format qualifier the time arrived with; omit it for a data element 337 value
|
|
50
|
+
* @returns the time as `HH:MM:SS`, with a fraction of one or two digits when a 337 value has one, or "" on invalid input
|
|
51
|
+
*
|
|
52
|
+
* @example parseX12Time("1430") // "14:30:00"
|
|
53
|
+
* @example parseX12Time("1430", "TM") // "14:30:00"
|
|
54
|
+
* @example parseX12Time("143045", "TS") // "14:30:45"
|
|
55
|
+
* @example parseX12Time("143045") // "14:30:45"
|
|
56
|
+
* @example parseX12Time("1430001") // "14:30:00.1" (a tenth of a second)
|
|
57
|
+
* @example parseX12Time("14300012") // "14:30:00.12" (hundredths of a second)
|
|
58
|
+
* @example parseX12Time("14300000") // "14:30:00" (a zero fraction is not written)
|
|
59
|
+
* @example parseX12Time("143045", "TM") // "" (six digits is a TS value)
|
|
60
|
+
* @example parseX12Time("14300012", "TS") // "" (no 1250 code holds decimal seconds)
|
|
61
|
+
* @example parseX12Time("2430") // "" (hour 24)
|
|
62
|
+
* @example parseX12Time("14304") // "" (five digits is not an element 337 form)
|
|
63
|
+
* @example parseX12Time("14:30") // "" (the value is the digits of the element)
|
|
64
|
+
*/
|
|
65
|
+
export declare function parseX12Time(value: string, format?: X12TimeFormat): string;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { readEdiValue, readX12Time } from "../../internal/ediDateTimeFields.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse an X12 time as an ISO 8601 time: a data element 337 value with no qualifier, or a time
|
|
4
|
+
* that arrives with a data element 1250 format qualifier.
|
|
5
|
+
*
|
|
6
|
+
* X12 sends a time two ways, and `format` says which the caller holds:
|
|
7
|
+
*
|
|
8
|
+
* - **With no qualifier**: the time element of a freight segment (`AT7-06`, `G62-04`,
|
|
9
|
+
* `DTM-03`) is data element 337, which fixes its own four forms. Omit `format`.
|
|
10
|
+
* - **With a qualifier**: a `DTP` segment (`DTP-02` and `DTP-03`), and `DTM-05` and `DTM-06`,
|
|
11
|
+
* send a data element 1250 format qualifier beside the value. Pass it as `format`, and the
|
|
12
|
+
* value is read against that qualifier's mask alone.
|
|
13
|
+
*
|
|
14
|
+
* Definitions are release 005010, read from Stedi's X12-licensed dictionary
|
|
15
|
+
* ([337](https://www.stedi.com/edi/x12-005010/element/337),
|
|
16
|
+
* [1250](https://www.stedi.com/edi/x12-005010/element/1250)); the X12 text itself was not
|
|
17
|
+
* reached.
|
|
18
|
+
*
|
|
19
|
+
* ### Forms
|
|
20
|
+
* | `format` | Digits | Mask | The dictionary's definition |
|
|
21
|
+
* |---|---|---|---|
|
|
22
|
+
* | 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)" |
|
|
23
|
+
* | `TM` | 4 | `HHMM` | "Time Expressed in Format HHMM" |
|
|
24
|
+
* | `TS` | 6 | `HHMMSS` | "Time Expressed in Format HHMMSS" |
|
|
25
|
+
*
|
|
26
|
+
* - **A qualifier is strict.** `"143045"` is a `TS` value and returns `""` under `TM`, and no
|
|
27
|
+
* 1250 code holds decimal seconds, so a 7- or 8-digit value returns `""` under either
|
|
28
|
+
* qualifier. The same values read when `format` is omitted.
|
|
29
|
+
* - **A `format` that is present and is not `TM` or `TS` returns `""`**, never the unqualified
|
|
30
|
+
* read: a code of another kind (`D8`), a code that is not read (`RTM`, `TT`), an empty string
|
|
31
|
+
* and a non-string. Only an omitted or `undefined` format means "no qualifier".
|
|
32
|
+
* - Seconds are always written in the result, `00` for `HHMM`.
|
|
33
|
+
* - With no qualifier, tenths and hundredths become the fraction of the second exactly:
|
|
34
|
+
* `1430001` is `14:30:00.1` and `14300012` is `14:30:00.12`. A zero fraction is not written
|
|
35
|
+
* (`14300000` is `14:30:00`).
|
|
36
|
+
* - **To write the value back**, use `formatX12TimeElement` for an element 337 time and name
|
|
37
|
+
* the form by its mask: `formatX12TimeElement("14:30:00.12", "HHMMSSDD")` is `14300012`. Use
|
|
38
|
+
* `formatX12Time` for a time that travels with a `TM` or `TS` qualifier.
|
|
39
|
+
* - Fields are checked, not clamped: hour 24, minute 60, second 60 and a value of 5 or 9 digits
|
|
40
|
+
* return `""`.
|
|
41
|
+
* - **The time is local to a place the value does not name.** In a freight segment the time
|
|
42
|
+
* code beside it (data element 623) says where the clock was: classify it with
|
|
43
|
+
* `classifyX12TimeCode`. To read the date and time elements together, use
|
|
44
|
+
* `parseX12DateAndTime`.
|
|
45
|
+
* - A range of times (`RTM`, `HHMM-HHMM`) is not read.
|
|
46
|
+
* - Returns `""` for a non-string value.
|
|
47
|
+
*
|
|
48
|
+
* @param value The time as transmitted (e.g. "1430")
|
|
49
|
+
* @param format X12 data element 1250 format qualifier the time arrived with; omit it for a data element 337 value
|
|
50
|
+
* @returns the time as `HH:MM:SS`, with a fraction of one or two digits when a 337 value has one, or "" on invalid input
|
|
51
|
+
*
|
|
52
|
+
* @example parseX12Time("1430") // "14:30:00"
|
|
53
|
+
* @example parseX12Time("1430", "TM") // "14:30:00"
|
|
54
|
+
* @example parseX12Time("143045", "TS") // "14:30:45"
|
|
55
|
+
* @example parseX12Time("143045") // "14:30:45"
|
|
56
|
+
* @example parseX12Time("1430001") // "14:30:00.1" (a tenth of a second)
|
|
57
|
+
* @example parseX12Time("14300012") // "14:30:00.12" (hundredths of a second)
|
|
58
|
+
* @example parseX12Time("14300000") // "14:30:00" (a zero fraction is not written)
|
|
59
|
+
* @example parseX12Time("143045", "TM") // "" (six digits is a TS value)
|
|
60
|
+
* @example parseX12Time("14300012", "TS") // "" (no 1250 code holds decimal seconds)
|
|
61
|
+
* @example parseX12Time("2430") // "" (hour 24)
|
|
62
|
+
* @example parseX12Time("14304") // "" (five digits is not an element 337 form)
|
|
63
|
+
* @example parseX12Time("14:30") // "" (the value is the digits of the element)
|
|
64
|
+
*/
|
|
65
|
+
export function parseX12Time(value, format) {
|
|
66
|
+
try {
|
|
67
|
+
// No qualifier: the element fixes its own forms. With one, the value is read against that
|
|
68
|
+
// code's mask, and a code that is not a time code is refused there.
|
|
69
|
+
return format === undefined
|
|
70
|
+
? readX12Time(value)
|
|
71
|
+
: readEdiValue("x12", "time", format, value);
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
// Never throws (Core Rule 3): a hostile argument is invalid input, not an exception.
|
|
75
|
+
return "";
|
|
76
|
+
}
|
|
77
|
+
}
|