@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
|
@@ -3,6 +3,11 @@ import { type DefectId, type Repro } from "./repros.js";
|
|
|
3
3
|
export declare function runRepro(repro: Pick<Repro, "run">): string;
|
|
4
4
|
/** True when a repro's output is the spec-correct value, i.e. the installed runtime is fixed. */
|
|
5
5
|
export declare function reproPasses(repro: Pick<Repro, "expected">, output: string): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* True when any of `candidates` for this defect and Temporal calendar id fails. Stops at the first
|
|
8
|
+
* failure, so the order of a defect's repros is the order they are tried in.
|
|
9
|
+
*/
|
|
10
|
+
export declare function anyReproFails(candidates: readonly Repro[], defect: DefectId, calendar: string): boolean;
|
|
6
11
|
/**
|
|
7
12
|
* True when any repro for this defect and Temporal calendar id fails in the installed runtime.
|
|
8
13
|
* A calendar with no repro for the defect is not affected by it.
|
|
@@ -19,6 +24,27 @@ export declare function isDefectPresent(defect: DefectId, calendar: string): boo
|
|
|
19
24
|
* take the spec path through `isCalendarArithmeticCompatNeeded`.
|
|
20
25
|
*/
|
|
21
26
|
export declare function isNudgeWindowCompatNeeded(): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* True when this runtime matches a zoned string's offset by minutes even when the offset is
|
|
29
|
+
* written with seconds (defect D12).
|
|
30
|
+
*
|
|
31
|
+
* TC39 `ToTemporalZonedDateTime` matches by minutes only an offset with no seconds part; one
|
|
32
|
+
* written with seconds must equal the zone's offset exactly. A runtime that always matches by
|
|
33
|
+
* minutes accepts `-00:45:00[Africa/Monrovia]` for a zone at −00:44:30, and picks the wrong pass
|
|
34
|
+
* of a second repeated by a sub-minute transition (Pacific/Niue, 1952).
|
|
35
|
+
*/
|
|
36
|
+
export declare function isSecondsOffsetMatchCompatNeeded(): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* True when this runtime's time zone transition search cannot be trusted (defect D13).
|
|
39
|
+
*
|
|
40
|
+
* TC39 `GetNamedTimeZoneNextTransition` returns the first offset change after an instant. A runtime
|
|
41
|
+
* that samples the offset in steps longer than the gap between two changes skips a pair that
|
|
42
|
+
* returns to the same offset, and can loop for ever on three different offsets in one step. The
|
|
43
|
+
* skipped-pair repros come first and none of them can stall, so on such a runtime the probe
|
|
44
|
+
* answers before a stalling repro is reached. Every repro has to pass for the workaround to go
|
|
45
|
+
* dormant: a runtime that fixes the skipped pairs and still stalls on one zone keeps it.
|
|
46
|
+
*/
|
|
47
|
+
export declare function isTransitionSearchCompatNeeded(): boolean;
|
|
22
48
|
/**
|
|
23
49
|
* True when calendar arithmetic in `calendarId` needs the compat layer in this runtime: any of its
|
|
24
50
|
* add, until or read probes fails (CORE-6 spec §3.6.2). `iso8601` never does, and costs nothing.
|
|
@@ -21,6 +21,15 @@ export function runRepro(repro) {
|
|
|
21
21
|
export function reproPasses(repro, output) {
|
|
22
22
|
return output === repro.expected;
|
|
23
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* True when any of `candidates` for this defect and Temporal calendar id fails. Stops at the first
|
|
26
|
+
* failure, so the order of a defect's repros is the order they are tried in.
|
|
27
|
+
*/
|
|
28
|
+
export function anyReproFails(candidates, defect, calendar) {
|
|
29
|
+
return candidates.some((repro) => repro.defect === defect &&
|
|
30
|
+
repro.calendar === calendar &&
|
|
31
|
+
!reproPasses(repro, runRepro(repro)));
|
|
32
|
+
}
|
|
24
33
|
const cache = new Map();
|
|
25
34
|
/**
|
|
26
35
|
* True when any repro for this defect and Temporal calendar id fails in the installed runtime.
|
|
@@ -32,9 +41,7 @@ export function isDefectPresent(defect, calendar) {
|
|
|
32
41
|
if (cached !== undefined) {
|
|
33
42
|
return cached;
|
|
34
43
|
}
|
|
35
|
-
const present = repros
|
|
36
|
-
repro.calendar === calendar &&
|
|
37
|
-
!reproPasses(repro, runRepro(repro)));
|
|
44
|
+
const present = anyReproFails(repros, defect, calendar);
|
|
38
45
|
cache.set(key, present);
|
|
39
46
|
return present;
|
|
40
47
|
}
|
|
@@ -51,6 +58,31 @@ export function isDefectPresent(defect, calendar) {
|
|
|
51
58
|
export function isNudgeWindowCompatNeeded() {
|
|
52
59
|
return isDefectPresent("D11", "iso8601");
|
|
53
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* True when this runtime matches a zoned string's offset by minutes even when the offset is
|
|
63
|
+
* written with seconds (defect D12).
|
|
64
|
+
*
|
|
65
|
+
* TC39 `ToTemporalZonedDateTime` matches by minutes only an offset with no seconds part; one
|
|
66
|
+
* written with seconds must equal the zone's offset exactly. A runtime that always matches by
|
|
67
|
+
* minutes accepts `-00:45:00[Africa/Monrovia]` for a zone at −00:44:30, and picks the wrong pass
|
|
68
|
+
* of a second repeated by a sub-minute transition (Pacific/Niue, 1952).
|
|
69
|
+
*/
|
|
70
|
+
export function isSecondsOffsetMatchCompatNeeded() {
|
|
71
|
+
return isDefectPresent("D12", "iso8601");
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* True when this runtime's time zone transition search cannot be trusted (defect D13).
|
|
75
|
+
*
|
|
76
|
+
* TC39 `GetNamedTimeZoneNextTransition` returns the first offset change after an instant. A runtime
|
|
77
|
+
* that samples the offset in steps longer than the gap between two changes skips a pair that
|
|
78
|
+
* returns to the same offset, and can loop for ever on three different offsets in one step. The
|
|
79
|
+
* skipped-pair repros come first and none of them can stall, so on such a runtime the probe
|
|
80
|
+
* answers before a stalling repro is reached. Every repro has to pass for the workaround to go
|
|
81
|
+
* dormant: a runtime that fixes the skipped pairs and still stalls on one zone keeps it.
|
|
82
|
+
*/
|
|
83
|
+
export function isTransitionSearchCompatNeeded() {
|
|
84
|
+
return isDefectPresent("D13", "iso8601");
|
|
85
|
+
}
|
|
54
86
|
/** Defects that make the runtime's calendar arithmetic or reads differ from the spec. */
|
|
55
87
|
const ARITHMETIC_DEFECTS = [
|
|
56
88
|
"D1",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
-
import { MAX_ISO_EPOCH_DAYS } from "../
|
|
2
|
+
import { MAX_ISO_EPOCH_DAYS } from "../epochNanoseconds.js";
|
|
3
3
|
import { calendarFieldsOf } from "./calendarFields.js";
|
|
4
4
|
/*
|
|
5
5
|
* Read-only fields → ISO search. Calendar fields increase strictly with ISO order under the key
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { type CalendarDateUnit, calendarDateAdd, calendarDateUntil, } from "./calendarDateArithmetic.js";
|
|
2
2
|
export { calendarDateFromFields } from "./calendarDateFromFields.js";
|
|
3
|
-
export { isCalendarArithmeticCompatNeeded, isNudgeWindowCompatNeeded, } from "./capabilities.js";
|
|
3
|
+
export { isCalendarArithmeticCompatNeeded, isNudgeWindowCompatNeeded, isSecondsOffsetMatchCompatNeeded, isTransitionSearchCompatNeeded, } from "./capabilities.js";
|
|
4
4
|
export { calendarFieldsOf } from "./calendarFields.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// The only import surface of the Temporal compat layer. See README.md.
|
|
2
2
|
export { calendarDateAdd, calendarDateUntil, } from "./calendarDateArithmetic.js";
|
|
3
3
|
export { calendarDateFromFields } from "./calendarDateFromFields.js";
|
|
4
|
-
export { isCalendarArithmeticCompatNeeded, isNudgeWindowCompatNeeded, } from "./capabilities.js";
|
|
4
|
+
export { isCalendarArithmeticCompatNeeded, isNudgeWindowCompatNeeded, isSecondsOffsetMatchCompatNeeded, isTransitionSearchCompatNeeded, } from "./capabilities.js";
|
|
5
5
|
export { calendarFieldsOf } from "./calendarFields.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Defect ids from the CORE-6 calendar-correctness spec §1.2. */
|
|
2
|
-
export type DefectId = "D1" | "D2" | "D3" | "D4" | "D5" | "D6" | "D7" | "D8" | "D10" | "D11";
|
|
2
|
+
export type DefectId = "D1" | "D2" | "D3" | "D4" | "D5" | "D6" | "D7" | "D8" | "D10" | "D11" | "D12" | "D13";
|
|
3
3
|
/**
|
|
4
4
|
* Zoned defects worked around in `internal/zonedWallClock*`: the range-limit defects (upstream
|
|
5
5
|
* issue drafts A, B and D in the CORE-6 polyfill research) and zoned.E, the transition search
|
|
@@ -498,6 +498,161 @@ const d9Repros = [
|
|
|
498
498
|
},
|
|
499
499
|
];
|
|
500
500
|
});
|
|
501
|
+
/** The epoch nanoseconds `Temporal.ZonedDateTime.from(item)` reads, or the error's name. */
|
|
502
|
+
function zonedStringEpoch(item) {
|
|
503
|
+
try {
|
|
504
|
+
return String(Temporal.ZonedDateTime.from(item).epochNanoseconds);
|
|
505
|
+
}
|
|
506
|
+
catch (error) {
|
|
507
|
+
return error instanceof Error ? error.name : "Error";
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
/**
|
|
511
|
+
* D12 (`internal/zonedWallClock.ts` defect 4): `ToTemporalZonedDateTime` matches a string's
|
|
512
|
+
* offset against the zone by minutes even when the offset is written with seconds, where TC39
|
|
513
|
+
* requires match-exactly ("If offsetParseResult contains more than one MinuteSecond Parse Node,
|
|
514
|
+
* set matchBehaviour to match-exactly"). Expected values: test262
|
|
515
|
+
* `test/intl402/Temporal/ZonedDateTime/from/zoneddatetime-sub-minute-offset.js` ("rounded
|
|
516
|
+
* HH:MM:SS not accepted in string offset (offset=reject)", and the Pacific/Niue edge case,
|
|
517
|
+
* "-11:20:00 is accepted as -11:20:00": `reference + 20_000_000_000n`). The test writes the
|
|
518
|
+
* Monrovia time as `T12`; `T12:00` is the same wall time.
|
|
519
|
+
*/
|
|
520
|
+
const d12Repros = [
|
|
521
|
+
{
|
|
522
|
+
defect: "D12",
|
|
523
|
+
calendar: "iso8601",
|
|
524
|
+
name: "roundedSecondsRejected",
|
|
525
|
+
expected: "RangeError",
|
|
526
|
+
run: () => zonedStringEpoch("1970-01-01T12:00-00:45:00[Africa/Monrovia]"),
|
|
527
|
+
},
|
|
528
|
+
{
|
|
529
|
+
defect: "D12",
|
|
530
|
+
calendar: "iso8601",
|
|
531
|
+
name: "exactSecondsSecondPass",
|
|
532
|
+
expected: "-543069601000000000",
|
|
533
|
+
run: () => zonedStringEpoch("1952-10-15T23:59:59-11:20:00[Pacific/Niue]"),
|
|
534
|
+
},
|
|
535
|
+
];
|
|
536
|
+
/** More `Intl.DateTimeFormat#format` reads than this for one transition lookup is a stalled search. */
|
|
537
|
+
const D13_INTL_READ_LIMIT = 20_000;
|
|
538
|
+
/**
|
|
539
|
+
* `run()`'s output, or a note when it made more than `D13_INTL_READ_LIMIT` reads through
|
|
540
|
+
* `Intl.DateTimeFormat.prototype.format`, where the read then throws so a search that would never
|
|
541
|
+
* return stops. Polyfill 0.5.1 reads every offset through that getter.
|
|
542
|
+
*/
|
|
543
|
+
function withBoundedOffsetReads(run) {
|
|
544
|
+
const prototype = Intl.DateTimeFormat.prototype;
|
|
545
|
+
const original = Object.getOwnPropertyDescriptor(prototype, "format");
|
|
546
|
+
const originalGet = original?.get;
|
|
547
|
+
if (original === undefined || originalGet === undefined) {
|
|
548
|
+
return "cannot bound Intl.DateTimeFormat#format";
|
|
549
|
+
}
|
|
550
|
+
let reads = 0;
|
|
551
|
+
Object.defineProperty(prototype, "format", {
|
|
552
|
+
configurable: true,
|
|
553
|
+
get() {
|
|
554
|
+
const format = originalGet.call(this);
|
|
555
|
+
return (date) => {
|
|
556
|
+
reads++;
|
|
557
|
+
if (reads > D13_INTL_READ_LIMIT) {
|
|
558
|
+
throw new RangeError(`more than ${D13_INTL_READ_LIMIT} offset reads`);
|
|
559
|
+
}
|
|
560
|
+
return format(date);
|
|
561
|
+
};
|
|
562
|
+
},
|
|
563
|
+
});
|
|
564
|
+
try {
|
|
565
|
+
return run();
|
|
566
|
+
}
|
|
567
|
+
finally {
|
|
568
|
+
Object.defineProperty(prototype, "format", original);
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
/** America/Boa_Vista's 2000-10-08T04:00:00Z advance (−04:00 → −03:00, local midnight skipped). */
|
|
572
|
+
const BOA_VISTA_ADVANCE = "2000-10-08T01:00:00-03:00[America/Boa_Vista]";
|
|
573
|
+
/**
|
|
574
|
+
* D13 (`internal/zonedWallClock.ts` defect 5): `GetNamedTimeZoneNextTransition` and
|
|
575
|
+
* `…PreviousTransition` sample the offset every 14 days. Two changes inside one step that return
|
|
576
|
+
* to the same offset are skipped (America/Boa_Vista 2000-10-08 and 2000-10-15, 601,200 s apart),
|
|
577
|
+
* so `GetStartOfDay` for the skipped midnight of 2000-10-08 fails too; three different offsets in
|
|
578
|
+
* one step (Europe/Riga 1944-10-02 and 1944-10-12) make `bisect` loop for ever, its assertion
|
|
579
|
+
* compiled out. Spec: TC39 Temporal `GetNamedTimeZoneNextTransition`, "the smallest integer
|
|
580
|
+
* greater than epochNanoseconds" at which the offset changes. Expected values: Node 26.10.0's
|
|
581
|
+
* native Temporal and `zdump -v` (tz 2026c). The polyfill's main branch (a79c6a1, per-zone search
|
|
582
|
+
* windows, in no release) fixes the zones it lists but leaves `bisect` unchanged, and its 17-day
|
|
583
|
+
* window for Africa/El_Aaiun holds three offsets in 1976: `stall.nextElAaiun` covers that, so the
|
|
584
|
+
* workaround stays until every repro here passes.
|
|
585
|
+
*
|
|
586
|
+
* Order matters: the capability probe stops at the first failing repro, so the `skip.*` repros,
|
|
587
|
+
* which cannot stall, come before `stall.*`, which a runtime that fails them never runs in
|
|
588
|
+
* process. The canary runs `stall.*` under `withBoundedOffsetReads`.
|
|
589
|
+
*/
|
|
590
|
+
const d13Repros = [
|
|
591
|
+
{
|
|
592
|
+
defect: "D13",
|
|
593
|
+
calendar: "iso8601",
|
|
594
|
+
name: "skip.nextBoaVista",
|
|
595
|
+
expected: BOA_VISTA_ADVANCE,
|
|
596
|
+
run: () => String(Temporal.Instant.from("2000-10-01T12:00:00Z")
|
|
597
|
+
.toZonedDateTimeISO("America/Boa_Vista")
|
|
598
|
+
.getTimeZoneTransition("next")),
|
|
599
|
+
},
|
|
600
|
+
{
|
|
601
|
+
defect: "D13",
|
|
602
|
+
calendar: "iso8601",
|
|
603
|
+
name: "skip.previousBoaVista",
|
|
604
|
+
expected: "2000-10-14T23:00:00-04:00[America/Boa_Vista]",
|
|
605
|
+
run: () => String(Temporal.Instant.from("2000-10-20T12:00:00Z")
|
|
606
|
+
.toZonedDateTimeISO("America/Boa_Vista")
|
|
607
|
+
.getTimeZoneTransition("previous")),
|
|
608
|
+
},
|
|
609
|
+
{
|
|
610
|
+
defect: "D13",
|
|
611
|
+
calendar: "iso8601",
|
|
612
|
+
name: "skip.startOfDayBoaVista",
|
|
613
|
+
expected: BOA_VISTA_ADVANCE,
|
|
614
|
+
run: () => String(Temporal.PlainDate.from("2000-10-08").toZonedDateTime("America/Boa_Vista")),
|
|
615
|
+
},
|
|
616
|
+
{
|
|
617
|
+
defect: "D13",
|
|
618
|
+
calendar: "iso8601",
|
|
619
|
+
name: "skip.hoursInDayNoronha",
|
|
620
|
+
expected: "23",
|
|
621
|
+
run: () => String(Temporal.ZonedDateTime.from("2000-10-08T12:00[America/Noronha]")
|
|
622
|
+
.hoursInDay),
|
|
623
|
+
},
|
|
624
|
+
{
|
|
625
|
+
defect: "D13",
|
|
626
|
+
calendar: "iso8601",
|
|
627
|
+
name: "stall.nextRiga",
|
|
628
|
+
expected: "1944-10-02T02:00:00+01:00[Europe/Riga]",
|
|
629
|
+
run: () => withBoundedOffsetReads(() => String(Temporal.Instant.from("1944-04-15T12:00:00Z")
|
|
630
|
+
.toZonedDateTimeISO("Europe/Riga")
|
|
631
|
+
.getTimeZoneTransition("next"))),
|
|
632
|
+
},
|
|
633
|
+
{
|
|
634
|
+
defect: "D13",
|
|
635
|
+
calendar: "iso8601",
|
|
636
|
+
name: "stall.nextSimferopol",
|
|
637
|
+
expected: "1944-04-03T03:00:00+02:00[Europe/Simferopol]",
|
|
638
|
+
run: () => withBoundedOffsetReads(() => String(Temporal.Instant.from("1943-10-15T12:00:00Z")
|
|
639
|
+
.toZonedDateTimeISO("Europe/Simferopol")
|
|
640
|
+
.getTimeZoneTransition("next"))),
|
|
641
|
+
},
|
|
642
|
+
// js-temporal main (a79c6a1) gives Africa/El_Aaiun a 17-day search window. Its changes of
|
|
643
|
+
// 1976-04-14T01:00:00Z (−01:00 → +00:00) and 1976-05-01T00:00:00Z (+00:00 → +01:00) are 16.958
|
|
644
|
+
// days apart, so one window holds three offsets and `bisect`, unchanged there, cannot narrow.
|
|
645
|
+
// 0.5.1's 14-day step passes these two; a release with a79c6a1 alone would not.
|
|
646
|
+
...["1976-04-14T00:30:00Z", "1976-03-28T00:30:00Z"].map((from) => ({
|
|
647
|
+
defect: "D13",
|
|
648
|
+
calendar: "iso8601",
|
|
649
|
+
name: `stall.nextElAaiun ${from}`,
|
|
650
|
+
expected: "1976-04-14T01:00:00+00:00[Africa/El_Aaiun]",
|
|
651
|
+
run: () => withBoundedOffsetReads(() => String(Temporal.Instant.from(from)
|
|
652
|
+
.toZonedDateTimeISO("Africa/El_Aaiun")
|
|
653
|
+
.getTimeZoneTransition("next"))),
|
|
654
|
+
})),
|
|
655
|
+
];
|
|
501
656
|
export const repros = [
|
|
502
657
|
...d9Repros,
|
|
503
658
|
...zonedARepros,
|
|
@@ -508,6 +663,8 @@ export const repros = [
|
|
|
508
663
|
...d1ArithmeticRepros,
|
|
509
664
|
d1RelativeToRepro,
|
|
510
665
|
...d10Repros,
|
|
666
|
+
...d12Repros,
|
|
667
|
+
...d13Repros,
|
|
511
668
|
...d6Repros,
|
|
512
669
|
d7Repro,
|
|
513
670
|
d7LeapMonthEndRepro,
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { TimestampClass } from "../types/index.js";
|
|
2
|
+
/** A validated `TimestampEvent`, with both of its moments as epoch nanoseconds. */
|
|
3
|
+
export type ParsedTimestampEvent = {
|
|
4
|
+
classifier: TimestampClass;
|
|
5
|
+
/** The event's `at`, exactly as the caller wrote it. */
|
|
6
|
+
at: string;
|
|
7
|
+
atNanoseconds: bigint;
|
|
8
|
+
recordedNanoseconds: bigint;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Validate a list of `TimestampEvent`s and put them in recording order, or `null`.
|
|
12
|
+
*
|
|
13
|
+
* The shared reading behind `bestAvailable` and `estimateDrift`:
|
|
14
|
+
*
|
|
15
|
+
* - Every event must be an object whose `classifier` is exactly `PLN`, `EST`, `REQ` or `ACT` and
|
|
16
|
+
* whose `at` and `recordedAt` are instants (`Z`/offset) or zoned strings, read as
|
|
17
|
+
* `parseInstantNanoseconds` reads them: the offset fixes the instant, a minute-rounded offset
|
|
18
|
+
* is read as its bracketed zone's real offset, and the bracket is otherwise not checked. One
|
|
19
|
+
* invalid event makes the whole list invalid.
|
|
20
|
+
* - The result is sorted by `recordedAt`, earliest first. Events recorded at the same instant
|
|
21
|
+
* keep their input order, so of two ties the later index is the later record.
|
|
22
|
+
* - `at` is kept exactly as written, so a caller can echo it.
|
|
23
|
+
* - An empty list is `[]`; the caller decides what that means.
|
|
24
|
+
* - A hostile value (a throwing getter, a revoked Proxy) is invalid input: `null`, never a throw.
|
|
25
|
+
*
|
|
26
|
+
* @param events candidate list of timestamp events
|
|
27
|
+
* @returns the events in recording order with their instants, or null on invalid input
|
|
28
|
+
*
|
|
29
|
+
* @example parseTimestampEvents([]) // []
|
|
30
|
+
* @example parseTimestampEvents([{ classifier: "ETA", at: "2024-06-15T12:00:00Z", recordedAt: "2024-06-15T10:00:00Z" }]) // null
|
|
31
|
+
*/
|
|
32
|
+
export declare function parseTimestampEvents(events: unknown): ParsedTimestampEvent[] | null;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { parseInstantNanoseconds } from "./instantNanoseconds.js";
|
|
2
|
+
import { isObject } from "./isObject.js";
|
|
3
|
+
const TIMESTAMP_CLASSES = new Set([
|
|
4
|
+
"PLN",
|
|
5
|
+
"EST",
|
|
6
|
+
"REQ",
|
|
7
|
+
"ACT",
|
|
8
|
+
]);
|
|
9
|
+
/** One event validated, or `null`. */
|
|
10
|
+
function parseEvent(event) {
|
|
11
|
+
if (!isObject(event)) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
const { classifier, at, recordedAt } = event;
|
|
15
|
+
if (!TIMESTAMP_CLASSES.has(classifier) || typeof at !== "string") {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
const atNanoseconds = parseInstantNanoseconds(at);
|
|
19
|
+
const recordedNanoseconds = parseInstantNanoseconds(recordedAt);
|
|
20
|
+
if (atNanoseconds === null || recordedNanoseconds === null) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
classifier: classifier,
|
|
25
|
+
at,
|
|
26
|
+
atNanoseconds,
|
|
27
|
+
recordedNanoseconds,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Validate a list of `TimestampEvent`s and put them in recording order, or `null`.
|
|
32
|
+
*
|
|
33
|
+
* The shared reading behind `bestAvailable` and `estimateDrift`:
|
|
34
|
+
*
|
|
35
|
+
* - Every event must be an object whose `classifier` is exactly `PLN`, `EST`, `REQ` or `ACT` and
|
|
36
|
+
* whose `at` and `recordedAt` are instants (`Z`/offset) or zoned strings, read as
|
|
37
|
+
* `parseInstantNanoseconds` reads them: the offset fixes the instant, a minute-rounded offset
|
|
38
|
+
* is read as its bracketed zone's real offset, and the bracket is otherwise not checked. One
|
|
39
|
+
* invalid event makes the whole list invalid.
|
|
40
|
+
* - The result is sorted by `recordedAt`, earliest first. Events recorded at the same instant
|
|
41
|
+
* keep their input order, so of two ties the later index is the later record.
|
|
42
|
+
* - `at` is kept exactly as written, so a caller can echo it.
|
|
43
|
+
* - An empty list is `[]`; the caller decides what that means.
|
|
44
|
+
* - A hostile value (a throwing getter, a revoked Proxy) is invalid input: `null`, never a throw.
|
|
45
|
+
*
|
|
46
|
+
* @param events candidate list of timestamp events
|
|
47
|
+
* @returns the events in recording order with their instants, or null on invalid input
|
|
48
|
+
*
|
|
49
|
+
* @example parseTimestampEvents([]) // []
|
|
50
|
+
* @example parseTimestampEvents([{ classifier: "ETA", at: "2024-06-15T12:00:00Z", recordedAt: "2024-06-15T10:00:00Z" }]) // null
|
|
51
|
+
*/
|
|
52
|
+
export function parseTimestampEvents(events) {
|
|
53
|
+
try {
|
|
54
|
+
if (!Array.isArray(events)) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
const parsed = [];
|
|
58
|
+
for (const event of events) {
|
|
59
|
+
const one = parseEvent(event);
|
|
60
|
+
if (one === null) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
parsed.push(one);
|
|
64
|
+
}
|
|
65
|
+
// Array.prototype.sort is stable, so ties keep their input order.
|
|
66
|
+
return parsed.sort((a, b) => a.recordedNanoseconds < b.recordedNanoseconds
|
|
67
|
+
? -1
|
|
68
|
+
: a.recordedNanoseconds > b.recordedNanoseconds
|
|
69
|
+
? 1
|
|
70
|
+
: 0);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
// A hostile value (a throwing getter, a revoked Proxy) is invalid input.
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve a two-digit year inside a caller-chosen hundred-year window: the one year in
|
|
3
|
+
* `[windowStart, windowStart + 99]` whose last two digits are `yy`.
|
|
4
|
+
*
|
|
5
|
+
* Pure arithmetic: the function holds no window of its own and reads no clock. The window comes
|
|
6
|
+
* from the caller's `TwoDigitYearOptions.yearWindow`, resolved by `readYearWindowStart`
|
|
7
|
+
* (`internal/yearWindowStart.ts`); no standard says which century a two-digit year belongs to,
|
|
8
|
+
* so the library never supplies one.
|
|
9
|
+
*
|
|
10
|
+
* @param yy the two-digit year, 0–99, as the grammar read it
|
|
11
|
+
* @param windowStart the first year of the hundred-year window
|
|
12
|
+
* @returns the four-digit year in the window ending in `yy`
|
|
13
|
+
*
|
|
14
|
+
* @example twoDigitYear(24, 2000) // 2024
|
|
15
|
+
* @example twoDigitYear(99, 1950) // 1999
|
|
16
|
+
* @example twoDigitYear(49, 1950) // 2049
|
|
17
|
+
* @example twoDigitYear(0, 1976) // 2000
|
|
18
|
+
*/
|
|
19
|
+
export declare function twoDigitYear(yy: number, windowStart: number): number;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve a two-digit year inside a caller-chosen hundred-year window: the one year in
|
|
3
|
+
* `[windowStart, windowStart + 99]` whose last two digits are `yy`.
|
|
4
|
+
*
|
|
5
|
+
* Pure arithmetic: the function holds no window of its own and reads no clock. The window comes
|
|
6
|
+
* from the caller's `TwoDigitYearOptions.yearWindow`, resolved by `readYearWindowStart`
|
|
7
|
+
* (`internal/yearWindowStart.ts`); no standard says which century a two-digit year belongs to,
|
|
8
|
+
* so the library never supplies one.
|
|
9
|
+
*
|
|
10
|
+
* @param yy the two-digit year, 0–99, as the grammar read it
|
|
11
|
+
* @param windowStart the first year of the hundred-year window
|
|
12
|
+
* @returns the four-digit year in the window ending in `yy`
|
|
13
|
+
*
|
|
14
|
+
* @example twoDigitYear(24, 2000) // 2024
|
|
15
|
+
* @example twoDigitYear(99, 1950) // 1999
|
|
16
|
+
* @example twoDigitYear(49, 1950) // 2049
|
|
17
|
+
* @example twoDigitYear(0, 1976) // 2000
|
|
18
|
+
*/
|
|
19
|
+
export function twoDigitYear(yy, windowStart) {
|
|
20
|
+
const candidate = Math.floor(windowStart / 100) * 100 + yy;
|
|
21
|
+
return candidate < windowStart ? candidate + 100 : candidate;
|
|
22
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import { MAX_EPOCH_NANOSECONDS } from "./epochNanoseconds.js";
|
|
3
|
+
import { isObject } from "./isObject.js";
|
|
3
4
|
// TC39 Temporal IsValidEpochNanoseconds bound (nsMaxInstant = 10^8 days) in milliseconds: 8.64e15.
|
|
4
5
|
const MAX_EPOCH_MILLISECONDS = Number(MAX_EPOCH_NANOSECONDS / 1000000n);
|
|
5
6
|
// An optionally negative run of ASCII digits and nothing else. `\d` without the `u` flag is
|
|
@@ -91,7 +92,7 @@ export function resolveUnixEpochUnitOptions(options) {
|
|
|
91
92
|
if (options === undefined) {
|
|
92
93
|
return "milliseconds";
|
|
93
94
|
}
|
|
94
|
-
if (options
|
|
95
|
+
if (!isObject(options)) {
|
|
95
96
|
return null;
|
|
96
97
|
}
|
|
97
98
|
return resolveUnixEpochUnit(options.epochUnit);
|
|
@@ -231,7 +232,7 @@ export function parseUnixEpochIntervalList(intervals) {
|
|
|
231
232
|
}
|
|
232
233
|
const parsed = [];
|
|
233
234
|
for (const interval of intervals) {
|
|
234
|
-
if (!interval
|
|
235
|
+
if (!isObject(interval)) {
|
|
235
236
|
return null;
|
|
236
237
|
}
|
|
237
238
|
const { start, end } = interval;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
/**
|
|
3
|
+
* Read a Unix epoch argument on the local wall clock of the shared `unix/` options, or null when
|
|
4
|
+
* anything is invalid. For the `parse*FromUnix` accessors, which only read fields.
|
|
5
|
+
*
|
|
6
|
+
* - `value` follows the one epoch grammar (`parseUnixEpochValue`).
|
|
7
|
+
* - `epochUnit` accepts singular or plural names and defaults to `"milliseconds"`.
|
|
8
|
+
* - `timeZone` defaults to `"UTC"`; `"local"` is the system zone; a time zone identifier or a
|
|
9
|
+
* stored UTC offset (`±HH:MM[:SS]`) is read as written; anything else is invalid (see
|
|
10
|
+
* `normalizeZoneFrame`).
|
|
11
|
+
*
|
|
12
|
+
* @param value Unix epoch number or digit string
|
|
13
|
+
* @param options optional `{ epochUnit, timeZone }`
|
|
14
|
+
* @returns the local wall clock, or null
|
|
15
|
+
*
|
|
16
|
+
* @example unixWallClock(0)?.toString() // "1970-01-01T00:00:00"
|
|
17
|
+
* @example unixWallClock("86400", { epochUnit: "second", timeZone: "Asia/Tokyo" })?.hour // 9
|
|
18
|
+
* @example unixWallClock(45870000, { timeZone: "-00:44:30" })?.toString() // "1970-01-01T12:00:00"
|
|
19
|
+
* @example unixWallClock(0, { timeZone: "Asia/Tokio" }) // null
|
|
20
|
+
*/
|
|
21
|
+
export declare function unixWallClock(value: unknown, options?: {
|
|
22
|
+
epochUnit?: unknown;
|
|
23
|
+
timeZone?: unknown;
|
|
24
|
+
}): Temporal.PlainDateTime | null;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { resolveUnixEpochUnit, unixEpochToInstant } from "./unixEpochValue.js";
|
|
2
|
+
import { frameWallClock, normalizeZoneFrame } from "./zoneFrame.js";
|
|
3
|
+
/**
|
|
4
|
+
* Read a Unix epoch argument on the local wall clock of the shared `unix/` options, or null when
|
|
5
|
+
* anything is invalid. For the `parse*FromUnix` accessors, which only read fields.
|
|
6
|
+
*
|
|
7
|
+
* - `value` follows the one epoch grammar (`parseUnixEpochValue`).
|
|
8
|
+
* - `epochUnit` accepts singular or plural names and defaults to `"milliseconds"`.
|
|
9
|
+
* - `timeZone` defaults to `"UTC"`; `"local"` is the system zone; a time zone identifier or a
|
|
10
|
+
* stored UTC offset (`±HH:MM[:SS]`) is read as written; anything else is invalid (see
|
|
11
|
+
* `normalizeZoneFrame`).
|
|
12
|
+
*
|
|
13
|
+
* @param value Unix epoch number or digit string
|
|
14
|
+
* @param options optional `{ epochUnit, timeZone }`
|
|
15
|
+
* @returns the local wall clock, or null
|
|
16
|
+
*
|
|
17
|
+
* @example unixWallClock(0)?.toString() // "1970-01-01T00:00:00"
|
|
18
|
+
* @example unixWallClock("86400", { epochUnit: "second", timeZone: "Asia/Tokyo" })?.hour // 9
|
|
19
|
+
* @example unixWallClock(45870000, { timeZone: "-00:44:30" })?.toString() // "1970-01-01T12:00:00"
|
|
20
|
+
* @example unixWallClock(0, { timeZone: "Asia/Tokio" }) // null
|
|
21
|
+
*/
|
|
22
|
+
export function unixWallClock(value, options) {
|
|
23
|
+
const epochUnit = resolveUnixEpochUnit(options?.epochUnit);
|
|
24
|
+
const frame = normalizeZoneFrame(options?.timeZone);
|
|
25
|
+
if (epochUnit === null || frame === null) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
try {
|
|
29
|
+
const instant = unixEpochToInstant(value, epochUnit);
|
|
30
|
+
return instant === null ? null : frameWallClock(instant, frame);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
/**
|
|
3
|
+
* Read a UTC ISO string on a local wall clock for the `parse*FromUtc` accessors: the instant it
|
|
4
|
+
* names, on the wall clock of `options.timeZone`. The utc twin of `unixWallClock`.
|
|
5
|
+
*
|
|
6
|
+
* - `timeZone` defaults to `"UTC"`; `"local"` is the system zone; a time zone identifier or a
|
|
7
|
+
* stored UTC offset (`±HH:MM[:SS]`) is read as written; anything else is invalid (see
|
|
8
|
+
* `normalizeZoneFrame`).
|
|
9
|
+
*
|
|
10
|
+
* @param value UTC ISO 8601 datetime string
|
|
11
|
+
* @param options optional `{ timeZone }`
|
|
12
|
+
* @returns the local wall clock, or null when the value or the zone is invalid
|
|
13
|
+
* @example utcWallClock("2024-03-15T14:30:00Z", { timeZone: "Asia/Tokyo" })?.toString() // "2024-03-15T23:30:00"
|
|
14
|
+
* @example utcWallClock("1970-01-01T12:44:30Z", { timeZone: "-00:44:30" })?.toString() // "1970-01-01T12:00:00"
|
|
15
|
+
* @example utcWallClock("2024-03-15T14:30:00Z", { timeZone: "Invalid/Zone" }) // null
|
|
16
|
+
* @example utcWallClock("2024-03-15T14:30:00") // null (no Z)
|
|
17
|
+
*/
|
|
18
|
+
export declare function utcWallClock(value: string, options?: {
|
|
19
|
+
timeZone?: string;
|
|
20
|
+
}): Temporal.PlainDateTime | null;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import { isValidUtc } from "../utc/validate/isValidUtc.js";
|
|
3
|
+
import { frameWallClock, normalizeZoneFrame } from "./zoneFrame.js";
|
|
4
|
+
/**
|
|
5
|
+
* Read a UTC ISO string on a local wall clock for the `parse*FromUtc` accessors: the instant it
|
|
6
|
+
* names, on the wall clock of `options.timeZone`. The utc twin of `unixWallClock`.
|
|
7
|
+
*
|
|
8
|
+
* - `timeZone` defaults to `"UTC"`; `"local"` is the system zone; a time zone identifier or a
|
|
9
|
+
* stored UTC offset (`±HH:MM[:SS]`) is read as written; anything else is invalid (see
|
|
10
|
+
* `normalizeZoneFrame`).
|
|
11
|
+
*
|
|
12
|
+
* @param value UTC ISO 8601 datetime string
|
|
13
|
+
* @param options optional `{ timeZone }`
|
|
14
|
+
* @returns the local wall clock, or null when the value or the zone is invalid
|
|
15
|
+
* @example utcWallClock("2024-03-15T14:30:00Z", { timeZone: "Asia/Tokyo" })?.toString() // "2024-03-15T23:30:00"
|
|
16
|
+
* @example utcWallClock("1970-01-01T12:44:30Z", { timeZone: "-00:44:30" })?.toString() // "1970-01-01T12:00:00"
|
|
17
|
+
* @example utcWallClock("2024-03-15T14:30:00Z", { timeZone: "Invalid/Zone" }) // null
|
|
18
|
+
* @example utcWallClock("2024-03-15T14:30:00") // null (no Z)
|
|
19
|
+
*/
|
|
20
|
+
export function utcWallClock(value, options) {
|
|
21
|
+
if (!isValidUtc(value))
|
|
22
|
+
return null;
|
|
23
|
+
const frame = normalizeZoneFrame(options?.timeZone);
|
|
24
|
+
if (frame === null)
|
|
25
|
+
return null;
|
|
26
|
+
try {
|
|
27
|
+
return frameWallClock(Temporal.Instant.from(value), frame);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve `TwoDigitYearOptions.yearWindow` to the first year of a hundred-year window, or null
|
|
3
|
+
* when the option is absent or not one of its two forms.
|
|
4
|
+
*
|
|
5
|
+
* - An integer from 0 to 9900 is a fixed window starting in that year.
|
|
6
|
+
* - `"rolling"` (exact match) is the hundred years around today: 50 years before the current UTC
|
|
7
|
+
* calendar year to 49 after it. The year is read once, from
|
|
8
|
+
* `Temporal.Now.instant().toZonedDateTimeISO("UTC").year`, so the window moves at the UTC new
|
|
9
|
+
* year, not mid-year: year granularity is a **GMT rule**. RFC 9110 §5.6.7 applies the same
|
|
10
|
+
* 50-year idea to an `rfc850-date` two-digit year, at day granularity; `internal/httpDateFields.ts`
|
|
11
|
+
* implements that rule for HTTP dates and is not affected by this one.
|
|
12
|
+
* - Anything else (a non-integer, a negative, 9901, `NaN`, `Infinity`, a numeric string, any
|
|
13
|
+
* other string, `null`) is null. Whether a null window matters is the caller's: a value with no
|
|
14
|
+
* two-digit year needs none.
|
|
15
|
+
*
|
|
16
|
+
* `options` is read as an Object the way Temporal's GetOptionsObject reads one (a function is an
|
|
17
|
+
* Object); a non-Object yields null here, and the public function has already returned its
|
|
18
|
+
* sentinel for one by `isOptionsArgument`.
|
|
19
|
+
*
|
|
20
|
+
* @param options the caller's options bag
|
|
21
|
+
* @returns the window's first year, or null
|
|
22
|
+
*
|
|
23
|
+
* @example readYearWindowStart({ yearWindow: 1950 }) // 1950
|
|
24
|
+
* @example readYearWindowStart({ yearWindow: "rolling" }) // 1976 (in 2026)
|
|
25
|
+
* @example readYearWindowStart({}) // null
|
|
26
|
+
* @example readYearWindowStart({ yearWindow: 9901 }) // null
|
|
27
|
+
*/
|
|
28
|
+
export declare function readYearWindowStart(options: unknown): number | null;
|