@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,62 @@
|
|
|
1
|
+
import type { EdifactOffsetDateTimeFormat } from "../../types/edi.js";
|
|
2
|
+
/**
|
|
3
|
+
* Write an ISO 8601 date-time with an offset as a UN/EDIFACT `DTM` value (data element 2380) in
|
|
4
|
+
* a format code that carries an offset (data element 2379). The inverse of
|
|
5
|
+
* `parseEdifactOffsetDateTime`.
|
|
6
|
+
*
|
|
7
|
+
* Masks and descriptions 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 codes
|
|
11
|
+
* | Code | Mask | The directory's description |
|
|
12
|
+
* |---|---|---|
|
|
13
|
+
* | `205` | `CCYYMMDDHHMMZHHMM` | "Calendar date including time and time zone expressed in hours and minutes." |
|
|
14
|
+
* | `208` | `CCYYMMDDHHMMSSZHHMM` | "Calendar date including time with seconds, with Time Zone" (D.12A and later) |
|
|
15
|
+
* | `303` | `CCYYMMDDHHMMZZZ` | "See 203 plus Z=Time zone." |
|
|
16
|
+
* | `304` | `CCYYMMDDHHMMSSZZZ` | "See 204 plus Z=Time zone." |
|
|
17
|
+
*
|
|
18
|
+
* - `value` is an ISO 8601 date-time with an offset (`2024-06-15T14:30:00+02:00`) or a `Z`
|
|
19
|
+
* instant, as `toOffsetInstant` reads it: the string `parseEdifactOffsetDateTime` returns and
|
|
20
|
+
* `fromOffsetInstant` writes. A local date-time, a date and a time return `""`: there is no
|
|
21
|
+
* offset to write.
|
|
22
|
+
* - **The digits are the value's own wall clock**, never the UTC clock:
|
|
23
|
+
* `2024-01-01T00:30:00+02:00` under `303` is `202401010030+02`. A `Z` instant is written on
|
|
24
|
+
* the UTC clock with `+0000` or `+00`.
|
|
25
|
+
* - **`ZZZ` (`303`, `304`) is always written `±HH`**, the hours-only form of UN/ECE
|
|
26
|
+
* Recommendation 7 ¶12, never `UTC` or `GMT`. **It holds whole hours only**: an offset such
|
|
27
|
+
* as `+05:30` returns `""` under `303` and `304`. Write it under `205` or `208`, whose `ZHHMM`
|
|
28
|
+
* holds hours and minutes.
|
|
29
|
+
* - **An offset with a non-zero seconds part returns `""` under every code**, `205` and `208`
|
|
30
|
+
* included. A seconds part of zero (`+02:00:00`) is the offset `+02:00` and is written.
|
|
31
|
+
* `ZHHMM` holds hours and minutes and `ZZZ` hours, so no mask holds the seconds of an offset
|
|
32
|
+
* such as `-00:44:30`, the offset `Africa/Monrovia` kept until 1972. An offset is never
|
|
33
|
+
* rounded: the value would name another instant. Write the same instant in `Z` form
|
|
34
|
+
* instead.
|
|
35
|
+
* - Precision is cut to the mask, never rounded: a fraction of a second is always dropped, and
|
|
36
|
+
* `205` and `303` drop the seconds too.
|
|
37
|
+
* - **The output is the element value, not segment text.** `+` is the EDIFACT data element
|
|
38
|
+
* separator, so a value that holds one must be released when it is placed in a segment: write
|
|
39
|
+
* `?+`. The function does not add the release character.
|
|
40
|
+
* - A bracketed RFC 9557 time zone is read as `toOffsetInstant` reads it: it must agree with
|
|
41
|
+
* the offset, and beside `Z` it sets the clock the digits are written on.
|
|
42
|
+
* - A wall clock whose year is outside 0000–9999 returns `""`.
|
|
43
|
+
* - Returns `""` for any other code, a code of another kind included, and for a non-string
|
|
44
|
+
* argument.
|
|
45
|
+
*
|
|
46
|
+
* @param value ISO 8601 date-time with an offset or `Z` (e.g. "2024-06-15T14:30:00+02:00")
|
|
47
|
+
* @param format The data element 2379 format code
|
|
48
|
+
* @returns the data element 2380 value, unescaped, or "" on invalid input
|
|
49
|
+
*
|
|
50
|
+
* @example formatEdifactOffsetDateTime("2024-06-15T14:30:00+02:00", "205") // "202406151430+0200"
|
|
51
|
+
* @example formatEdifactOffsetDateTime("2024-06-15T14:30:45+05:30", "208") // "20240615143045+0530"
|
|
52
|
+
* @example formatEdifactOffsetDateTime("2024-06-15T14:30:00+02:00", "303") // "202406151430+02"
|
|
53
|
+
* @example formatEdifactOffsetDateTime("2024-06-15T14:30:45-05:00", "304") // "20240615143045-05"
|
|
54
|
+
* @example formatEdifactOffsetDateTime("2024-06-15T14:30:00Z", "205") // "202406151430+0000"
|
|
55
|
+
* @example formatEdifactOffsetDateTime("2024-06-15T14:30:00Z", "303") // "202406151430+00" (never "UTC")
|
|
56
|
+
* @example formatEdifactOffsetDateTime("2024-06-15T14:30:45.9+02:00", "205") // "202406151430+0200" (cut to the minute)
|
|
57
|
+
* @example formatEdifactOffsetDateTime("2024-06-15T14:30:00+05:30", "303") // "" (the field holds whole hours: use 205 or 208)
|
|
58
|
+
* @example formatEdifactOffsetDateTime("1960-01-01T00:20:00-00:44:30", "208") // "" (no mask holds a non-zero seconds part of an offset)
|
|
59
|
+
* @example formatEdifactOffsetDateTime("2024-06-15T14:30:00", "205") // "" (a local date-time has no offset to write)
|
|
60
|
+
* @example formatEdifactOffsetDateTime("2024-06-15T14:30:00+02:00", "203") // "" (a local code: use formatEdifactDateTime)
|
|
61
|
+
*/
|
|
62
|
+
export declare function formatEdifactOffsetDateTime(value: string, format: EdifactOffsetDateTimeFormat): string;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { writeEdiValue } from "../../internal/ediDateTimeWriter.js";
|
|
2
|
+
/**
|
|
3
|
+
* Write an ISO 8601 date-time with an offset as a UN/EDIFACT `DTM` value (data element 2380) in
|
|
4
|
+
* a format code that carries an offset (data element 2379). The inverse of
|
|
5
|
+
* `parseEdifactOffsetDateTime`.
|
|
6
|
+
*
|
|
7
|
+
* Masks and descriptions 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 codes
|
|
11
|
+
* | Code | Mask | The directory's description |
|
|
12
|
+
* |---|---|---|
|
|
13
|
+
* | `205` | `CCYYMMDDHHMMZHHMM` | "Calendar date including time and time zone expressed in hours and minutes." |
|
|
14
|
+
* | `208` | `CCYYMMDDHHMMSSZHHMM` | "Calendar date including time with seconds, with Time Zone" (D.12A and later) |
|
|
15
|
+
* | `303` | `CCYYMMDDHHMMZZZ` | "See 203 plus Z=Time zone." |
|
|
16
|
+
* | `304` | `CCYYMMDDHHMMSSZZZ` | "See 204 plus Z=Time zone." |
|
|
17
|
+
*
|
|
18
|
+
* - `value` is an ISO 8601 date-time with an offset (`2024-06-15T14:30:00+02:00`) or a `Z`
|
|
19
|
+
* instant, as `toOffsetInstant` reads it: the string `parseEdifactOffsetDateTime` returns and
|
|
20
|
+
* `fromOffsetInstant` writes. A local date-time, a date and a time return `""`: there is no
|
|
21
|
+
* offset to write.
|
|
22
|
+
* - **The digits are the value's own wall clock**, never the UTC clock:
|
|
23
|
+
* `2024-01-01T00:30:00+02:00` under `303` is `202401010030+02`. A `Z` instant is written on
|
|
24
|
+
* the UTC clock with `+0000` or `+00`.
|
|
25
|
+
* - **`ZZZ` (`303`, `304`) is always written `±HH`**, the hours-only form of UN/ECE
|
|
26
|
+
* Recommendation 7 ¶12, never `UTC` or `GMT`. **It holds whole hours only**: an offset such
|
|
27
|
+
* as `+05:30` returns `""` under `303` and `304`. Write it under `205` or `208`, whose `ZHHMM`
|
|
28
|
+
* holds hours and minutes.
|
|
29
|
+
* - **An offset with a non-zero seconds part returns `""` under every code**, `205` and `208`
|
|
30
|
+
* included. A seconds part of zero (`+02:00:00`) is the offset `+02:00` and is written.
|
|
31
|
+
* `ZHHMM` holds hours and minutes and `ZZZ` hours, so no mask holds the seconds of an offset
|
|
32
|
+
* such as `-00:44:30`, the offset `Africa/Monrovia` kept until 1972. An offset is never
|
|
33
|
+
* rounded: the value would name another instant. Write the same instant in `Z` form
|
|
34
|
+
* instead.
|
|
35
|
+
* - Precision is cut to the mask, never rounded: a fraction of a second is always dropped, and
|
|
36
|
+
* `205` and `303` drop the seconds too.
|
|
37
|
+
* - **The output is the element value, not segment text.** `+` is the EDIFACT data element
|
|
38
|
+
* separator, so a value that holds one must be released when it is placed in a segment: write
|
|
39
|
+
* `?+`. The function does not add the release character.
|
|
40
|
+
* - A bracketed RFC 9557 time zone is read as `toOffsetInstant` reads it: it must agree with
|
|
41
|
+
* the offset, and beside `Z` it sets the clock the digits are written on.
|
|
42
|
+
* - A wall clock whose year is outside 0000–9999 returns `""`.
|
|
43
|
+
* - Returns `""` for any other code, a code of another kind included, and for a non-string
|
|
44
|
+
* argument.
|
|
45
|
+
*
|
|
46
|
+
* @param value ISO 8601 date-time with an offset or `Z` (e.g. "2024-06-15T14:30:00+02:00")
|
|
47
|
+
* @param format The data element 2379 format code
|
|
48
|
+
* @returns the data element 2380 value, unescaped, or "" on invalid input
|
|
49
|
+
*
|
|
50
|
+
* @example formatEdifactOffsetDateTime("2024-06-15T14:30:00+02:00", "205") // "202406151430+0200"
|
|
51
|
+
* @example formatEdifactOffsetDateTime("2024-06-15T14:30:45+05:30", "208") // "20240615143045+0530"
|
|
52
|
+
* @example formatEdifactOffsetDateTime("2024-06-15T14:30:00+02:00", "303") // "202406151430+02"
|
|
53
|
+
* @example formatEdifactOffsetDateTime("2024-06-15T14:30:45-05:00", "304") // "20240615143045-05"
|
|
54
|
+
* @example formatEdifactOffsetDateTime("2024-06-15T14:30:00Z", "205") // "202406151430+0000"
|
|
55
|
+
* @example formatEdifactOffsetDateTime("2024-06-15T14:30:00Z", "303") // "202406151430+00" (never "UTC")
|
|
56
|
+
* @example formatEdifactOffsetDateTime("2024-06-15T14:30:45.9+02:00", "205") // "202406151430+0200" (cut to the minute)
|
|
57
|
+
* @example formatEdifactOffsetDateTime("2024-06-15T14:30:00+05:30", "303") // "" (the field holds whole hours: use 205 or 208)
|
|
58
|
+
* @example formatEdifactOffsetDateTime("1960-01-01T00:20:00-00:44:30", "208") // "" (no mask holds a non-zero seconds part of an offset)
|
|
59
|
+
* @example formatEdifactOffsetDateTime("2024-06-15T14:30:00", "205") // "" (a local date-time has no offset to write)
|
|
60
|
+
* @example formatEdifactOffsetDateTime("2024-06-15T14:30:00+02:00", "203") // "" (a local code: use formatEdifactDateTime)
|
|
61
|
+
*/
|
|
62
|
+
export function formatEdifactOffsetDateTime(value, format) {
|
|
63
|
+
try {
|
|
64
|
+
return writeEdiValue("edifact", "offsetDateTime", format, value);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// Never throws (Core Rule 3): a hostile argument is invalid input, not an exception.
|
|
68
|
+
return "";
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { EdifactTimeFormat } from "../../types/edi.js";
|
|
2
|
+
/**
|
|
3
|
+
* Write an ISO 8601 time as a UN/EDIFACT `DTM` value (data element 2380) in a time format code
|
|
4
|
+
* (data element 2379). The inverse of `parseEdifactTime`.
|
|
5
|
+
*
|
|
6
|
+
* Masks and descriptions are the UNTDID directory's, read from
|
|
7
|
+
* [UNECE's D.21B page as archived](http://web.archive.org/web/20240303123657/https://service.unece.org/trade/untdid/d21b/tred/tred2379.htm).
|
|
8
|
+
*
|
|
9
|
+
* ### Format codes
|
|
10
|
+
* | Code | Mask | The directory's description |
|
|
11
|
+
* |---|---|---|
|
|
12
|
+
* | `401` | `HHMM` | "Time without seconds: H = Hour; m = Minute." |
|
|
13
|
+
* | `402` | `HHMMSS` | "Time with seconds: H = Hour; m = Minute; s = Seconds." |
|
|
14
|
+
*
|
|
15
|
+
* - `value` is a time, as `isValidTime` accepts it: `HH:MM`, with seconds and a fraction of a
|
|
16
|
+
* second if it has them. A date-time, a date or a time with an offset returns `""`.
|
|
17
|
+
* - Precision is cut to the mask, never rounded: a fraction of a second is always dropped, and
|
|
18
|
+
* `401` drops the seconds too. `14:30:59.9` is `1430` under `401` and `143059` under `402`,
|
|
19
|
+
* and `parseEdifactTime` reads back the time the mask holds.
|
|
20
|
+
* - Returns `""` for any other code, a code of another kind included, and for a non-string
|
|
21
|
+
* argument.
|
|
22
|
+
*
|
|
23
|
+
* @param value ISO 8601 time (e.g. "14:30:00")
|
|
24
|
+
* @param format The data element 2379 format code
|
|
25
|
+
* @returns the data element 2380 value, or "" on invalid input
|
|
26
|
+
*
|
|
27
|
+
* @example formatEdifactTime("14:30:00", "401") // "1430"
|
|
28
|
+
* @example formatEdifactTime("14:30:45", "402") // "143045"
|
|
29
|
+
* @example formatEdifactTime("14:30:45", "401") // "1430" (the mask has no seconds)
|
|
30
|
+
* @example formatEdifactTime("14:30:45.9", "402") // "143045" (cut, not rounded)
|
|
31
|
+
* @example formatEdifactTime("14:30", "402") // "143000"
|
|
32
|
+
* @example formatEdifactTime("2024-06-15T14:30:00", "401") // "" (a date-time is not a time)
|
|
33
|
+
* @example formatEdifactTime("24:00", "401") // "" (not a real time)
|
|
34
|
+
*/
|
|
35
|
+
export declare function formatEdifactTime(value: string, format: EdifactTimeFormat): string;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { writeEdiValue } from "../../internal/ediDateTimeWriter.js";
|
|
2
|
+
/**
|
|
3
|
+
* Write an ISO 8601 time as a UN/EDIFACT `DTM` value (data element 2380) in a time format code
|
|
4
|
+
* (data element 2379). The inverse of `parseEdifactTime`.
|
|
5
|
+
*
|
|
6
|
+
* Masks and descriptions are the UNTDID directory's, read from
|
|
7
|
+
* [UNECE's D.21B page as archived](http://web.archive.org/web/20240303123657/https://service.unece.org/trade/untdid/d21b/tred/tred2379.htm).
|
|
8
|
+
*
|
|
9
|
+
* ### Format codes
|
|
10
|
+
* | Code | Mask | The directory's description |
|
|
11
|
+
* |---|---|---|
|
|
12
|
+
* | `401` | `HHMM` | "Time without seconds: H = Hour; m = Minute." |
|
|
13
|
+
* | `402` | `HHMMSS` | "Time with seconds: H = Hour; m = Minute; s = Seconds." |
|
|
14
|
+
*
|
|
15
|
+
* - `value` is a time, as `isValidTime` accepts it: `HH:MM`, with seconds and a fraction of a
|
|
16
|
+
* second if it has them. A date-time, a date or a time with an offset returns `""`.
|
|
17
|
+
* - Precision is cut to the mask, never rounded: a fraction of a second is always dropped, and
|
|
18
|
+
* `401` drops the seconds too. `14:30:59.9` is `1430` under `401` and `143059` under `402`,
|
|
19
|
+
* and `parseEdifactTime` reads back the time the mask holds.
|
|
20
|
+
* - Returns `""` for any other code, a code of another kind included, and for a non-string
|
|
21
|
+
* argument.
|
|
22
|
+
*
|
|
23
|
+
* @param value ISO 8601 time (e.g. "14:30:00")
|
|
24
|
+
* @param format The data element 2379 format code
|
|
25
|
+
* @returns the data element 2380 value, or "" on invalid input
|
|
26
|
+
*
|
|
27
|
+
* @example formatEdifactTime("14:30:00", "401") // "1430"
|
|
28
|
+
* @example formatEdifactTime("14:30:45", "402") // "143045"
|
|
29
|
+
* @example formatEdifactTime("14:30:45", "401") // "1430" (the mask has no seconds)
|
|
30
|
+
* @example formatEdifactTime("14:30:45.9", "402") // "143045" (cut, not rounded)
|
|
31
|
+
* @example formatEdifactTime("14:30", "402") // "143000"
|
|
32
|
+
* @example formatEdifactTime("2024-06-15T14:30:00", "401") // "" (a date-time is not a time)
|
|
33
|
+
* @example formatEdifactTime("24:00", "401") // "" (not a real time)
|
|
34
|
+
*/
|
|
35
|
+
export function formatEdifactTime(value, format) {
|
|
36
|
+
try {
|
|
37
|
+
return writeEdiValue("edifact", "time", format, value);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// Never throws (Core Rule 3): a hostile argument is invalid input, not an exception.
|
|
41
|
+
return "";
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { OffsetInstant } from "../../instant/convert/toOffsetInstant.js";
|
|
2
|
+
import type { EpcisEventTime } from "../../types/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* Write an instant-plus-offset pair as the two required time fields of a GS1 EPCIS 2.0 event.
|
|
5
|
+
*
|
|
6
|
+
* EPCIS (ISO/IEC 19987) is GS1's event standard for supply-chain visibility. Every event must
|
|
7
|
+
* carry `eventTime`, the instant, and `eventTimeZoneOffset`, the offset the local clock ran at
|
|
8
|
+
* where the event happened. The inverse of `parseEpcisEvent`, whose result it takes as it is.
|
|
9
|
+
*
|
|
10
|
+
* - **`eventTime` is the instant in UTC, ending in `Z`**, as `Temporal.Instant.prototype.toString`
|
|
11
|
+
* writes it: seconds always present, and a fraction kept to the nanosecond with no trailing
|
|
12
|
+
* zeros and no padding. It always matches `epcisEventTime`, the `DateTimeStamp` pattern of
|
|
13
|
+
* the EPCIS XSD, and so is valid in the XML binding and in the JSON one (`format: date-time`).
|
|
14
|
+
* - **`eventTimeZoneOffset` is `offset`**, which must match `epcisTimeZoneOffset`, the pattern
|
|
15
|
+
* of the EPCIS JSON schema and the rule of EPCIS Standard Release 2.0 §7.4.1
|
|
16
|
+
* (https://ref.gs1.org/standards/epcis/): `±HH:MM` from `-14:00` to `+14:00`. That is narrower than the offsets a pair can hold, so an offset with
|
|
17
|
+
* seconds (`+05:30:00`, `-00:44:30`), one past 14 hours (`+14:30`) and `Z` return null, although
|
|
18
|
+
* `fromOffsetInstant` accepts some of them. Nothing is rounded to fit.
|
|
19
|
+
* - `-00:00` matches the GS1 pattern and is written as `+00:00`, the spelling `parseEpcisEvent`
|
|
20
|
+
* returns.
|
|
21
|
+
* - `instant` is any instant `isValidInstant` accepts: `Z`, an offset, or an offset with a
|
|
22
|
+
* bracketed zone. Only the instant is read, so an offset written in `instant` does not have to
|
|
23
|
+
* equal `offset`.
|
|
24
|
+
* - **`timeZone` is not read.** EPCIS has no field for a zone, so a pair's zone is dropped, and
|
|
25
|
+
* one that is invalid or disagrees with `offset` changes nothing. `fromOffsetInstant` is the
|
|
26
|
+
* function that checks a zone against its offset.
|
|
27
|
+
* - `eventTime` has a four-digit year, so an instant whose UTC year is outside 0000–9999 returns
|
|
28
|
+
* null. `parseEpcisEvent` can return one, from an `eventTime` whose own offset carries it
|
|
29
|
+
* across either end of that range, and such a result cannot be written back.
|
|
30
|
+
* - Returns null when `value` is not an object, when `instant` is not a valid instant, and when
|
|
31
|
+
* `offset` is missing, not a string, or outside the GS1 pattern.
|
|
32
|
+
*
|
|
33
|
+
* @param value `{ instant, offset }` pair, as `parseEpcisEvent` or `toOffsetInstant` returns it
|
|
34
|
+
* @returns `{ eventTime, eventTimeZoneOffset }`, or null on invalid input
|
|
35
|
+
*
|
|
36
|
+
* @example formatEpcisEvent({ instant: "2024-06-15T14:30:00Z", offset: "-05:00" }) // { eventTime: "2024-06-15T14:30:00Z", eventTimeZoneOffset: "-05:00" }
|
|
37
|
+
* @example formatEpcisEvent({ instant: "2024-06-15T09:30:00-05:00", offset: "-05:00" }) // { eventTime: "2024-06-15T14:30:00Z", eventTimeZoneOffset: "-05:00" } (the instant is written in UTC)
|
|
38
|
+
* @example formatEpcisEvent({ instant: "2024-06-15T14:30:00.120Z", offset: "+05:45" }) // { eventTime: "2024-06-15T14:30:00.12Z", eventTimeZoneOffset: "+05:45" }
|
|
39
|
+
* @example formatEpcisEvent({ instant: "2024-06-15T14:30:00Z", offset: "-04:00", timeZone: "America/New_York" }) // { eventTime: "2024-06-15T14:30:00Z", eventTimeZoneOffset: "-04:00" } (EPCIS carries no zone)
|
|
40
|
+
* @example formatEpcisEvent({ instant: "2024-06-15T14:30:00Z", offset: "-00:00" }) // { eventTime: "2024-06-15T14:30:00Z", eventTimeZoneOffset: "+00:00" }
|
|
41
|
+
* @example formatEpcisEvent({ instant: "2024-06-15T14:30:00Z", offset: "+14:30" }) // null (past the range GS1 allows)
|
|
42
|
+
* @example formatEpcisEvent({ instant: "2024-06-15T14:30:00Z", offset: "+05:30:00" }) // null (GS1 offsets have no seconds)
|
|
43
|
+
* @example formatEpcisEvent({ instant: "2024-06-15T14:30:00Z", offset: "Z" }) // null (a designator, not an offset)
|
|
44
|
+
* @example formatEpcisEvent({ instant: "2024-06-15T14:30:00", offset: "-05:00" }) // null (no offset: not an instant)
|
|
45
|
+
* @example formatEpcisEvent({ instant: "+010000-01-01T00:00:00Z", offset: "-05:00" }) // null (eventTime has a four-digit year)
|
|
46
|
+
*/
|
|
47
|
+
export declare function formatEpcisEvent(value: OffsetInstant): EpcisEventTime | null;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import { formatUtcOffset, isObject, parseInstantNanoseconds, parseUtcOffsetNanoseconds, } from "../../internal/index.js";
|
|
3
|
+
import { epcisEventTime, epcisTimeZoneOffset } from "../../regex/index.js";
|
|
4
|
+
/**
|
|
5
|
+
* Write an instant-plus-offset pair as the two required time fields of a GS1 EPCIS 2.0 event.
|
|
6
|
+
*
|
|
7
|
+
* EPCIS (ISO/IEC 19987) is GS1's event standard for supply-chain visibility. Every event must
|
|
8
|
+
* carry `eventTime`, the instant, and `eventTimeZoneOffset`, the offset the local clock ran at
|
|
9
|
+
* where the event happened. The inverse of `parseEpcisEvent`, whose result it takes as it is.
|
|
10
|
+
*
|
|
11
|
+
* - **`eventTime` is the instant in UTC, ending in `Z`**, as `Temporal.Instant.prototype.toString`
|
|
12
|
+
* writes it: seconds always present, and a fraction kept to the nanosecond with no trailing
|
|
13
|
+
* zeros and no padding. It always matches `epcisEventTime`, the `DateTimeStamp` pattern of
|
|
14
|
+
* the EPCIS XSD, and so is valid in the XML binding and in the JSON one (`format: date-time`).
|
|
15
|
+
* - **`eventTimeZoneOffset` is `offset`**, which must match `epcisTimeZoneOffset`, the pattern
|
|
16
|
+
* of the EPCIS JSON schema and the rule of EPCIS Standard Release 2.0 §7.4.1
|
|
17
|
+
* (https://ref.gs1.org/standards/epcis/): `±HH:MM` from `-14:00` to `+14:00`. That is narrower than the offsets a pair can hold, so an offset with
|
|
18
|
+
* seconds (`+05:30:00`, `-00:44:30`), one past 14 hours (`+14:30`) and `Z` return null, although
|
|
19
|
+
* `fromOffsetInstant` accepts some of them. Nothing is rounded to fit.
|
|
20
|
+
* - `-00:00` matches the GS1 pattern and is written as `+00:00`, the spelling `parseEpcisEvent`
|
|
21
|
+
* returns.
|
|
22
|
+
* - `instant` is any instant `isValidInstant` accepts: `Z`, an offset, or an offset with a
|
|
23
|
+
* bracketed zone. Only the instant is read, so an offset written in `instant` does not have to
|
|
24
|
+
* equal `offset`.
|
|
25
|
+
* - **`timeZone` is not read.** EPCIS has no field for a zone, so a pair's zone is dropped, and
|
|
26
|
+
* one that is invalid or disagrees with `offset` changes nothing. `fromOffsetInstant` is the
|
|
27
|
+
* function that checks a zone against its offset.
|
|
28
|
+
* - `eventTime` has a four-digit year, so an instant whose UTC year is outside 0000–9999 returns
|
|
29
|
+
* null. `parseEpcisEvent` can return one, from an `eventTime` whose own offset carries it
|
|
30
|
+
* across either end of that range, and such a result cannot be written back.
|
|
31
|
+
* - Returns null when `value` is not an object, when `instant` is not a valid instant, and when
|
|
32
|
+
* `offset` is missing, not a string, or outside the GS1 pattern.
|
|
33
|
+
*
|
|
34
|
+
* @param value `{ instant, offset }` pair, as `parseEpcisEvent` or `toOffsetInstant` returns it
|
|
35
|
+
* @returns `{ eventTime, eventTimeZoneOffset }`, or null on invalid input
|
|
36
|
+
*
|
|
37
|
+
* @example formatEpcisEvent({ instant: "2024-06-15T14:30:00Z", offset: "-05:00" }) // { eventTime: "2024-06-15T14:30:00Z", eventTimeZoneOffset: "-05:00" }
|
|
38
|
+
* @example formatEpcisEvent({ instant: "2024-06-15T09:30:00-05:00", offset: "-05:00" }) // { eventTime: "2024-06-15T14:30:00Z", eventTimeZoneOffset: "-05:00" } (the instant is written in UTC)
|
|
39
|
+
* @example formatEpcisEvent({ instant: "2024-06-15T14:30:00.120Z", offset: "+05:45" }) // { eventTime: "2024-06-15T14:30:00.12Z", eventTimeZoneOffset: "+05:45" }
|
|
40
|
+
* @example formatEpcisEvent({ instant: "2024-06-15T14:30:00Z", offset: "-04:00", timeZone: "America/New_York" }) // { eventTime: "2024-06-15T14:30:00Z", eventTimeZoneOffset: "-04:00" } (EPCIS carries no zone)
|
|
41
|
+
* @example formatEpcisEvent({ instant: "2024-06-15T14:30:00Z", offset: "-00:00" }) // { eventTime: "2024-06-15T14:30:00Z", eventTimeZoneOffset: "+00:00" }
|
|
42
|
+
* @example formatEpcisEvent({ instant: "2024-06-15T14:30:00Z", offset: "+14:30" }) // null (past the range GS1 allows)
|
|
43
|
+
* @example formatEpcisEvent({ instant: "2024-06-15T14:30:00Z", offset: "+05:30:00" }) // null (GS1 offsets have no seconds)
|
|
44
|
+
* @example formatEpcisEvent({ instant: "2024-06-15T14:30:00Z", offset: "Z" }) // null (a designator, not an offset)
|
|
45
|
+
* @example formatEpcisEvent({ instant: "2024-06-15T14:30:00", offset: "-05:00" }) // null (no offset: not an instant)
|
|
46
|
+
* @example formatEpcisEvent({ instant: "+010000-01-01T00:00:00Z", offset: "-05:00" }) // null (eventTime has a four-digit year)
|
|
47
|
+
*/
|
|
48
|
+
export function formatEpcisEvent(value) {
|
|
49
|
+
try {
|
|
50
|
+
if (!isObject(value)) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
const { instant, offset } = value;
|
|
54
|
+
// GS1's pattern is tested on the offset as written, before it is canonicalised: `+05:30:00`
|
|
55
|
+
// names the same offset as `+05:30`, and it is still not a value the field can hold.
|
|
56
|
+
if (typeof offset !== "string" || !epcisTimeZoneOffset.test(offset)) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
const epochNanoseconds = parseInstantNanoseconds(instant);
|
|
60
|
+
// Temporal reads the offset and writes it back, so `-00:00` comes out as `+00:00`, as it
|
|
61
|
+
// does from `parseEpcisEvent`.
|
|
62
|
+
const offsetNanoseconds = parseUtcOffsetNanoseconds(offset);
|
|
63
|
+
const eventTimeZoneOffset = offsetNanoseconds === null ? null : formatUtcOffset(offsetNanoseconds);
|
|
64
|
+
if (epochNanoseconds === null || eventTimeZoneOffset === null) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
const eventTime = Temporal.Instant.fromEpochNanoseconds(epochNanoseconds).toString();
|
|
68
|
+
// Temporal writes a year outside 0000–9999 with a sign and six digits, which `eventTime`
|
|
69
|
+
// cannot carry. The pattern is the check, so no year is compared by hand.
|
|
70
|
+
return epcisEventTime.test(eventTime)
|
|
71
|
+
? { eventTime, eventTimeZoneOffset }
|
|
72
|
+
: null;
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Never throws (Core Rule 3): a hostile
|
|
76
|
+
// argument is invalid input, not an exception.
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { X12DateFormat } from "../../types/edi.js";
|
|
2
|
+
/**
|
|
3
|
+
* Write an ISO 8601 date as an X12 Date Time Period value (data element 1251) in a date format
|
|
4
|
+
* qualifier (data element 1250). The inverse of `parseX12Date`.
|
|
5
|
+
*
|
|
6
|
+
* Codes are release 005010, read from
|
|
7
|
+
* [Stedi's X12-licensed dictionary](https://www.stedi.com/edi/x12-005010/element/1250); the X12
|
|
8
|
+
* text itself was not reached.
|
|
9
|
+
*
|
|
10
|
+
* ### Format codes
|
|
11
|
+
* | Code | Mask | The dictionary's definition |
|
|
12
|
+
* |---|---|---|
|
|
13
|
+
* | `D8` | `CCYYMMDD` | "Date Expressed in Format CCYYMMDD" |
|
|
14
|
+
* | `DB` | `MMDDCCYY` | "Date Expressed in Format MMDDCCYY" |
|
|
15
|
+
*
|
|
16
|
+
* - `value` is a date, as `isValidDate` accepts it. A date-time, an instant or a time returns
|
|
17
|
+
* `""`, as `formatDate` returns `""` for them: pass the date alone.
|
|
18
|
+
* - Each field is zero-padded to the width the mask gives it.
|
|
19
|
+
* - **`D8` also writes data element 373 (Date)**, the `CCYYMMDD` date element of `AT7`, `G62`
|
|
20
|
+
* and `DTM-02`.
|
|
21
|
+
* - A year outside 0000–9999 returns `""`: `CCYY` is four digits and no sign.
|
|
22
|
+
* - Returns `""` for any other code, a code of another kind included, and for a non-string
|
|
23
|
+
* argument.
|
|
24
|
+
*
|
|
25
|
+
* @param value ISO 8601 date (e.g. "2024-06-15")
|
|
26
|
+
* @param format X12 data element 1250 format qualifier
|
|
27
|
+
* @returns the data element 1251 value, or "" on invalid input
|
|
28
|
+
*
|
|
29
|
+
* @example formatX12Date("2024-06-15", "D8") // "20240615"
|
|
30
|
+
* @example formatX12Date("2024-06-15", "DB") // "06152024"
|
|
31
|
+
* @example formatX12Date("2024-06-15T14:30", "D8") // "" (a date-time is not a date)
|
|
32
|
+
* @example formatX12Date("2023-02-29", "D8") // "" (not a real date)
|
|
33
|
+
* @example formatX12Date("2024-06-15", "DT") // "" (a date-time code: use formatX12DateTime)
|
|
34
|
+
*/
|
|
35
|
+
export declare function formatX12Date(value: string, format: X12DateFormat): string;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { writeEdiValue } from "../../internal/ediDateTimeWriter.js";
|
|
2
|
+
/**
|
|
3
|
+
* Write an ISO 8601 date as an X12 Date Time Period value (data element 1251) in a date format
|
|
4
|
+
* qualifier (data element 1250). The inverse of `parseX12Date`.
|
|
5
|
+
*
|
|
6
|
+
* Codes are release 005010, read from
|
|
7
|
+
* [Stedi's X12-licensed dictionary](https://www.stedi.com/edi/x12-005010/element/1250); the X12
|
|
8
|
+
* text itself was not reached.
|
|
9
|
+
*
|
|
10
|
+
* ### Format codes
|
|
11
|
+
* | Code | Mask | The dictionary's definition |
|
|
12
|
+
* |---|---|---|
|
|
13
|
+
* | `D8` | `CCYYMMDD` | "Date Expressed in Format CCYYMMDD" |
|
|
14
|
+
* | `DB` | `MMDDCCYY` | "Date Expressed in Format MMDDCCYY" |
|
|
15
|
+
*
|
|
16
|
+
* - `value` is a date, as `isValidDate` accepts it. A date-time, an instant or a time returns
|
|
17
|
+
* `""`, as `formatDate` returns `""` for them: pass the date alone.
|
|
18
|
+
* - Each field is zero-padded to the width the mask gives it.
|
|
19
|
+
* - **`D8` also writes data element 373 (Date)**, the `CCYYMMDD` date element of `AT7`, `G62`
|
|
20
|
+
* and `DTM-02`.
|
|
21
|
+
* - A year outside 0000–9999 returns `""`: `CCYY` is four digits and no sign.
|
|
22
|
+
* - Returns `""` for any other code, a code of another kind included, and for a non-string
|
|
23
|
+
* argument.
|
|
24
|
+
*
|
|
25
|
+
* @param value ISO 8601 date (e.g. "2024-06-15")
|
|
26
|
+
* @param format X12 data element 1250 format qualifier
|
|
27
|
+
* @returns the data element 1251 value, or "" on invalid input
|
|
28
|
+
*
|
|
29
|
+
* @example formatX12Date("2024-06-15", "D8") // "20240615"
|
|
30
|
+
* @example formatX12Date("2024-06-15", "DB") // "06152024"
|
|
31
|
+
* @example formatX12Date("2024-06-15T14:30", "D8") // "" (a date-time is not a date)
|
|
32
|
+
* @example formatX12Date("2023-02-29", "D8") // "" (not a real date)
|
|
33
|
+
* @example formatX12Date("2024-06-15", "DT") // "" (a date-time code: use formatX12DateTime)
|
|
34
|
+
*/
|
|
35
|
+
export function formatX12Date(value, format) {
|
|
36
|
+
try {
|
|
37
|
+
return writeEdiValue("x12", "date", format, value);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// Never throws (Core Rule 3): a hostile argument is invalid input, not an exception.
|
|
41
|
+
return "";
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { X12DateRangeFormat } from "../../types/edi.js";
|
|
2
|
+
/**
|
|
3
|
+
* Write two ISO 8601 dates as an X12 Date Time Period range (data element 1251) in a date range
|
|
4
|
+
* format qualifier (data element 1250). The inverse of `parseX12DateRange`.
|
|
5
|
+
*
|
|
6
|
+
* Codes are release 005010, read from
|
|
7
|
+
* [Stedi's X12-licensed dictionary](https://www.stedi.com/edi/x12-005010/element/1250); the X12
|
|
8
|
+
* text itself was not reached.
|
|
9
|
+
*
|
|
10
|
+
* ### Format codes
|
|
11
|
+
* | Code | Mask | The dictionary's definition |
|
|
12
|
+
* |---|---|---|
|
|
13
|
+
* | `RD8` | `CCYYMMDD-CCYYMMDD` | "Range of Dates Expressed in Format CCYYMMDD-CCYYMMDD" |
|
|
14
|
+
* | `RD` | `MMDDCCYY-MMDDCCYY` | "Range of Dates Expressed in Format MMDDCCYY-MMDDCCYY" |
|
|
15
|
+
*
|
|
16
|
+
* - `start` and `end` are dates, as `isValidDate` accepts them: the two members
|
|
17
|
+
* `parseX12DateRange` returns. A date-time, an instant or a time returns `""`.
|
|
18
|
+
* - **The range is written with the one hyphen X12 transmits**: 15 to 20 June 2024 is
|
|
19
|
+
* `20240615-20240620` under `RD8`.
|
|
20
|
+
* - **An end before its start returns `""`**: a reversed range names no span of time. An end
|
|
21
|
+
* equal to its start is written.
|
|
22
|
+
* - A year outside 0000–9999 in either date returns `""`.
|
|
23
|
+
* - Returns `""` for any other code, a code of another kind included, and for a non-string
|
|
24
|
+
* argument.
|
|
25
|
+
*
|
|
26
|
+
* @param start ISO 8601 date the range starts on (e.g. "2024-06-15")
|
|
27
|
+
* @param end ISO 8601 date the range ends on (e.g. "2024-06-20")
|
|
28
|
+
* @param format X12 data element 1250 format qualifier
|
|
29
|
+
* @returns the data element 1251 value, or "" on invalid input
|
|
30
|
+
*
|
|
31
|
+
* @example formatX12DateRange("2024-06-15", "2024-06-20", "RD8") // "20240615-20240620"
|
|
32
|
+
* @example formatX12DateRange("2024-06-15", "2024-06-20", "RD") // "06152024-06202024"
|
|
33
|
+
* @example formatX12DateRange("2024-06-20", "2024-06-15", "RD8") // "" (the end precedes the start)
|
|
34
|
+
* @example formatX12DateRange("2024-06-15T14:30", "2024-06-20", "RD8") // "" (a date-time is not a date)
|
|
35
|
+
* @example formatX12DateRange("2024-06-15", "2023-02-29", "RD8") // "" (not a real date)
|
|
36
|
+
*/
|
|
37
|
+
export declare function formatX12DateRange(start: string, end: string, format: X12DateRangeFormat): string;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { writeEdiRange } from "../../internal/ediDateTimeWriter.js";
|
|
2
|
+
/**
|
|
3
|
+
* Write two ISO 8601 dates as an X12 Date Time Period range (data element 1251) in a date range
|
|
4
|
+
* format qualifier (data element 1250). The inverse of `parseX12DateRange`.
|
|
5
|
+
*
|
|
6
|
+
* Codes are release 005010, read from
|
|
7
|
+
* [Stedi's X12-licensed dictionary](https://www.stedi.com/edi/x12-005010/element/1250); the X12
|
|
8
|
+
* text itself was not reached.
|
|
9
|
+
*
|
|
10
|
+
* ### Format codes
|
|
11
|
+
* | Code | Mask | The dictionary's definition |
|
|
12
|
+
* |---|---|---|
|
|
13
|
+
* | `RD8` | `CCYYMMDD-CCYYMMDD` | "Range of Dates Expressed in Format CCYYMMDD-CCYYMMDD" |
|
|
14
|
+
* | `RD` | `MMDDCCYY-MMDDCCYY` | "Range of Dates Expressed in Format MMDDCCYY-MMDDCCYY" |
|
|
15
|
+
*
|
|
16
|
+
* - `start` and `end` are dates, as `isValidDate` accepts them: the two members
|
|
17
|
+
* `parseX12DateRange` returns. A date-time, an instant or a time returns `""`.
|
|
18
|
+
* - **The range is written with the one hyphen X12 transmits**: 15 to 20 June 2024 is
|
|
19
|
+
* `20240615-20240620` under `RD8`.
|
|
20
|
+
* - **An end before its start returns `""`**: a reversed range names no span of time. An end
|
|
21
|
+
* equal to its start is written.
|
|
22
|
+
* - A year outside 0000–9999 in either date returns `""`.
|
|
23
|
+
* - Returns `""` for any other code, a code of another kind included, and for a non-string
|
|
24
|
+
* argument.
|
|
25
|
+
*
|
|
26
|
+
* @param start ISO 8601 date the range starts on (e.g. "2024-06-15")
|
|
27
|
+
* @param end ISO 8601 date the range ends on (e.g. "2024-06-20")
|
|
28
|
+
* @param format X12 data element 1250 format qualifier
|
|
29
|
+
* @returns the data element 1251 value, or "" on invalid input
|
|
30
|
+
*
|
|
31
|
+
* @example formatX12DateRange("2024-06-15", "2024-06-20", "RD8") // "20240615-20240620"
|
|
32
|
+
* @example formatX12DateRange("2024-06-15", "2024-06-20", "RD") // "06152024-06202024"
|
|
33
|
+
* @example formatX12DateRange("2024-06-20", "2024-06-15", "RD8") // "" (the end precedes the start)
|
|
34
|
+
* @example formatX12DateRange("2024-06-15T14:30", "2024-06-20", "RD8") // "" (a date-time is not a date)
|
|
35
|
+
* @example formatX12DateRange("2024-06-15", "2023-02-29", "RD8") // "" (not a real date)
|
|
36
|
+
*/
|
|
37
|
+
export function formatX12DateRange(start, end, format) {
|
|
38
|
+
try {
|
|
39
|
+
return writeEdiRange("x12", "dateRange", format, start, end);
|
|
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,39 @@
|
|
|
1
|
+
import type { X12DateTimeFormat } from "../../types/edi.js";
|
|
2
|
+
/**
|
|
3
|
+
* Write an ISO 8601 local date-time as an X12 Date Time Period value (data element 1251) in a
|
|
4
|
+
* date-time format qualifier (data element 1250). The inverse of `parseX12DateTime`.
|
|
5
|
+
*
|
|
6
|
+
* Codes are release 005010, read from
|
|
7
|
+
* [Stedi's X12-licensed dictionary](https://www.stedi.com/edi/x12-005010/element/1250); the X12
|
|
8
|
+
* text itself was not reached.
|
|
9
|
+
*
|
|
10
|
+
* ### Format codes
|
|
11
|
+
* | Code | Mask | The dictionary's definition |
|
|
12
|
+
* |---|---|---|
|
|
13
|
+
* | `DT` | `CCYYMMDDHHMM` | "Date and Time Expressed in Format CCYYMMDDHHMM" |
|
|
14
|
+
* | `RTS` | `CCYYMMDDHHMMSS` | "Date and Time Expressed in Format CCYYMMDDHHMMSS" |
|
|
15
|
+
*
|
|
16
|
+
* - `value` is a local date-time, as `isValidDateTime` accepts it. A date and a time return
|
|
17
|
+
* `""`.
|
|
18
|
+
* - **No 1250 code carries an offset**, so an instant ending in `Z` and a date-time with an
|
|
19
|
+
* offset return `""`: an instant is not written as a wall clock. Pass the local date-time.
|
|
20
|
+
* - Precision is cut to the mask, never rounded: a fraction of a second is always dropped, and
|
|
21
|
+
* `DT` drops the seconds too. `2024-06-15T14:30:45.9` is `202406151430` under `DT` and
|
|
22
|
+
* `20240615143045` under `RTS`.
|
|
23
|
+
* - A year outside 0000–9999 returns `""`: `CCYY` is four digits and no sign.
|
|
24
|
+
* - Returns `""` for any other code, a code of another kind included, and for a non-string
|
|
25
|
+
* argument.
|
|
26
|
+
*
|
|
27
|
+
* @param value ISO 8601 local date-time (e.g. "2024-06-15T14:30:00")
|
|
28
|
+
* @param format X12 data element 1250 format qualifier
|
|
29
|
+
* @returns the data element 1251 value, or "" on invalid input
|
|
30
|
+
*
|
|
31
|
+
* @example formatX12DateTime("2024-06-15T14:30:00", "DT") // "202406151430"
|
|
32
|
+
* @example formatX12DateTime("2024-06-15T14:30:45", "RTS") // "20240615143045"
|
|
33
|
+
* @example formatX12DateTime("2024-06-15T14:30:45", "DT") // "202406151430" (the mask has no seconds)
|
|
34
|
+
* @example formatX12DateTime("2024-06-15T14:30:45.9", "RTS") // "20240615143045" (cut, not rounded)
|
|
35
|
+
* @example formatX12DateTime("2024-06-15", "DT") // "" (a date is not a date-time)
|
|
36
|
+
* @example formatX12DateTime("2024-06-15T14:30:00Z", "DT") // "" (no 1250 code carries an offset)
|
|
37
|
+
* @example formatX12DateTime("2023-02-29T14:30:00", "DT") // "" (not a real date)
|
|
38
|
+
*/
|
|
39
|
+
export declare function formatX12DateTime(value: string, format: X12DateTimeFormat): string;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { writeEdiValue } from "../../internal/ediDateTimeWriter.js";
|
|
2
|
+
/**
|
|
3
|
+
* Write an ISO 8601 local date-time as an X12 Date Time Period value (data element 1251) in a
|
|
4
|
+
* date-time format qualifier (data element 1250). The inverse of `parseX12DateTime`.
|
|
5
|
+
*
|
|
6
|
+
* Codes are release 005010, read from
|
|
7
|
+
* [Stedi's X12-licensed dictionary](https://www.stedi.com/edi/x12-005010/element/1250); the X12
|
|
8
|
+
* text itself was not reached.
|
|
9
|
+
*
|
|
10
|
+
* ### Format codes
|
|
11
|
+
* | Code | Mask | The dictionary's definition |
|
|
12
|
+
* |---|---|---|
|
|
13
|
+
* | `DT` | `CCYYMMDDHHMM` | "Date and Time Expressed in Format CCYYMMDDHHMM" |
|
|
14
|
+
* | `RTS` | `CCYYMMDDHHMMSS` | "Date and Time Expressed in Format CCYYMMDDHHMMSS" |
|
|
15
|
+
*
|
|
16
|
+
* - `value` is a local date-time, as `isValidDateTime` accepts it. A date and a time return
|
|
17
|
+
* `""`.
|
|
18
|
+
* - **No 1250 code carries an offset**, so an instant ending in `Z` and a date-time with an
|
|
19
|
+
* offset return `""`: an instant is not written as a wall clock. Pass the local date-time.
|
|
20
|
+
* - Precision is cut to the mask, never rounded: a fraction of a second is always dropped, and
|
|
21
|
+
* `DT` drops the seconds too. `2024-06-15T14:30:45.9` is `202406151430` under `DT` and
|
|
22
|
+
* `20240615143045` under `RTS`.
|
|
23
|
+
* - A year outside 0000–9999 returns `""`: `CCYY` is four digits and no sign.
|
|
24
|
+
* - Returns `""` for any other code, a code of another kind included, and for a non-string
|
|
25
|
+
* argument.
|
|
26
|
+
*
|
|
27
|
+
* @param value ISO 8601 local date-time (e.g. "2024-06-15T14:30:00")
|
|
28
|
+
* @param format X12 data element 1250 format qualifier
|
|
29
|
+
* @returns the data element 1251 value, or "" on invalid input
|
|
30
|
+
*
|
|
31
|
+
* @example formatX12DateTime("2024-06-15T14:30:00", "DT") // "202406151430"
|
|
32
|
+
* @example formatX12DateTime("2024-06-15T14:30:45", "RTS") // "20240615143045"
|
|
33
|
+
* @example formatX12DateTime("2024-06-15T14:30:45", "DT") // "202406151430" (the mask has no seconds)
|
|
34
|
+
* @example formatX12DateTime("2024-06-15T14:30:45.9", "RTS") // "20240615143045" (cut, not rounded)
|
|
35
|
+
* @example formatX12DateTime("2024-06-15", "DT") // "" (a date is not a date-time)
|
|
36
|
+
* @example formatX12DateTime("2024-06-15T14:30:00Z", "DT") // "" (no 1250 code carries an offset)
|
|
37
|
+
* @example formatX12DateTime("2023-02-29T14:30:00", "DT") // "" (not a real date)
|
|
38
|
+
*/
|
|
39
|
+
export function formatX12DateTime(value, format) {
|
|
40
|
+
try {
|
|
41
|
+
return writeEdiValue("x12", "dateTime", format, value);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// Never throws (Core Rule 3): a hostile argument is invalid input, not an exception.
|
|
45
|
+
return "";
|
|
46
|
+
}
|
|
47
|
+
}
|