@northguild/gmt 1.17.0 → 1.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -2480
- package/dist/calendar/calculate/bucketRange.d.ts +12 -4
- package/dist/calendar/calculate/bucketRange.js +20 -63
- package/dist/calendar/calculate/floorToZone.d.ts +14 -4
- package/dist/calendar/calculate/floorToZone.js +18 -9
- package/dist/calendar/calculate/getFiscalPeriod.d.ts +21 -8
- package/dist/calendar/calculate/getFiscalPeriod.js +9 -8
- package/dist/calendar/calculate/getIsoWeekDate.d.ts +10 -5
- package/dist/calendar/calculate/getIsoWeekDate.js +1 -5
- package/dist/calendar/calculate/getOrdinalDate.d.ts +10 -3
- package/dist/calendar/calculate/getOrdinalDate.js +2 -3
- package/dist/calendar/calculate/getQuarter.d.ts +21 -9
- package/dist/calendar/calculate/getQuarter.js +8 -12
- package/dist/calendar/hours/addOperatingTime.d.ts +59 -0
- package/dist/calendar/hours/addOperatingTime.js +65 -0
- package/dist/calendar/hours/index.d.ts +7 -0
- package/dist/calendar/hours/index.js +7 -0
- package/dist/calendar/hours/isOpenAt.d.ts +45 -0
- package/dist/calendar/hours/isOpenAt.js +50 -0
- package/dist/calendar/hours/nextCloseAt.d.ts +55 -0
- package/dist/calendar/hours/nextCloseAt.js +57 -0
- package/dist/calendar/hours/nextOpenAt.d.ts +51 -0
- package/dist/calendar/hours/nextOpenAt.js +53 -0
- package/dist/calendar/hours/operatingIntervals.d.ts +48 -0
- package/dist/calendar/hours/operatingIntervals.js +57 -0
- package/dist/calendar/hours/operatingTimeBetween.d.ts +45 -0
- package/dist/calendar/hours/operatingTimeBetween.js +54 -0
- package/dist/calendar/hours/recurringWindows.d.ts +68 -0
- package/dist/calendar/hours/recurringWindows.js +88 -0
- package/dist/calendar/index.d.ts +1 -0
- package/dist/calendar/index.js +1 -0
- package/dist/duration/calculate/durationFromUnits.d.ts +47 -0
- package/dist/duration/calculate/durationFromUnits.js +67 -0
- package/dist/duration/calculate/getDurationUnit.d.ts +2 -2
- package/dist/duration/calculate/getDurationUnit.js +2 -2
- package/dist/duration/calculate/index.d.ts +3 -1
- package/dist/duration/calculate/index.js +3 -1
- package/dist/duration/calculate/negateDuration.d.ts +1 -1
- package/dist/duration/calculate/negateDuration.js +1 -1
- package/dist/duration/calculate/totalDuration.d.ts +73 -0
- package/dist/duration/calculate/{durationAs.js → totalDuration.js} +29 -27
- package/dist/duration/calculate/totalUnits.d.ts +49 -0
- package/dist/duration/calculate/totalUnits.js +73 -0
- package/dist/duration/compare/compareDurations.d.ts +13 -7
- package/dist/duration/compare/compareDurations.js +4 -7
- package/dist/duration/format/formatDuration.d.ts +16 -4
- package/dist/duration/format/formatDuration.js +4 -5
- package/dist/duration/normalize/normalizeDuration.d.ts +39 -14
- package/dist/duration/normalize/normalizeDuration.js +6 -15
- package/dist/duration/parse/parseDuration.d.ts +21 -3
- package/dist/duration/parse/parseDuration.js +1 -3
- package/dist/duty/calculate/dutyDayFor.d.ts +38 -0
- package/dist/duty/calculate/dutyDayFor.js +71 -0
- package/dist/duty/calculate/dutyTotals.d.ts +24 -0
- package/dist/duty/calculate/dutyTotals.js +41 -0
- package/dist/duty/calculate/dutyViolations.d.ts +74 -0
- package/dist/duty/calculate/dutyViolations.js +65 -0
- package/dist/duty/calculate/evaluateDutyLog.d.ts +77 -0
- package/dist/duty/calculate/evaluateDutyLog.js +75 -0
- package/dist/duty/calculate/index.d.ts +7 -0
- package/dist/duty/calculate/index.js +7 -0
- package/dist/duty/calculate/longestRun.d.ts +28 -0
- package/dist/duty/calculate/longestRun.js +54 -0
- package/dist/duty/calculate/qualifyingRestPairs.d.ts +37 -0
- package/dist/duty/calculate/qualifyingRestPairs.js +58 -0
- package/dist/duty/calculate/qualifyingRests.d.ts +27 -0
- package/dist/duty/calculate/qualifyingRests.js +49 -0
- package/dist/duty/index.d.ts +3 -0
- package/dist/duty/index.js +4 -0
- package/dist/duty/validate/index.d.ts +1 -0
- package/dist/duty/validate/index.js +1 -0
- package/dist/duty/validate/isValidDutyLog.d.ts +24 -0
- package/dist/duty/validate/isValidDutyLog.js +34 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/instant/convert/classifyLocal.d.ts +5 -1
- package/dist/instant/convert/classifyLocal.js +16 -6
- package/dist/instant/convert/fromOffsetInstant.d.ts +7 -1
- package/dist/instant/convert/fromOffsetInstant.js +9 -2
- package/dist/instant/convert/resolveLocal.d.ts +18 -8
- package/dist/instant/convert/resolveLocal.js +21 -17
- package/dist/instant/convert/toOffsetInstant.d.ts +33 -16
- package/dist/instant/convert/toOffsetInstant.js +28 -13
- package/dist/instant/index.d.ts +1 -0
- package/dist/instant/index.js +1 -0
- package/dist/instant/validate/index.d.ts +1 -0
- package/dist/instant/validate/index.js +1 -0
- package/dist/instant/validate/isValidUtcOffset.d.ts +32 -0
- package/dist/instant/validate/isValidUtcOffset.js +35 -0
- package/dist/intermodal/calculate/billingTimeline.d.ts +31 -11
- package/dist/intermodal/calculate/billingTimeline.js +2 -2
- package/dist/intermodal/calculate/chargeableDays.d.ts +19 -11
- package/dist/intermodal/calculate/chargeableDays.js +13 -10
- package/dist/intermodal/calculate/demurrageClock.d.ts +16 -7
- package/dist/intermodal/calculate/demurrageClock.js +7 -7
- package/dist/intermodal/calculate/freeTimeExpiry.d.ts +12 -4
- package/dist/intermodal/calculate/freeTimeExpiry.js +19 -8
- package/dist/intermodal/calculate/index.d.ts +1 -0
- package/dist/intermodal/calculate/index.js +1 -0
- package/dist/intermodal/calculate/multimodalETA.d.ts +76 -0
- package/dist/intermodal/calculate/multimodalETA.js +145 -0
- package/dist/intermodal/format/bolTimestamp.d.ts +76 -0
- package/dist/intermodal/format/bolTimestamp.js +78 -0
- package/dist/intermodal/format/formatEdifactDate.d.ts +34 -0
- package/dist/intermodal/format/formatEdifactDate.js +42 -0
- package/dist/intermodal/format/formatEdifactDatePeriod.d.ts +35 -0
- package/dist/intermodal/format/formatEdifactDatePeriod.js +43 -0
- package/dist/intermodal/format/formatEdifactDateTime.d.ts +37 -0
- package/dist/intermodal/format/formatEdifactDateTime.js +45 -0
- package/dist/intermodal/format/formatEdifactDateTimePeriod.d.ts +40 -0
- package/dist/intermodal/format/formatEdifactDateTimePeriod.js +48 -0
- package/dist/intermodal/format/formatEdifactOffsetDateTime.d.ts +62 -0
- package/dist/intermodal/format/formatEdifactOffsetDateTime.js +70 -0
- package/dist/intermodal/format/formatEdifactTime.d.ts +35 -0
- package/dist/intermodal/format/formatEdifactTime.js +43 -0
- package/dist/intermodal/format/formatEpcisEvent.d.ts +47 -0
- package/dist/intermodal/format/formatEpcisEvent.js +79 -0
- package/dist/intermodal/format/formatX12Date.d.ts +35 -0
- package/dist/intermodal/format/formatX12Date.js +43 -0
- package/dist/intermodal/format/formatX12DateRange.d.ts +37 -0
- package/dist/intermodal/format/formatX12DateRange.js +45 -0
- package/dist/intermodal/format/formatX12DateTime.d.ts +39 -0
- package/dist/intermodal/format/formatX12DateTime.js +47 -0
- package/dist/intermodal/format/formatX12DateTimeRange.d.ts +40 -0
- package/dist/intermodal/format/formatX12DateTimeRange.js +48 -0
- package/dist/intermodal/format/formatX12Time.d.ts +42 -0
- package/dist/intermodal/format/formatX12Time.js +50 -0
- package/dist/intermodal/format/formatX12TimeElement.d.ts +46 -0
- package/dist/intermodal/format/formatX12TimeElement.js +54 -0
- package/dist/intermodal/format/index.d.ts +14 -0
- package/dist/intermodal/format/index.js +14 -0
- package/dist/intermodal/index.d.ts +3 -0
- package/dist/intermodal/index.js +3 -0
- package/dist/intermodal/parse/classifyEdifactDtmFormat.d.ts +48 -0
- package/dist/intermodal/parse/classifyEdifactDtmFormat.js +55 -0
- package/dist/intermodal/parse/classifyX12DateTimePeriodFormat.d.ts +50 -0
- package/dist/intermodal/parse/classifyX12DateTimePeriodFormat.js +57 -0
- package/dist/intermodal/parse/classifyX12TimeCode.d.ts +46 -0
- package/dist/intermodal/parse/classifyX12TimeCode.js +57 -0
- package/dist/intermodal/parse/index.d.ts +18 -0
- package/dist/intermodal/parse/index.js +18 -0
- package/dist/intermodal/parse/parseEdifactDate.d.ts +37 -0
- package/dist/intermodal/parse/parseEdifactDate.js +45 -0
- package/dist/intermodal/parse/parseEdifactDatePeriod.d.ts +43 -0
- package/dist/intermodal/parse/parseEdifactDatePeriod.js +51 -0
- package/dist/intermodal/parse/parseEdifactDateTime.d.ts +43 -0
- package/dist/intermodal/parse/parseEdifactDateTime.js +51 -0
- package/dist/intermodal/parse/parseEdifactDateTimePeriod.d.ts +45 -0
- package/dist/intermodal/parse/parseEdifactDateTimePeriod.js +53 -0
- package/dist/intermodal/parse/parseEdifactOffsetDateTime.d.ts +60 -0
- package/dist/intermodal/parse/parseEdifactOffsetDateTime.js +68 -0
- package/dist/intermodal/parse/parseEdifactTime.d.ts +37 -0
- package/dist/intermodal/parse/parseEdifactTime.js +45 -0
- package/dist/intermodal/parse/parseEpcisEvent.d.ts +95 -0
- package/dist/intermodal/parse/parseEpcisEvent.js +102 -0
- package/dist/intermodal/parse/parseX12Date.d.ts +39 -0
- package/dist/intermodal/parse/parseX12Date.js +47 -0
- package/dist/intermodal/parse/parseX12DateAndTime.d.ts +52 -0
- package/dist/intermodal/parse/parseX12DateAndTime.js +61 -0
- package/dist/intermodal/parse/parseX12DateRange.d.ts +44 -0
- package/dist/intermodal/parse/parseX12DateRange.js +52 -0
- package/dist/intermodal/parse/parseX12DateTime.d.ts +45 -0
- package/dist/intermodal/parse/parseX12DateTime.js +53 -0
- package/dist/intermodal/parse/parseX12DateTimeRange.d.ts +46 -0
- package/dist/intermodal/parse/parseX12DateTimeRange.js +54 -0
- package/dist/intermodal/parse/parseX12Time.d.ts +65 -0
- package/dist/intermodal/parse/parseX12Time.js +77 -0
- package/dist/intermodal/parse/x12TimeCodeOffset.d.ts +57 -0
- package/dist/intermodal/parse/x12TimeCodeOffset.js +110 -0
- package/dist/intermodal/parse/x12TimeCodeZone.d.ts +57 -0
- package/dist/intermodal/parse/x12TimeCodeZone.js +105 -0
- package/dist/intermodal/validate/index.d.ts +18 -0
- package/dist/intermodal/validate/index.js +18 -0
- package/dist/intermodal/validate/isValidEdifactDate.d.ts +26 -0
- package/dist/intermodal/validate/isValidEdifactDate.js +28 -0
- package/dist/intermodal/validate/isValidEdifactDatePeriod.d.ts +28 -0
- package/dist/intermodal/validate/isValidEdifactDatePeriod.js +30 -0
- package/dist/intermodal/validate/isValidEdifactDateTime.d.ts +30 -0
- package/dist/intermodal/validate/isValidEdifactDateTime.js +32 -0
- package/dist/intermodal/validate/isValidEdifactDateTimePeriod.d.ts +28 -0
- package/dist/intermodal/validate/isValidEdifactDateTimePeriod.js +30 -0
- package/dist/intermodal/validate/isValidEdifactDtmFormat.d.ts +39 -0
- package/dist/intermodal/validate/isValidEdifactDtmFormat.js +42 -0
- package/dist/intermodal/validate/isValidEdifactOffsetDateTime.d.ts +36 -0
- package/dist/intermodal/validate/isValidEdifactOffsetDateTime.js +38 -0
- package/dist/intermodal/validate/isValidEdifactTime.d.ts +28 -0
- package/dist/intermodal/validate/isValidEdifactTime.js +30 -0
- package/dist/intermodal/validate/isValidEpcisEvent.d.ts +41 -0
- package/dist/intermodal/validate/isValidEpcisEvent.js +58 -0
- package/dist/intermodal/validate/isValidEpcisEventTime.d.ts +33 -0
- package/dist/intermodal/validate/isValidEpcisEventTime.js +48 -0
- package/dist/intermodal/validate/isValidEpcisTimeZoneOffset.d.ts +30 -0
- package/dist/intermodal/validate/isValidEpcisTimeZoneOffset.js +38 -0
- package/dist/intermodal/validate/isValidX12Date.d.ts +28 -0
- package/dist/intermodal/validate/isValidX12Date.js +30 -0
- package/dist/intermodal/validate/isValidX12DateAndTime.d.ts +32 -0
- package/dist/intermodal/validate/isValidX12DateAndTime.js +35 -0
- package/dist/intermodal/validate/isValidX12DateRange.d.ts +29 -0
- package/dist/intermodal/validate/isValidX12DateRange.js +31 -0
- package/dist/intermodal/validate/isValidX12DateTime.d.ts +30 -0
- package/dist/intermodal/validate/isValidX12DateTime.js +32 -0
- package/dist/intermodal/validate/isValidX12DateTimePeriodFormat.d.ts +43 -0
- package/dist/intermodal/validate/isValidX12DateTimePeriodFormat.js +46 -0
- package/dist/intermodal/validate/isValidX12DateTimeRange.d.ts +31 -0
- package/dist/intermodal/validate/isValidX12DateTimeRange.js +33 -0
- package/dist/intermodal/validate/isValidX12Time.d.ts +38 -0
- package/dist/intermodal/validate/isValidX12Time.js +40 -0
- package/dist/intermodal/validate/isValidX12TimeCode.d.ts +38 -0
- package/dist/intermodal/validate/isValidX12TimeCode.js +41 -0
- package/dist/internal/businessCalendar.d.ts +5 -0
- package/dist/internal/businessCalendar.js +9 -10
- package/dist/internal/cycleFieldValue.d.ts +6 -4
- package/dist/internal/cycleFieldValue.js +6 -4
- package/dist/internal/daylightTime.d.ts +33 -0
- package/dist/internal/daylightTime.js +164 -0
- package/dist/internal/durationUntilString.js +4 -3
- package/dist/internal/dutyEngine.d.ts +125 -0
- package/dist/internal/dutyEngine.js +1746 -0
- package/dist/internal/dutyLog.d.ts +27 -0
- package/dist/internal/dutyLog.js +47 -0
- package/dist/internal/dutyPeriods.d.ts +135 -0
- package/dist/internal/dutyPeriods.js +369 -0
- package/dist/internal/dutyRules.d.ts +197 -0
- package/dist/internal/dutyRules.js +484 -0
- package/dist/internal/ediDateTimeFields.d.ts +97 -0
- package/dist/internal/ediDateTimeFields.js +288 -0
- package/dist/internal/ediDateTimeWriter.d.ts +92 -0
- package/dist/internal/ediDateTimeWriter.js +298 -0
- package/dist/internal/ediGrammar.d.ts +158 -0
- package/dist/internal/ediGrammar.js +384 -0
- package/dist/internal/englishCalendarNames.d.ts +3 -1
- package/dist/internal/englishCalendarNames.js +4 -3
- package/dist/internal/epochNanoseconds.d.ts +2 -0
- package/dist/internal/epochNanoseconds.js +2 -0
- package/dist/internal/exactDuration.d.ts +37 -0
- package/dist/internal/exactDuration.js +64 -0
- package/dist/internal/exactMoment.d.ts +72 -0
- package/dist/internal/exactMoment.js +114 -0
- package/dist/internal/fiscalCalendar.d.ts +4 -3
- package/dist/internal/fiscalCalendar.js +4 -3
- package/dist/internal/formatCalendarDays.d.ts +2 -2
- package/dist/internal/formatRelativeDuration.d.ts +21 -1
- package/dist/internal/formatRelativeDuration.js +47 -7
- package/dist/internal/freeTimeLedger.d.ts +5 -0
- package/dist/internal/freeTimeLedger.js +11 -2
- package/dist/internal/index.d.ts +12 -4
- package/dist/internal/index.js +16 -4
- package/dist/internal/instantFormatOptions.js +2 -1
- package/dist/internal/instantNanoseconds.d.ts +75 -9
- package/dist/internal/instantNanoseconds.js +192 -11
- package/dist/internal/intervalNanoseconds.js +2 -1
- package/dist/internal/isObject.d.ts +13 -6
- package/dist/internal/isObject.js +14 -7
- package/dist/internal/isoYearString.d.ts +21 -0
- package/dist/internal/isoYearString.js +27 -0
- package/dist/internal/joinDateTimeConnector.d.ts +1 -1
- package/dist/internal/maxPieces.js +2 -1
- package/dist/internal/monthGridWeekRow.d.ts +2 -1
- package/dist/internal/monthGridWeekRow.js +2 -1
- package/dist/internal/normalizeTimeZone.d.ts +5 -2
- package/dist/internal/normalizeTimeZone.js +5 -2
- package/dist/internal/operatingSchedule.d.ts +138 -0
- package/dist/internal/operatingSchedule.js +756 -0
- package/dist/internal/optionOrDefault.d.ts +18 -0
- package/dist/internal/optionOrDefault.js +20 -0
- package/dist/internal/patternToken.d.ts +12 -5
- package/dist/internal/patternToken.js +59 -25
- package/dist/internal/plainDateUntil.js +10 -6
- package/dist/internal/punctuality.d.ts +38 -0
- package/dist/internal/punctuality.js +59 -0
- package/dist/internal/readDateTimeFormatOptions.d.ts +30 -0
- package/dist/internal/readDateTimeFormatOptions.js +93 -0
- package/dist/internal/readDurationUnits.d.ts +34 -0
- package/dist/internal/readDurationUnits.js +78 -0
- package/dist/internal/readSetFields.d.ts +50 -0
- package/dist/internal/readSetFields.js +179 -0
- package/dist/internal/resolveDurationRelativeTo.d.ts +4 -0
- package/dist/internal/resolveDurationRelativeTo.js +11 -1
- package/dist/internal/resolveRelativeRounding.d.ts +17 -6
- package/dist/internal/resolveRelativeRounding.js +27 -7
- package/dist/internal/resolveRelativeUnit.d.ts +30 -0
- package/dist/internal/resolveRelativeUnit.js +40 -0
- package/dist/internal/resolveUnixIntervalPair.d.ts +8 -2
- package/dist/internal/resolveUnixIntervalPair.js +11 -7
- package/dist/internal/splitStep.d.ts +24 -1
- package/dist/internal/splitStep.js +34 -2
- package/dist/internal/startOrEndOfUnix.d.ts +2 -1
- package/dist/internal/startOrEndOfUnix.js +9 -6
- package/dist/internal/startOrEndOfZoned.js +2 -3
- package/dist/internal/temporalCompat/capabilities.d.ts +26 -0
- package/dist/internal/temporalCompat/capabilities.js +35 -3
- package/dist/internal/temporalCompat/fieldSearch.js +1 -1
- package/dist/internal/temporalCompat/index.d.ts +1 -1
- package/dist/internal/temporalCompat/index.js +1 -1
- package/dist/internal/temporalCompat/repros.d.ts +1 -1
- package/dist/internal/temporalCompat/repros.js +157 -0
- package/dist/internal/timestampEvents.d.ts +32 -0
- package/dist/internal/timestampEvents.js +76 -0
- package/dist/internal/twoDigitYear.d.ts +19 -0
- package/dist/internal/twoDigitYear.js +22 -0
- package/dist/internal/unixEpochValue.js +3 -2
- package/dist/internal/unixWallClock.d.ts +24 -0
- package/dist/internal/unixWallClock.js +35 -0
- package/dist/internal/utcWallClock.d.ts +20 -0
- package/dist/internal/utcWallClock.js +32 -0
- package/dist/internal/yearWindowStart.d.ts +28 -0
- package/dist/internal/yearWindowStart.js +52 -0
- package/dist/internal/zoneBucketCap.d.ts +18 -0
- package/dist/internal/zoneBucketCap.js +64 -0
- package/dist/internal/zoneFrame.d.ts +180 -0
- package/dist/internal/zoneFrame.js +221 -0
- package/dist/internal/zonedBucket.js +8 -6
- package/dist/internal/zonedLocalDates.js +1 -1
- package/dist/internal/zonedNowUnitValue.d.ts +7 -4
- package/dist/internal/zonedNowUnitValue.js +8 -4
- package/dist/internal/zonedTransitionSearch.d.ts +27 -0
- package/dist/internal/zonedTransitionSearch.js +218 -0
- package/dist/internal/zonedWallClock.d.ts +21 -7
- package/dist/internal/zonedWallClock.js +87 -18
- package/dist/internal/zonedWallClockDifference.js +4 -4
- package/dist/internal/zonedWallClockOperations.d.ts +31 -15
- package/dist/internal/zonedWallClockOperations.js +93 -43
- package/dist/interval/validate/isValidInterval.d.ts +6 -3
- package/dist/interval/validate/isValidInterval.js +6 -3
- package/dist/plain/calculate/addDate.d.ts +11 -8
- package/dist/plain/calculate/addDate.js +9 -15
- package/dist/plain/calculate/addDateTime.d.ts +7 -4
- package/dist/plain/calculate/addDateTime.js +5 -11
- package/dist/plain/calculate/addTime.js +4 -7
- package/dist/plain/calculate/cycleDate.d.ts +16 -7
- package/dist/plain/calculate/cycleDate.js +3 -7
- package/dist/plain/calculate/cycleDateTime.d.ts +14 -4
- package/dist/plain/calculate/cycleDateTime.js +1 -4
- package/dist/plain/calculate/cycleTime.d.ts +10 -5
- package/dist/plain/calculate/cycleTime.js +3 -5
- package/dist/plain/calculate/diffDate.d.ts +1 -1
- package/dist/plain/calculate/diffDate.js +1 -1
- package/dist/plain/calculate/diffDateAsDuration.d.ts +1 -1
- package/dist/plain/calculate/diffDateAsDuration.js +1 -1
- package/dist/plain/calculate/diffDateTime.d.ts +1 -1
- package/dist/plain/calculate/diffDateTime.js +1 -1
- package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +1 -1
- package/dist/plain/calculate/diffDateTimeAsDuration.js +1 -1
- package/dist/plain/calculate/diffTime.d.ts +1 -1
- package/dist/plain/calculate/diffTime.js +1 -1
- package/dist/plain/calculate/endOfDate.d.ts +8 -3
- package/dist/plain/calculate/endOfDate.js +1 -3
- package/dist/plain/calculate/endOfDateTime.d.ts +15 -5
- package/dist/plain/calculate/endOfDateTime.js +1 -5
- package/dist/plain/calculate/endOfTime.d.ts +9 -3
- package/dist/plain/calculate/endOfTime.js +1 -2
- package/dist/plain/calculate/getLocaleWeekYear.d.ts +16 -9
- package/dist/plain/calculate/getLocaleWeekYear.js +9 -9
- package/dist/plain/calculate/getWeekOfMonth.d.ts +7 -4
- package/dist/plain/calculate/getWeekOfMonth.js +7 -4
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +13 -6
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +6 -6
- package/dist/plain/calculate/getWeeksInMonth.d.ts +5 -2
- package/dist/plain/calculate/getWeeksInMonth.js +5 -2
- package/dist/plain/calculate/nextWeekday.d.ts +7 -3
- package/dist/plain/calculate/nextWeekday.js +1 -3
- package/dist/plain/calculate/previousWeekday.d.ts +7 -3
- package/dist/plain/calculate/previousWeekday.js +1 -3
- package/dist/plain/calculate/roundDate.d.ts +20 -7
- package/dist/plain/calculate/roundDate.js +3 -10
- package/dist/plain/calculate/roundDateTime.d.ts +22 -8
- package/dist/plain/calculate/roundDateTime.js +3 -11
- package/dist/plain/calculate/roundTime.d.ts +20 -4
- package/dist/plain/calculate/roundTime.js +3 -7
- package/dist/plain/calculate/setDate.d.ts +27 -8
- package/dist/plain/calculate/setDate.js +28 -12
- package/dist/plain/calculate/setDateTime.d.ts +23 -8
- package/dist/plain/calculate/setDateTime.js +23 -12
- package/dist/plain/calculate/setTime.d.ts +23 -7
- package/dist/plain/calculate/setTime.js +25 -12
- package/dist/plain/calculate/startOfDate.d.ts +8 -2
- package/dist/plain/calculate/startOfDate.js +1 -2
- package/dist/plain/calculate/startOfDateTime.d.ts +15 -2
- package/dist/plain/calculate/startOfDateTime.js +1 -2
- package/dist/plain/calculate/startOfTime.d.ts +9 -2
- package/dist/plain/calculate/startOfTime.js +1 -1
- package/dist/plain/calculate/subtractDate.d.ts +7 -4
- package/dist/plain/calculate/subtractDate.js +5 -11
- package/dist/plain/calculate/subtractDateTime.d.ts +7 -4
- package/dist/plain/calculate/subtractDateTime.js +5 -11
- package/dist/plain/calculate/subtractTime.js +4 -7
- package/dist/plain/compare/areDateTimesEqualBy.d.ts +13 -5
- package/dist/plain/compare/areDateTimesEqualBy.js +6 -5
- package/dist/plain/compare/areDatesEqualBy.d.ts +15 -6
- package/dist/plain/compare/areDatesEqualBy.js +8 -6
- package/dist/plain/compare/isBetweenDate.d.ts +13 -2
- package/dist/plain/compare/isBetweenDate.js +4 -4
- package/dist/plain/compare/isBetweenDateTime.d.ts +13 -2
- package/dist/plain/compare/isBetweenDateTime.js +4 -4
- package/dist/plain/compare/isBetweenTime.d.ts +13 -2
- package/dist/plain/compare/isBetweenTime.js +4 -4
- package/dist/plain/compare/isRelativeDay.d.ts +1 -1
- package/dist/plain/compare/isRelativeDay.js +1 -1
- package/dist/plain/compare/isThisUnit.d.ts +1 -1
- package/dist/plain/compare/isThisUnit.js +1 -1
- package/dist/plain/format/formatCalendar.d.ts +21 -14
- package/dist/plain/format/formatCalendar.js +23 -17
- package/dist/plain/format/formatDate.js +5 -3
- package/dist/plain/format/formatDateRange.js +4 -2
- package/dist/plain/format/formatDateTime.js +4 -2
- package/dist/plain/format/formatDateTimeRange.js +4 -2
- package/dist/plain/format/formatDateTimeToParts.d.ts +15 -4
- package/dist/plain/format/formatDateTimeToParts.js +10 -6
- package/dist/plain/format/formatDateToParts.d.ts +13 -2
- package/dist/plain/format/formatDateToParts.js +8 -4
- package/dist/plain/format/formatRelativeDate.d.ts +16 -3
- package/dist/plain/format/formatRelativeDate.js +28 -16
- package/dist/plain/format/formatRelativeDateTime.d.ts +16 -3
- package/dist/plain/format/formatRelativeDateTime.js +10 -6
- package/dist/plain/format/formatRelativeTime.d.ts +16 -3
- package/dist/plain/format/formatRelativeTime.js +23 -14
- package/dist/plain/format/{formatSql.d.ts → formatSqlDateTime.d.ts} +7 -7
- package/dist/plain/format/{formatSql.js → formatSqlDateTime.js} +7 -7
- package/dist/plain/format/formatTime.js +4 -2
- package/dist/plain/format/index.d.ts +1 -1
- package/dist/plain/format/index.js +1 -1
- package/dist/plain/get/getNowUnit.d.ts +2 -0
- package/dist/plain/get/getNowUnit.js +2 -0
- package/dist/plain/get/getYear.d.ts +2 -0
- package/dist/plain/get/getYear.js +4 -3
- package/dist/plain/interval/intervalDifferenceDate.d.ts +9 -0
- package/dist/plain/interval/intervalDifferenceDateTime.d.ts +9 -0
- package/dist/plain/interval/intervalDifferenceTime.d.ts +9 -0
- package/dist/plain/interval/intervalDivideEquallyDate.d.ts +19 -4
- package/dist/plain/interval/intervalDivideEquallyDate.js +3 -4
- package/dist/plain/interval/intervalDivideEquallyDateTime.d.ts +19 -4
- package/dist/plain/interval/intervalDivideEquallyDateTime.js +3 -4
- package/dist/plain/interval/intervalDivideEquallyTime.d.ts +19 -4
- package/dist/plain/interval/intervalDivideEquallyTime.js +3 -4
- package/dist/plain/interval/intervalFromDurationDate.d.ts +16 -3
- package/dist/plain/interval/intervalFromDurationDate.js +1 -3
- package/dist/plain/interval/intervalFromDurationDateTime.d.ts +16 -3
- package/dist/plain/interval/intervalFromDurationDateTime.js +1 -3
- package/dist/plain/interval/intervalFromDurationTime.d.ts +9 -0
- package/dist/plain/interval/intervalIntersectionDate.d.ts +9 -0
- package/dist/plain/interval/intervalIntersectionDateTime.d.ts +9 -0
- package/dist/plain/interval/intervalIntersectionTime.d.ts +9 -0
- package/dist/plain/interval/intervalSplitAtDate.d.ts +11 -0
- package/dist/plain/interval/intervalSplitAtDate.js +2 -0
- package/dist/plain/interval/intervalSplitAtDateTime.d.ts +11 -0
- package/dist/plain/interval/intervalSplitAtDateTime.js +2 -0
- package/dist/plain/interval/intervalSplitAtTime.d.ts +11 -0
- package/dist/plain/interval/intervalSplitAtTime.js +2 -0
- package/dist/plain/interval/intervalUnionDate.d.ts +9 -0
- package/dist/plain/interval/intervalUnionDateTime.d.ts +9 -0
- package/dist/plain/interval/intervalUnionTime.d.ts +9 -0
- package/dist/plain/interval/intervalXorAllDate.d.ts +9 -0
- package/dist/plain/interval/intervalXorAllDate.js +2 -2
- package/dist/plain/interval/intervalXorAllDateTime.d.ts +9 -0
- package/dist/plain/interval/intervalXorAllDateTime.js +2 -2
- package/dist/plain/interval/intervalXorAllTime.d.ts +9 -0
- package/dist/plain/interval/intervalXorAllTime.js +2 -2
- package/dist/plain/interval/intervalXorDate.d.ts +9 -0
- package/dist/plain/interval/intervalXorDateTime.d.ts +9 -0
- package/dist/plain/interval/intervalXorTime.d.ts +9 -0
- package/dist/plain/interval/mergeIntervalsDate.d.ts +9 -0
- package/dist/plain/interval/mergeIntervalsDate.js +2 -2
- package/dist/plain/interval/mergeIntervalsDateTime.d.ts +9 -0
- package/dist/plain/interval/mergeIntervalsDateTime.js +2 -2
- package/dist/plain/interval/mergeIntervalsTime.d.ts +9 -0
- package/dist/plain/interval/mergeIntervalsTime.js +2 -2
- package/dist/plain/interval/splitIntervalByUnitDate.d.ts +23 -7
- package/dist/plain/interval/splitIntervalByUnitDate.js +7 -7
- package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +22 -6
- package/dist/plain/interval/splitIntervalByUnitDateTime.js +6 -6
- package/dist/plain/interval/splitIntervalByUnitTime.d.ts +17 -4
- package/dist/plain/interval/splitIntervalByUnitTime.js +1 -4
- package/dist/plain/map/mapDatesInRange.d.ts +8 -4
- package/dist/plain/map/mapDatesInRange.js +1 -4
- package/dist/plain/parse/index.d.ts +1 -1
- package/dist/plain/parse/index.js +1 -1
- package/dist/plain/parse/parseDateTimeWithPattern.d.ts +25 -9
- package/dist/plain/parse/parseDateTimeWithPattern.js +29 -11
- package/dist/plain/parse/parseDateWithPattern.d.ts +26 -9
- package/dist/plain/parse/parseDateWithPattern.js +30 -11
- package/dist/plain/parse/{parseSql.d.ts → parseSqlDateTime.d.ts} +8 -8
- package/dist/plain/parse/{parseSql.js → parseSqlDateTime.js} +8 -8
- package/dist/plain/parse/parseTimeWithPattern.d.ts +10 -7
- package/dist/plain/parse/parseTimeWithPattern.js +11 -7
- package/dist/plain/parse/parseUnitFromDate.d.ts +14 -3
- package/dist/plain/parse/parseUnitFromDate.js +8 -4
- package/dist/plain/parse/parseUnitFromDateTime.d.ts +14 -3
- package/dist/plain/parse/parseUnitFromDateTime.js +8 -4
- package/dist/plain/parse/parseWeekFromDate.d.ts +10 -6
- package/dist/plain/parse/parseWeekFromDate.js +2 -6
- package/dist/plain/parse/parseWeekFromDateTime.d.ts +10 -6
- package/dist/plain/parse/parseWeekFromDateTime.js +2 -6
- package/dist/plain/parse/parseYearFromDate.d.ts +5 -2
- package/dist/plain/parse/parseYearFromDate.js +7 -3
- package/dist/plain/parse/parseYearFromDateTime.d.ts +4 -2
- package/dist/plain/parse/parseYearFromDateTime.js +6 -3
- package/dist/plain/validate/index.d.ts +1 -0
- package/dist/plain/validate/index.js +1 -0
- package/dist/plain/validate/isValidDateRange.d.ts +19 -4
- package/dist/plain/validate/isValidDateRange.js +1 -4
- package/dist/plain/validate/isValidDateTimeRange.d.ts +20 -5
- package/dist/plain/validate/isValidDateTimeRange.js +2 -5
- package/dist/plain/validate/isValidSqlDateTime.d.ts +33 -0
- package/dist/plain/validate/isValidSqlDateTime.js +36 -0
- package/dist/plain/validate/isValidTimeRange.d.ts +20 -5
- package/dist/plain/validate/isValidTimeRange.js +2 -5
- package/dist/precision/convert/fromExcelSerial.d.ts +10 -4
- package/dist/precision/convert/fromExcelSerial.js +4 -5
- package/dist/precision/convert/fromNanoseconds.d.ts +9 -3
- package/dist/precision/convert/fromNanoseconds.js +9 -3
- package/dist/precision/convert/toExcelSerial.d.ts +9 -3
- package/dist/precision/convert/toExcelSerial.js +3 -4
- package/dist/precision/convert/toNanoseconds.d.ts +11 -6
- package/dist/precision/convert/toNanoseconds.js +11 -6
- package/dist/precision/validate/isValidInstant.d.ts +12 -3
- package/dist/precision/validate/isValidInstant.js +12 -3
- package/dist/regex/epcis.d.ts +60 -0
- package/dist/regex/epcis.js +60 -0
- package/dist/regex/http-date.d.ts +6 -4
- package/dist/regex/http-date.js +6 -4
- package/dist/regex/index.d.ts +1 -0
- package/dist/regex/index.js +1 -0
- package/dist/regex/rfc-2822.d.ts +2 -0
- package/dist/regex/rfc-2822.js +2 -0
- package/dist/regex/rfc-3339.d.ts +3 -1
- package/dist/regex/rfc-3339.js +3 -1
- package/dist/regex/sql-date-time.d.ts +2 -1
- package/dist/regex/sql-date-time.js +2 -1
- package/dist/regex/time-zone-like.d.ts +3 -2
- package/dist/regex/time-zone-like.js +3 -2
- package/dist/regex/utc-offset.d.ts +2 -1
- package/dist/regex/utc-offset.js +2 -1
- package/dist/span/calculate/spanMs.d.ts +10 -4
- package/dist/span/calculate/spanMs.js +10 -4
- package/dist/span/calculate/spanNs.d.ts +10 -4
- package/dist/span/calculate/spanNs.js +10 -4
- package/dist/span/validate/isValidSpan.d.ts +8 -3
- package/dist/span/validate/isValidSpan.js +8 -3
- package/dist/transport/calculate/bestAvailable.d.ts +47 -0
- package/dist/transport/calculate/bestAvailable.js +76 -0
- package/dist/transport/calculate/crossingTime.d.ts +63 -0
- package/dist/transport/calculate/crossingTime.js +81 -0
- package/dist/transport/calculate/cutoffAt.d.ts +95 -0
- package/dist/transport/calculate/cutoffAt.js +211 -0
- package/dist/transport/calculate/cutoffSchedule.d.ts +75 -0
- package/dist/transport/calculate/cutoffSchedule.js +73 -0
- package/dist/transport/calculate/dwellTime.d.ts +22 -8
- package/dist/transport/calculate/dwellTime.js +18 -9
- package/dist/transport/calculate/estimateDrift.d.ts +65 -0
- package/dist/transport/calculate/estimateDrift.js +75 -0
- package/dist/transport/calculate/index.d.ts +8 -0
- package/dist/transport/calculate/index.js +8 -0
- package/dist/transport/calculate/nextDeparture.d.ts +78 -0
- package/dist/transport/calculate/nextDeparture.js +131 -0
- package/dist/transport/calculate/punctualityRate.d.ts +42 -0
- package/dist/transport/calculate/punctualityRate.js +59 -0
- package/dist/transport/calculate/scheduleDelivery.d.ts +158 -0
- package/dist/transport/calculate/scheduleDelivery.js +305 -0
- package/dist/transport/calculate/transitTime.d.ts +21 -3
- package/dist/transport/calculate/transitTime.js +29 -46
- package/dist/transport/compare/classifyPunctuality.d.ts +46 -0
- package/dist/transport/compare/classifyPunctuality.js +64 -0
- package/dist/transport/compare/index.d.ts +4 -0
- package/dist/transport/compare/index.js +4 -0
- package/dist/transport/compare/isPastCutoff.d.ts +33 -0
- package/dist/transport/compare/isPastCutoff.js +48 -0
- package/dist/transport/compare/scheduleDeviation.d.ts +37 -0
- package/dist/transport/compare/scheduleDeviation.js +53 -0
- package/dist/transport/compare/timeToCutoff.d.ts +31 -0
- package/dist/transport/compare/timeToCutoff.js +47 -0
- package/dist/transport/convert/etaAtZone.d.ts +13 -1
- package/dist/transport/convert/etaAtZone.js +15 -5
- package/dist/transport/index.d.ts +1 -0
- package/dist/transport/index.js +1 -0
- package/dist/types/business-calendar.d.ts +20 -14
- package/dist/types/calendar-options.d.ts +15 -3
- package/dist/types/date-cycle-field.d.ts +5 -0
- package/dist/types/date-duration-unit.d.ts +4 -0
- package/dist/types/date-time-cycle-field.d.ts +4 -0
- package/dist/types/date-time-duration-units.d.ts +4 -0
- package/dist/types/date-time-unit.d.ts +4 -0
- package/dist/types/date-unit.d.ts +4 -0
- package/dist/types/disambiguation.d.ts +8 -0
- package/dist/types/duration-relative-to.d.ts +8 -0
- package/dist/types/duration-string-options.d.ts +28 -0
- package/dist/types/duty.d.ts +777 -0
- package/dist/types/edi.d.ts +407 -0
- package/dist/types/edi.js +0 -0
- package/dist/types/epcis.d.ts +25 -0
- package/dist/types/epcis.js +0 -0
- package/dist/types/exact-duration-unit.d.ts +8 -0
- package/dist/types/exact-duration-unit.js +0 -0
- package/dist/types/fiscal-calendar.d.ts +1 -1
- package/dist/types/fractional-digit.d.ts +5 -0
- package/dist/types/free-time-options.d.ts +22 -11
- package/dist/types/index.d.ts +7 -1
- package/dist/types/index.js +7 -1
- package/dist/types/interval.d.ts +8 -1
- package/dist/types/offset.d.ts +9 -0
- package/dist/types/operating-schedule.d.ts +72 -0
- package/dist/types/operating-schedule.js +0 -0
- package/dist/types/overflow.d.ts +6 -0
- package/dist/types/relative-rounding-method.d.ts +6 -0
- package/dist/types/relative-time-options.d.ts +33 -5
- package/dist/types/rounding-options.d.ts +27 -0
- package/dist/types/time-cycle-field.d.ts +4 -0
- package/dist/types/time-duration-unit.d.ts +4 -0
- package/dist/types/time-unit.d.ts +4 -0
- package/dist/types/transport-timestamps.d.ts +54 -0
- package/dist/types/transport-timestamps.js +0 -0
- package/dist/types/two-digit-year.d.ts +23 -0
- package/dist/types/two-digit-year.js +0 -0
- package/dist/types/zone-bucket-unit.d.ts +1 -1
- package/dist/unix/calculate/addUnix.d.ts +28 -5
- package/dist/unix/calculate/addUnix.js +15 -16
- package/dist/unix/calculate/diffUnix.d.ts +21 -3
- package/dist/unix/calculate/diffUnix.js +12 -9
- package/dist/unix/calculate/diffUnixAsDuration.d.ts +21 -3
- package/dist/unix/calculate/diffUnixAsDuration.js +11 -8
- package/dist/unix/calculate/endOfQuarterForUnix.d.ts +21 -3
- package/dist/unix/calculate/endOfQuarterForUnix.js +7 -3
- package/dist/unix/calculate/endOfUnix.d.ts +29 -4
- package/dist/unix/calculate/endOfUnix.js +8 -4
- package/dist/unix/calculate/isBetweenUnix.d.ts +27 -4
- package/dist/unix/calculate/isBetweenUnix.js +7 -9
- package/dist/unix/calculate/roundUnix.d.ts +39 -3
- package/dist/unix/calculate/roundUnix.js +16 -12
- package/dist/unix/calculate/setUnix.d.ts +58 -12
- package/dist/unix/calculate/setUnix.js +37 -25
- package/dist/unix/calculate/startOfQuarterForUnix.d.ts +21 -3
- package/dist/unix/calculate/startOfQuarterForUnix.js +7 -3
- package/dist/unix/calculate/startOfUnix.d.ts +29 -4
- package/dist/unix/calculate/startOfUnix.js +8 -4
- package/dist/unix/calculate/subtractUnix.d.ts +27 -5
- package/dist/unix/calculate/subtractUnix.js +14 -16
- package/dist/unix/compare/areUnixEqual.d.ts +7 -1
- package/dist/unix/compare/areUnixEqual.js +1 -1
- package/dist/unix/compare/areUnixEqualBy.d.ts +33 -7
- package/dist/unix/compare/areUnixEqualBy.js +20 -9
- package/dist/unix/compare/isAfterUnix.d.ts +7 -1
- package/dist/unix/compare/isAfterUnix.js +1 -1
- package/dist/unix/compare/isBeforeUnix.d.ts +7 -1
- package/dist/unix/compare/isBeforeUnix.js +1 -1
- package/dist/unix/convert/convertUnixToPlainDate.d.ts +17 -4
- package/dist/unix/convert/convertUnixToPlainDate.js +7 -8
- package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +17 -4
- package/dist/unix/convert/convertUnixToPlainDateTime.js +7 -8
- package/dist/unix/convert/convertUnixToPlainTime.d.ts +17 -4
- package/dist/unix/convert/convertUnixToPlainTime.js +7 -8
- package/dist/unix/convert/convertUnixToUtc.d.ts +9 -4
- package/dist/unix/convert/convertUnixToUtc.js +3 -4
- package/dist/unix/convert/convertUnixToZoned.d.ts +14 -5
- package/dist/unix/convert/convertUnixToZoned.js +8 -5
- package/dist/unix/format/formatCalendarUnix.d.ts +31 -19
- package/dist/unix/format/formatCalendarUnix.js +10 -6
- package/dist/unix/format/formatRelativeUnix.d.ts +62 -5
- package/dist/unix/format/formatRelativeUnix.js +16 -10
- package/dist/unix/format/formatUnix.d.ts +29 -6
- package/dist/unix/format/formatUnix.js +12 -7
- package/dist/unix/get/getUnixDay.d.ts +1 -3
- package/dist/unix/get/getUnixDay.js +5 -12
- package/dist/unix/get/getUnixHour.d.ts +1 -3
- package/dist/unix/get/getUnixHour.js +5 -12
- package/dist/unix/get/getUnixMicrosecond.d.ts +1 -3
- package/dist/unix/get/getUnixMicrosecond.js +4 -11
- package/dist/unix/get/getUnixMillisecond.d.ts +1 -3
- package/dist/unix/get/getUnixMillisecond.js +5 -12
- package/dist/unix/get/getUnixMinute.d.ts +1 -3
- package/dist/unix/get/getUnixMinute.js +5 -12
- package/dist/unix/get/getUnixMonth.d.ts +1 -3
- package/dist/unix/get/getUnixMonth.js +5 -12
- package/dist/unix/get/getUnixNanosecond.d.ts +1 -3
- package/dist/unix/get/getUnixNanosecond.js +4 -11
- package/dist/unix/get/getUnixNow.d.ts +8 -3
- package/dist/unix/get/getUnixNow.js +1 -3
- package/dist/unix/get/getUnixNowUnit.d.ts +2 -0
- package/dist/unix/get/getUnixNowUnit.js +2 -0
- package/dist/unix/get/getUnixSecond.d.ts +1 -3
- package/dist/unix/get/getUnixSecond.js +5 -12
- package/dist/unix/get/getUnixYear.d.ts +3 -3
- package/dist/unix/get/getUnixYear.js +5 -12
- package/dist/unix/interval/intervalCountUnix.d.ts +23 -5
- package/dist/unix/interval/intervalCountUnix.js +9 -5
- package/dist/unix/interval/intervalDifferenceUnix.d.ts +6 -0
- package/dist/unix/interval/intervalDivideEquallyUnix.d.ts +18 -4
- package/dist/unix/interval/intervalDivideEquallyUnix.js +5 -4
- package/dist/unix/interval/intervalFromDurationUnix.d.ts +41 -5
- package/dist/unix/interval/intervalFromDurationUnix.js +18 -12
- package/dist/unix/interval/intervalIntersectionUnix.d.ts +6 -0
- package/dist/unix/interval/intervalLengthUnix.d.ts +24 -6
- package/dist/unix/interval/intervalLengthUnix.js +10 -6
- package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +21 -3
- package/dist/unix/interval/intervalOverlappingDaysUnix.js +11 -8
- package/dist/unix/interval/intervalSplitAtUnix.d.ts +8 -0
- package/dist/unix/interval/intervalSplitAtUnix.js +2 -0
- package/dist/unix/interval/intervalUnionUnix.d.ts +6 -0
- package/dist/unix/interval/intervalXorAllUnix.d.ts +6 -0
- package/dist/unix/interval/intervalXorUnix.d.ts +6 -0
- package/dist/unix/interval/mergeIntervalsUnix.d.ts +6 -0
- package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +50 -11
- package/dist/unix/interval/splitIntervalByUnitUnix.js +33 -22
- package/dist/unix/parse/parseDateFromUnix.d.ts +15 -2
- package/dist/unix/parse/parseDateFromUnix.js +4 -5
- package/dist/unix/parse/parseDayFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseDayFromUnix.js +2 -2
- package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +15 -1
- package/dist/unix/parse/parseDayOfWeekFromUnix.js +3 -3
- package/dist/unix/parse/parseHourFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseHourFromUnix.js +2 -2
- package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseMicrosecondFromUnix.js +2 -2
- package/dist/unix/parse/parseMillisecondFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseMillisecondFromUnix.js +2 -2
- package/dist/unix/parse/parseMinuteFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseMinuteFromUnix.js +2 -2
- package/dist/unix/parse/parseMonthFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseMonthFromUnix.js +2 -2
- package/dist/unix/parse/parseNanosecondFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseNanosecondFromUnix.js +2 -2
- package/dist/unix/parse/parseSecondFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseSecondFromUnix.js +2 -2
- package/dist/unix/parse/parseTimeFromUnix.d.ts +16 -2
- package/dist/unix/parse/parseTimeFromUnix.js +5 -5
- package/dist/unix/parse/parseUnitFromUnix.d.ts +29 -4
- package/dist/unix/parse/parseUnitFromUnix.js +23 -17
- package/dist/unix/parse/parseWeekFromUnix.d.ts +24 -7
- package/dist/unix/parse/parseWeekFromUnix.js +7 -11
- package/dist/unix/parse/parseYearFromUnix.d.ts +20 -3
- package/dist/unix/parse/parseYearFromUnix.js +6 -3
- package/dist/unix/validate/isValidUnixRange.d.ts +20 -4
- package/dist/unix/validate/isValidUnixRange.js +1 -4
- package/dist/unix/validate/isValidUnixUnit.d.ts +1 -1
- package/dist/utc/calculate/addUtc.d.ts +7 -4
- package/dist/utc/calculate/addUtc.js +5 -11
- package/dist/utc/calculate/diffUtc.d.ts +1 -1
- package/dist/utc/calculate/diffUtc.js +1 -1
- package/dist/utc/calculate/diffUtcAsDuration.d.ts +1 -1
- package/dist/utc/calculate/diffUtcAsDuration.js +1 -1
- package/dist/utc/calculate/endOfUtc.d.ts +16 -3
- package/dist/utc/calculate/endOfUtc.js +2 -3
- package/dist/utc/calculate/isBetweenUtc.d.ts +13 -2
- package/dist/utc/calculate/isBetweenUtc.js +4 -4
- package/dist/utc/calculate/roundUtc.d.ts +26 -9
- package/dist/utc/calculate/roundUtc.js +3 -12
- package/dist/utc/calculate/setUtc.d.ts +23 -7
- package/dist/utc/calculate/setUtc.js +23 -12
- package/dist/utc/calculate/startOfUtc.d.ts +15 -2
- package/dist/utc/calculate/startOfUtc.js +1 -2
- package/dist/utc/calculate/subtractUtc.d.ts +7 -4
- package/dist/utc/calculate/subtractUtc.js +5 -11
- package/dist/utc/compare/areUtcEqualBy.d.ts +9 -3
- package/dist/utc/compare/areUtcEqualBy.js +2 -3
- package/dist/utc/convert/convertUtcToPlainDate.d.ts +14 -3
- package/dist/utc/convert/convertUtcToPlainDate.js +12 -10
- package/dist/utc/convert/convertUtcToPlainDateTime.d.ts +15 -3
- package/dist/utc/convert/convertUtcToPlainDateTime.js +14 -16
- package/dist/utc/convert/convertUtcToPlainTime.d.ts +11 -3
- package/dist/utc/convert/convertUtcToPlainTime.js +9 -9
- package/dist/utc/convert/convertUtcToUnix.d.ts +9 -4
- package/dist/utc/convert/convertUtcToUnix.js +3 -4
- package/dist/utc/convert/convertUtcToZoned.d.ts +5 -1
- package/dist/utc/convert/convertUtcToZoned.js +5 -1
- package/dist/utc/format/formatCalendarUtc.d.ts +23 -8
- package/dist/utc/format/formatCalendarUtc.js +14 -7
- package/dist/utc/format/{formatHttp.d.ts → formatHttpDate.d.ts} +8 -8
- package/dist/utc/format/{formatHttp.js → formatHttpDate.js} +8 -8
- package/dist/utc/format/formatRelativeUtc.d.ts +38 -10
- package/dist/utc/format/formatRelativeUtc.js +22 -16
- package/dist/utc/format/formatUtc.d.ts +22 -15
- package/dist/utc/format/formatUtc.js +12 -8
- package/dist/utc/format/index.d.ts +1 -1
- package/dist/utc/format/index.js +1 -1
- package/dist/utc/get/getUtcDay.d.ts +1 -3
- package/dist/utc/get/getUtcDay.js +5 -12
- package/dist/utc/get/getUtcHour.d.ts +1 -3
- package/dist/utc/get/getUtcHour.js +5 -12
- package/dist/utc/get/getUtcMicrosecond.d.ts +1 -3
- package/dist/utc/get/getUtcMicrosecond.js +4 -11
- package/dist/utc/get/getUtcMillisecond.d.ts +1 -3
- package/dist/utc/get/getUtcMillisecond.js +5 -12
- package/dist/utc/get/getUtcMinute.d.ts +1 -3
- package/dist/utc/get/getUtcMinute.js +5 -12
- package/dist/utc/get/getUtcMonth.d.ts +1 -3
- package/dist/utc/get/getUtcMonth.js +5 -12
- package/dist/utc/get/getUtcNanosecond.d.ts +1 -3
- package/dist/utc/get/getUtcNanosecond.js +4 -11
- package/dist/utc/get/getUtcNow.d.ts +1 -3
- package/dist/utc/get/getUtcNow.js +2 -9
- package/dist/utc/get/getUtcNowUnit.d.ts +2 -0
- package/dist/utc/get/getUtcNowUnit.js +2 -0
- package/dist/utc/get/getUtcSecond.d.ts +1 -3
- package/dist/utc/get/getUtcSecond.js +5 -12
- package/dist/utc/get/getUtcYear.d.ts +3 -3
- package/dist/utc/get/getUtcYear.js +5 -12
- package/dist/utc/interval/intervalDifferenceUtc.d.ts +6 -0
- package/dist/utc/interval/intervalDivideEquallyUtc.d.ts +18 -4
- package/dist/utc/interval/intervalDivideEquallyUtc.js +5 -4
- package/dist/utc/interval/intervalFromDurationUtc.d.ts +13 -3
- package/dist/utc/interval/intervalFromDurationUtc.js +1 -3
- package/dist/utc/interval/intervalIntersectionUtc.d.ts +6 -0
- package/dist/utc/interval/intervalSplitAtUtc.d.ts +8 -0
- package/dist/utc/interval/intervalSplitAtUtc.js +2 -0
- package/dist/utc/interval/intervalUnionUtc.d.ts +6 -0
- package/dist/utc/interval/intervalXorAllUtc.d.ts +6 -0
- package/dist/utc/interval/intervalXorAllUtc.js +2 -2
- package/dist/utc/interval/intervalXorUtc.d.ts +6 -0
- package/dist/utc/interval/mergeIntervalsUtc.d.ts +6 -0
- package/dist/utc/interval/mergeIntervalsUtc.js +2 -2
- package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +19 -6
- package/dist/utc/interval/splitIntervalByUnitUtc.js +6 -6
- package/dist/utc/parse/index.d.ts +1 -1
- package/dist/utc/parse/index.js +1 -1
- package/dist/utc/parse/parseDateFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseDateFromUtc.js +3 -5
- package/dist/utc/parse/parseDayFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseDayFromUtc.js +3 -5
- package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseDayOfWeekFromUtc.js +5 -7
- package/dist/utc/parse/parseHourFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseHourFromUtc.js +3 -5
- package/dist/utc/parse/{parseHttp.d.ts → parseHttpDate.d.ts} +12 -12
- package/dist/utc/parse/{parseHttp.js → parseHttpDate.js} +12 -12
- package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseMicrosecondFromUtc.js +3 -5
- package/dist/utc/parse/parseMillisecondFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseMillisecondFromUtc.js +3 -5
- package/dist/utc/parse/parseMinuteFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseMinuteFromUtc.js +3 -5
- package/dist/utc/parse/parseMonthFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseMonthFromUtc.js +3 -5
- package/dist/utc/parse/parseNanosecondFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseNanosecondFromUtc.js +3 -5
- package/dist/utc/parse/parseSecondFromUtc.d.ts +9 -3
- package/dist/utc/parse/parseSecondFromUtc.js +3 -5
- package/dist/utc/parse/parseTimeFromUtc.d.ts +11 -3
- package/dist/utc/parse/parseTimeFromUtc.js +7 -7
- package/dist/utc/parse/parseUnitFromUtc.d.ts +25 -6
- package/dist/utc/parse/parseUnitFromUtc.js +14 -10
- package/dist/utc/parse/parseWeekFromUtc.d.ts +20 -10
- package/dist/utc/parse/parseWeekFromUtc.js +8 -14
- package/dist/utc/parse/parseYearFromUtc.d.ts +13 -5
- package/dist/utc/parse/parseYearFromUtc.js +9 -8
- package/dist/utc/validate/index.d.ts +2 -0
- package/dist/utc/validate/index.js +2 -0
- package/dist/utc/validate/isValidHttpDate.d.ts +35 -0
- package/dist/utc/validate/isValidHttpDate.js +38 -0
- package/dist/utc/validate/isValidUtc.d.ts +4 -0
- package/dist/utc/validate/isValidUtc.js +4 -0
- package/dist/utc/validate/isValidUtcRange.d.ts +16 -5
- package/dist/utc/validate/isValidUtcRange.js +2 -5
- package/dist/utc/validate/isValidUtcTimestamp.d.ts +43 -0
- package/dist/utc/validate/isValidUtcTimestamp.js +48 -0
- package/dist/zoned/calculate/addZoned.d.ts +20 -10
- package/dist/zoned/calculate/addZoned.js +10 -20
- package/dist/zoned/calculate/cycleZoned.d.ts +33 -8
- package/dist/zoned/calculate/cycleZoned.js +1 -8
- package/dist/zoned/calculate/diffZoned.d.ts +1 -1
- package/dist/zoned/calculate/diffZoned.js +1 -1
- package/dist/zoned/calculate/diffZonedAsDuration.d.ts +1 -1
- package/dist/zoned/calculate/diffZonedAsDuration.js +1 -1
- package/dist/zoned/calculate/endOfQuarterForZoned.d.ts +9 -2
- package/dist/zoned/calculate/endOfQuarterForZoned.js +4 -5
- package/dist/zoned/calculate/endOfZoned.d.ts +16 -3
- package/dist/zoned/calculate/endOfZoned.js +2 -3
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +10 -3
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +5 -6
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +7 -1
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +3 -4
- package/dist/zoned/calculate/roundZoned.d.ts +21 -4
- package/dist/zoned/calculate/roundZoned.js +3 -7
- package/dist/zoned/calculate/setZoned.d.ts +44 -13
- package/dist/zoned/calculate/setZoned.js +30 -21
- package/dist/zoned/calculate/startOfQuarterForZoned.d.ts +7 -2
- package/dist/zoned/calculate/startOfQuarterForZoned.js +3 -5
- package/dist/zoned/calculate/startOfZoned.d.ts +15 -3
- package/dist/zoned/calculate/startOfZoned.js +1 -3
- package/dist/zoned/calculate/subtractZoned.d.ts +20 -10
- package/dist/zoned/calculate/subtractZoned.js +10 -20
- package/dist/zoned/compare/areZonedEqualBy.d.ts +14 -5
- package/dist/zoned/compare/areZonedEqualBy.js +7 -5
- package/dist/zoned/compare/isBetweenZoned.d.ts +13 -1
- package/dist/zoned/compare/isBetweenZoned.js +4 -3
- package/dist/zoned/compare/isInDaylightSaving.d.ts +38 -11
- package/dist/zoned/compare/isInDaylightSaving.js +40 -44
- package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +21 -5
- package/dist/zoned/convert/convertPlainDateTimeToZoned.js +9 -11
- package/dist/zoned/convert/convertZonedToUnix.d.ts +9 -4
- package/dist/zoned/convert/convertZonedToUnix.js +2 -4
- package/dist/zoned/convert/convertZonedToZoned.d.ts +5 -1
- package/dist/zoned/convert/convertZonedToZoned.js +5 -1
- package/dist/zoned/format/formatCalendarZoned.d.ts +18 -12
- package/dist/zoned/format/formatCalendarZoned.js +15 -10
- package/dist/zoned/format/formatRelativeZoned.d.ts +41 -12
- package/dist/zoned/format/formatRelativeZoned.js +9 -5
- package/dist/zoned/format/formatRfc2822.d.ts +2 -2
- package/dist/zoned/format/formatRfc2822.js +2 -2
- package/dist/zoned/format/formatRfc3339.d.ts +2 -3
- package/dist/zoned/format/formatRfc3339.js +2 -3
- package/dist/zoned/format/formatTimeZoneName.d.ts +16 -3
- package/dist/zoned/format/formatTimeZoneName.js +9 -4
- package/dist/zoned/format/formatZonedDateTime.js +2 -1
- package/dist/zoned/format/formatZonedRange.js +2 -1
- package/dist/zoned/format/formatZonedToParts.d.ts +15 -4
- package/dist/zoned/format/formatZonedToParts.js +8 -5
- package/dist/zoned/get/getDstTransitions.d.ts +11 -10
- package/dist/zoned/get/getDstTransitions.js +21 -7
- package/dist/zoned/get/getSystemTimeZone.d.ts +3 -1
- package/dist/zoned/get/getSystemTimeZone.js +5 -2
- package/dist/zoned/get/getTimeZoneOffset.d.ts +13 -2
- package/dist/zoned/get/getTimeZoneOffset.js +22 -6
- package/dist/zoned/get/getZonedDay.d.ts +2 -1
- package/dist/zoned/get/getZonedDay.js +6 -7
- package/dist/zoned/get/getZonedDayOfWeek.d.ts +2 -1
- package/dist/zoned/get/getZonedDayOfWeek.js +6 -5
- package/dist/zoned/get/getZonedHour.d.ts +2 -1
- package/dist/zoned/get/getZonedHour.js +6 -7
- package/dist/zoned/get/getZonedMicrosecond.d.ts +2 -1
- package/dist/zoned/get/getZonedMicrosecond.js +6 -5
- package/dist/zoned/get/getZonedMillisecond.d.ts +2 -1
- package/dist/zoned/get/getZonedMillisecond.js +6 -7
- package/dist/zoned/get/getZonedMinute.d.ts +2 -1
- package/dist/zoned/get/getZonedMinute.js +6 -7
- package/dist/zoned/get/getZonedMonth.d.ts +2 -1
- package/dist/zoned/get/getZonedMonth.js +6 -7
- package/dist/zoned/get/getZonedNanosecond.d.ts +2 -1
- package/dist/zoned/get/getZonedNanosecond.js +6 -5
- package/dist/zoned/get/getZonedNow.d.ts +18 -2
- package/dist/zoned/get/getZonedNow.js +17 -4
- package/dist/zoned/get/getZonedNowUnit.d.ts +6 -3
- package/dist/zoned/get/getZonedNowUnit.js +10 -7
- package/dist/zoned/get/getZonedSecond.d.ts +2 -1
- package/dist/zoned/get/getZonedSecond.js +6 -7
- package/dist/zoned/get/getZonedToday.d.ts +2 -1
- package/dist/zoned/get/getZonedToday.js +6 -5
- package/dist/zoned/get/getZonedWeekOfYear.d.ts +2 -1
- package/dist/zoned/get/getZonedWeekOfYear.js +6 -5
- package/dist/zoned/get/getZonedYear.d.ts +4 -1
- package/dist/zoned/get/getZonedYear.js +9 -7
- package/dist/zoned/interval/intervalDifferenceZoned.d.ts +9 -0
- package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +22 -4
- package/dist/zoned/interval/intervalDivideEquallyZoned.js +6 -4
- package/dist/zoned/interval/intervalFromDurationZoned.d.ts +29 -10
- package/dist/zoned/interval/intervalFromDurationZoned.js +6 -13
- package/dist/zoned/interval/intervalIntersectionZoned.d.ts +9 -0
- package/dist/zoned/interval/intervalSplitAtZoned.d.ts +11 -0
- package/dist/zoned/interval/intervalSplitAtZoned.js +2 -0
- package/dist/zoned/interval/intervalUnionZoned.d.ts +9 -0
- package/dist/zoned/interval/intervalXorAllZoned.d.ts +9 -0
- package/dist/zoned/interval/intervalXorAllZoned.js +2 -2
- package/dist/zoned/interval/intervalXorZoned.d.ts +9 -0
- package/dist/zoned/interval/mergeIntervalsZoned.d.ts +9 -0
- package/dist/zoned/interval/mergeIntervalsZoned.js +2 -2
- package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +27 -6
- package/dist/zoned/interval/splitIntervalByUnitZoned.js +11 -6
- package/dist/zoned/map/mapZonedDatesInRange.d.ts +9 -4
- package/dist/zoned/map/mapZonedDatesInRange.js +2 -4
- package/dist/zoned/parse/parseRfc2822.d.ts +1 -1
- package/dist/zoned/parse/parseRfc2822.js +1 -1
- package/dist/zoned/parse/parseUnitFromZoned.d.ts +13 -4
- package/dist/zoned/parse/parseUnitFromZoned.js +6 -4
- package/dist/zoned/parse/parseWeekFromZoned.d.ts +10 -3
- package/dist/zoned/parse/parseWeekFromZoned.js +2 -3
- package/dist/zoned/parse/parseYearFromZoned.d.ts +4 -2
- package/dist/zoned/parse/parseYearFromZoned.js +6 -3
- package/dist/zoned/validate/hasDaylightSaving.d.ts +45 -12
- package/dist/zoned/validate/hasDaylightSaving.js +54 -32
- package/dist/zoned/validate/index.d.ts +2 -0
- package/dist/zoned/validate/index.js +2 -0
- package/dist/zoned/validate/isValidRfc2822DateTime.d.ts +32 -0
- package/dist/zoned/validate/isValidRfc2822DateTime.js +35 -0
- package/dist/zoned/validate/isValidRfc3339DateTime.d.ts +31 -0
- package/dist/zoned/validate/isValidRfc3339DateTime.js +34 -0
- package/dist/zoned/validate/isValidTimeZone.d.ts +5 -1
- package/dist/zoned/validate/isValidTimeZone.js +6 -2
- package/dist/zoned/validate/isValidZonedDateTime.d.ts +13 -0
- package/dist/zoned/validate/isValidZonedDateTime.js +14 -1
- package/dist/zoned/validate/isValidZonedRange.d.ts +15 -4
- package/dist/zoned/validate/isValidZonedRange.js +1 -4
- package/package.json +67 -5
- package/skills/gmt-arithmetic/SKILL.md +99 -12
- package/skills/gmt-basics/SKILL.md +64 -13
- package/skills/gmt-integration/SKILL.md +33 -13
- package/skills/gmt-timezone/SKILL.md +265 -31
- package/dist/duration/calculate/durationAs.d.ts +0 -62
- package/dist/internal/resolveReadingTimeZone.d.ts +0 -11
- package/dist/internal/resolveReadingTimeZone.js +0 -18
- package/dist/internal/unixZonedDateTime.d.ts +0 -22
- package/dist/internal/unixZonedDateTime.js +0 -32
- package/dist/internal/utcZonedDateTime.d.ts +0 -16
- package/dist/internal/utcZonedDateTime.js +0 -28
- package/dist/types/duration-unit.d.ts +0 -5
- /package/dist/types/{duration-unit.js → duty.js} +0 -0
|
@@ -0,0 +1,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
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { X12OffsetTimeCode } from "../../types/edi.js";
|
|
2
|
+
/**
|
|
3
|
+
* Read the UTC offset an X12 time code (data element 623) states.
|
|
4
|
+
*
|
|
5
|
+
* Data element 623 is the code beside the date (element 373) and time (element 337) of an X12
|
|
6
|
+
* `AT7`, `G62` or `DTM` segment, and the only thing in the segment that says where the clock
|
|
7
|
+
* was. 31 of its 56 codes state an offset; this function reads those. The element's own
|
|
8
|
+
* definition: "Code identifying the time. In accordance with International Standards
|
|
9
|
+
* Organization standard 8601, time can be specified by a + or - and an indication in hours in
|
|
10
|
+
* relation to Universal Time Coordinate (UTC) time; since + is a restricted character, + and -
|
|
11
|
+
* are substituted by P and M in the codes that follow". Codes are release 008010, read from
|
|
12
|
+
* [Stedi's X12-licensed dictionary](https://www.stedi.com/edi/x12-008010/element/623); the X12
|
|
13
|
+
* text itself was not reached.
|
|
14
|
+
*
|
|
15
|
+
* ### Time codes that state an offset
|
|
16
|
+
* | Codes | The dictionary's definition | Offset |
|
|
17
|
+
* |---|---|---|
|
|
18
|
+
* | `01`–`12` | "Equivalent to ISO P01" … "P12" | `+01:00` … `+12:00` |
|
|
19
|
+
* | `13`–`24` | "Equivalent to ISO M12" … "M01" | `-12:00` … `-01:00`, counting down |
|
|
20
|
+
* | `25`–`29` | "Equivalent to ISO M2:30", "M3:30", "P5:30", "P9:30", "P10:30" | `-02:30`, `-03:30`, `+05:30`, `+09:30`, `+10:30` |
|
|
21
|
+
* | `UT` | "Universal Time Coordinate" | `+00:00` |
|
|
22
|
+
* | `GM` | "Greenwich Mean Time" | `+00:00` |
|
|
23
|
+
*
|
|
24
|
+
* - **`13`–`24` count down**: `13` is `-12:00` and `24` is `-01:00`. The code rises as the
|
|
25
|
+
* offset nears UTC, so `20` is `-05:00`.
|
|
26
|
+
* - **`25`–`29` were added in release 006010** and are not valid in an 004010 or 005010
|
|
27
|
+
* interchange. The function takes no release, so it reads them.
|
|
28
|
+
* - **`GM` is `+00:00` by a GMT rule, not by X12's statement.** X12 defines it only by the name
|
|
29
|
+
* "Greenwich Mean Time". UN/ECE Recommendation 7 ¶12 names one scale by both names,
|
|
30
|
+
* "Co-ordinated Universal Time (formerly known as Greenwich Mean Time)", so GMT reads `GM` as
|
|
31
|
+
* UTC.
|
|
32
|
+
* - **A named code returns `""`**: X12 states no offset for `ET`, `ES`, `PD` or `LT`, and GMT
|
|
33
|
+
* holds no table of zone offsets. Read one with `x12TimeCodeZone`.
|
|
34
|
+
* - **To get the instant**, resolve the segment's local date-time at the offset:
|
|
35
|
+
* `resolveLocal(parseX12DateAndTime("20240615", "1430"), x12TimeCodeOffset("20"))` is
|
|
36
|
+
* `"2024-06-15T19:30:00Z"`.
|
|
37
|
+
* - **For a code that arrives as a string**, call `classifyX12TimeCode` first: its `"offset"`
|
|
38
|
+
* result carries the code narrowed to this function's parameter.
|
|
39
|
+
* - Matching is exact: two characters, upper case, no padding. Returns `""` for a code that is
|
|
40
|
+
* not one of the 56 and for a non-string. Use `isValidX12TimeCode` to check a code.
|
|
41
|
+
*
|
|
42
|
+
* @param timeCode X12 data element 623 time code (e.g. "20")
|
|
43
|
+
* @returns the offset as `±HH:MM`, or "" on invalid input
|
|
44
|
+
*
|
|
45
|
+
* @example x12TimeCodeOffset("20") // "-05:00"
|
|
46
|
+
* @example x12TimeCodeOffset("01") // "+01:00"
|
|
47
|
+
* @example x12TimeCodeOffset("12") // "+12:00"
|
|
48
|
+
* @example x12TimeCodeOffset("13") // "-12:00" (the 13–24 run counts down)
|
|
49
|
+
* @example x12TimeCodeOffset("24") // "-01:00"
|
|
50
|
+
* @example x12TimeCodeOffset("27") // "+05:30"
|
|
51
|
+
* @example x12TimeCodeOffset("UT") // "+00:00"
|
|
52
|
+
* @example x12TimeCodeOffset("GM") // "+00:00"
|
|
53
|
+
* @example x12TimeCodeOffset("ET") // "" (a zone name: X12 states no offset for it)
|
|
54
|
+
* @example x12TimeCodeOffset("30") // "" (not a 623 code)
|
|
55
|
+
* @example x12TimeCodeOffset("ut") // "" (matching is exact)
|
|
56
|
+
*/
|
|
57
|
+
export declare function x12TimeCodeOffset(timeCode: X12OffsetTimeCode): string;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* X12 data element 623 code → the offset its definition states, release 008010, read from
|
|
3
|
+
* Stedi's X12-licensed dictionary (https://www.stedi.com/edi/x12-008010/element/623); the X12
|
|
4
|
+
* text was not reached. Each comment quotes the definition. The offsets are the standard's data,
|
|
5
|
+
* written out rather than computed: `P` is plus and `M` is minus, and the `13`–`24` run counts
|
|
6
|
+
* down. `25`–`29` were added in release 006010. Typed by `X12OffsetTimeCode`, so a missing code
|
|
7
|
+
* fails typecheck.
|
|
8
|
+
*/
|
|
9
|
+
const X12_TIME_CODE_OFFSET = {
|
|
10
|
+
// "Equivalent to ISO P01" … "P12"
|
|
11
|
+
"01": "+01:00",
|
|
12
|
+
"02": "+02:00",
|
|
13
|
+
"03": "+03:00",
|
|
14
|
+
"04": "+04:00",
|
|
15
|
+
"05": "+05:00",
|
|
16
|
+
"06": "+06:00",
|
|
17
|
+
"07": "+07:00",
|
|
18
|
+
"08": "+08:00",
|
|
19
|
+
"09": "+09:00",
|
|
20
|
+
"10": "+10:00",
|
|
21
|
+
"11": "+11:00",
|
|
22
|
+
"12": "+12:00",
|
|
23
|
+
// "Equivalent to ISO M12" … "M01": descending, so the code rises as the offset nears UTC.
|
|
24
|
+
"13": "-12:00",
|
|
25
|
+
"14": "-11:00",
|
|
26
|
+
"15": "-10:00",
|
|
27
|
+
"16": "-09:00",
|
|
28
|
+
"17": "-08:00",
|
|
29
|
+
"18": "-07:00",
|
|
30
|
+
"19": "-06:00",
|
|
31
|
+
"20": "-05:00",
|
|
32
|
+
"21": "-04:00",
|
|
33
|
+
"22": "-03:00",
|
|
34
|
+
"23": "-02:00",
|
|
35
|
+
"24": "-01:00",
|
|
36
|
+
// "Equivalent to ISO M2:30", "M3:30", "P5:30", "P9:30", "P10:30"
|
|
37
|
+
"25": "-02:30",
|
|
38
|
+
"26": "-03:30",
|
|
39
|
+
"27": "+05:30",
|
|
40
|
+
"28": "+09:30",
|
|
41
|
+
"29": "+10:30",
|
|
42
|
+
// "Greenwich Mean Time". X12 gives the name and no ISO designator, so the offset is a GMT
|
|
43
|
+
// rule: UN/ECE Recommendation 7 ¶12 names the scale "Co-ordinated Universal Time (formerly
|
|
44
|
+
// known as Greenwich Mean Time)". It is the one zone-name code that resolves to an offset.
|
|
45
|
+
GM: "+00:00",
|
|
46
|
+
// "Universal Time Coordinate": UTC itself.
|
|
47
|
+
UT: "+00:00",
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Read the UTC offset an X12 time code (data element 623) states.
|
|
51
|
+
*
|
|
52
|
+
* Data element 623 is the code beside the date (element 373) and time (element 337) of an X12
|
|
53
|
+
* `AT7`, `G62` or `DTM` segment, and the only thing in the segment that says where the clock
|
|
54
|
+
* was. 31 of its 56 codes state an offset; this function reads those. The element's own
|
|
55
|
+
* definition: "Code identifying the time. In accordance with International Standards
|
|
56
|
+
* Organization standard 8601, time can be specified by a + or - and an indication in hours in
|
|
57
|
+
* relation to Universal Time Coordinate (UTC) time; since + is a restricted character, + and -
|
|
58
|
+
* are substituted by P and M in the codes that follow". Codes are release 008010, read from
|
|
59
|
+
* [Stedi's X12-licensed dictionary](https://www.stedi.com/edi/x12-008010/element/623); the X12
|
|
60
|
+
* text itself was not reached.
|
|
61
|
+
*
|
|
62
|
+
* ### Time codes that state an offset
|
|
63
|
+
* | Codes | The dictionary's definition | Offset |
|
|
64
|
+
* |---|---|---|
|
|
65
|
+
* | `01`–`12` | "Equivalent to ISO P01" … "P12" | `+01:00` … `+12:00` |
|
|
66
|
+
* | `13`–`24` | "Equivalent to ISO M12" … "M01" | `-12:00` … `-01:00`, counting down |
|
|
67
|
+
* | `25`–`29` | "Equivalent to ISO M2:30", "M3:30", "P5:30", "P9:30", "P10:30" | `-02:30`, `-03:30`, `+05:30`, `+09:30`, `+10:30` |
|
|
68
|
+
* | `UT` | "Universal Time Coordinate" | `+00:00` |
|
|
69
|
+
* | `GM` | "Greenwich Mean Time" | `+00:00` |
|
|
70
|
+
*
|
|
71
|
+
* - **`13`–`24` count down**: `13` is `-12:00` and `24` is `-01:00`. The code rises as the
|
|
72
|
+
* offset nears UTC, so `20` is `-05:00`.
|
|
73
|
+
* - **`25`–`29` were added in release 006010** and are not valid in an 004010 or 005010
|
|
74
|
+
* interchange. The function takes no release, so it reads them.
|
|
75
|
+
* - **`GM` is `+00:00` by a GMT rule, not by X12's statement.** X12 defines it only by the name
|
|
76
|
+
* "Greenwich Mean Time". UN/ECE Recommendation 7 ¶12 names one scale by both names,
|
|
77
|
+
* "Co-ordinated Universal Time (formerly known as Greenwich Mean Time)", so GMT reads `GM` as
|
|
78
|
+
* UTC.
|
|
79
|
+
* - **A named code returns `""`**: X12 states no offset for `ET`, `ES`, `PD` or `LT`, and GMT
|
|
80
|
+
* holds no table of zone offsets. Read one with `x12TimeCodeZone`.
|
|
81
|
+
* - **To get the instant**, resolve the segment's local date-time at the offset:
|
|
82
|
+
* `resolveLocal(parseX12DateAndTime("20240615", "1430"), x12TimeCodeOffset("20"))` is
|
|
83
|
+
* `"2024-06-15T19:30:00Z"`.
|
|
84
|
+
* - **For a code that arrives as a string**, call `classifyX12TimeCode` first: its `"offset"`
|
|
85
|
+
* result carries the code narrowed to this function's parameter.
|
|
86
|
+
* - Matching is exact: two characters, upper case, no padding. Returns `""` for a code that is
|
|
87
|
+
* not one of the 56 and for a non-string. Use `isValidX12TimeCode` to check a code.
|
|
88
|
+
*
|
|
89
|
+
* @param timeCode X12 data element 623 time code (e.g. "20")
|
|
90
|
+
* @returns the offset as `±HH:MM`, or "" on invalid input
|
|
91
|
+
*
|
|
92
|
+
* @example x12TimeCodeOffset("20") // "-05:00"
|
|
93
|
+
* @example x12TimeCodeOffset("01") // "+01:00"
|
|
94
|
+
* @example x12TimeCodeOffset("12") // "+12:00"
|
|
95
|
+
* @example x12TimeCodeOffset("13") // "-12:00" (the 13–24 run counts down)
|
|
96
|
+
* @example x12TimeCodeOffset("24") // "-01:00"
|
|
97
|
+
* @example x12TimeCodeOffset("27") // "+05:30"
|
|
98
|
+
* @example x12TimeCodeOffset("UT") // "+00:00"
|
|
99
|
+
* @example x12TimeCodeOffset("GM") // "+00:00"
|
|
100
|
+
* @example x12TimeCodeOffset("ET") // "" (a zone name: X12 states no offset for it)
|
|
101
|
+
* @example x12TimeCodeOffset("30") // "" (not a 623 code)
|
|
102
|
+
* @example x12TimeCodeOffset("ut") // "" (matching is exact)
|
|
103
|
+
*/
|
|
104
|
+
export function x12TimeCodeOffset(timeCode) {
|
|
105
|
+
if (typeof timeCode !== "string" ||
|
|
106
|
+
!Object.hasOwn(X12_TIME_CODE_OFFSET, timeCode)) {
|
|
107
|
+
return "";
|
|
108
|
+
}
|
|
109
|
+
return X12_TIME_CODE_OFFSET[timeCode];
|
|
110
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { X12NamedZone, X12ZoneTimeCode } from "../../types/edi.js";
|
|
2
|
+
/**
|
|
3
|
+
* Read the zone an X12 time code (data element 623) names.
|
|
4
|
+
*
|
|
5
|
+
* Data element 623 is the code beside the date (element 373) and time (element 337) of an X12
|
|
6
|
+
* `AT7`, `G62` or `DTM` segment. 25 of its 56 codes name a zone and state no offset; this
|
|
7
|
+
* function reads those. Codes are release 008010, read from
|
|
8
|
+
* [Stedi's X12-licensed dictionary](https://www.stedi.com/edi/x12-008010/element/623); the X12
|
|
9
|
+
* text itself was not reached.
|
|
10
|
+
*
|
|
11
|
+
* ### Time codes that name a zone
|
|
12
|
+
* | Codes | The dictionary's definition | `zone` |
|
|
13
|
+
* |---|---|---|
|
|
14
|
+
* | `AD`, `AS`, `AT` | "Alaska Daylight Time", "Alaska Standard Time", "Alaska Time" | `Alaska` |
|
|
15
|
+
* | `CD`, `CS`, `CT` | "Central Daylight Time", "Central Standard Time", "Central Time" | `Central` |
|
|
16
|
+
* | `ED`, `ES`, `ET` | "Eastern Daylight Time", "Eastern Standard Time", "Eastern Time" | `Eastern` |
|
|
17
|
+
* | `HD`, `HS`, `HT` | "Hawaii-Aleutian Daylight Time", "Hawaii-Aleutian Standard Time", "Hawaii-Aleutian Time" | `Hawaii-Aleutian` |
|
|
18
|
+
* | `MD`, `MS`, `MT` | "Mountain Daylight Time", "Mountain Standard Time", "Mountain Time" | `Mountain` |
|
|
19
|
+
* | `ND`, `NS`, `NT` | "Newfoundland Daylight Time", "Newfoundland Standard Time", "Newfoundland Time" | `Newfoundland` |
|
|
20
|
+
* | `PD`, `PS`, `PT` | "Pacific Daylight Time", "Pacific Standard Time", "Pacific Time" | `Pacific` |
|
|
21
|
+
* | `TD`, `TS`, `TT` | "Atlantic Daylight Time", "Atlantic Standard Time", "Atlantic Time" | `Atlantic` |
|
|
22
|
+
* | `LT` | "Local Time" | `Local` |
|
|
23
|
+
*
|
|
24
|
+
* - **The result is a zone name, not an offset.** X12 states no offset for these codes and GMT
|
|
25
|
+
* holds no registry of places, so the caller maps the name to an IANA zone. A caller might
|
|
26
|
+
* choose `America/New_York` for `Eastern`; the choice is the caller's. Resolve the local
|
|
27
|
+
* date-time in that zone with `resolveLocal`.
|
|
28
|
+
* - **`daylight` is `true` for a `D` code, `false` for an `S` code and `null` for a `T` code**,
|
|
29
|
+
* which says neither: the date decides. Both members are always present.
|
|
30
|
+
* - **`LT` is local to the event** and returns `{ zone: "Local", daylight: null }`. The place is
|
|
31
|
+
* elsewhere in the message, so the caller supplies its zone.
|
|
32
|
+
* - **An offset code returns `null`**: `01`–`29`, `UT` and `GM` state an offset and name no
|
|
33
|
+
* zone. Read one with `x12TimeCodeOffset`.
|
|
34
|
+
* - **`TS`, `TT`, `CD` and `MD` are codes of data element 1250 too**, with unrelated meanings:
|
|
35
|
+
* here they are Atlantic Standard, Atlantic, Central Daylight and Mountain Daylight Time;
|
|
36
|
+
* there `TS` is the format `HHMMSS`. Pass a time code here and a format qualifier to the
|
|
37
|
+
* `parseX12…` functions.
|
|
38
|
+
* - **For a code that arrives as a string**, call `classifyX12TimeCode` first: its `"zone"`
|
|
39
|
+
* result carries the code narrowed to this function's parameter.
|
|
40
|
+
* - Matching is exact: two characters, upper case, no padding. Each call returns a new object.
|
|
41
|
+
* Returns `null` for a code that is not one of the 56 and for a non-string.
|
|
42
|
+
*
|
|
43
|
+
* @param timeCode X12 data element 623 time code (e.g. "ES")
|
|
44
|
+
* @returns `{ zone, daylight }`, or null on invalid input
|
|
45
|
+
*
|
|
46
|
+
* @example x12TimeCodeZone("ES") // { zone: "Eastern", daylight: false }
|
|
47
|
+
* @example x12TimeCodeZone("ED") // { zone: "Eastern", daylight: true }
|
|
48
|
+
* @example x12TimeCodeZone("ET") // { zone: "Eastern", daylight: null } (the date decides)
|
|
49
|
+
* @example x12TimeCodeZone("PD") // { zone: "Pacific", daylight: true }
|
|
50
|
+
* @example x12TimeCodeZone("TS") // { zone: "Atlantic", daylight: false }
|
|
51
|
+
* @example x12TimeCodeZone("LT") // { zone: "Local", daylight: null } (the place is elsewhere in the message)
|
|
52
|
+
* @example x12TimeCodeZone("UT") // null (an offset code: use x12TimeCodeOffset)
|
|
53
|
+
* @example x12TimeCodeZone("20") // null (an offset code)
|
|
54
|
+
* @example x12TimeCodeZone("EST") // null (not a 623 code)
|
|
55
|
+
* @example x12TimeCodeZone("et") // null (matching is exact)
|
|
56
|
+
*/
|
|
57
|
+
export declare function x12TimeCodeZone(timeCode: X12ZoneTimeCode): X12NamedZone | null;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* X12 data element 623 code → the zone its definition names, release 008010, read from Stedi's
|
|
3
|
+
* X12-licensed dictionary (https://www.stedi.com/edi/x12-008010/element/623); the X12 text was
|
|
4
|
+
* not reached. Each comment quotes the definition. Typed by `X12ZoneTimeCode`, so a missing code
|
|
5
|
+
* fails typecheck.
|
|
6
|
+
*/
|
|
7
|
+
const X12_TIME_CODE_ZONE = {
|
|
8
|
+
// "Alaska Daylight Time", "Alaska Standard Time", "Alaska Time"
|
|
9
|
+
AD: { zone: "Alaska", daylight: true },
|
|
10
|
+
AS: { zone: "Alaska", daylight: false },
|
|
11
|
+
AT: { zone: "Alaska", daylight: null },
|
|
12
|
+
// "Central Daylight Time", "Central Standard Time", "Central Time"
|
|
13
|
+
CD: { zone: "Central", daylight: true },
|
|
14
|
+
CS: { zone: "Central", daylight: false },
|
|
15
|
+
CT: { zone: "Central", daylight: null },
|
|
16
|
+
// "Eastern Daylight Time", "Eastern Standard Time", "Eastern Time"
|
|
17
|
+
ED: { zone: "Eastern", daylight: true },
|
|
18
|
+
ES: { zone: "Eastern", daylight: false },
|
|
19
|
+
ET: { zone: "Eastern", daylight: null },
|
|
20
|
+
// "Hawaii-Aleutian Daylight Time", "Hawaii-Aleutian Standard Time", "Hawaii-Aleutian Time"
|
|
21
|
+
HD: { zone: "Hawaii-Aleutian", daylight: true },
|
|
22
|
+
HS: { zone: "Hawaii-Aleutian", daylight: false },
|
|
23
|
+
HT: { zone: "Hawaii-Aleutian", daylight: null },
|
|
24
|
+
// "Local Time"
|
|
25
|
+
LT: { zone: "Local", daylight: null },
|
|
26
|
+
// "Mountain Daylight Time", "Mountain Standard Time", "Mountain Time"
|
|
27
|
+
MD: { zone: "Mountain", daylight: true },
|
|
28
|
+
MS: { zone: "Mountain", daylight: false },
|
|
29
|
+
MT: { zone: "Mountain", daylight: null },
|
|
30
|
+
// "Newfoundland Daylight Time", "Newfoundland Standard Time", "Newfoundland Time"
|
|
31
|
+
ND: { zone: "Newfoundland", daylight: true },
|
|
32
|
+
NS: { zone: "Newfoundland", daylight: false },
|
|
33
|
+
NT: { zone: "Newfoundland", daylight: null },
|
|
34
|
+
// "Pacific Daylight Time", "Pacific Standard Time", "Pacific Time"
|
|
35
|
+
PD: { zone: "Pacific", daylight: true },
|
|
36
|
+
PS: { zone: "Pacific", daylight: false },
|
|
37
|
+
PT: { zone: "Pacific", daylight: null },
|
|
38
|
+
// "Atlantic Daylight Time", "Atlantic Standard Time", "Atlantic Time"
|
|
39
|
+
TD: { zone: "Atlantic", daylight: true },
|
|
40
|
+
TS: { zone: "Atlantic", daylight: false },
|
|
41
|
+
TT: { zone: "Atlantic", daylight: null },
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Read the zone an X12 time code (data element 623) names.
|
|
45
|
+
*
|
|
46
|
+
* Data element 623 is the code beside the date (element 373) and time (element 337) of an X12
|
|
47
|
+
* `AT7`, `G62` or `DTM` segment. 25 of its 56 codes name a zone and state no offset; this
|
|
48
|
+
* function reads those. Codes are release 008010, read from
|
|
49
|
+
* [Stedi's X12-licensed dictionary](https://www.stedi.com/edi/x12-008010/element/623); the X12
|
|
50
|
+
* text itself was not reached.
|
|
51
|
+
*
|
|
52
|
+
* ### Time codes that name a zone
|
|
53
|
+
* | Codes | The dictionary's definition | `zone` |
|
|
54
|
+
* |---|---|---|
|
|
55
|
+
* | `AD`, `AS`, `AT` | "Alaska Daylight Time", "Alaska Standard Time", "Alaska Time" | `Alaska` |
|
|
56
|
+
* | `CD`, `CS`, `CT` | "Central Daylight Time", "Central Standard Time", "Central Time" | `Central` |
|
|
57
|
+
* | `ED`, `ES`, `ET` | "Eastern Daylight Time", "Eastern Standard Time", "Eastern Time" | `Eastern` |
|
|
58
|
+
* | `HD`, `HS`, `HT` | "Hawaii-Aleutian Daylight Time", "Hawaii-Aleutian Standard Time", "Hawaii-Aleutian Time" | `Hawaii-Aleutian` |
|
|
59
|
+
* | `MD`, `MS`, `MT` | "Mountain Daylight Time", "Mountain Standard Time", "Mountain Time" | `Mountain` |
|
|
60
|
+
* | `ND`, `NS`, `NT` | "Newfoundland Daylight Time", "Newfoundland Standard Time", "Newfoundland Time" | `Newfoundland` |
|
|
61
|
+
* | `PD`, `PS`, `PT` | "Pacific Daylight Time", "Pacific Standard Time", "Pacific Time" | `Pacific` |
|
|
62
|
+
* | `TD`, `TS`, `TT` | "Atlantic Daylight Time", "Atlantic Standard Time", "Atlantic Time" | `Atlantic` |
|
|
63
|
+
* | `LT` | "Local Time" | `Local` |
|
|
64
|
+
*
|
|
65
|
+
* - **The result is a zone name, not an offset.** X12 states no offset for these codes and GMT
|
|
66
|
+
* holds no registry of places, so the caller maps the name to an IANA zone. A caller might
|
|
67
|
+
* choose `America/New_York` for `Eastern`; the choice is the caller's. Resolve the local
|
|
68
|
+
* date-time in that zone with `resolveLocal`.
|
|
69
|
+
* - **`daylight` is `true` for a `D` code, `false` for an `S` code and `null` for a `T` code**,
|
|
70
|
+
* which says neither: the date decides. Both members are always present.
|
|
71
|
+
* - **`LT` is local to the event** and returns `{ zone: "Local", daylight: null }`. The place is
|
|
72
|
+
* elsewhere in the message, so the caller supplies its zone.
|
|
73
|
+
* - **An offset code returns `null`**: `01`–`29`, `UT` and `GM` state an offset and name no
|
|
74
|
+
* zone. Read one with `x12TimeCodeOffset`.
|
|
75
|
+
* - **`TS`, `TT`, `CD` and `MD` are codes of data element 1250 too**, with unrelated meanings:
|
|
76
|
+
* here they are Atlantic Standard, Atlantic, Central Daylight and Mountain Daylight Time;
|
|
77
|
+
* there `TS` is the format `HHMMSS`. Pass a time code here and a format qualifier to the
|
|
78
|
+
* `parseX12…` functions.
|
|
79
|
+
* - **For a code that arrives as a string**, call `classifyX12TimeCode` first: its `"zone"`
|
|
80
|
+
* result carries the code narrowed to this function's parameter.
|
|
81
|
+
* - Matching is exact: two characters, upper case, no padding. Each call returns a new object.
|
|
82
|
+
* Returns `null` for a code that is not one of the 56 and for a non-string.
|
|
83
|
+
*
|
|
84
|
+
* @param timeCode X12 data element 623 time code (e.g. "ES")
|
|
85
|
+
* @returns `{ zone, daylight }`, or null on invalid input
|
|
86
|
+
*
|
|
87
|
+
* @example x12TimeCodeZone("ES") // { zone: "Eastern", daylight: false }
|
|
88
|
+
* @example x12TimeCodeZone("ED") // { zone: "Eastern", daylight: true }
|
|
89
|
+
* @example x12TimeCodeZone("ET") // { zone: "Eastern", daylight: null } (the date decides)
|
|
90
|
+
* @example x12TimeCodeZone("PD") // { zone: "Pacific", daylight: true }
|
|
91
|
+
* @example x12TimeCodeZone("TS") // { zone: "Atlantic", daylight: false }
|
|
92
|
+
* @example x12TimeCodeZone("LT") // { zone: "Local", daylight: null } (the place is elsewhere in the message)
|
|
93
|
+
* @example x12TimeCodeZone("UT") // null (an offset code: use x12TimeCodeOffset)
|
|
94
|
+
* @example x12TimeCodeZone("20") // null (an offset code)
|
|
95
|
+
* @example x12TimeCodeZone("EST") // null (not a 623 code)
|
|
96
|
+
* @example x12TimeCodeZone("et") // null (matching is exact)
|
|
97
|
+
*/
|
|
98
|
+
export function x12TimeCodeZone(timeCode) {
|
|
99
|
+
if (typeof timeCode !== "string" ||
|
|
100
|
+
!Object.hasOwn(X12_TIME_CODE_ZONE, timeCode)) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
// A copy, so a caller cannot change the table through a result.
|
|
104
|
+
return { ...X12_TIME_CODE_ZONE[timeCode] };
|
|
105
|
+
}
|