@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,384 @@
|
|
|
1
|
+
/** What each half of a value of each kind is: a period of dates is two dates. */
|
|
2
|
+
const VALUE_KIND = {
|
|
3
|
+
date: "date",
|
|
4
|
+
time: "time",
|
|
5
|
+
dateTime: "dateTime",
|
|
6
|
+
offsetDateTime: "offsetDateTime",
|
|
7
|
+
datePeriod: "date",
|
|
8
|
+
dateTimePeriod: "dateTime",
|
|
9
|
+
dateRange: "date",
|
|
10
|
+
dateTimeRange: "dateTime",
|
|
11
|
+
};
|
|
12
|
+
/** Hour, 00–23. */
|
|
13
|
+
const HH = "([01][0-9]|2[0-3])";
|
|
14
|
+
/** Minute, 00–59. */
|
|
15
|
+
const MI = "([0-5][0-9])";
|
|
16
|
+
/** The regex source of each part: one capture group, the field's whole range of digits. */
|
|
17
|
+
const FRAGMENT = {
|
|
18
|
+
// Century and year: four digits.
|
|
19
|
+
CCYY: "(\\d{4})",
|
|
20
|
+
// Month, 01–12.
|
|
21
|
+
MM: "(0[1-9]|1[0-2])",
|
|
22
|
+
// Day of month, 01–31.
|
|
23
|
+
DD: "(0[1-9]|[12][0-9]|3[01])",
|
|
24
|
+
HH,
|
|
25
|
+
MI,
|
|
26
|
+
// Second, 00–59. `60` does not match: GMT rejects a leap second, which Temporal would read as 59.
|
|
27
|
+
SS: "([0-5][0-9])",
|
|
28
|
+
// Element 337: "D = tenths (0-9)". One digit.
|
|
29
|
+
SD: "(\\d)",
|
|
30
|
+
// Element 337: "DD = hundredths (00-99)". Two digits.
|
|
31
|
+
SDD: "(\\d{2})",
|
|
32
|
+
// 2379 codes 205 and 208: "Z is plus (+) or minus (-)", then hours and minutes.
|
|
33
|
+
ZS: "([+-])",
|
|
34
|
+
ZH: HH,
|
|
35
|
+
ZM: MI,
|
|
36
|
+
// 2379 codes 303 and 304: a signed hour `[+-]HH`, 00–23 (Rec 7 ¶12), or the literals `UTC` and
|
|
37
|
+
// `GMT`. Nothing else is read: no UN/EDIFACT text defines a zone abbreviation, and a sign or a
|
|
38
|
+
// digit outside a valid signed hour (`+24`, `000`) is a broken offset (GMT rule; see the file
|
|
39
|
+
// header).
|
|
40
|
+
ZZZ: "([+-](?:[01][0-9]|2[0-3])|UTC|GMT)",
|
|
41
|
+
};
|
|
42
|
+
/** The `ZHHMM` offset of 2379 codes 205 and 208: sign, hours, minutes. */
|
|
43
|
+
const ZHHMM = ["ZS", "ZH", "ZM"];
|
|
44
|
+
/** The parts' sources joined, anchored, flagless; a period's halves joined by `join`. */
|
|
45
|
+
function grammarOf(layout, join) {
|
|
46
|
+
const source = (parts) => parts.map((part) => FRAGMENT[part]).join("");
|
|
47
|
+
const end = layout.end === undefined ? "" : `${join}${source(layout.end)}`;
|
|
48
|
+
return new RegExp(`^${source(layout.start)}${end}$`);
|
|
49
|
+
}
|
|
50
|
+
/** A grammar table from a layout table, in the layout table's key order. */
|
|
51
|
+
function grammarsOf(layouts, join) {
|
|
52
|
+
const grammars = {};
|
|
53
|
+
for (const code of Object.keys(layouts)) {
|
|
54
|
+
grammars[code] = grammarOf(layouts[code], join);
|
|
55
|
+
}
|
|
56
|
+
return grammars;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The 11 UNTDID 2379 codes GMT reads, in directory order: a date (`102`), a date and time
|
|
60
|
+
* (`203`, `204`), a date and time with a `ZHHMM` offset (`205`, `208`), a date and time with
|
|
61
|
+
* three zone characters (`303`, `304`), a time (`401`, `402`) and a period (`718`, `719`).
|
|
62
|
+
*
|
|
63
|
+
* Every other 2379 code returns the sentinel; the file header lists the ones cut and why.
|
|
64
|
+
*/
|
|
65
|
+
export const EDIFACT_DTM_FORMATS = [
|
|
66
|
+
"102",
|
|
67
|
+
"203",
|
|
68
|
+
"204",
|
|
69
|
+
"205",
|
|
70
|
+
"208",
|
|
71
|
+
"303",
|
|
72
|
+
"304",
|
|
73
|
+
"401",
|
|
74
|
+
"402",
|
|
75
|
+
"718",
|
|
76
|
+
"719",
|
|
77
|
+
];
|
|
78
|
+
/**
|
|
79
|
+
* UNTDID 2379 code → its kind and its value's parts. Typed kind by kind from the public unions,
|
|
80
|
+
* so a missing code, and a code filed under a kind its union does not name, both fail typecheck.
|
|
81
|
+
*/
|
|
82
|
+
const EDIFACT_DTM_LAYOUT = {
|
|
83
|
+
// 102 CCYYMMDD — "Calendar date: C = Century ; Y = Year ; M = Month ; D = Day."
|
|
84
|
+
"102": { kind: "date", start: ["CCYY", "MM", "DD"] },
|
|
85
|
+
// 203 CCYYMMDDHHMM — "Calendar date including time with minutes"
|
|
86
|
+
"203": { kind: "dateTime", start: ["CCYY", "MM", "DD", "HH", "MI"] },
|
|
87
|
+
// 204 CCYYMMDDHHMMSS — "Calendar date including time with seconds"
|
|
88
|
+
"204": { kind: "dateTime", start: ["CCYY", "MM", "DD", "HH", "MI", "SS"] },
|
|
89
|
+
// 205 CCYYMMDDHHMMZHHMM — "Calendar date including time and time zone expressed in hours and minutes."
|
|
90
|
+
"205": {
|
|
91
|
+
kind: "offsetDateTime",
|
|
92
|
+
start: ["CCYY", "MM", "DD", "HH", "MI", ...ZHHMM],
|
|
93
|
+
},
|
|
94
|
+
// 208 CCYYMMDDHHMMSSZHHMM — "Calendar date including time with seconds, with Time Zone: … Z = leading plus/minus sign, HHMM = difference to UTC in Hours and Minutes." (D.12A on)
|
|
95
|
+
"208": {
|
|
96
|
+
kind: "offsetDateTime",
|
|
97
|
+
start: ["CCYY", "MM", "DD", "HH", "MI", "SS", ...ZHHMM],
|
|
98
|
+
},
|
|
99
|
+
// 303 CCYYMMDDHHMMZZZ — "See 203 plus Z=Time zone."
|
|
100
|
+
"303": {
|
|
101
|
+
kind: "offsetDateTime",
|
|
102
|
+
start: ["CCYY", "MM", "DD", "HH", "MI", "ZZZ"],
|
|
103
|
+
},
|
|
104
|
+
// 304 CCYYMMDDHHMMSSZZZ — "See 204 plus Z=Time zone."
|
|
105
|
+
"304": {
|
|
106
|
+
kind: "offsetDateTime",
|
|
107
|
+
start: ["CCYY", "MM", "DD", "HH", "MI", "SS", "ZZZ"],
|
|
108
|
+
},
|
|
109
|
+
// 401 HHMM — "Time without seconds: H = Hour; m = Minute."
|
|
110
|
+
"401": { kind: "time", start: ["HH", "MI"] },
|
|
111
|
+
// 402 HHMMSS — "Time with seconds: H = Hour; m = Minute; s = Seconds."
|
|
112
|
+
"402": { kind: "time", start: ["HH", "MI", "SS"] },
|
|
113
|
+
// 718 CCYYMMDD-CCYYMMDD — "A period of time specified by giving the start date followed by the end date (both including century)."
|
|
114
|
+
"718": {
|
|
115
|
+
kind: "datePeriod",
|
|
116
|
+
start: ["CCYY", "MM", "DD"],
|
|
117
|
+
end: ["CCYY", "MM", "DD"],
|
|
118
|
+
},
|
|
119
|
+
// 719 CCYYMMDDHHMM-CCYYMMDDHHMM — "A period of time which includes the century, year, month, day, hour and minute."
|
|
120
|
+
"719": {
|
|
121
|
+
kind: "dateTimePeriod",
|
|
122
|
+
start: ["CCYY", "MM", "DD", "HH", "MI"],
|
|
123
|
+
end: ["CCYY", "MM", "DD", "HH", "MI"],
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
/**
|
|
127
|
+
* UNTDID 2379 code → the anchored, flagless grammar of its value. A period's halves are run
|
|
128
|
+
* together with nothing between them: every directory read gives a period "without hyphen" (the
|
|
129
|
+
* file header quotes each entry).
|
|
130
|
+
*/
|
|
131
|
+
export const EDIFACT_DTM_GRAMMAR = grammarsOf(EDIFACT_DTM_LAYOUT, "");
|
|
132
|
+
/**
|
|
133
|
+
* The 10 X12 1250 codes GMT reads: a date (`D8`, `DB`), a date and time (`DT`, `RTS`), a time
|
|
134
|
+
* (`TM`, `TS`), a range of dates (`RD8`, `RD`) and a range of date-times (`RDT`, `DTS`).
|
|
135
|
+
*
|
|
136
|
+
* The other 32 of the 42 codes return the sentinel; the file header lists the ones cut and why.
|
|
137
|
+
* `TS` is also a code of data element 623, with an unrelated meaning there.
|
|
138
|
+
*/
|
|
139
|
+
export const X12_DATE_TIME_PERIOD_FORMATS = ["D8", "DB", "DT", "RTS", "TM", "TS", "RD8", "RD", "RDT", "DTS"];
|
|
140
|
+
/**
|
|
141
|
+
* X12 1250 code → its kind and its value's parts. Typed kind by kind from the public unions, so
|
|
142
|
+
* a missing code, and a code filed under a kind its union does not name, both fail typecheck.
|
|
143
|
+
*/
|
|
144
|
+
const X12_DATE_TIME_PERIOD_LAYOUT = {
|
|
145
|
+
// D8 CCYYMMDD — "Date Expressed in Format CCYYMMDD"
|
|
146
|
+
D8: { kind: "date", start: ["CCYY", "MM", "DD"] },
|
|
147
|
+
// DB MMDDCCYY — "Date Expressed in Format MMDDCCYY"
|
|
148
|
+
DB: { kind: "date", start: ["MM", "DD", "CCYY"] },
|
|
149
|
+
// DT CCYYMMDDHHMM — "Date and Time Expressed in Format CCYYMMDDHHMM"
|
|
150
|
+
DT: { kind: "dateTime", start: ["CCYY", "MM", "DD", "HH", "MI"] },
|
|
151
|
+
// RTS CCYYMMDDHHMMSS — "Date and Time Expressed in Format CCYYMMDDHHMMSS" (one date-time despite the R)
|
|
152
|
+
RTS: { kind: "dateTime", start: ["CCYY", "MM", "DD", "HH", "MI", "SS"] },
|
|
153
|
+
// TM HHMM — "Time Expressed in Format HHMM"
|
|
154
|
+
TM: { kind: "time", start: ["HH", "MI"] },
|
|
155
|
+
// TS HHMMSS — "Time Expressed in Format HHMMSS"
|
|
156
|
+
TS: { kind: "time", start: ["HH", "MI", "SS"] },
|
|
157
|
+
// RD8 CCYYMMDD-CCYYMMDD — "Range of Dates Expressed in Format CCYYMMDD-CCYYMMDD"
|
|
158
|
+
RD8: {
|
|
159
|
+
kind: "dateRange",
|
|
160
|
+
start: ["CCYY", "MM", "DD"],
|
|
161
|
+
end: ["CCYY", "MM", "DD"],
|
|
162
|
+
},
|
|
163
|
+
// RD MMDDCCYY-MMDDCCYY — "Range of Dates Expressed in Format MMDDCCYY-MMDDCCYY"
|
|
164
|
+
RD: {
|
|
165
|
+
kind: "dateRange",
|
|
166
|
+
start: ["MM", "DD", "CCYY"],
|
|
167
|
+
end: ["MM", "DD", "CCYY"],
|
|
168
|
+
},
|
|
169
|
+
// RDT CCYYMMDDHHMM-CCYYMMDDHHMM — "Range of Date and Time, Expressed in Format CCYYMMDDHHMM-CCYYMMDDHHMM"
|
|
170
|
+
RDT: {
|
|
171
|
+
kind: "dateTimeRange",
|
|
172
|
+
start: ["CCYY", "MM", "DD", "HH", "MI"],
|
|
173
|
+
end: ["CCYY", "MM", "DD", "HH", "MI"],
|
|
174
|
+
},
|
|
175
|
+
// DTS CCYYMMDDHHMMSS-CCYYMMDDHHMMSS — "Range of Date and Time Expressed in Format CCYYMMDDHHMMSS-CCYYMMDDHHMMSS" (a range despite having no R)
|
|
176
|
+
DTS: {
|
|
177
|
+
kind: "dateTimeRange",
|
|
178
|
+
start: ["CCYY", "MM", "DD", "HH", "MI", "SS"],
|
|
179
|
+
end: ["CCYY", "MM", "DD", "HH", "MI", "SS"],
|
|
180
|
+
},
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* X12 1250 code → the anchored, flagless grammar of its value. A range's halves are joined by
|
|
184
|
+
* exactly one hyphen, the one X12 transmits.
|
|
185
|
+
*/
|
|
186
|
+
export const X12_DATE_TIME_PERIOD_GRAMMAR = grammarsOf(X12_DATE_TIME_PERIOD_LAYOUT, "-");
|
|
187
|
+
/**
|
|
188
|
+
* X12 data element 337 (Time), the time element of `AT7`, `G62` and `DTM-03`: "Time expressed in
|
|
189
|
+
* 24-hour clock time as follows: HHMM, or HHMMSS, or HHMMSSD, or HHMMSSDD, where H = hours
|
|
190
|
+
* (00-23), M = minutes (00-59), S = integer seconds (00-59) and DD = decimal seconds; decimal
|
|
191
|
+
* seconds are expressed as follows: D = tenths (0-9) and DD = hundredths (00-99)", length 4 to 8
|
|
192
|
+
* (release 005010, https://www.stedi.com/edi/x12-005010/element/337).
|
|
193
|
+
*
|
|
194
|
+
* Mask → its parts, keyed by the element's own four masks in the order the definition gives
|
|
195
|
+
* them. Not a 1250 table: the element has no format qualifier, its four- and six-digit forms
|
|
196
|
+
* coincide with `TM` and `TS`, and no 1250 code holds decimal seconds. Typed from the public
|
|
197
|
+
* union, so a missing form fails typecheck.
|
|
198
|
+
*/
|
|
199
|
+
export const X12_TIME_ELEMENT_LAYOUT = {
|
|
200
|
+
// HHMM — "H = hours (00-23), M = minutes (00-59)"
|
|
201
|
+
HHMM: { kind: "time", start: ["HH", "MI"] },
|
|
202
|
+
// HHMMSS — "S = integer seconds (00-59)"
|
|
203
|
+
HHMMSS: { kind: "time", start: ["HH", "MI", "SS"] },
|
|
204
|
+
// HHMMSSD — "D = tenths (0-9)"
|
|
205
|
+
HHMMSSD: { kind: "time", start: ["HH", "MI", "SS", "SD"] },
|
|
206
|
+
// HHMMSSDD — "DD = hundredths (00-99)"
|
|
207
|
+
HHMMSSDD: { kind: "time", start: ["HH", "MI", "SS", "SDD"] },
|
|
208
|
+
};
|
|
209
|
+
/**
|
|
210
|
+
* The four forms of X12 data element 337, shortest first: the layout table's own keys, so the
|
|
211
|
+
* list cannot name a form the table lacks.
|
|
212
|
+
*/
|
|
213
|
+
export const X12_TIME_ELEMENT_FORMS = Object.keys(X12_TIME_ELEMENT_LAYOUT);
|
|
214
|
+
/**
|
|
215
|
+
* Element 337 form → the anchored, flagless grammar of its value. The four masks have four
|
|
216
|
+
* lengths (4, 6, 7 and 8 digits), so a value fits one form or none, and the reader needs no
|
|
217
|
+
* qualifier to tell them apart.
|
|
218
|
+
*/
|
|
219
|
+
export const X12_TIME_ELEMENT_GRAMMAR = grammarsOf(X12_TIME_ELEMENT_LAYOUT, "");
|
|
220
|
+
/**
|
|
221
|
+
* The milliseconds one unit of each decimal-seconds part is worth: a tenth of a second is 100
|
|
222
|
+
* and a hundredth is 10. The reader multiplies by it and the writer divides by it, so the two
|
|
223
|
+
* agree on what `D` and `DD` mean.
|
|
224
|
+
*/
|
|
225
|
+
export const MILLISECONDS_PER_DECIMAL_SECOND = { SD: 100, SDD: 10 };
|
|
226
|
+
/**
|
|
227
|
+
* Look a form of X12 data element 337 up by its mask, for the writer
|
|
228
|
+
* (`writeX12TimeElement`), whose caller names the form. The reader (`readX12Time`) is given no
|
|
229
|
+
* form: it tries the grammar of each form in the same table.
|
|
230
|
+
*
|
|
231
|
+
* - Matching is exact and by own key, so `"__proto__"`, `" HHMM"` and `"hhmm"` are not forms.
|
|
232
|
+
* - Null for a data element 1250 code (`TM`, `TS`): a qualifier is not a mask.
|
|
233
|
+
* - Null for a non-string argument.
|
|
234
|
+
*
|
|
235
|
+
* @param form the element's mask: `HHMM`, `HHMMSS`, `HHMMSSD` or `HHMMSSDD`
|
|
236
|
+
* @returns the form's parts in mask order, as a single time, or null
|
|
237
|
+
*
|
|
238
|
+
* @example x12TimeElementLayoutOf("HHMMSSDD") // { kind: "time", start: ["HH", "MI", "SS", "SDD"] }
|
|
239
|
+
* @example x12TimeElementLayoutOf("TS") // null (a 1250 code, not a mask)
|
|
240
|
+
* @example x12TimeElementLayoutOf("__proto__") // null
|
|
241
|
+
*/
|
|
242
|
+
export function x12TimeElementLayoutOf(form) {
|
|
243
|
+
return typeof form === "string" &&
|
|
244
|
+
Object.hasOwn(X12_TIME_ELEMENT_LAYOUT, form)
|
|
245
|
+
? X12_TIME_ELEMENT_LAYOUT[form]
|
|
246
|
+
: null;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* The 56 X12 623 codes, release 008010, in dictionary order: `01`–`12` (UTC+1 … UTC+12), `13`–`24`
|
|
250
|
+
* (UTC−12 … UTC−1, descending), `25`–`29` (the half-hour offsets, added in release 006010), then
|
|
251
|
+
* the 27 letter codes. Release 005010 has the 51 codes other than `25`–`29`. Membership is by
|
|
252
|
+
* this list, never by shape. `TS`, `TT`, `CD` and `MD` are also codes of data element 1250, with
|
|
253
|
+
* unrelated meanings there.
|
|
254
|
+
*/
|
|
255
|
+
export const X12_TIME_CODES = [
|
|
256
|
+
// fallow-ignore-next-line code-duplication -- the 56 DE 623 codes as a runtime list; `X12TimeCode` in types/edi.ts is the same enumeration in type position
|
|
257
|
+
"01",
|
|
258
|
+
"02",
|
|
259
|
+
"03",
|
|
260
|
+
"04",
|
|
261
|
+
"05",
|
|
262
|
+
"06",
|
|
263
|
+
"07",
|
|
264
|
+
"08",
|
|
265
|
+
"09",
|
|
266
|
+
"10",
|
|
267
|
+
"11",
|
|
268
|
+
"12",
|
|
269
|
+
"13",
|
|
270
|
+
"14",
|
|
271
|
+
"15",
|
|
272
|
+
"16",
|
|
273
|
+
"17",
|
|
274
|
+
"18",
|
|
275
|
+
"19",
|
|
276
|
+
"20",
|
|
277
|
+
"21",
|
|
278
|
+
"22",
|
|
279
|
+
"23",
|
|
280
|
+
"24",
|
|
281
|
+
"25",
|
|
282
|
+
"26",
|
|
283
|
+
"27",
|
|
284
|
+
"28",
|
|
285
|
+
"29",
|
|
286
|
+
"AD",
|
|
287
|
+
"AS",
|
|
288
|
+
"AT",
|
|
289
|
+
"CD",
|
|
290
|
+
"CS",
|
|
291
|
+
"CT",
|
|
292
|
+
"ED",
|
|
293
|
+
"ES",
|
|
294
|
+
"ET",
|
|
295
|
+
"GM",
|
|
296
|
+
"HD",
|
|
297
|
+
"HS",
|
|
298
|
+
"HT",
|
|
299
|
+
"LT",
|
|
300
|
+
"MD",
|
|
301
|
+
"MS",
|
|
302
|
+
"MT",
|
|
303
|
+
"ND",
|
|
304
|
+
"NS",
|
|
305
|
+
"NT",
|
|
306
|
+
"PD",
|
|
307
|
+
"PS",
|
|
308
|
+
"PT",
|
|
309
|
+
"TD",
|
|
310
|
+
"TS",
|
|
311
|
+
"TT",
|
|
312
|
+
"UT",
|
|
313
|
+
];
|
|
314
|
+
const EDI_CODE_TABLES = {
|
|
315
|
+
edifact: {
|
|
316
|
+
layouts: EDIFACT_DTM_LAYOUT,
|
|
317
|
+
grammars: EDIFACT_DTM_GRAMMAR,
|
|
318
|
+
// UNTDID 2379, every directory read (twelve, from D.93A to D.22B): a period is given
|
|
319
|
+
// "without hyphen".
|
|
320
|
+
rangeSeparator: "",
|
|
321
|
+
},
|
|
322
|
+
x12: {
|
|
323
|
+
layouts: X12_DATE_TIME_PERIOD_LAYOUT,
|
|
324
|
+
grammars: X12_DATE_TIME_PERIOD_GRAMMAR,
|
|
325
|
+
// X12 1250: each range definition gives the format with its hyphen.
|
|
326
|
+
rangeSeparator: "-",
|
|
327
|
+
},
|
|
328
|
+
};
|
|
329
|
+
/**
|
|
330
|
+
* Look a format code up in its standard's tables: the one lookup the classifier, the reader and
|
|
331
|
+
* the writer share.
|
|
332
|
+
*
|
|
333
|
+
* - Matching is exact and by own key, so `"__proto__"`, `" 102"` and `"d8"` are not codes.
|
|
334
|
+
* - Null for a code that is not read (`101`, `209`, `D6`, `UN`), like an unknown code.
|
|
335
|
+
* - Null for a standard that is not `"edifact"` or `"x12"`, and for a non-string argument.
|
|
336
|
+
*
|
|
337
|
+
* @param standard which element the code belongs to
|
|
338
|
+
* @param code the 2379 or 1250 format code
|
|
339
|
+
* @returns the code's kind, layout, grammar and range separator, or null
|
|
340
|
+
*
|
|
341
|
+
* @example ediCodeOf("edifact", "718") // { kind: "datePeriod", valueKind: "date", layout: { kind: "datePeriod", start: ["CCYY", "MM", "DD"], end: [...] }, grammar: /^…$/, rangeSeparator: "" }
|
|
342
|
+
* @example ediCodeOf("x12", "RD8") // { kind: "dateRange", valueKind: "date", layout: {...}, grammar: /^…$/, rangeSeparator: "-" }
|
|
343
|
+
* @example ediCodeOf("edifact", "101") // null (a two-digit year: not read)
|
|
344
|
+
* @example ediCodeOf("edifact", "D8") // null (an X12 code)
|
|
345
|
+
*/
|
|
346
|
+
export function ediCodeOf(standard, code) {
|
|
347
|
+
if (typeof standard !== "string" || typeof code !== "string") {
|
|
348
|
+
return null;
|
|
349
|
+
}
|
|
350
|
+
if (!Object.hasOwn(EDI_CODE_TABLES, standard)) {
|
|
351
|
+
return null;
|
|
352
|
+
}
|
|
353
|
+
const table = EDI_CODE_TABLES[standard];
|
|
354
|
+
if (!Object.hasOwn(table.layouts, code)) {
|
|
355
|
+
return null;
|
|
356
|
+
}
|
|
357
|
+
const layout = table.layouts[code];
|
|
358
|
+
const grammar = table.grammars[code];
|
|
359
|
+
return {
|
|
360
|
+
kind: layout.kind,
|
|
361
|
+
valueKind: VALUE_KIND[layout.kind],
|
|
362
|
+
layout,
|
|
363
|
+
grammar,
|
|
364
|
+
rangeSeparator: table.rangeSeparator,
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Look a format code up as a code of one kind: null unless the code is in its standard's tables
|
|
369
|
+
* under exactly that kind. Each public function names its own kind here, so a code of another
|
|
370
|
+
* kind (`203` given to a date function) is refused before any value is read.
|
|
371
|
+
*
|
|
372
|
+
* @param standard which element the code belongs to
|
|
373
|
+
* @param kind the kind of value the calling function reads or writes
|
|
374
|
+
* @param code the 2379 or 1250 format code
|
|
375
|
+
* @returns the code's entry, or null when the code is not one of that kind
|
|
376
|
+
*
|
|
377
|
+
* @example ediCodeOfKind("edifact", "date", "102") // { kind: "date", … }
|
|
378
|
+
* @example ediCodeOfKind("edifact", "date", "203") // null (a date-time code)
|
|
379
|
+
* @example ediCodeOfKind("x12", "dateRange", "RD8") // { kind: "dateRange", … }
|
|
380
|
+
*/
|
|
381
|
+
export function ediCodeOfKind(standard, kind, code) {
|
|
382
|
+
const entry = ediCodeOf(standard, code);
|
|
383
|
+
return entry !== null && entry.kind === kind ? entry : null;
|
|
384
|
+
}
|
|
@@ -5,7 +5,9 @@ export declare const ENGLISH_MONTH_NAMES: readonly ["Jan", "Feb", "Mar", "Apr",
|
|
|
5
5
|
* The `Mon, 15 Jul 2024 12:00:00` stem RFC 5322 date-time and RFC 9110 IMF-fixdate share: English
|
|
6
6
|
* day and month names, zero-padded fields, read from the date-time's own wall clock.
|
|
7
7
|
*
|
|
8
|
-
* @param zdt the date-time; the caller has already rejected a year
|
|
8
|
+
* @param zdt the date-time; the caller has already rejected a year its grammar cannot hold: a
|
|
9
|
+
* negative one for RFC 5322 (`year = 4*DIGIT`, so five digits are written in full), and any
|
|
10
|
+
* outside 0000–9999 for RFC 9110 (`year = 4DIGIT`)
|
|
9
11
|
* @returns the stem, without a zone or `GMT` suffix
|
|
10
12
|
* @example englishDateTimeStem(Temporal.ZonedDateTime.from("2024-07-15T12:00:05+00:00[UTC]")) // "Mon, 15 Jul 2024 12:00:05"
|
|
11
13
|
* @example englishDateTimeStem(Temporal.ZonedDateTime.from("0099-01-03T04:05:06+00:00[UTC]")) // "Sat, 03 Jan 0099 04:05:06"
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
// RFC 7231) mandate English weekday/month
|
|
3
3
|
// abbreviations regardless of the caller's locale — these are fixed,
|
|
4
4
|
// non-locale-adaptive grammars, not a display format, so hardcoding the
|
|
5
|
-
// English names here is not the i18n bug it would be in a formatter
|
|
6
|
-
// roadmap Decision 1 / J13's "Why this survives Decision 1").
|
|
5
|
+
// English names here is not the i18n bug it would be in a formatter.
|
|
7
6
|
// Index 0 = Monday, aligned with Temporal's 1-7 `dayOfWeek` via `[dayOfWeek - 1]`.
|
|
8
7
|
export const ENGLISH_WEEKDAY_NAMES = [
|
|
9
8
|
"Mon",
|
|
@@ -33,7 +32,9 @@ export const ENGLISH_MONTH_NAMES = [
|
|
|
33
32
|
* The `Mon, 15 Jul 2024 12:00:00` stem RFC 5322 date-time and RFC 9110 IMF-fixdate share: English
|
|
34
33
|
* day and month names, zero-padded fields, read from the date-time's own wall clock.
|
|
35
34
|
*
|
|
36
|
-
* @param zdt the date-time; the caller has already rejected a year
|
|
35
|
+
* @param zdt the date-time; the caller has already rejected a year its grammar cannot hold: a
|
|
36
|
+
* negative one for RFC 5322 (`year = 4*DIGIT`, so five digits are written in full), and any
|
|
37
|
+
* outside 0000–9999 for RFC 9110 (`year = 4DIGIT`)
|
|
37
38
|
* @returns the stem, without a zone or `GMT` suffix
|
|
38
39
|
* @example englishDateTimeStem(Temporal.ZonedDateTime.from("2024-07-15T12:00:05+00:00[UTC]")) // "Mon, 15 Jul 2024 12:00:05"
|
|
39
40
|
* @example englishDateTimeStem(Temporal.ZonedDateTime.from("0099-01-03T04:05:06+00:00[UTC]")) // "Sat, 03 Jan 0099 04:05:06"
|
|
@@ -8,6 +8,8 @@ export declare const MIN_EPOCH_NANOSECONDS = -8640000000000000000000n;
|
|
|
8
8
|
* +10^8 days from the Unix epoch, i.e. `+275760-09-13T00:00:00Z`.
|
|
9
9
|
*/
|
|
10
10
|
export declare const MAX_EPOCH_NANOSECONDS = 8640000000000000000000n;
|
|
11
|
+
/** TC39 `CheckISODaysRange`: a date may sit at most 10^8 days from the Unix epoch. */
|
|
12
|
+
export declare const MAX_ISO_EPOCH_DAYS = 100000000;
|
|
11
13
|
/**
|
|
12
14
|
* Digits in `MAX_EPOCH_NANOSECONDS` (22) — the longest a decimal form of an in-range
|
|
13
15
|
* epoch-nanosecond value can be, sign excluded.
|
|
@@ -8,6 +8,8 @@ export const MIN_EPOCH_NANOSECONDS = -8640000000000000000000n;
|
|
|
8
8
|
* +10^8 days from the Unix epoch, i.e. `+275760-09-13T00:00:00Z`.
|
|
9
9
|
*/
|
|
10
10
|
export const MAX_EPOCH_NANOSECONDS = 8640000000000000000000n;
|
|
11
|
+
/** TC39 `CheckISODaysRange`: a date may sit at most 10^8 days from the Unix epoch. */
|
|
12
|
+
export const MAX_ISO_EPOCH_DAYS = 100_000_000;
|
|
11
13
|
/**
|
|
12
14
|
* Digits in `MAX_EPOCH_NANOSECONDS` (22) — the longest a decimal form of an in-range
|
|
13
15
|
* epoch-nanosecond value can be, sign excluded.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An ISO 8601 duration as exact elapsed nanoseconds, signed, or `null` when it is not one.
|
|
3
|
+
*
|
|
4
|
+
* The transport rule for a span of exact time (`transitTime`, `classifyPunctuality`,
|
|
5
|
+
* `nextDeparture`, …):
|
|
6
|
+
*
|
|
7
|
+
* - Hours, minutes, seconds and fractions are elapsed time, and a day is 24 hours exactly. That
|
|
8
|
+
* is how TC39 Temporal's `Duration.prototype.round` and `total` read a day when no
|
|
9
|
+
* `relativeTo` is given.
|
|
10
|
+
* - Years, months and weeks return `null`: `round` and `total` require a `relativeTo` for them,
|
|
11
|
+
* so they have no exact length on their own. A zero calendar component (`P0Y1D`) changes
|
|
12
|
+
* nothing. (`Temporal.Instant#add` accepts no date unit at all, days included; callers add the
|
|
13
|
+
* nanoseconds this returns instead.)
|
|
14
|
+
* - The result keeps the duration's sign, so a caller that needs a non-negative amount checks
|
|
15
|
+
* `< 0n` itself. `-PT0S` is `0n`.
|
|
16
|
+
* - Summed in bigint, so it stays exact past 2^53 ns and across the whole instant range.
|
|
17
|
+
*
|
|
18
|
+
* @param value candidate ISO 8601 duration string
|
|
19
|
+
* @returns the duration in nanoseconds, negative for a negative duration, or null on invalid input
|
|
20
|
+
*
|
|
21
|
+
* @example exactDurationNanoseconds("PT1H") // 3600000000000n
|
|
22
|
+
* @example exactDurationNanoseconds("-PT5M") // -300000000000n
|
|
23
|
+
* @example exactDurationNanoseconds("P1D") // 86400000000000n
|
|
24
|
+
* @example exactDurationNanoseconds("P1W") // null
|
|
25
|
+
*/
|
|
26
|
+
export declare function exactDurationNanoseconds(value: unknown): bigint | null;
|
|
27
|
+
/**
|
|
28
|
+
* `exactDurationNanoseconds` for an amount that may not be negative — a tolerance, a minimum
|
|
29
|
+
* connection — or `null`. Zero is allowed, and `-PT0S` is zero.
|
|
30
|
+
*
|
|
31
|
+
* @param value candidate ISO 8601 duration string
|
|
32
|
+
* @returns the duration in nanoseconds, zero or more, or null on invalid input or a negative duration
|
|
33
|
+
*
|
|
34
|
+
* @example nonNegativeExactDurationNanoseconds("PT15M") // 900000000000n
|
|
35
|
+
* @example nonNegativeExactDurationNanoseconds("-PT15M") // null
|
|
36
|
+
*/
|
|
37
|
+
export declare function nonNegativeExactDurationNanoseconds(value: unknown): bigint | null;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import { NANOSECONDS_PER_DAY, NANOSECONDS_PER_MICROSECOND, NANOSECONDS_PER_MILLISECOND, NANOSECONDS_PER_SECOND, } from "./foreignEpochs.js";
|
|
3
|
+
const NANOSECONDS_PER_HOUR = 3600000000000n;
|
|
4
|
+
const NANOSECONDS_PER_MINUTE = 60000000000n;
|
|
5
|
+
/**
|
|
6
|
+
* An ISO 8601 duration as exact elapsed nanoseconds, signed, or `null` when it is not one.
|
|
7
|
+
*
|
|
8
|
+
* The transport rule for a span of exact time (`transitTime`, `classifyPunctuality`,
|
|
9
|
+
* `nextDeparture`, …):
|
|
10
|
+
*
|
|
11
|
+
* - Hours, minutes, seconds and fractions are elapsed time, and a day is 24 hours exactly. That
|
|
12
|
+
* is how TC39 Temporal's `Duration.prototype.round` and `total` read a day when no
|
|
13
|
+
* `relativeTo` is given.
|
|
14
|
+
* - Years, months and weeks return `null`: `round` and `total` require a `relativeTo` for them,
|
|
15
|
+
* so they have no exact length on their own. A zero calendar component (`P0Y1D`) changes
|
|
16
|
+
* nothing. (`Temporal.Instant#add` accepts no date unit at all, days included; callers add the
|
|
17
|
+
* nanoseconds this returns instead.)
|
|
18
|
+
* - The result keeps the duration's sign, so a caller that needs a non-negative amount checks
|
|
19
|
+
* `< 0n` itself. `-PT0S` is `0n`.
|
|
20
|
+
* - Summed in bigint, so it stays exact past 2^53 ns and across the whole instant range.
|
|
21
|
+
*
|
|
22
|
+
* @param value candidate ISO 8601 duration string
|
|
23
|
+
* @returns the duration in nanoseconds, negative for a negative duration, or null on invalid input
|
|
24
|
+
*
|
|
25
|
+
* @example exactDurationNanoseconds("PT1H") // 3600000000000n
|
|
26
|
+
* @example exactDurationNanoseconds("-PT5M") // -300000000000n
|
|
27
|
+
* @example exactDurationNanoseconds("P1D") // 86400000000000n
|
|
28
|
+
* @example exactDurationNanoseconds("P1W") // null
|
|
29
|
+
*/
|
|
30
|
+
export function exactDurationNanoseconds(value) {
|
|
31
|
+
if (typeof value !== "string") {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
const duration = Temporal.Duration.from(value);
|
|
36
|
+
if (duration.years !== 0 || duration.months !== 0 || duration.weeks !== 0) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
return (BigInt(duration.days) * NANOSECONDS_PER_DAY +
|
|
40
|
+
BigInt(duration.hours) * NANOSECONDS_PER_HOUR +
|
|
41
|
+
BigInt(duration.minutes) * NANOSECONDS_PER_MINUTE +
|
|
42
|
+
BigInt(duration.seconds) * NANOSECONDS_PER_SECOND +
|
|
43
|
+
BigInt(duration.milliseconds) * NANOSECONDS_PER_MILLISECOND +
|
|
44
|
+
BigInt(duration.microseconds) * NANOSECONDS_PER_MICROSECOND +
|
|
45
|
+
BigInt(duration.nanoseconds));
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* `exactDurationNanoseconds` for an amount that may not be negative — a tolerance, a minimum
|
|
53
|
+
* connection — or `null`. Zero is allowed, and `-PT0S` is zero.
|
|
54
|
+
*
|
|
55
|
+
* @param value candidate ISO 8601 duration string
|
|
56
|
+
* @returns the duration in nanoseconds, zero or more, or null on invalid input or a negative duration
|
|
57
|
+
*
|
|
58
|
+
* @example nonNegativeExactDurationNanoseconds("PT15M") // 900000000000n
|
|
59
|
+
* @example nonNegativeExactDurationNanoseconds("-PT15M") // null
|
|
60
|
+
*/
|
|
61
|
+
export function nonNegativeExactDurationNanoseconds(value) {
|
|
62
|
+
const nanoseconds = exactDurationNanoseconds(value);
|
|
63
|
+
return nanoseconds === null || nanoseconds < 0n ? null : nanoseconds;
|
|
64
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How an exact moment was written, so a result can be written the same way: in a named zone
|
|
3
|
+
* (the bracket), at a UTC offset (its text exactly as written), or as a `Z` instant.
|
|
4
|
+
*/
|
|
5
|
+
export type MomentNotation = {
|
|
6
|
+
kind: "zone";
|
|
7
|
+
timeZone: string;
|
|
8
|
+
} | {
|
|
9
|
+
kind: "offset";
|
|
10
|
+
offset: string;
|
|
11
|
+
} | {
|
|
12
|
+
kind: "utc";
|
|
13
|
+
};
|
|
14
|
+
/** An exact moment: its epoch nanoseconds and how it was written. */
|
|
15
|
+
export type ExactMoment = {
|
|
16
|
+
nanoseconds: bigint;
|
|
17
|
+
notation: MomentNotation;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Read an exact moment the way `transitTime` reads a departure, or `null`.
|
|
21
|
+
*
|
|
22
|
+
* - A zoned string (`…-04:00[America/New_York]`) is read through its bracket, which must name a
|
|
23
|
+
* real zone that agrees with the offset, as `isValidZonedDateTime` requires. An offset written
|
|
24
|
+
* to the minute agrees when it is the zone's sub-minute offset rounded (TC39
|
|
25
|
+
* `ToTemporalZonedDateTime`, match-minutes), which is how `writeExactMoment` writes one.
|
|
26
|
+
* - A wall time with a bracket and no offset is read in that zone with the `"compatible"`
|
|
27
|
+
* disambiguation policy (`context/reference/LOCAL_TIME_RESOLUTION.md`): an **ambiguous** wall
|
|
28
|
+
* time, a fall-back hour the clock ran through twice, resolves to the **earlier** instant
|
|
29
|
+
* (`2024-11-03T01:30:00[America/New_York]` is `01:30-04:00`), and a **nonexistent** one, a
|
|
30
|
+
* spring-forward hour the clock skipped, to the **later** instant
|
|
31
|
+
* (`2024-03-10T02:30:00[America/New_York]` is `03:30-04:00`). A caller that must not guess
|
|
32
|
+
* refuses the offset-less form before calling, as `nextDeparture` does.
|
|
33
|
+
* - A string that names a zone the zoned read rejects is `null`; it never falls back to its
|
|
34
|
+
* offset. That includes a zoned string whose local date is −271821-04-19, which
|
|
35
|
+
* `Temporal.ZonedDateTime.from` refuses although its instant is in range.
|
|
36
|
+
* - Otherwise an instant (`Z` or an offset) as `parseInstantNanoseconds` reads it: calendar and
|
|
37
|
+
* elective annotations are ignored and a critical unknown one is rejected. Its offset text is
|
|
38
|
+
* kept exactly as written, sub-minute and `,` fractions included.
|
|
39
|
+
*
|
|
40
|
+
* @param value candidate zoned datetime or instant string
|
|
41
|
+
* @returns the moment's epoch nanoseconds and notation, or null on invalid input
|
|
42
|
+
*
|
|
43
|
+
* @example readExactMoment("2024-06-15T10:00:00+09:00") // { nanoseconds: 1718413200000000000n, notation: { kind: "offset", offset: "+09:00" } }
|
|
44
|
+
* @example readExactMoment("2024-06-15T10:00:00Z[Not/AZone]") // null
|
|
45
|
+
* @example readExactMoment("2024-03-10T02:30:00[America/New_York]") // { nanoseconds: 1710055800000000000n, notation: { kind: "zone", timeZone: "America/New_York" } } (nonexistent: the later instant, 03:30-04:00)
|
|
46
|
+
*/
|
|
47
|
+
export declare function readExactMoment(value: unknown): ExactMoment | null;
|
|
48
|
+
/**
|
|
49
|
+
* Write epoch nanoseconds the way a moment was written: in its zone, at its offset text, or as a
|
|
50
|
+
* `Z` instant. `""` when the nanoseconds leave the instant range (±8.64e21 ns).
|
|
51
|
+
*
|
|
52
|
+
* - A zone notation is written as Temporal writes a `ZonedDateTime`: the offset in force at that
|
|
53
|
+
* instant, rounded to the minute (`-00:45` for Monrovia's −00:44:30), then the bracket.
|
|
54
|
+
* `readExactMoment` and `parseInstantNanoseconds` read that string back as the same instant,
|
|
55
|
+
* with two exceptions, both Temporal's own. A wall time repeated inside a sub-minute offset
|
|
56
|
+
* change reads as its first pass, in both readers (`parseInstantNanoseconds` states the
|
|
57
|
+
* rule). And `readExactMoment`, a zoned read, refuses a string whose local date is
|
|
58
|
+
* −271821-04-19 (`CheckISODaysRange` in `Temporal.ZonedDateTime.from`): the string written
|
|
59
|
+
* for the first hours of the instant range in a zone west of Greenwich reads as `null` there,
|
|
60
|
+
* and as its instant in `parseInstantNanoseconds`
|
|
61
|
+
* (`context/domination/js-temporal-polyfill-bugs.md` § J).
|
|
62
|
+
* - An offset notation keeps its text as written. The wall clock is shifted, never the instant
|
|
63
|
+
* (`wallClockAtOffset`), so the last hours of the range still write at a positive offset.
|
|
64
|
+
*
|
|
65
|
+
* @param nanoseconds epoch nanoseconds of the moment to write
|
|
66
|
+
* @param notation how to write it, from `readExactMoment`
|
|
67
|
+
* @returns the moment as a zoned, offset or `Z` string, or "" when it is out of range
|
|
68
|
+
*
|
|
69
|
+
* @example writeExactMoment(0n, { kind: "offset", offset: "+09:00" }) // "1970-01-01T09:00:00+09:00"
|
|
70
|
+
* @example writeExactMoment(0n, { kind: "zone", timeZone: "UTC" }) // "1970-01-01T00:00:00+00:00[UTC]"
|
|
71
|
+
*/
|
|
72
|
+
export declare function writeExactMoment(nanoseconds: bigint, notation: MomentNotation): string;
|