@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,57 @@
|
|
|
1
|
+
import { x12TimeCodeOffset } from "./x12TimeCodeOffset.js";
|
|
2
|
+
import { x12TimeCodeZone } from "./x12TimeCodeZone.js";
|
|
3
|
+
/**
|
|
4
|
+
* Say whether an X12 time code (data element 623) states an offset or names a zone, and return
|
|
5
|
+
* the code narrowed to the function that reads it.
|
|
6
|
+
*
|
|
7
|
+
* Data element 623 is the code beside the date and time of an X12 `AT7`, `G62` or `DTM`
|
|
8
|
+
* segment. 31 of its 56 codes state an offset from UTC and 25 name a zone, and each group has
|
|
9
|
+
* its own reader. A segment reader holds the code as a plain string: it calls this function,
|
|
10
|
+
* tests `kind`, and passes `timeCode` on. Testing `kind` narrows `timeCode` to that reader's
|
|
11
|
+
* union, so the call needs no cast. 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
|
+
* ### Kinds
|
|
16
|
+
* | `kind` | Codes | Read by |
|
|
17
|
+
* |---|---|---|
|
|
18
|
+
* | `"offset"` | `01`–`29`, `UT`, `GM` | `x12TimeCodeOffset` |
|
|
19
|
+
* | `"zone"` | `AD`, `AS`, `AT`, `CD`, `CS`, `CT`, `ED`, `ES`, `ET`, `HD`, `HS`, `HT`, `MD`, `MS`, `MT`, `ND`, `NS`, `NT`, `PD`, `PS`, `PT`, `TD`, `TS`, `TT`, `LT` | `x12TimeCodeZone` |
|
|
20
|
+
*
|
|
21
|
+
* - **The narrowing pattern.** With `const classified = classifyX12TimeCode(code)`, the line
|
|
22
|
+
* `if (classified?.kind === "offset") x12TimeCodeOffset(classified.timeCode)` compiles with
|
|
23
|
+
* no cast: inside the test, `classified.timeCode` is `X12OffsetTimeCode`. The `"zone"` branch
|
|
24
|
+
* passes `classified.timeCode` to `x12TimeCodeZone` the same way.
|
|
25
|
+
* - Both members are always present, and each call returns a new object.
|
|
26
|
+
* - `GM` ("Greenwich Mean Time") is an offset code: GMT reads it as `+00:00`, as
|
|
27
|
+
* `x12TimeCodeOffset` explains.
|
|
28
|
+
* - `25`–`29` were added in release 006010. The function takes no release, so it reads them.
|
|
29
|
+
* - This is a time code, not a format qualifier: `TS` here is Atlantic Standard Time. Classify
|
|
30
|
+
* a data element 1250 code with `classifyX12DateTimePeriodFormat`.
|
|
31
|
+
* - Matching is exact: two characters, upper case, no padding.
|
|
32
|
+
* - Returns `null` for a code that is not one of the 56 and for a non-string. It returns a
|
|
33
|
+
* result exactly when `isValidX12TimeCode` is true.
|
|
34
|
+
*
|
|
35
|
+
* @param timeCode X12 data element 623 time code, as it arrives (e.g. "20")
|
|
36
|
+
* @returns `{ kind, timeCode }`, or null on invalid input
|
|
37
|
+
*
|
|
38
|
+
* @example classifyX12TimeCode("20") // { kind: "offset", timeCode: "20" }
|
|
39
|
+
* @example classifyX12TimeCode("UT") // { kind: "offset", timeCode: "UT" }
|
|
40
|
+
* @example classifyX12TimeCode("GM") // { kind: "offset", timeCode: "GM" }
|
|
41
|
+
* @example classifyX12TimeCode("ES") // { kind: "zone", timeCode: "ES" }
|
|
42
|
+
* @example classifyX12TimeCode("ET") // { kind: "zone", timeCode: "ET" }
|
|
43
|
+
* @example classifyX12TimeCode("LT") // { kind: "zone", timeCode: "LT" }
|
|
44
|
+
* @example classifyX12TimeCode("EST") // null (not a 623 code)
|
|
45
|
+
* @example classifyX12TimeCode("et") // null (matching is exact)
|
|
46
|
+
*/
|
|
47
|
+
export function classifyX12TimeCode(timeCode) {
|
|
48
|
+
// Each reader owns the list of its codes and returns its sentinel for any other value, so a
|
|
49
|
+
// code is an offset code exactly when the offset reader reads it.
|
|
50
|
+
if (x12TimeCodeOffset(timeCode) !== "") {
|
|
51
|
+
return { kind: "offset", timeCode: timeCode };
|
|
52
|
+
}
|
|
53
|
+
if (x12TimeCodeZone(timeCode) !== null) {
|
|
54
|
+
return { kind: "zone", timeCode: timeCode };
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export * from "./classifyEdifactDtmFormat.js";
|
|
2
|
+
export * from "./classifyX12DateTimePeriodFormat.js";
|
|
3
|
+
export * from "./classifyX12TimeCode.js";
|
|
4
|
+
export * from "./parseEdifactDate.js";
|
|
5
|
+
export * from "./parseEdifactDatePeriod.js";
|
|
6
|
+
export * from "./parseEdifactDateTime.js";
|
|
7
|
+
export * from "./parseEdifactDateTimePeriod.js";
|
|
8
|
+
export * from "./parseEdifactOffsetDateTime.js";
|
|
9
|
+
export * from "./parseEdifactTime.js";
|
|
10
|
+
export * from "./parseEpcisEvent.js";
|
|
11
|
+
export * from "./parseX12Date.js";
|
|
12
|
+
export * from "./parseX12DateAndTime.js";
|
|
13
|
+
export * from "./parseX12DateRange.js";
|
|
14
|
+
export * from "./parseX12DateTime.js";
|
|
15
|
+
export * from "./parseX12DateTimeRange.js";
|
|
16
|
+
export * from "./parseX12Time.js";
|
|
17
|
+
export * from "./x12TimeCodeOffset.js";
|
|
18
|
+
export * from "./x12TimeCodeZone.js";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export * from "./classifyEdifactDtmFormat.js";
|
|
2
|
+
export * from "./classifyX12DateTimePeriodFormat.js";
|
|
3
|
+
export * from "./classifyX12TimeCode.js";
|
|
4
|
+
export * from "./parseEdifactDate.js";
|
|
5
|
+
export * from "./parseEdifactDatePeriod.js";
|
|
6
|
+
export * from "./parseEdifactDateTime.js";
|
|
7
|
+
export * from "./parseEdifactDateTimePeriod.js";
|
|
8
|
+
export * from "./parseEdifactOffsetDateTime.js";
|
|
9
|
+
export * from "./parseEdifactTime.js";
|
|
10
|
+
export * from "./parseEpcisEvent.js";
|
|
11
|
+
export * from "./parseX12Date.js";
|
|
12
|
+
export * from "./parseX12DateAndTime.js";
|
|
13
|
+
export * from "./parseX12DateRange.js";
|
|
14
|
+
export * from "./parseX12DateTime.js";
|
|
15
|
+
export * from "./parseX12DateTimeRange.js";
|
|
16
|
+
export * from "./parseX12Time.js";
|
|
17
|
+
export * from "./x12TimeCodeOffset.js";
|
|
18
|
+
export * from "./x12TimeCodeZone.js";
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { EdifactDateFormat } from "../../types/edi.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse a UN/EDIFACT `DTM` value that states a calendar date, as an ISO 8601 date.
|
|
4
|
+
*
|
|
5
|
+
* A `DTM` segment carries its value in data element **2380** and, in data element **2379**, the
|
|
6
|
+
* format code that says how to read it. This function reads the code whose value is a date. The
|
|
7
|
+
* mask and description are the UNTDID directory's, read from
|
|
8
|
+
* [UNECE's D.21B page as archived](http://web.archive.org/web/20240303123657/https://service.unece.org/trade/untdid/d21b/tred/tred2379.htm).
|
|
9
|
+
*
|
|
10
|
+
* ### Format code
|
|
11
|
+
* | Code | Mask | The directory's description |
|
|
12
|
+
* |---|---|---|
|
|
13
|
+
* | `102` | `CCYYMMDD` | "Calendar date: C = Century ; Y = Year ; M = Month ; D = Day." |
|
|
14
|
+
*
|
|
15
|
+
* - The value must be the eight digits of the mask and nothing else: a hyphen, a space or a
|
|
16
|
+
* ninth digit returns `""`.
|
|
17
|
+
* - Fields are checked, not clamped: month 13, 31 June and 29 February 2023 return `""`.
|
|
18
|
+
* - The year is the four digits as written, `0000` to `9999`.
|
|
19
|
+
* - A two-digit year (`101`, `YYMMDD`) is not read: UN/EDIFACT does not say which century it
|
|
20
|
+
* belongs to. Read one with
|
|
21
|
+
* `parseDateWithPattern("240615", "yyMMdd", undefined, { yearWindow: 2000 })`.
|
|
22
|
+
* - Returns `""` for any other code, a code of another kind included (`203` is read by
|
|
23
|
+
* `parseEdifactDateTime`); `classifyEdifactDtmFormat` names the kind of a code. Returns `""`
|
|
24
|
+
* for a non-string argument.
|
|
25
|
+
*
|
|
26
|
+
* @param value The data element 2380 value (e.g. "20240615")
|
|
27
|
+
* @param format The data element 2379 format code
|
|
28
|
+
* @returns the date as `YYYY-MM-DD`, or "" on invalid input
|
|
29
|
+
*
|
|
30
|
+
* @example parseEdifactDate("20240615", "102") // "2024-06-15"
|
|
31
|
+
* @example parseEdifactDate("20240229", "102") // "2024-02-29"
|
|
32
|
+
* @example parseEdifactDate("20230229", "102") // "" (2023 has no 29 February)
|
|
33
|
+
* @example parseEdifactDate("2024-06-15", "102") // "" (the value is the digits of the mask)
|
|
34
|
+
* @example parseEdifactDate("240615", "102") // "" (a two-digit year is not read)
|
|
35
|
+
* @example parseEdifactDate("202406151430", "203") // "" (a date-time code: use parseEdifactDateTime)
|
|
36
|
+
*/
|
|
37
|
+
export declare function parseEdifactDate(value: string, format: EdifactDateFormat): string;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { readEdiValue } from "../../internal/ediDateTimeFields.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse a UN/EDIFACT `DTM` value that states a calendar date, as an ISO 8601 date.
|
|
4
|
+
*
|
|
5
|
+
* A `DTM` segment carries its value in data element **2380** and, in data element **2379**, the
|
|
6
|
+
* format code that says how to read it. This function reads the code whose value is a date. The
|
|
7
|
+
* mask and description are the UNTDID directory's, read from
|
|
8
|
+
* [UNECE's D.21B page as archived](http://web.archive.org/web/20240303123657/https://service.unece.org/trade/untdid/d21b/tred/tred2379.htm).
|
|
9
|
+
*
|
|
10
|
+
* ### Format code
|
|
11
|
+
* | Code | Mask | The directory's description |
|
|
12
|
+
* |---|---|---|
|
|
13
|
+
* | `102` | `CCYYMMDD` | "Calendar date: C = Century ; Y = Year ; M = Month ; D = Day." |
|
|
14
|
+
*
|
|
15
|
+
* - The value must be the eight digits of the mask and nothing else: a hyphen, a space or a
|
|
16
|
+
* ninth digit returns `""`.
|
|
17
|
+
* - Fields are checked, not clamped: month 13, 31 June and 29 February 2023 return `""`.
|
|
18
|
+
* - The year is the four digits as written, `0000` to `9999`.
|
|
19
|
+
* - A two-digit year (`101`, `YYMMDD`) is not read: UN/EDIFACT does not say which century it
|
|
20
|
+
* belongs to. Read one with
|
|
21
|
+
* `parseDateWithPattern("240615", "yyMMdd", undefined, { yearWindow: 2000 })`.
|
|
22
|
+
* - Returns `""` for any other code, a code of another kind included (`203` is read by
|
|
23
|
+
* `parseEdifactDateTime`); `classifyEdifactDtmFormat` names the kind of a code. Returns `""`
|
|
24
|
+
* for a non-string argument.
|
|
25
|
+
*
|
|
26
|
+
* @param value The data element 2380 value (e.g. "20240615")
|
|
27
|
+
* @param format The data element 2379 format code
|
|
28
|
+
* @returns the date as `YYYY-MM-DD`, or "" on invalid input
|
|
29
|
+
*
|
|
30
|
+
* @example parseEdifactDate("20240615", "102") // "2024-06-15"
|
|
31
|
+
* @example parseEdifactDate("20240229", "102") // "2024-02-29"
|
|
32
|
+
* @example parseEdifactDate("20230229", "102") // "" (2023 has no 29 February)
|
|
33
|
+
* @example parseEdifactDate("2024-06-15", "102") // "" (the value is the digits of the mask)
|
|
34
|
+
* @example parseEdifactDate("240615", "102") // "" (a two-digit year is not read)
|
|
35
|
+
* @example parseEdifactDate("202406151430", "203") // "" (a date-time code: use parseEdifactDateTime)
|
|
36
|
+
*/
|
|
37
|
+
export function parseEdifactDate(value, format) {
|
|
38
|
+
try {
|
|
39
|
+
return readEdiValue("edifact", "date", format, value);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// Never throws (Core Rule 3): a hostile argument is invalid input, not an exception.
|
|
43
|
+
return "";
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { EdiDatePeriod, EdifactDatePeriodFormat } from "../../types/edi.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse a UN/EDIFACT `DTM` value that states a period between two calendar dates, as its start
|
|
4
|
+
* and end.
|
|
5
|
+
*
|
|
6
|
+
* A `DTM` segment carries its value in data element **2380** and, in data element **2379**, the
|
|
7
|
+
* format code that says how to read it. The mask and description are the UNTDID directory's,
|
|
8
|
+
* read from
|
|
9
|
+
* [UNECE's D.21B page as archived](http://web.archive.org/web/20240303123657/https://service.unece.org/trade/untdid/d21b/tred/tred2379.htm).
|
|
10
|
+
*
|
|
11
|
+
* ### Format code
|
|
12
|
+
* | Code | Mask | The directory's description |
|
|
13
|
+
* |---|---|---|
|
|
14
|
+
* | `718` | `CCYYMMDD-CCYYMMDD` | "A period of time specified by giving the start date followed by the end date (both including century). Data is to be transmitted as consecutive characters without hyphen." |
|
|
15
|
+
*
|
|
16
|
+
* - **A period is transmitted without a hyphen, and a hyphen is rejected.** Every directory
|
|
17
|
+
* read (twelve, from D.93A to D.22B) says so; the hyphen in the mask is notation.
|
|
18
|
+
* `"2024061520240620"` reads and `"20240615-20240620"` returns `null`.
|
|
19
|
+
* - **`start` and `end` are the two dates as transmitted**, each `YYYY-MM-DD`. The directory
|
|
20
|
+
* does not say whether the end date is inside the period: that is the message's to define, so
|
|
21
|
+
* no day is added or removed. Pass the pair to the plain interval functions as `(start, end)`,
|
|
22
|
+
* for example `intervalLengthDate(period.start, period.end, "days")`; they leave `end`
|
|
23
|
+
* outside the interval.
|
|
24
|
+
* - **An end before its start returns `null`**: a reversed period names no span of time. An end
|
|
25
|
+
* equal to its start is a valid period.
|
|
26
|
+
* - Fields are checked, not clamped: month 13, 31 June and 29 February 2023 return `null`.
|
|
27
|
+
* - A two-digit year (`717`, `YYMMDD-YYMMDD`) is not read. Split such a value in two and read
|
|
28
|
+
* each half with `parseDateWithPattern`, a `yy` pattern and its `yearWindow` option.
|
|
29
|
+
* - Returns `null` for any other code, a code of another kind included (`719` is read by
|
|
30
|
+
* `parseEdifactDateTimePeriod`), and for a non-string argument.
|
|
31
|
+
*
|
|
32
|
+
* @param value The data element 2380 value (e.g. "2024061520240620")
|
|
33
|
+
* @param format The data element 2379 format code
|
|
34
|
+
* @returns `{ start, end }`, two ISO 8601 dates, or null on invalid input
|
|
35
|
+
*
|
|
36
|
+
* @example parseEdifactDatePeriod("2024061520240620", "718") // { start: "2024-06-15", end: "2024-06-20" }
|
|
37
|
+
* @example parseEdifactDatePeriod("2024061520240615", "718") // { start: "2024-06-15", end: "2024-06-15" }
|
|
38
|
+
* @example parseEdifactDatePeriod("20240615-20240620", "718") // null (a period is transmitted without a hyphen)
|
|
39
|
+
* @example parseEdifactDatePeriod("2024062020240615", "718") // null (the end precedes the start)
|
|
40
|
+
* @example parseEdifactDatePeriod("2023022920240620", "718") // null (2023 has no 29 February)
|
|
41
|
+
* @example parseEdifactDatePeriod("20240615", "102") // null (a date code: use parseEdifactDate)
|
|
42
|
+
*/
|
|
43
|
+
export declare function parseEdifactDatePeriod(value: string, format: EdifactDatePeriodFormat): EdiDatePeriod | null;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { readEdiRange } from "../../internal/ediDateTimeFields.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse a UN/EDIFACT `DTM` value that states a period between two calendar dates, as its start
|
|
4
|
+
* and end.
|
|
5
|
+
*
|
|
6
|
+
* A `DTM` segment carries its value in data element **2380** and, in data element **2379**, the
|
|
7
|
+
* format code that says how to read it. The mask and description are the UNTDID directory's,
|
|
8
|
+
* read from
|
|
9
|
+
* [UNECE's D.21B page as archived](http://web.archive.org/web/20240303123657/https://service.unece.org/trade/untdid/d21b/tred/tred2379.htm).
|
|
10
|
+
*
|
|
11
|
+
* ### Format code
|
|
12
|
+
* | Code | Mask | The directory's description |
|
|
13
|
+
* |---|---|---|
|
|
14
|
+
* | `718` | `CCYYMMDD-CCYYMMDD` | "A period of time specified by giving the start date followed by the end date (both including century). Data is to be transmitted as consecutive characters without hyphen." |
|
|
15
|
+
*
|
|
16
|
+
* - **A period is transmitted without a hyphen, and a hyphen is rejected.** Every directory
|
|
17
|
+
* read (twelve, from D.93A to D.22B) says so; the hyphen in the mask is notation.
|
|
18
|
+
* `"2024061520240620"` reads and `"20240615-20240620"` returns `null`.
|
|
19
|
+
* - **`start` and `end` are the two dates as transmitted**, each `YYYY-MM-DD`. The directory
|
|
20
|
+
* does not say whether the end date is inside the period: that is the message's to define, so
|
|
21
|
+
* no day is added or removed. Pass the pair to the plain interval functions as `(start, end)`,
|
|
22
|
+
* for example `intervalLengthDate(period.start, period.end, "days")`; they leave `end`
|
|
23
|
+
* outside the interval.
|
|
24
|
+
* - **An end before its start returns `null`**: a reversed period names no span of time. An end
|
|
25
|
+
* equal to its start is a valid period.
|
|
26
|
+
* - Fields are checked, not clamped: month 13, 31 June and 29 February 2023 return `null`.
|
|
27
|
+
* - A two-digit year (`717`, `YYMMDD-YYMMDD`) is not read. Split such a value in two and read
|
|
28
|
+
* each half with `parseDateWithPattern`, a `yy` pattern and its `yearWindow` option.
|
|
29
|
+
* - Returns `null` for any other code, a code of another kind included (`719` is read by
|
|
30
|
+
* `parseEdifactDateTimePeriod`), and for a non-string argument.
|
|
31
|
+
*
|
|
32
|
+
* @param value The data element 2380 value (e.g. "2024061520240620")
|
|
33
|
+
* @param format The data element 2379 format code
|
|
34
|
+
* @returns `{ start, end }`, two ISO 8601 dates, or null on invalid input
|
|
35
|
+
*
|
|
36
|
+
* @example parseEdifactDatePeriod("2024061520240620", "718") // { start: "2024-06-15", end: "2024-06-20" }
|
|
37
|
+
* @example parseEdifactDatePeriod("2024061520240615", "718") // { start: "2024-06-15", end: "2024-06-15" }
|
|
38
|
+
* @example parseEdifactDatePeriod("20240615-20240620", "718") // null (a period is transmitted without a hyphen)
|
|
39
|
+
* @example parseEdifactDatePeriod("2024062020240615", "718") // null (the end precedes the start)
|
|
40
|
+
* @example parseEdifactDatePeriod("2023022920240620", "718") // null (2023 has no 29 February)
|
|
41
|
+
* @example parseEdifactDatePeriod("20240615", "102") // null (a date code: use parseEdifactDate)
|
|
42
|
+
*/
|
|
43
|
+
export function parseEdifactDatePeriod(value, format) {
|
|
44
|
+
try {
|
|
45
|
+
return readEdiRange("edifact", "datePeriod", format, value);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// Never throws (Core Rule 3): a hostile argument is invalid input, not an exception.
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { EdifactDateTimeFormat } from "../../types/edi.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse a UN/EDIFACT `DTM` value that states a date and a time with no offset, as an ISO 8601
|
|
4
|
+
* local date-time.
|
|
5
|
+
*
|
|
6
|
+
* A `DTM` segment carries its value in data element **2380** and, in data element **2379**, the
|
|
7
|
+
* format code that says how to read it. This function reads the codes whose value is a wall
|
|
8
|
+
* clock at a place the value does not name. Masks and descriptions are the UNTDID directory's,
|
|
9
|
+
* read from
|
|
10
|
+
* [UNECE's D.21B page as archived](http://web.archive.org/web/20240303123657/https://service.unece.org/trade/untdid/d21b/tred/tred2379.htm).
|
|
11
|
+
*
|
|
12
|
+
* ### Format codes
|
|
13
|
+
* | Code | Mask | The directory's description |
|
|
14
|
+
* |---|---|---|
|
|
15
|
+
* | `203` | `CCYYMMDDHHMM` | "Calendar date including time with minutes" |
|
|
16
|
+
* | `204` | `CCYYMMDDHHMMSS` | "Calendar date including time with seconds" |
|
|
17
|
+
*
|
|
18
|
+
* - **The result is local, never UTC.** It carries no `Z` and no offset: reading a `203` value
|
|
19
|
+
* as UTC is the most common EDI timestamp bug. Pass the result and the place's IANA zone to
|
|
20
|
+
* `resolveLocal` to get the instant.
|
|
21
|
+
* - The value must be the digits of its code's mask: `"202406151430"` is a `203` value and not
|
|
22
|
+
* a `204` one.
|
|
23
|
+
* - Seconds are always written in the result, `00` for `203`.
|
|
24
|
+
* - Fields are checked, not clamped: hour 24, second 60, 31 June and 29 February 2023 return
|
|
25
|
+
* `""`.
|
|
26
|
+
* - A two-digit year (`201`, `202`) is not read: UN/EDIFACT does not say which century it
|
|
27
|
+
* belongs to. Read one with
|
|
28
|
+
* `parseDateTimeWithPattern("2406151430", "yyMMddHHmm", undefined, { yearWindow: 2000 })`.
|
|
29
|
+
* - Returns `""` for any other code, a code of another kind included (`205` is read by
|
|
30
|
+
* `parseEdifactOffsetDateTime`), and for a non-string argument.
|
|
31
|
+
*
|
|
32
|
+
* @param value The data element 2380 value (e.g. "202406151430")
|
|
33
|
+
* @param format The data element 2379 format code
|
|
34
|
+
* @returns the local date-time as `YYYY-MM-DDTHH:MM:SS`, or "" on invalid input
|
|
35
|
+
*
|
|
36
|
+
* @example parseEdifactDateTime("202406151430", "203") // "2024-06-15T14:30:00"
|
|
37
|
+
* @example parseEdifactDateTime("20240615143045", "204") // "2024-06-15T14:30:45"
|
|
38
|
+
* @example parseEdifactDateTime("202406151430", "204") // "" (twelve digits is a 203 value)
|
|
39
|
+
* @example parseEdifactDateTime("202302291430", "203") // "" (2023 has no 29 February)
|
|
40
|
+
* @example parseEdifactDateTime("202406152430", "203") // "" (hour 24)
|
|
41
|
+
* @example parseEdifactDateTime("202406151430+0200", "205") // "" (an offset code: use parseEdifactOffsetDateTime)
|
|
42
|
+
*/
|
|
43
|
+
export declare function parseEdifactDateTime(value: string, format: EdifactDateTimeFormat): string;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { readEdiValue } from "../../internal/ediDateTimeFields.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse a UN/EDIFACT `DTM` value that states a date and a time with no offset, as an ISO 8601
|
|
4
|
+
* local date-time.
|
|
5
|
+
*
|
|
6
|
+
* A `DTM` segment carries its value in data element **2380** and, in data element **2379**, the
|
|
7
|
+
* format code that says how to read it. This function reads the codes whose value is a wall
|
|
8
|
+
* clock at a place the value does not name. Masks and descriptions are the UNTDID directory's,
|
|
9
|
+
* read from
|
|
10
|
+
* [UNECE's D.21B page as archived](http://web.archive.org/web/20240303123657/https://service.unece.org/trade/untdid/d21b/tred/tred2379.htm).
|
|
11
|
+
*
|
|
12
|
+
* ### Format codes
|
|
13
|
+
* | Code | Mask | The directory's description |
|
|
14
|
+
* |---|---|---|
|
|
15
|
+
* | `203` | `CCYYMMDDHHMM` | "Calendar date including time with minutes" |
|
|
16
|
+
* | `204` | `CCYYMMDDHHMMSS` | "Calendar date including time with seconds" |
|
|
17
|
+
*
|
|
18
|
+
* - **The result is local, never UTC.** It carries no `Z` and no offset: reading a `203` value
|
|
19
|
+
* as UTC is the most common EDI timestamp bug. Pass the result and the place's IANA zone to
|
|
20
|
+
* `resolveLocal` to get the instant.
|
|
21
|
+
* - The value must be the digits of its code's mask: `"202406151430"` is a `203` value and not
|
|
22
|
+
* a `204` one.
|
|
23
|
+
* - Seconds are always written in the result, `00` for `203`.
|
|
24
|
+
* - Fields are checked, not clamped: hour 24, second 60, 31 June and 29 February 2023 return
|
|
25
|
+
* `""`.
|
|
26
|
+
* - A two-digit year (`201`, `202`) is not read: UN/EDIFACT does not say which century it
|
|
27
|
+
* belongs to. Read one with
|
|
28
|
+
* `parseDateTimeWithPattern("2406151430", "yyMMddHHmm", undefined, { yearWindow: 2000 })`.
|
|
29
|
+
* - Returns `""` for any other code, a code of another kind included (`205` is read by
|
|
30
|
+
* `parseEdifactOffsetDateTime`), and for a non-string argument.
|
|
31
|
+
*
|
|
32
|
+
* @param value The data element 2380 value (e.g. "202406151430")
|
|
33
|
+
* @param format The data element 2379 format code
|
|
34
|
+
* @returns the local date-time as `YYYY-MM-DDTHH:MM:SS`, or "" on invalid input
|
|
35
|
+
*
|
|
36
|
+
* @example parseEdifactDateTime("202406151430", "203") // "2024-06-15T14:30:00"
|
|
37
|
+
* @example parseEdifactDateTime("20240615143045", "204") // "2024-06-15T14:30:45"
|
|
38
|
+
* @example parseEdifactDateTime("202406151430", "204") // "" (twelve digits is a 203 value)
|
|
39
|
+
* @example parseEdifactDateTime("202302291430", "203") // "" (2023 has no 29 February)
|
|
40
|
+
* @example parseEdifactDateTime("202406152430", "203") // "" (hour 24)
|
|
41
|
+
* @example parseEdifactDateTime("202406151430+0200", "205") // "" (an offset code: use parseEdifactOffsetDateTime)
|
|
42
|
+
*/
|
|
43
|
+
export function parseEdifactDateTime(value, format) {
|
|
44
|
+
try {
|
|
45
|
+
return readEdiValue("edifact", "dateTime", format, value);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// Never throws (Core Rule 3): a hostile argument is invalid input, not an exception.
|
|
49
|
+
return "";
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { EdiDateTimePeriod, EdifactDateTimePeriodFormat } from "../../types/edi.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse a UN/EDIFACT `DTM` value that states a period between two local date-times, as its
|
|
4
|
+
* start and end.
|
|
5
|
+
*
|
|
6
|
+
* A `DTM` segment carries its value in data element **2380** and, in data element **2379**, the
|
|
7
|
+
* format code that says how to read it. The mask and description are the UNTDID directory's,
|
|
8
|
+
* read from
|
|
9
|
+
* [UNECE's D.21B page as archived](http://web.archive.org/web/20240303123657/https://service.unece.org/trade/untdid/d21b/tred/tred2379.htm).
|
|
10
|
+
*
|
|
11
|
+
* ### Format code
|
|
12
|
+
* | Code | Mask | The directory's description |
|
|
13
|
+
* |---|---|---|
|
|
14
|
+
* | `719` | `CCYYMMDDHHMM-CCYYMMDDHHMM` | "A period of time which includes the century, year, month, day, hour and minute. Format of period to be given in actual message without hyphen." |
|
|
15
|
+
*
|
|
16
|
+
* - **A period is transmitted without a hyphen, and a hyphen is rejected.** The hyphen in the
|
|
17
|
+
* mask is notation: `"202406151430202406201600"` reads and `"202406151430-202406201600"`
|
|
18
|
+
* returns `null`.
|
|
19
|
+
* - **`start` and `end` are local date-times as transmitted**, each `YYYY-MM-DDTHH:MM:SS` with
|
|
20
|
+
* seconds `00`. The code carries no offset, so neither names an instant: pass each and the
|
|
21
|
+
* place's IANA zone to `resolveLocal`.
|
|
22
|
+
* - The directory does not say whether the end is inside the period. Pass the pair to the plain
|
|
23
|
+
* interval functions as `(start, end)`, for example
|
|
24
|
+
* `intervalLengthDateTime(period.start, period.end, "hours")`; they leave `end` outside the
|
|
25
|
+
* interval.
|
|
26
|
+
* - **An end before its start returns `null`**: a reversed period names no span of time. An end
|
|
27
|
+
* equal to its start is a valid period.
|
|
28
|
+
* - Fields are checked, not clamped: hour 24, minute 60 and 29 February 2023 return `null`.
|
|
29
|
+
* - A two-digit year (`713`, `YYMMDDHHMM-YYMMDDHHMM`) is not read. Split such a value in two
|
|
30
|
+
* and read each half with `parseDateTimeWithPattern`, a `yy` pattern and its `yearWindow`
|
|
31
|
+
* option.
|
|
32
|
+
* - Returns `null` for any other code, a code of another kind included (`718` is read by
|
|
33
|
+
* `parseEdifactDatePeriod`), and for a non-string argument.
|
|
34
|
+
*
|
|
35
|
+
* @param value The data element 2380 value (e.g. "202406151430202406201600")
|
|
36
|
+
* @param format The data element 2379 format code
|
|
37
|
+
* @returns `{ start, end }`, two ISO 8601 local date-times, or null on invalid input
|
|
38
|
+
*
|
|
39
|
+
* @example parseEdifactDateTimePeriod("202406151430202406201600", "719") // { start: "2024-06-15T14:30:00", end: "2024-06-20T16:00:00" }
|
|
40
|
+
* @example parseEdifactDateTimePeriod("202406151430202406151430", "719") // { start: "2024-06-15T14:30:00", end: "2024-06-15T14:30:00" }
|
|
41
|
+
* @example parseEdifactDateTimePeriod("202406151430-202406201600", "719") // null (a period is transmitted without a hyphen)
|
|
42
|
+
* @example parseEdifactDateTimePeriod("202406151431202406151430", "719") // null (the end precedes the start)
|
|
43
|
+
* @example parseEdifactDateTimePeriod("2024061520240620", "718") // null (a date period code: use parseEdifactDatePeriod)
|
|
44
|
+
*/
|
|
45
|
+
export declare function parseEdifactDateTimePeriod(value: string, format: EdifactDateTimePeriodFormat): EdiDateTimePeriod | null;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { readEdiRange } from "../../internal/ediDateTimeFields.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse a UN/EDIFACT `DTM` value that states a period between two local date-times, as its
|
|
4
|
+
* start and end.
|
|
5
|
+
*
|
|
6
|
+
* A `DTM` segment carries its value in data element **2380** and, in data element **2379**, the
|
|
7
|
+
* format code that says how to read it. The mask and description are the UNTDID directory's,
|
|
8
|
+
* read from
|
|
9
|
+
* [UNECE's D.21B page as archived](http://web.archive.org/web/20240303123657/https://service.unece.org/trade/untdid/d21b/tred/tred2379.htm).
|
|
10
|
+
*
|
|
11
|
+
* ### Format code
|
|
12
|
+
* | Code | Mask | The directory's description |
|
|
13
|
+
* |---|---|---|
|
|
14
|
+
* | `719` | `CCYYMMDDHHMM-CCYYMMDDHHMM` | "A period of time which includes the century, year, month, day, hour and minute. Format of period to be given in actual message without hyphen." |
|
|
15
|
+
*
|
|
16
|
+
* - **A period is transmitted without a hyphen, and a hyphen is rejected.** The hyphen in the
|
|
17
|
+
* mask is notation: `"202406151430202406201600"` reads and `"202406151430-202406201600"`
|
|
18
|
+
* returns `null`.
|
|
19
|
+
* - **`start` and `end` are local date-times as transmitted**, each `YYYY-MM-DDTHH:MM:SS` with
|
|
20
|
+
* seconds `00`. The code carries no offset, so neither names an instant: pass each and the
|
|
21
|
+
* place's IANA zone to `resolveLocal`.
|
|
22
|
+
* - The directory does not say whether the end is inside the period. Pass the pair to the plain
|
|
23
|
+
* interval functions as `(start, end)`, for example
|
|
24
|
+
* `intervalLengthDateTime(period.start, period.end, "hours")`; they leave `end` outside the
|
|
25
|
+
* interval.
|
|
26
|
+
* - **An end before its start returns `null`**: a reversed period names no span of time. An end
|
|
27
|
+
* equal to its start is a valid period.
|
|
28
|
+
* - Fields are checked, not clamped: hour 24, minute 60 and 29 February 2023 return `null`.
|
|
29
|
+
* - A two-digit year (`713`, `YYMMDDHHMM-YYMMDDHHMM`) is not read. Split such a value in two
|
|
30
|
+
* and read each half with `parseDateTimeWithPattern`, a `yy` pattern and its `yearWindow`
|
|
31
|
+
* option.
|
|
32
|
+
* - Returns `null` for any other code, a code of another kind included (`718` is read by
|
|
33
|
+
* `parseEdifactDatePeriod`), and for a non-string argument.
|
|
34
|
+
*
|
|
35
|
+
* @param value The data element 2380 value (e.g. "202406151430202406201600")
|
|
36
|
+
* @param format The data element 2379 format code
|
|
37
|
+
* @returns `{ start, end }`, two ISO 8601 local date-times, or null on invalid input
|
|
38
|
+
*
|
|
39
|
+
* @example parseEdifactDateTimePeriod("202406151430202406201600", "719") // { start: "2024-06-15T14:30:00", end: "2024-06-20T16:00:00" }
|
|
40
|
+
* @example parseEdifactDateTimePeriod("202406151430202406151430", "719") // { start: "2024-06-15T14:30:00", end: "2024-06-15T14:30:00" }
|
|
41
|
+
* @example parseEdifactDateTimePeriod("202406151430-202406201600", "719") // null (a period is transmitted without a hyphen)
|
|
42
|
+
* @example parseEdifactDateTimePeriod("202406151431202406151430", "719") // null (the end precedes the start)
|
|
43
|
+
* @example parseEdifactDateTimePeriod("2024061520240620", "718") // null (a date period code: use parseEdifactDatePeriod)
|
|
44
|
+
*/
|
|
45
|
+
export function parseEdifactDateTimePeriod(value, format) {
|
|
46
|
+
try {
|
|
47
|
+
return readEdiRange("edifact", "dateTimePeriod", format, value);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// Never throws (Core Rule 3): a hostile argument is invalid input, not an exception.
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { EdifactOffsetDateTimeFormat } from "../../types/edi.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse a UN/EDIFACT `DTM` value that states a date and a time with an offset from UTC, as an
|
|
4
|
+
* ISO 8601 date-time with its offset.
|
|
5
|
+
*
|
|
6
|
+
* A `DTM` segment carries its value in data element **2380** and, in data element **2379**, the
|
|
7
|
+
* format code that says how to read it. This function reads the codes whose value names an
|
|
8
|
+
* instant. Masks and descriptions are the UNTDID directory's, read from
|
|
9
|
+
* [UNECE's D.21B page as archived](http://web.archive.org/web/20240303123657/https://service.unece.org/trade/untdid/d21b/tred/tred2379.htm).
|
|
10
|
+
*
|
|
11
|
+
* ### Format codes
|
|
12
|
+
* | Code | Mask | The directory's description |
|
|
13
|
+
* |---|---|---|
|
|
14
|
+
* | `205` | `CCYYMMDDHHMMZHHMM` | "Calendar date including time and time zone expressed in hours and minutes." |
|
|
15
|
+
* | `208` | `CCYYMMDDHHMMSSZHHMM` | "Calendar date including time with seconds, with Time Zone" (D.12A and later) |
|
|
16
|
+
* | `303` | `CCYYMMDDHHMMZZZ` | "See 203 plus Z=Time zone." |
|
|
17
|
+
* | `304` | `CCYYMMDDHHMMSSZZZ` | "See 204 plus Z=Time zone." |
|
|
18
|
+
*
|
|
19
|
+
* - **The result is the wall clock as written, with its offset**: `YYYY-MM-DDTHH:MM:SS±HH:MM`,
|
|
20
|
+
* on its own day and never moved to UTC. It is the string `fromOffsetInstant` writes, so
|
|
21
|
+
* `toOffsetInstant` reads it as the instant and the offset, and every function that takes an
|
|
22
|
+
* instant takes it.
|
|
23
|
+
* - **`ZHHMM` (`205`, `208`) is a sign, hours and minutes** (`+0200`, `-0330`). `-0000` is read
|
|
24
|
+
* as `+00:00`.
|
|
25
|
+
* - **`ZZZ` (`303`, `304`) is read as an offset only.** A signed hour from `00` to `23` (`+02`,
|
|
26
|
+
* `-05`) is that offset: UN/ECE Recommendation 7 ¶12 appends the difference from UTC "in hours
|
|
27
|
+
* and minutes, or hours only, with a leading "+" or "-" sign". The literals `UTC` and `GMT`
|
|
28
|
+
* are `+00:00`: the SMDG container-shipping guides write `UTC` in a `303` value, and
|
|
29
|
+
* Recommendation 7 ¶12 names one scale by both names, "Co-ordinated Universal Time (formerly
|
|
30
|
+
* known as Greenwich Mean Time)".
|
|
31
|
+
* - **Any other three characters return `""`**, letters such as `CET` included: the directory
|
|
32
|
+
* says only "Z = Time zone", no standard defines an abbreviation, and GMT does not guess what
|
|
33
|
+
* one means. Where a partner sends one, read the wall clock with `parseEdifactDateTime` after
|
|
34
|
+
* removing the three letters, and resolve it in the IANA zone you map them to with
|
|
35
|
+
* `resolveLocal`.
|
|
36
|
+
* - **Pass the unescaped element value.** `+` is the EDIFACT data element separator, so an
|
|
37
|
+
* interchange transmits `+02` as `?+02`. Remove the release character first:
|
|
38
|
+
* `"202406151430?+02"` returns `""`.
|
|
39
|
+
* - Seconds are always written in the result, `00` for `205` and `303`. Fields are checked, not
|
|
40
|
+
* clamped: hour 24, second 60 and 29 February 2023 return `""`.
|
|
41
|
+
* - A two-digit year (`206`, `207`, `301`, `302`) is not read.
|
|
42
|
+
* - Returns `""` for any other code, a code of another kind included (`203` is read by
|
|
43
|
+
* `parseEdifactDateTime`), and for a non-string argument.
|
|
44
|
+
*
|
|
45
|
+
* @param value The data element 2380 value, unescaped (e.g. "202406151430+0200")
|
|
46
|
+
* @param format The data element 2379 format code
|
|
47
|
+
* @returns the date-time with its offset as `YYYY-MM-DDTHH:MM:SS±HH:MM`, or "" on invalid input
|
|
48
|
+
*
|
|
49
|
+
* @example parseEdifactOffsetDateTime("202406151430+0200", "205") // "2024-06-15T14:30:00+02:00"
|
|
50
|
+
* @example parseEdifactOffsetDateTime("20240615143045+0530", "208") // "2024-06-15T14:30:45+05:30"
|
|
51
|
+
* @example parseEdifactOffsetDateTime("202406151430+02", "303") // "2024-06-15T14:30:00+02:00"
|
|
52
|
+
* @example parseEdifactOffsetDateTime("20240615143045-05", "304") // "2024-06-15T14:30:45-05:00"
|
|
53
|
+
* @example parseEdifactOffsetDateTime("202406151430UTC", "303") // "2024-06-15T14:30:00+00:00"
|
|
54
|
+
* @example parseEdifactOffsetDateTime("202406151430GMT", "303") // "2024-06-15T14:30:00+00:00"
|
|
55
|
+
* @example parseEdifactOffsetDateTime("202406151430CET", "303") // "" (an abbreviation names no offset)
|
|
56
|
+
* @example parseEdifactOffsetDateTime("202406151430+24", "303") // "" (not a signed hour)
|
|
57
|
+
* @example parseEdifactOffsetDateTime("202406151430?+02", "303") // "" (the release character is the caller's to remove)
|
|
58
|
+
* @example parseEdifactOffsetDateTime("202406151430", "203") // "" (a local code: use parseEdifactDateTime)
|
|
59
|
+
*/
|
|
60
|
+
export declare function parseEdifactOffsetDateTime(value: string, format: EdifactOffsetDateTimeFormat): string;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { readEdiValue } from "../../internal/ediDateTimeFields.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse a UN/EDIFACT `DTM` value that states a date and a time with an offset from UTC, as an
|
|
4
|
+
* ISO 8601 date-time with its offset.
|
|
5
|
+
*
|
|
6
|
+
* A `DTM` segment carries its value in data element **2380** and, in data element **2379**, the
|
|
7
|
+
* format code that says how to read it. This function reads the codes whose value names an
|
|
8
|
+
* instant. Masks and descriptions are the UNTDID directory's, read from
|
|
9
|
+
* [UNECE's D.21B page as archived](http://web.archive.org/web/20240303123657/https://service.unece.org/trade/untdid/d21b/tred/tred2379.htm).
|
|
10
|
+
*
|
|
11
|
+
* ### Format codes
|
|
12
|
+
* | Code | Mask | The directory's description |
|
|
13
|
+
* |---|---|---|
|
|
14
|
+
* | `205` | `CCYYMMDDHHMMZHHMM` | "Calendar date including time and time zone expressed in hours and minutes." |
|
|
15
|
+
* | `208` | `CCYYMMDDHHMMSSZHHMM` | "Calendar date including time with seconds, with Time Zone" (D.12A and later) |
|
|
16
|
+
* | `303` | `CCYYMMDDHHMMZZZ` | "See 203 plus Z=Time zone." |
|
|
17
|
+
* | `304` | `CCYYMMDDHHMMSSZZZ` | "See 204 plus Z=Time zone." |
|
|
18
|
+
*
|
|
19
|
+
* - **The result is the wall clock as written, with its offset**: `YYYY-MM-DDTHH:MM:SS±HH:MM`,
|
|
20
|
+
* on its own day and never moved to UTC. It is the string `fromOffsetInstant` writes, so
|
|
21
|
+
* `toOffsetInstant` reads it as the instant and the offset, and every function that takes an
|
|
22
|
+
* instant takes it.
|
|
23
|
+
* - **`ZHHMM` (`205`, `208`) is a sign, hours and minutes** (`+0200`, `-0330`). `-0000` is read
|
|
24
|
+
* as `+00:00`.
|
|
25
|
+
* - **`ZZZ` (`303`, `304`) is read as an offset only.** A signed hour from `00` to `23` (`+02`,
|
|
26
|
+
* `-05`) is that offset: UN/ECE Recommendation 7 ¶12 appends the difference from UTC "in hours
|
|
27
|
+
* and minutes, or hours only, with a leading "+" or "-" sign". The literals `UTC` and `GMT`
|
|
28
|
+
* are `+00:00`: the SMDG container-shipping guides write `UTC` in a `303` value, and
|
|
29
|
+
* Recommendation 7 ¶12 names one scale by both names, "Co-ordinated Universal Time (formerly
|
|
30
|
+
* known as Greenwich Mean Time)".
|
|
31
|
+
* - **Any other three characters return `""`**, letters such as `CET` included: the directory
|
|
32
|
+
* says only "Z = Time zone", no standard defines an abbreviation, and GMT does not guess what
|
|
33
|
+
* one means. Where a partner sends one, read the wall clock with `parseEdifactDateTime` after
|
|
34
|
+
* removing the three letters, and resolve it in the IANA zone you map them to with
|
|
35
|
+
* `resolveLocal`.
|
|
36
|
+
* - **Pass the unescaped element value.** `+` is the EDIFACT data element separator, so an
|
|
37
|
+
* interchange transmits `+02` as `?+02`. Remove the release character first:
|
|
38
|
+
* `"202406151430?+02"` returns `""`.
|
|
39
|
+
* - Seconds are always written in the result, `00` for `205` and `303`. Fields are checked, not
|
|
40
|
+
* clamped: hour 24, second 60 and 29 February 2023 return `""`.
|
|
41
|
+
* - A two-digit year (`206`, `207`, `301`, `302`) is not read.
|
|
42
|
+
* - Returns `""` for any other code, a code of another kind included (`203` is read by
|
|
43
|
+
* `parseEdifactDateTime`), and for a non-string argument.
|
|
44
|
+
*
|
|
45
|
+
* @param value The data element 2380 value, unescaped (e.g. "202406151430+0200")
|
|
46
|
+
* @param format The data element 2379 format code
|
|
47
|
+
* @returns the date-time with its offset as `YYYY-MM-DDTHH:MM:SS±HH:MM`, or "" on invalid input
|
|
48
|
+
*
|
|
49
|
+
* @example parseEdifactOffsetDateTime("202406151430+0200", "205") // "2024-06-15T14:30:00+02:00"
|
|
50
|
+
* @example parseEdifactOffsetDateTime("20240615143045+0530", "208") // "2024-06-15T14:30:45+05:30"
|
|
51
|
+
* @example parseEdifactOffsetDateTime("202406151430+02", "303") // "2024-06-15T14:30:00+02:00"
|
|
52
|
+
* @example parseEdifactOffsetDateTime("20240615143045-05", "304") // "2024-06-15T14:30:45-05:00"
|
|
53
|
+
* @example parseEdifactOffsetDateTime("202406151430UTC", "303") // "2024-06-15T14:30:00+00:00"
|
|
54
|
+
* @example parseEdifactOffsetDateTime("202406151430GMT", "303") // "2024-06-15T14:30:00+00:00"
|
|
55
|
+
* @example parseEdifactOffsetDateTime("202406151430CET", "303") // "" (an abbreviation names no offset)
|
|
56
|
+
* @example parseEdifactOffsetDateTime("202406151430+24", "303") // "" (not a signed hour)
|
|
57
|
+
* @example parseEdifactOffsetDateTime("202406151430?+02", "303") // "" (the release character is the caller's to remove)
|
|
58
|
+
* @example parseEdifactOffsetDateTime("202406151430", "203") // "" (a local code: use parseEdifactDateTime)
|
|
59
|
+
*/
|
|
60
|
+
export function parseEdifactOffsetDateTime(value, format) {
|
|
61
|
+
try {
|
|
62
|
+
return readEdiValue("edifact", "offsetDateTime", format, value);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// Never throws (Core Rule 3): a hostile argument is invalid input, not an exception.
|
|
66
|
+
return "";
|
|
67
|
+
}
|
|
68
|
+
}
|