@northguild/gmt 1.15.0 → 1.17.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 +1133 -272
- package/dist/calendar/business/businessDaysBetween.d.ts +37 -0
- package/dist/calendar/business/businessDaysBetween.js +89 -0
- package/dist/calendar/business/index.d.ts +7 -0
- package/dist/calendar/business/index.js +10 -0
- package/dist/calendar/business/mergeCalendars.d.ts +33 -0
- package/dist/calendar/business/mergeCalendars.js +68 -0
- package/dist/calendar/business/nextBusinessDay.d.ts +30 -0
- package/dist/calendar/business/nextBusinessDay.js +39 -0
- package/dist/calendar/business/previousBusinessDay.d.ts +30 -0
- package/dist/calendar/business/previousBusinessDay.js +39 -0
- package/dist/calendar/business/rollDate.d.ts +59 -0
- package/dist/calendar/business/rollDate.js +116 -0
- package/dist/calendar/calculate/bucketRange.d.ts +49 -0
- package/dist/calendar/calculate/bucketRange.js +169 -0
- package/dist/calendar/calculate/floorToZone.d.ts +42 -0
- package/dist/calendar/calculate/floorToZone.js +62 -0
- package/dist/calendar/calculate/getFiscalPeriod.d.ts +64 -0
- package/dist/calendar/calculate/getFiscalPeriod.js +96 -0
- package/dist/calendar/calculate/getIsoWeekDate.d.ts +35 -0
- package/dist/calendar/calculate/getIsoWeekDate.js +41 -0
- package/dist/calendar/calculate/getOrdinalDate.d.ts +25 -0
- package/dist/calendar/calculate/getOrdinalDate.js +28 -0
- package/dist/calendar/calculate/getQuarter.d.ts +36 -0
- package/dist/calendar/calculate/getQuarter.js +64 -0
- package/dist/calendar/calculate/index.d.ts +6 -0
- package/dist/calendar/calculate/index.js +6 -0
- package/dist/calendar/index.d.ts +4 -0
- package/dist/calendar/index.js +5 -0
- package/dist/calendar/validate/index.d.ts +4 -0
- package/dist/calendar/validate/index.js +4 -0
- package/dist/calendar/validate/isValidBusinessCalendar.d.ts +31 -0
- package/dist/calendar/validate/isValidBusinessCalendar.js +40 -0
- package/dist/calendar/validate/isValidFiscalPattern.d.ts +25 -0
- package/dist/calendar/validate/isValidFiscalPattern.js +29 -0
- package/dist/calendar/validate/isValidRollConvention.d.ts +28 -0
- package/dist/calendar/validate/isValidRollConvention.js +38 -0
- package/dist/calendar/validate/isValidZoneBucketUnit.d.ts +31 -0
- package/dist/calendar/validate/isValidZoneBucketUnit.js +39 -0
- package/dist/duration/calculate/durationAs.d.ts +27 -3
- package/dist/duration/calculate/durationAs.js +34 -8
- package/dist/duration/calculate/getDurationUnit.d.ts +5 -2
- package/dist/duration/calculate/getDurationUnit.js +7 -3
- package/dist/duration/compare/compareDurations.d.ts +25 -2
- package/dist/duration/compare/compareDurations.js +31 -7
- package/dist/duration/format/formatDuration.d.ts +14 -5
- package/dist/duration/format/formatDuration.js +47 -11
- package/dist/duration/index.d.ts +1 -0
- package/dist/duration/index.js +2 -0
- package/dist/duration/normalize/normalizeDuration.d.ts +33 -6
- package/dist/duration/normalize/normalizeDuration.js +41 -12
- package/dist/duration/parse/parseDuration.js +4 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +7 -0
- package/dist/instant/convert/classifyLocal.d.ts +50 -0
- package/dist/instant/convert/classifyLocal.js +60 -0
- package/dist/instant/convert/fromOffsetInstant.d.ts +47 -0
- package/dist/instant/convert/fromOffsetInstant.js +91 -0
- package/dist/instant/convert/index.d.ts +4 -0
- package/dist/instant/convert/index.js +4 -0
- package/dist/instant/convert/resolveLocal.d.ts +40 -0
- package/dist/instant/convert/resolveLocal.js +76 -0
- package/dist/instant/convert/toOffsetInstant.d.ts +96 -0
- package/dist/instant/convert/toOffsetInstant.js +162 -0
- package/dist/instant/index.d.ts +2 -0
- package/dist/instant/index.js +3 -0
- package/dist/intermodal/calculate/billingTimeline.d.ts +94 -0
- package/dist/intermodal/calculate/billingTimeline.js +168 -0
- package/dist/intermodal/calculate/chargeableDays.d.ts +98 -0
- package/dist/intermodal/calculate/chargeableDays.js +101 -0
- package/dist/intermodal/calculate/demurrageClock.d.ts +93 -0
- package/dist/intermodal/calculate/demurrageClock.js +140 -0
- package/dist/intermodal/calculate/freeTimeExpiry.d.ts +66 -0
- package/dist/intermodal/calculate/freeTimeExpiry.js +82 -0
- package/dist/intermodal/calculate/index.d.ts +4 -0
- package/dist/intermodal/calculate/index.js +4 -0
- package/dist/intermodal/index.d.ts +2 -0
- package/dist/intermodal/index.js +3 -0
- package/dist/internal/adjustZonedBusinessDays.js +9 -7
- package/dist/internal/businessCalendar.d.ts +46 -0
- package/dist/internal/businessCalendar.js +230 -0
- package/dist/internal/businessDayValues.d.ts +20 -0
- package/dist/internal/businessDayValues.js +54 -0
- package/dist/internal/calendarDatePairPolicy.d.ts +10 -12
- package/dist/internal/calendarDatePairPolicy.js +13 -19
- package/dist/internal/calendarDateString.d.ts +32 -58
- package/dist/internal/calendarDateString.js +51 -93
- package/dist/internal/calendarSystemIds.d.ts +26 -2
- package/dist/internal/calendarSystemIds.js +57 -51
- package/dist/internal/calendarValueOfDate.d.ts +10 -12
- package/dist/internal/calendarValueOfDate.js +22 -20
- package/dist/internal/calendarValueOfZoned.d.ts +14 -17
- package/dist/internal/calendarValueOfZoned.js +25 -25
- package/dist/internal/calendarZonedPairPolicy.d.ts +11 -18
- package/dist/internal/calendarZonedPairPolicy.js +14 -25
- package/dist/internal/calendarZonedString.d.ts +41 -65
- package/dist/internal/calendarZonedString.js +52 -101
- package/dist/internal/compareUnixEpochs.d.ts +14 -0
- package/dist/internal/compareUnixEpochs.js +25 -0
- package/dist/internal/dateTimeUnitHelpers.d.ts +18 -0
- package/dist/internal/dateTimeUnitHelpers.js +27 -0
- package/dist/internal/dateUnitHelpers.d.ts +39 -1
- package/dist/internal/dateUnitHelpers.js +73 -11
- package/dist/internal/defaultFractionalDigits.d.ts +14 -0
- package/dist/internal/defaultFractionalDigits.js +23 -0
- package/dist/internal/differenceRecord.d.ts +32 -0
- package/dist/internal/differenceRecord.js +79 -0
- package/dist/internal/divisionBoundary.d.ts +19 -0
- package/dist/internal/divisionBoundary.js +23 -0
- package/dist/internal/durationUntilString.d.ts +1 -1
- package/dist/internal/durationUntilString.js +10 -2
- package/dist/internal/englishCalendarNames.d.ts +11 -0
- package/dist/internal/englishCalendarNames.js +21 -1
- package/dist/internal/epochNanoseconds.d.ts +27 -0
- package/dist/internal/epochNanoseconds.js +31 -0
- package/dist/internal/fiscalCalendar.d.ts +36 -0
- package/dist/internal/fiscalCalendar.js +86 -0
- package/dist/internal/floorDivide.d.ts +15 -0
- package/dist/internal/floorDivide.js +18 -0
- package/dist/internal/foreignEpochs.d.ts +134 -0
- package/dist/internal/foreignEpochs.js +139 -0
- package/dist/internal/formatCalendarDays.d.ts +28 -0
- package/dist/internal/formatCalendarDays.js +49 -0
- package/dist/internal/formatDateInCalendar.d.ts +14 -39
- package/dist/internal/formatDateInCalendar.js +16 -47
- package/dist/internal/formatRelativeDuration.d.ts +27 -0
- package/dist/internal/formatRelativeDuration.js +45 -0
- package/dist/internal/freeTimeLedger.d.ts +93 -0
- package/dist/internal/freeTimeLedger.js +262 -0
- package/dist/internal/getLocaleFirstDayOfWeek.d.ts +9 -6
- package/dist/internal/getLocaleFirstDayOfWeek.js +9 -10
- package/dist/internal/getLocaleWeekYearBounds.d.ts +17 -9
- package/dist/internal/getLocaleWeekYearBounds.js +45 -26
- package/dist/internal/getLocaleWeekendDays.d.ts +9 -18
- package/dist/internal/getLocaleWeekendDays.js +9 -5
- package/dist/internal/halfOpenIntervals.d.ts +102 -0
- package/dist/internal/halfOpenIntervals.js +180 -0
- package/dist/internal/hasCalendarAnnotation.d.ts +20 -20
- package/dist/internal/hasCalendarAnnotation.js +23 -21
- package/dist/internal/hourDurationString.d.ts +16 -0
- package/dist/internal/hourDurationString.js +47 -0
- package/dist/internal/httpDateFields.d.ts +24 -0
- package/dist/internal/httpDateFields.js +86 -0
- package/dist/internal/index.d.ts +30 -9
- package/dist/internal/index.js +30 -9
- package/dist/internal/instantFormatOptions.d.ts +43 -0
- package/dist/internal/instantFormatOptions.js +99 -0
- package/dist/internal/instantIntervalText.d.ts +20 -0
- package/dist/internal/instantIntervalText.js +25 -0
- package/dist/internal/instantNanoseconds.d.ts +25 -0
- package/dist/internal/instantNanoseconds.js +41 -0
- package/dist/internal/intervalCountHelpers.d.ts +16 -10
- package/dist/internal/intervalCountHelpers.js +1 -31
- package/dist/internal/intervalNanoseconds.d.ts +47 -0
- package/dist/internal/intervalNanoseconds.js +86 -0
- package/dist/internal/isObject.d.ts +26 -0
- package/dist/internal/isObject.js +30 -0
- package/dist/internal/isoStringBody.d.ts +66 -0
- package/dist/internal/isoStringBody.js +105 -0
- package/dist/internal/joinDateTimeConnector.d.ts +1 -1
- package/dist/internal/localeWeekInfo.d.ts +34 -0
- package/dist/internal/localeWeekInfo.js +27 -0
- package/dist/internal/maxPieces.d.ts +41 -0
- package/dist/internal/maxPieces.js +53 -0
- package/dist/internal/measureNearRangeEnd.d.ts +26 -0
- package/dist/internal/measureNearRangeEnd.js +47 -0
- package/dist/internal/monthGridWeekRow.d.ts +4 -1
- package/dist/internal/monthGridWeekRow.js +3 -0
- package/dist/internal/normalizeTimeZone.d.ts +17 -10
- package/dist/internal/normalizeTimeZone.js +25 -15
- package/dist/internal/patternToken.d.ts +2 -1
- package/dist/internal/patternToken.js +10 -4
- package/dist/internal/plainDateAdd.d.ts +20 -0
- package/dist/internal/plainDateAdd.js +42 -0
- package/dist/internal/plainDateUntil.d.ts +21 -0
- package/dist/internal/plainDateUntil.js +48 -0
- package/dist/internal/plainFormatOptions.d.ts +59 -0
- package/dist/internal/plainFormatOptions.js +165 -0
- package/dist/internal/resolveDateTimeUnit.d.ts +4 -1
- package/dist/internal/resolveDateTimeUnit.js +2 -12
- package/dist/internal/resolveDurationRelativeTo.d.ts +28 -22
- package/dist/internal/resolveDurationRelativeTo.js +69 -25
- package/dist/internal/resolveDurationUnit.d.ts +4 -1
- package/dist/internal/resolveDurationUnit.js +2 -11
- package/dist/internal/resolveLocale.d.ts +37 -0
- package/dist/internal/resolveLocale.js +59 -0
- package/dist/internal/resolveManualRoundingOptions.d.ts +23 -0
- package/dist/internal/resolveManualRoundingOptions.js +39 -0
- package/dist/internal/resolveMinimalDaysInFirstWeek.d.ts +19 -0
- package/dist/internal/resolveMinimalDaysInFirstWeek.js +28 -0
- package/dist/internal/resolveOverflow.d.ts +6 -0
- package/dist/internal/resolveOverflow.js +7 -1
- package/dist/internal/resolveReadingTimeZone.d.ts +11 -0
- package/dist/internal/resolveReadingTimeZone.js +18 -0
- package/dist/internal/resolveUnixIntervalPair.d.ts +30 -0
- package/dist/internal/resolveUnixIntervalPair.js +53 -0
- package/dist/internal/resolveWeekStartsOn.d.ts +12 -0
- package/dist/internal/resolveWeekStartsOn.js +18 -0
- package/dist/internal/rfc5322DateTime.d.ts +26 -0
- package/dist/internal/rfc5322DateTime.js +176 -0
- package/dist/internal/splitStep.d.ts +81 -0
- package/dist/internal/splitStep.js +182 -0
- package/dist/internal/startOrEndOfUnix.d.ts +26 -0
- package/dist/internal/startOrEndOfUnix.js +47 -0
- package/dist/{utc/calculate → internal}/startOrEndOfUtc.d.ts +8 -4
- package/dist/{utc/calculate → internal}/startOrEndOfUtc.js +30 -26
- package/dist/internal/startOrEndOfZoned.d.ts +22 -0
- package/dist/internal/startOrEndOfZoned.js +49 -0
- package/dist/internal/temporalCompat/calendarDateArithmetic.d.ts +33 -0
- package/dist/internal/temporalCompat/calendarDateArithmetic.js +199 -0
- package/dist/internal/temporalCompat/calendarDateFromFields.d.ts +36 -0
- package/dist/internal/temporalCompat/calendarDateFromFields.js +120 -0
- package/dist/internal/temporalCompat/calendarFields.d.ts +25 -0
- package/dist/internal/temporalCompat/calendarFields.js +131 -0
- package/dist/internal/temporalCompat/capabilities.d.ts +28 -0
- package/dist/internal/temporalCompat/capabilities.js +74 -0
- package/dist/internal/temporalCompat/fieldSearch.d.ts +21 -0
- package/dist/internal/temporalCompat/fieldSearch.js +83 -0
- package/dist/internal/temporalCompat/fixedDay.d.ts +25 -0
- package/dist/internal/temporalCompat/fixedDay.js +45 -0
- package/dist/internal/temporalCompat/hebrewArithmetic.d.ts +19 -0
- package/dist/internal/temporalCompat/hebrewArithmetic.js +150 -0
- package/dist/internal/temporalCompat/index.d.ts +4 -0
- package/dist/internal/temporalCompat/index.js +5 -0
- package/dist/internal/temporalCompat/indianArithmetic.d.ts +16 -0
- package/dist/internal/temporalCompat/indianArithmetic.js +87 -0
- package/dist/internal/temporalCompat/largeMonthSpan.d.ts +19 -0
- package/dist/internal/temporalCompat/largeMonthSpan.js +199 -0
- package/dist/internal/temporalCompat/nonIsoArithmetic.d.ts +59 -0
- package/dist/internal/temporalCompat/nonIsoArithmetic.js +220 -0
- package/dist/internal/temporalCompat/readArithmeticModel.d.ts +3 -0
- package/dist/internal/temporalCompat/readArithmeticModel.js +284 -0
- package/dist/internal/temporalCompat/repros.d.ts +31 -0
- package/dist/internal/temporalCompat/repros.js +556 -0
- package/dist/internal/toInstantFromUtc.d.ts +10 -0
- package/dist/internal/toInstantFromUtc.js +19 -0
- package/dist/internal/unixEpochValue.d.ts +166 -0
- package/dist/internal/unixEpochValue.js +245 -0
- package/dist/internal/unixFormatReference.d.ts +18 -0
- package/dist/internal/unixFormatReference.js +44 -0
- package/dist/internal/unixZonedDateTime.d.ts +22 -0
- package/dist/internal/unixZonedDateTime.js +32 -0
- package/dist/internal/utcOffsetString.d.ts +39 -0
- package/dist/internal/utcOffsetString.js +75 -0
- package/dist/internal/utcZonedDateTime.d.ts +16 -0
- package/dist/internal/utcZonedDateTime.js +28 -0
- package/dist/internal/wallClockAtOffset.d.ts +22 -0
- package/dist/internal/wallClockAtOffset.js +26 -0
- package/dist/internal/zonedBucket.d.ts +91 -0
- package/dist/internal/zonedBucket.js +441 -0
- package/dist/internal/zonedFormatReference.d.ts +15 -0
- package/dist/internal/zonedFormatReference.js +24 -0
- package/dist/internal/zonedLocalDates.d.ts +15 -0
- package/dist/internal/zonedLocalDates.js +58 -0
- package/dist/internal/zonedNowUnitValue.d.ts +24 -0
- package/dist/internal/zonedNowUnitValue.js +58 -0
- package/dist/internal/zonedWallClock.d.ts +84 -0
- package/dist/internal/zonedWallClock.js +427 -0
- package/dist/internal/zonedWallClockDifference.d.ts +92 -0
- package/dist/internal/zonedWallClockDifference.js +1174 -0
- package/dist/internal/zonedWallClockOperations.d.ts +132 -0
- package/dist/internal/zonedWallClockOperations.js +553 -0
- package/dist/internal/zonelessCalendarDate.d.ts +12 -0
- package/dist/internal/zonelessCalendarDate.js +22 -0
- package/dist/interval/calculate/clampInterval.d.ts +22 -0
- package/dist/interval/calculate/clampInterval.js +31 -0
- package/dist/interval/calculate/index.d.ts +6 -0
- package/dist/interval/calculate/index.js +6 -0
- package/dist/interval/calculate/intersectIntervals.d.ts +23 -0
- package/dist/interval/calculate/intersectIntervals.js +43 -0
- package/dist/interval/calculate/mergeIntervals.d.ts +28 -0
- package/dist/interval/calculate/mergeIntervals.js +44 -0
- package/dist/interval/calculate/splitIntervalAt.d.ts +28 -0
- package/dist/interval/calculate/splitIntervalAt.js +63 -0
- package/dist/interval/calculate/subtractIntervals.d.ts +31 -0
- package/dist/interval/calculate/subtractIntervals.js +64 -0
- package/dist/interval/calculate/sumIntervals.d.ts +26 -0
- package/dist/interval/calculate/sumIntervals.js +40 -0
- package/dist/interval/compare/index.d.ts +2 -0
- package/dist/interval/compare/index.js +2 -0
- package/dist/interval/compare/intervalContains.d.ts +25 -0
- package/dist/interval/compare/intervalContains.js +39 -0
- package/dist/interval/compare/intervalsOverlap.d.ts +28 -0
- package/dist/interval/compare/intervalsOverlap.js +42 -0
- package/dist/interval/index.d.ts +4 -0
- package/dist/interval/index.js +5 -0
- package/dist/interval/validate/index.d.ts +1 -0
- package/dist/interval/validate/index.js +1 -0
- package/dist/interval/validate/isValidInterval.d.ts +29 -0
- package/dist/interval/validate/isValidInterval.js +38 -0
- package/dist/plain/calculate/addBusinessDays.d.ts +26 -9
- package/dist/plain/calculate/addBusinessDays.js +29 -21
- package/dist/plain/calculate/addDate.d.ts +9 -8
- package/dist/plain/calculate/addDate.js +35 -22
- package/dist/plain/calculate/addDateTime.js +24 -10
- package/dist/plain/calculate/addTime.d.ts +5 -8
- package/dist/plain/calculate/addTime.js +23 -16
- package/dist/plain/calculate/clampDate.js +3 -3
- package/dist/plain/calculate/closestDateTo.d.ts +11 -7
- package/dist/plain/calculate/closestDateTo.js +36 -24
- package/dist/plain/calculate/cycleDate.d.ts +1 -1
- package/dist/plain/calculate/cycleDate.js +10 -3
- package/dist/plain/calculate/cycleDateTime.d.ts +1 -1
- package/dist/plain/calculate/cycleDateTime.js +10 -3
- package/dist/plain/calculate/cycleTime.d.ts +6 -8
- package/dist/plain/calculate/cycleTime.js +15 -9
- package/dist/plain/calculate/diffDate.d.ts +31 -14
- package/dist/plain/calculate/diffDate.js +73 -38
- package/dist/plain/calculate/diffDateAsDuration.d.ts +13 -8
- package/dist/plain/calculate/diffDateAsDuration.js +22 -9
- package/dist/plain/calculate/diffDateTime.d.ts +17 -5
- package/dist/plain/calculate/diffDateTime.js +67 -28
- package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +2 -2
- package/dist/plain/calculate/diffDateTimeAsDuration.js +10 -3
- package/dist/plain/calculate/diffTime.d.ts +18 -5
- package/dist/plain/calculate/diffTime.js +68 -27
- package/dist/plain/calculate/endOfDate.d.ts +10 -2
- package/dist/plain/calculate/endOfDate.js +52 -27
- package/dist/plain/calculate/endOfDateTime.d.ts +17 -2
- package/dist/plain/calculate/endOfDateTime.js +126 -103
- package/dist/plain/calculate/endOfTime.d.ts +16 -2
- package/dist/plain/calculate/endOfTime.js +77 -59
- package/dist/plain/calculate/getLargestDateDurationUnit.d.ts +13 -5
- package/dist/plain/calculate/getLargestDateDurationUnit.js +26 -10
- package/dist/plain/calculate/getLargestDateTimeDurationUnit.d.ts +13 -6
- package/dist/plain/calculate/getLargestDateTimeDurationUnit.js +37 -22
- package/dist/plain/calculate/getLargestTimeDurationUnit.d.ts +13 -6
- package/dist/plain/calculate/getLargestTimeDurationUnit.js +33 -18
- package/dist/plain/calculate/getLocaleDayOfWeek.d.ts +8 -4
- package/dist/plain/calculate/getLocaleDayOfWeek.js +8 -3
- package/dist/plain/calculate/getLocaleEndOfWeek.d.ts +8 -4
- package/dist/plain/calculate/getLocaleEndOfWeek.js +8 -3
- package/dist/plain/calculate/getLocaleStartOfWeek.d.ts +8 -4
- package/dist/plain/calculate/getLocaleStartOfWeek.js +8 -3
- package/dist/plain/calculate/getLocaleWeekYear.d.ts +29 -19
- package/dist/plain/calculate/getLocaleWeekYear.js +48 -28
- package/dist/plain/calculate/getWeekNumber.d.ts +21 -2
- package/dist/plain/calculate/getWeekNumber.js +33 -12
- package/dist/plain/calculate/getWeekOfMonth.d.ts +4 -2
- package/dist/plain/calculate/getWeekOfMonth.js +8 -3
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +25 -14
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +45 -25
- package/dist/plain/calculate/getWeeksInMonth.d.ts +4 -2
- package/dist/plain/calculate/getWeeksInMonth.js +8 -3
- package/dist/plain/calculate/getWeeksInYear.d.ts +5 -4
- package/dist/plain/calculate/getWeeksInYear.js +9 -14
- package/dist/plain/calculate/maxDate.js +19 -12
- package/dist/plain/calculate/maxDateTime.js +19 -12
- package/dist/plain/calculate/maxTime.js +19 -12
- package/dist/plain/calculate/minDate.js +19 -12
- package/dist/plain/calculate/minDateTime.js +19 -12
- package/dist/plain/calculate/minTime.js +19 -12
- package/dist/plain/calculate/nextWeekday.js +5 -0
- package/dist/plain/calculate/previousWeekday.js +5 -0
- package/dist/plain/calculate/roundDate.d.ts +23 -5
- package/dist/plain/calculate/roundDate.js +88 -46
- package/dist/plain/calculate/roundDateTime.d.ts +27 -3
- package/dist/plain/calculate/roundDateTime.js +128 -69
- package/dist/plain/calculate/roundTime.d.ts +8 -1
- package/dist/plain/calculate/roundTime.js +32 -17
- package/dist/plain/calculate/setDate.js +4 -0
- package/dist/plain/calculate/setDateTime.js +4 -0
- package/dist/plain/calculate/setTime.d.ts +1 -1
- package/dist/plain/calculate/setTime.js +5 -1
- package/dist/plain/calculate/sortDateTimes.js +17 -10
- package/dist/plain/calculate/sortDates.js +17 -10
- package/dist/plain/calculate/sortTimes.js +17 -10
- package/dist/plain/calculate/startOfDate.d.ts +7 -2
- package/dist/plain/calculate/startOfDate.js +52 -27
- package/dist/plain/calculate/startOfDateTime.d.ts +5 -2
- package/dist/plain/calculate/startOfDateTime.js +81 -62
- package/dist/plain/calculate/startOfQuarterForDateTime.d.ts +2 -0
- package/dist/plain/calculate/startOfQuarterForDateTime.js +12 -1
- package/dist/plain/calculate/startOfTime.d.ts +15 -2
- package/dist/plain/calculate/startOfTime.js +33 -37
- package/dist/plain/calculate/subtractBusinessDays.d.ts +25 -10
- package/dist/plain/calculate/subtractBusinessDays.js +28 -22
- package/dist/plain/calculate/subtractDate.d.ts +8 -7
- package/dist/plain/calculate/subtractDate.js +35 -21
- package/dist/plain/calculate/subtractDateTime.js +24 -10
- package/dist/plain/calculate/subtractTime.d.ts +5 -8
- package/dist/plain/calculate/subtractTime.js +23 -16
- package/dist/plain/chop/index.d.ts +0 -1
- package/dist/plain/chop/index.js +0 -1
- package/dist/plain/compare/areDateTimesEqualBy.d.ts +10 -5
- package/dist/plain/compare/areDateTimesEqualBy.js +35 -10
- package/dist/plain/compare/areDatesEqualBy.d.ts +10 -3
- package/dist/plain/compare/areDatesEqualBy.js +41 -14
- package/dist/plain/compare/isBetweenDate.js +32 -16
- package/dist/plain/compare/isBetweenDateTime.js +34 -18
- package/dist/plain/compare/isBetweenTime.js +32 -16
- package/dist/plain/compare/isBusinessDay.d.ts +25 -11
- package/dist/plain/compare/isBusinessDay.js +36 -15
- package/dist/plain/compare/isThisUnit.d.ts +13 -4
- package/dist/plain/compare/isThisUnit.js +33 -13
- package/dist/plain/compare/isWeekend.d.ts +8 -4
- package/dist/plain/compare/isWeekend.js +7 -3
- package/dist/plain/convert/convertDateToCalendar.d.ts +34 -33
- package/dist/plain/convert/convertDateToCalendar.js +41 -40
- package/dist/plain/format/formatCalendar.d.ts +12 -6
- package/dist/plain/format/formatCalendar.js +47 -25
- package/dist/plain/format/formatDate.d.ts +21 -4
- package/dist/plain/format/formatDate.js +37 -5
- package/dist/plain/format/formatDateRange.d.ts +17 -4
- package/dist/plain/format/formatDateRange.js +29 -5
- package/dist/plain/format/formatDateTime.d.ts +22 -4
- package/dist/plain/format/formatDateTime.js +31 -5
- package/dist/plain/format/formatDateTimeRange.d.ts +20 -4
- package/dist/plain/format/formatDateTimeRange.js +29 -5
- package/dist/plain/format/formatDateTimeToParts.d.ts +32 -6
- package/dist/plain/format/formatDateTimeToParts.js +40 -14
- package/dist/plain/format/formatDateToParts.d.ts +24 -3
- package/dist/plain/format/formatDateToParts.js +36 -11
- package/dist/plain/format/formatRelativeDate.d.ts +7 -3
- package/dist/plain/format/formatRelativeDate.js +39 -24
- package/dist/plain/format/formatRelativeDateTime.d.ts +15 -6
- package/dist/plain/format/formatRelativeDateTime.js +35 -33
- package/dist/plain/format/formatRelativeTime.d.ts +8 -4
- package/dist/plain/format/formatRelativeTime.js +36 -21
- package/dist/plain/format/formatSql.d.ts +15 -10
- package/dist/plain/format/formatSql.js +20 -11
- package/dist/plain/format/formatTime.d.ts +18 -4
- package/dist/plain/format/formatTime.js +32 -5
- package/dist/plain/get/getNowUnit.d.ts +3 -0
- package/dist/plain/get/getNowUnit.js +14 -29
- package/dist/plain/index.js +1 -1
- package/dist/plain/interval/intervalAbutsDate.d.ts +12 -7
- package/dist/plain/interval/intervalAbutsDate.js +15 -19
- package/dist/plain/interval/intervalAbutsDateTime.d.ts +9 -7
- package/dist/plain/interval/intervalAbutsDateTime.js +17 -23
- package/dist/plain/interval/intervalAbutsTime.d.ts +11 -5
- package/dist/plain/interval/intervalAbutsTime.js +19 -21
- package/dist/plain/interval/intervalContainsDate.d.ts +17 -10
- package/dist/plain/interval/intervalContainsDate.js +20 -15
- package/dist/plain/interval/intervalContainsDateTime.d.ts +16 -11
- package/dist/plain/interval/intervalContainsDateTime.js +24 -20
- package/dist/plain/interval/intervalContainsTime.d.ts +20 -10
- package/dist/plain/interval/intervalContainsTime.js +28 -19
- package/dist/plain/interval/intervalCountDate.d.ts +13 -8
- package/dist/plain/interval/intervalCountDate.js +46 -14
- package/dist/plain/interval/intervalCountDateTime.d.ts +6 -4
- package/dist/plain/interval/intervalCountDateTime.js +63 -18
- package/dist/plain/interval/intervalCountTime.d.ts +3 -4
- package/dist/plain/interval/intervalCountTime.js +9 -9
- package/dist/plain/interval/intervalDifferenceDate.d.ts +13 -6
- package/dist/plain/interval/intervalDifferenceDate.js +19 -32
- package/dist/plain/interval/intervalDifferenceDateTime.d.ts +10 -4
- package/dist/plain/interval/intervalDifferenceDateTime.js +21 -27
- package/dist/plain/interval/intervalDifferenceTime.d.ts +11 -4
- package/dist/plain/interval/intervalDifferenceTime.js +22 -27
- package/dist/plain/interval/intervalDivideEquallyDate.d.ts +16 -4
- package/dist/plain/interval/intervalDivideEquallyDate.js +57 -33
- package/dist/plain/interval/intervalDivideEquallyDateTime.d.ts +16 -4
- package/dist/plain/interval/intervalDivideEquallyDateTime.js +67 -31
- package/dist/plain/interval/intervalDivideEquallyTime.d.ts +16 -4
- package/dist/plain/interval/intervalDivideEquallyTime.js +58 -31
- package/dist/plain/interval/intervalEngulfsDate.d.ts +16 -9
- package/dist/plain/interval/intervalEngulfsDate.js +19 -12
- package/dist/plain/interval/intervalEngulfsDateTime.d.ts +16 -11
- package/dist/plain/interval/intervalEngulfsDateTime.js +24 -18
- package/dist/plain/interval/intervalEngulfsTime.d.ts +18 -8
- package/dist/plain/interval/intervalEngulfsTime.js +26 -15
- package/dist/plain/interval/intervalFromDurationDate.d.ts +5 -4
- package/dist/plain/interval/intervalFromDurationDate.js +11 -8
- package/dist/plain/interval/intervalFromDurationDateTime.js +4 -0
- package/dist/plain/interval/intervalFromDurationTime.d.ts +10 -12
- package/dist/plain/interval/intervalFromDurationTime.js +28 -17
- package/dist/plain/interval/intervalIntersectionDate.d.ts +9 -4
- package/dist/plain/interval/intervalIntersectionDate.js +14 -9
- package/dist/plain/interval/intervalIntersectionDateTime.d.ts +9 -4
- package/dist/plain/interval/intervalIntersectionDateTime.js +19 -13
- package/dist/plain/interval/intervalIntersectionTime.d.ts +7 -3
- package/dist/plain/interval/intervalIntersectionTime.js +17 -12
- package/dist/plain/interval/intervalLengthDate.d.ts +9 -6
- package/dist/plain/interval/intervalLengthDate.js +40 -8
- package/dist/plain/interval/intervalLengthDateTime.js +2 -2
- package/dist/plain/interval/intervalOverlappingDaysDate.d.ts +16 -17
- package/dist/plain/interval/intervalOverlappingDaysDate.js +30 -30
- package/dist/plain/interval/intervalOverlappingDaysDateTime.d.ts +7 -12
- package/dist/plain/interval/intervalOverlappingDaysDateTime.js +24 -24
- package/dist/plain/interval/intervalSplitAtDate.d.ts +10 -5
- package/dist/plain/interval/intervalSplitAtDate.js +48 -36
- package/dist/plain/interval/intervalSplitAtDateTime.d.ts +9 -4
- package/dist/plain/interval/intervalSplitAtDateTime.js +44 -32
- package/dist/plain/interval/intervalSplitAtTime.d.ts +9 -4
- package/dist/plain/interval/intervalSplitAtTime.js +44 -32
- package/dist/plain/interval/intervalUnionDate.d.ts +14 -6
- package/dist/plain/interval/intervalUnionDate.js +19 -11
- package/dist/plain/interval/intervalUnionDateTime.d.ts +12 -5
- package/dist/plain/interval/intervalUnionDateTime.js +22 -14
- package/dist/plain/interval/intervalUnionTime.d.ts +10 -3
- package/dist/plain/interval/intervalUnionTime.js +20 -12
- package/dist/plain/interval/intervalXorAllDate.d.ts +11 -10
- package/dist/plain/interval/intervalXorAllDate.js +37 -59
- package/dist/plain/interval/intervalXorAllDateTime.d.ts +7 -5
- package/dist/plain/interval/intervalXorAllDateTime.js +28 -48
- package/dist/plain/interval/intervalXorAllTime.d.ts +8 -4
- package/dist/plain/interval/intervalXorAllTime.js +29 -47
- package/dist/plain/interval/intervalXorDate.d.ts +10 -9
- package/dist/plain/interval/intervalXorDate.js +19 -54
- package/dist/plain/interval/intervalXorDateTime.d.ts +9 -7
- package/dist/plain/interval/intervalXorDateTime.js +23 -50
- package/dist/plain/interval/intervalXorTime.d.ts +8 -7
- package/dist/plain/interval/intervalXorTime.js +22 -50
- package/dist/plain/interval/intervalsOverlapDate.d.ts +14 -7
- package/dist/plain/interval/intervalsOverlapDate.js +17 -10
- package/dist/plain/interval/intervalsOverlapDateTime.d.ts +12 -7
- package/dist/plain/interval/intervalsOverlapDateTime.js +20 -14
- package/dist/plain/interval/intervalsOverlapTime.d.ts +10 -5
- package/dist/plain/interval/intervalsOverlapTime.js +18 -12
- package/dist/plain/interval/mergeIntervalsDate.d.ts +9 -5
- package/dist/plain/interval/mergeIntervalsDate.js +37 -38
- package/dist/plain/interval/mergeIntervalsDateTime.d.ts +7 -3
- package/dist/plain/interval/mergeIntervalsDateTime.js +31 -32
- package/dist/plain/interval/mergeIntervalsTime.d.ts +7 -3
- package/dist/plain/interval/mergeIntervalsTime.js +31 -31
- package/dist/plain/interval/splitIntervalByUnitDate.d.ts +26 -6
- package/dist/plain/interval/splitIntervalByUnitDate.js +76 -43
- package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +22 -2
- package/dist/plain/interval/splitIntervalByUnitDateTime.js +65 -39
- package/dist/plain/interval/splitIntervalByUnitTime.d.ts +18 -2
- package/dist/plain/interval/splitIntervalByUnitTime.js +76 -39
- package/dist/plain/interval/validate/isValidDateInterval.d.ts +4 -2
- package/dist/plain/interval/validate/isValidDateInterval.js +4 -2
- package/dist/plain/interval/validate/isValidDateTimeInterval.d.ts +5 -0
- package/dist/plain/interval/validate/isValidDateTimeInterval.js +7 -2
- package/dist/plain/interval/validate/isValidTimeInterval.d.ts +5 -0
- package/dist/plain/interval/validate/isValidTimeInterval.js +8 -18
- package/dist/plain/locale/getLocaleEraNames.d.ts +14 -4
- package/dist/plain/locale/getLocaleEraNames.js +56 -41
- package/dist/plain/locale/getLocaleMeridiems.d.ts +7 -4
- package/dist/plain/locale/getLocaleMeridiems.js +28 -22
- package/dist/plain/locale/getLocaleMonthNames.d.ts +14 -4
- package/dist/plain/locale/getLocaleMonthNames.js +34 -19
- package/dist/plain/locale/getLocaleWeekdayNames.d.ts +14 -7
- package/dist/plain/locale/getLocaleWeekdayNames.js +40 -22
- package/dist/plain/map/mapDatesInRange.d.ts +18 -1
- package/dist/plain/map/mapDatesInRange.js +53 -17
- package/dist/plain/parse/parseDateTimeWithPattern.d.ts +3 -2
- package/dist/plain/parse/parseDateTimeWithPattern.js +30 -24
- package/dist/plain/parse/parseDateWithPattern.d.ts +3 -2
- package/dist/plain/parse/parseDateWithPattern.js +22 -16
- package/dist/plain/parse/parseMicrosecondFromDateTime.d.ts +2 -1
- package/dist/plain/parse/parseMicrosecondFromDateTime.js +2 -1
- package/dist/plain/parse/parseMicrosecondFromTime.d.ts +2 -1
- package/dist/plain/parse/parseMicrosecondFromTime.js +2 -1
- package/dist/plain/parse/parseNanosecondFromDateTime.d.ts +2 -1
- package/dist/plain/parse/parseNanosecondFromDateTime.js +2 -1
- package/dist/plain/parse/parseNanosecondFromTime.d.ts +2 -1
- package/dist/plain/parse/parseNanosecondFromTime.js +2 -1
- package/dist/plain/parse/parseSql.d.ts +15 -12
- package/dist/plain/parse/parseSql.js +16 -13
- package/dist/plain/parse/parseTimeWithPattern.d.ts +3 -2
- package/dist/plain/parse/parseTimeWithPattern.js +27 -21
- package/dist/plain/parse/parseUnitFromDate.d.ts +9 -2
- package/dist/plain/parse/parseUnitFromDate.js +39 -19
- package/dist/plain/parse/parseUnitFromDateTime.d.ts +11 -3
- package/dist/plain/parse/parseUnitFromDateTime.js +54 -28
- package/dist/plain/parse/parseUnitFromTime.d.ts +9 -3
- package/dist/plain/parse/parseUnitFromTime.js +13 -3
- package/dist/plain/parse/parseWeekFromDate.d.ts +5 -0
- package/dist/plain/parse/parseWeekFromDate.js +24 -5
- package/dist/plain/parse/parseWeekFromDateTime.d.ts +5 -0
- package/dist/plain/parse/parseWeekFromDateTime.js +26 -5
- package/dist/plain/validate/isLeapSecond.d.ts +27 -9
- package/dist/plain/validate/isLeapSecond.js +30 -9
- package/dist/plain/validate/isLeapYear.d.ts +7 -1
- package/dist/plain/validate/isLeapYear.js +10 -1
- package/dist/plain/validate/isValidCalendarDate.d.ts +37 -6
- package/dist/plain/validate/isValidCalendarDate.js +37 -6
- package/dist/plain/validate/isValidDate.d.ts +9 -1
- package/dist/plain/validate/isValidDate.js +14 -5
- package/dist/plain/validate/isValidDateRange.d.ts +11 -4
- package/dist/plain/validate/isValidDateRange.js +32 -22
- package/dist/plain/validate/isValidDateTime.d.ts +7 -1
- package/dist/plain/validate/isValidDateTime.js +12 -5
- package/dist/plain/validate/isValidDateTimeRange.d.ts +3 -2
- package/dist/plain/validate/isValidDateTimeRange.js +30 -15
- package/dist/plain/validate/isValidIsoDateLike.d.ts +6 -1
- package/dist/plain/validate/isValidIsoDateLike.js +13 -8
- package/dist/plain/validate/isValidTime.d.ts +6 -1
- package/dist/plain/validate/isValidTime.js +10 -3
- package/dist/plain/validate/isValidTimeRange.d.ts +4 -2
- package/dist/plain/validate/isValidTimeRange.js +31 -27
- package/dist/precision/calculate/index.d.ts +1 -0
- package/dist/precision/calculate/index.js +1 -0
- package/dist/precision/calculate/truncateNanoseconds.d.ts +37 -0
- package/dist/precision/calculate/truncateNanoseconds.js +41 -0
- package/dist/precision/convert/fromDotNetTicks.d.ts +30 -0
- package/dist/precision/convert/fromDotNetTicks.js +39 -0
- package/dist/precision/convert/fromExcelSerial.d.ts +38 -0
- package/dist/precision/convert/fromExcelSerial.js +81 -0
- package/dist/precision/convert/fromFileTime.d.ts +30 -0
- package/dist/precision/convert/fromFileTime.js +39 -0
- package/dist/precision/convert/fromNanoseconds.d.ts +29 -0
- package/dist/precision/convert/fromNanoseconds.js +50 -0
- package/dist/precision/convert/fromNtpTimestamp.d.ts +43 -0
- package/dist/precision/convert/fromNtpTimestamp.js +57 -0
- package/dist/precision/convert/fromPgMicroseconds.d.ts +26 -0
- package/dist/precision/convert/fromPgMicroseconds.js +33 -0
- package/dist/precision/convert/index.d.ts +12 -0
- package/dist/precision/convert/index.js +12 -0
- package/dist/precision/convert/toDotNetTicks.d.ts +29 -0
- package/dist/precision/convert/toDotNetTicks.js +40 -0
- package/dist/precision/convert/toExcelSerial.d.ts +56 -0
- package/dist/precision/convert/toExcelSerial.js +85 -0
- package/dist/precision/convert/toFileTime.d.ts +31 -0
- package/dist/precision/convert/toFileTime.js +43 -0
- package/dist/precision/convert/toNanoseconds.d.ts +37 -0
- package/dist/precision/convert/toNanoseconds.js +40 -0
- package/dist/precision/convert/toNtpTimestamp.d.ts +30 -0
- package/dist/precision/convert/toNtpTimestamp.js +38 -0
- package/dist/precision/convert/toPgMicroseconds.d.ts +29 -0
- package/dist/precision/convert/toPgMicroseconds.js +42 -0
- package/dist/precision/format/formatNanoseconds.d.ts +26 -0
- package/dist/precision/format/formatNanoseconds.js +32 -0
- package/dist/precision/format/index.d.ts +1 -0
- package/dist/precision/format/index.js +1 -0
- package/dist/precision/index.d.ts +6 -0
- package/dist/precision/index.js +7 -0
- package/dist/precision/parse/index.d.ts +1 -0
- package/dist/precision/parse/index.js +1 -0
- package/dist/precision/parse/parseNanoseconds.d.ts +27 -0
- package/dist/precision/parse/parseNanoseconds.js +32 -0
- package/dist/precision/validate/index.d.ts +3 -0
- package/dist/precision/validate/index.js +3 -0
- package/dist/precision/validate/isValidInstant.d.ts +37 -0
- package/dist/precision/validate/isValidInstant.js +40 -0
- package/dist/precision/validate/isValidNanoPattern.d.ts +27 -0
- package/dist/precision/validate/isValidNanoPattern.js +40 -0
- package/dist/precision/validate/isValidNanoseconds.d.ts +25 -0
- package/dist/precision/validate/isValidNanoseconds.js +28 -0
- package/dist/regex/calendar-date.d.ts +25 -14
- package/dist/regex/calendar-date.js +26 -15
- package/dist/regex/calendar-zoned-date-time.d.ts +22 -38
- package/dist/regex/calendar-zoned-date-time.js +23 -39
- package/dist/regex/date-time.d.ts +14 -4
- package/dist/regex/date-time.js +15 -5
- package/dist/regex/date.d.ts +45 -3
- package/dist/regex/date.js +47 -5
- package/dist/regex/http-date.d.ts +10 -6
- package/dist/regex/http-date.js +10 -6
- package/dist/regex/index.d.ts +3 -0
- package/dist/regex/index.js +4 -0
- package/dist/regex/leap-second.d.ts +41 -8
- package/dist/regex/leap-second.js +42 -9
- package/dist/regex/nanoseconds.d.ts +20 -0
- package/dist/regex/nanoseconds.js +20 -0
- package/dist/regex/rfc-2822.d.ts +15 -7
- package/dist/regex/rfc-2822.js +15 -7
- package/dist/regex/rfc-3339.d.ts +8 -1
- package/dist/regex/rfc-3339.js +9 -2
- package/dist/regex/sql-date-time.d.ts +27 -8
- package/dist/regex/sql-date-time.js +28 -9
- package/dist/regex/time-zone-like.d.ts +24 -15
- package/dist/regex/time-zone-like.js +25 -16
- package/dist/regex/time.d.ts +20 -6
- package/dist/regex/time.js +20 -6
- package/dist/regex/unix.d.ts +13 -5
- package/dist/regex/unix.js +13 -5
- package/dist/regex/utc-date-time.d.ts +19 -9
- package/dist/regex/utc-date-time.js +20 -10
- package/dist/regex/utc-offset.d.ts +24 -0
- package/dist/regex/utc-offset.js +24 -0
- package/dist/span/calculate/index.d.ts +3 -0
- package/dist/span/calculate/index.js +3 -0
- package/dist/span/calculate/spanMs.d.ts +52 -0
- package/dist/span/calculate/spanMs.js +80 -0
- package/dist/span/calculate/spanNs.d.ts +43 -0
- package/dist/span/calculate/spanNs.js +51 -0
- package/dist/span/calculate/spanWallClock.d.ts +60 -0
- package/dist/span/calculate/spanWallClock.js +80 -0
- package/dist/span/index.d.ts +3 -0
- package/dist/span/index.js +4 -0
- package/dist/span/validate/index.d.ts +1 -0
- package/dist/span/validate/index.js +1 -0
- package/dist/span/validate/isValidSpan.d.ts +37 -0
- package/dist/span/validate/isValidSpan.js +41 -0
- package/dist/transport/calculate/dwellTime.d.ts +72 -0
- package/dist/transport/calculate/dwellTime.js +126 -0
- package/dist/transport/calculate/index.d.ts +2 -0
- package/dist/transport/calculate/index.js +2 -0
- package/dist/transport/calculate/transitTime.d.ts +53 -0
- package/dist/transport/calculate/transitTime.js +118 -0
- package/dist/transport/convert/etaAtZone.d.ts +36 -0
- package/dist/transport/convert/etaAtZone.js +53 -0
- package/dist/transport/convert/index.d.ts +1 -0
- package/dist/transport/convert/index.js +1 -0
- package/dist/transport/index.d.ts +3 -0
- package/dist/transport/index.js +4 -0
- package/dist/types/business-calendar.d.ts +27 -0
- package/dist/types/business-calendar.js +0 -0
- package/dist/types/calendar-system.d.ts +9 -1
- package/dist/types/fiscal-calendar.d.ts +22 -0
- package/dist/types/fiscal-calendar.js +0 -0
- package/dist/types/free-time-options.d.ts +34 -0
- package/dist/types/free-time-options.js +0 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.js +6 -0
- package/dist/types/interval.d.ts +18 -0
- package/dist/types/interval.js +0 -0
- package/dist/types/now-unit.d.ts +1 -1
- package/dist/types/roll-convention.d.ts +32 -0
- package/dist/types/roll-convention.js +0 -0
- package/dist/types/utc-now-unit.d.ts +1 -1
- package/dist/types/zone-bucket-unit.d.ts +11 -0
- package/dist/types/zone-bucket-unit.js +0 -0
- package/dist/unix/calculate/addUnix.d.ts +10 -4
- package/dist/unix/calculate/addUnix.js +39 -26
- package/dist/unix/calculate/diffUnix.d.ts +38 -11
- package/dist/unix/calculate/diffUnix.js +84 -40
- package/dist/unix/calculate/diffUnixAsDuration.d.ts +17 -7
- package/dist/unix/calculate/diffUnixAsDuration.js +42 -23
- package/dist/unix/calculate/endOfQuarterForUnix.d.ts +15 -11
- package/dist/unix/calculate/endOfQuarterForUnix.js +20 -39
- package/dist/unix/calculate/endOfUnix.d.ts +23 -18
- package/dist/unix/calculate/endOfUnix.js +37 -15
- package/dist/unix/calculate/isBetweenUnix.d.ts +12 -6
- package/dist/unix/calculate/isBetweenUnix.js +34 -23
- package/dist/unix/calculate/maxUnix.d.ts +6 -3
- package/dist/unix/calculate/maxUnix.js +17 -8
- package/dist/unix/calculate/minUnix.d.ts +6 -3
- package/dist/unix/calculate/minUnix.js +17 -8
- package/dist/unix/calculate/roundUnix.d.ts +24 -10
- package/dist/unix/calculate/roundUnix.js +67 -42
- package/dist/unix/calculate/setUnix.d.ts +14 -5
- package/dist/unix/calculate/setUnix.js +48 -29
- package/dist/unix/calculate/sortUnix.d.ts +6 -3
- package/dist/unix/calculate/sortUnix.js +19 -11
- package/dist/unix/calculate/startOfQuarterForUnix.d.ts +17 -12
- package/dist/unix/calculate/startOfQuarterForUnix.js +22 -30
- package/dist/unix/calculate/startOfUnix.d.ts +23 -18
- package/dist/unix/calculate/startOfUnix.js +37 -15
- package/dist/unix/calculate/subtractUnix.d.ts +10 -4
- package/dist/unix/calculate/subtractUnix.js +39 -26
- package/dist/unix/compare/areUnixEqual.d.ts +9 -5
- package/dist/unix/compare/areUnixEqual.js +17 -13
- package/dist/unix/compare/areUnixEqualBy.d.ts +14 -7
- package/dist/unix/compare/areUnixEqualBy.js +14 -7
- package/dist/unix/compare/isAfterUnix.d.ts +8 -4
- package/dist/unix/compare/isAfterUnix.js +16 -12
- package/dist/unix/compare/isBeforeUnix.d.ts +7 -4
- package/dist/unix/compare/isBeforeUnix.js +15 -12
- package/dist/unix/convert/convertUnixToPlainDate.d.ts +17 -9
- package/dist/unix/convert/convertUnixToPlainDate.js +34 -21
- package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +15 -9
- package/dist/unix/convert/convertUnixToPlainDateTime.js +32 -21
- package/dist/unix/convert/convertUnixToPlainTime.d.ts +15 -9
- package/dist/unix/convert/convertUnixToPlainTime.js +32 -21
- package/dist/unix/convert/convertUnixToUtc.d.ts +15 -7
- package/dist/unix/convert/convertUnixToUtc.js +20 -15
- package/dist/unix/convert/convertUnixToZoned.d.ts +17 -10
- package/dist/unix/convert/convertUnixToZoned.js +31 -20
- package/dist/unix/format/formatCalendarUnix.d.ts +22 -19
- package/dist/unix/format/formatCalendarUnix.js +35 -81
- package/dist/unix/format/formatRelativeUnix.d.ts +25 -8
- package/dist/unix/format/formatRelativeUnix.js +46 -93
- package/dist/unix/format/formatUnix.d.ts +26 -4
- package/dist/unix/format/formatUnix.js +48 -34
- package/dist/unix/get/getUnixNow.d.ts +13 -7
- package/dist/unix/get/getUnixNow.js +27 -17
- package/dist/unix/get/getUnixNowUnit.d.ts +5 -2
- package/dist/unix/get/getUnixNowUnit.js +9 -35
- package/dist/unix/index.d.ts +1 -0
- package/dist/unix/index.js +2 -0
- package/dist/unix/interval/intervalAbutsUnix.d.ts +17 -12
- package/dist/unix/interval/intervalAbutsUnix.js +23 -41
- package/dist/unix/interval/intervalContainsUnix.d.ts +17 -7
- package/dist/unix/interval/intervalContainsUnix.js +25 -37
- package/dist/unix/interval/intervalCountUnix.d.ts +30 -13
- package/dist/unix/interval/intervalCountUnix.js +49 -23
- package/dist/unix/interval/intervalDifferenceUnix.d.ts +19 -10
- package/dist/unix/interval/intervalDifferenceUnix.js +25 -43
- package/dist/unix/interval/intervalDivideEquallyUnix.d.ts +24 -10
- package/dist/unix/interval/intervalDivideEquallyUnix.js +57 -36
- package/dist/unix/interval/intervalEngulfsUnix.d.ts +13 -7
- package/dist/unix/interval/intervalEngulfsUnix.js +18 -30
- package/dist/unix/interval/intervalFromDurationUnix.d.ts +10 -6
- package/dist/unix/interval/intervalFromDurationUnix.js +51 -39
- package/dist/unix/interval/intervalIntersectionUnix.d.ts +18 -11
- package/dist/unix/interval/intervalIntersectionUnix.js +25 -46
- package/dist/unix/interval/intervalLengthUnix.d.ts +21 -9
- package/dist/unix/interval/intervalLengthUnix.js +41 -18
- package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +26 -12
- package/dist/unix/interval/intervalOverlappingDaysUnix.js +67 -63
- package/dist/unix/interval/intervalSplitAtUnix.d.ts +11 -6
- package/dist/unix/interval/intervalSplitAtUnix.js +41 -34
- package/dist/unix/interval/intervalUnionUnix.d.ts +15 -9
- package/dist/unix/interval/intervalUnionUnix.js +20 -42
- package/dist/unix/interval/intervalXorAllUnix.d.ts +8 -6
- package/dist/unix/interval/intervalXorAllUnix.js +21 -56
- package/dist/unix/interval/intervalXorUnix.d.ts +22 -11
- package/dist/unix/interval/intervalXorUnix.js +28 -56
- package/dist/unix/interval/intervalsOverlapUnix.d.ts +16 -10
- package/dist/unix/interval/intervalsOverlapUnix.js +21 -37
- package/dist/unix/interval/mergeIntervalsUnix.d.ts +10 -4
- package/dist/unix/interval/mergeIntervalsUnix.js +25 -36
- package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +38 -8
- package/dist/unix/interval/splitIntervalByUnitUnix.js +72 -56
- package/dist/unix/interval/validate/isValidUnixInterval.d.ts +12 -6
- package/dist/unix/interval/validate/isValidUnixInterval.js +17 -16
- package/dist/unix/parse/index.d.ts +2 -0
- package/dist/unix/parse/index.js +2 -0
- package/dist/unix/parse/parseDateFromUnix.d.ts +10 -8
- package/dist/unix/parse/parseDateFromUnix.js +17 -29
- package/dist/unix/parse/parseDayFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseDayFromUnix.js +18 -5
- package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +8 -5
- package/dist/unix/parse/parseDayOfWeekFromUnix.js +15 -28
- package/dist/unix/parse/parseHourFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseHourFromUnix.js +18 -5
- package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMicrosecondFromUnix.js +16 -3
- package/dist/unix/parse/parseMillisecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMillisecondFromUnix.js +16 -3
- package/dist/unix/parse/parseMinuteFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseMinuteFromUnix.js +18 -5
- package/dist/unix/parse/parseMonthFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseMonthFromUnix.js +18 -5
- package/dist/unix/parse/parseNanosecondFromUnix.d.ts +8 -5
- package/dist/unix/parse/parseNanosecondFromUnix.js +20 -6
- package/dist/unix/parse/parseSecondFromUnix.d.ts +5 -3
- package/dist/unix/parse/parseSecondFromUnix.js +17 -4
- package/dist/unix/parse/parseTimeFromUnix.d.ts +10 -8
- package/dist/unix/parse/parseTimeFromUnix.js +17 -29
- package/dist/unix/parse/parseUnitFromUnix.d.ts +18 -11
- package/dist/unix/parse/parseUnitFromUnix.js +57 -55
- package/dist/unix/parse/parseWeekFromUnix.d.ts +15 -7
- package/dist/unix/parse/parseWeekFromUnix.js +32 -30
- package/dist/unix/parse/parseYearFromUnix.d.ts +5 -3
- package/dist/unix/parse/parseYearFromUnix.js +17 -4
- package/dist/unix/validate/isValidUnixMilliseconds.d.ts +8 -5
- package/dist/unix/validate/isValidUnixMilliseconds.js +10 -9
- package/dist/unix/validate/isValidUnixRange.d.ts +13 -7
- package/dist/unix/validate/isValidUnixRange.js +29 -19
- package/dist/unix/validate/isValidUnixSeconds.d.ts +8 -5
- package/dist/unix/validate/isValidUnixSeconds.js +10 -9
- package/dist/unix/validate/isValidUnixUnit.d.ts +9 -7
- package/dist/unix/validate/isValidUnixUnit.js +6 -8
- package/dist/utc/calculate/addUtc.js +26 -12
- package/dist/utc/calculate/diffUtc.d.ts +22 -7
- package/dist/utc/calculate/diffUtc.js +75 -31
- package/dist/utc/calculate/diffUtcAsDuration.d.ts +2 -2
- package/dist/utc/calculate/diffUtcAsDuration.js +10 -3
- package/dist/utc/calculate/endOfQuarterForUtc.d.ts +1 -1
- package/dist/utc/calculate/endOfQuarterForUtc.js +1 -1
- package/dist/utc/calculate/endOfUtc.d.ts +11 -4
- package/dist/utc/calculate/endOfUtc.js +22 -5
- package/dist/utc/calculate/isBetweenUtc.js +40 -24
- package/dist/utc/calculate/maxUtc.js +19 -12
- package/dist/utc/calculate/minUtc.js +19 -12
- package/dist/utc/calculate/roundUtc.d.ts +16 -2
- package/dist/utc/calculate/roundUtc.js +42 -31
- package/dist/utc/calculate/setUtc.d.ts +4 -8
- package/dist/utc/calculate/setUtc.js +25 -18
- package/dist/utc/calculate/sortUtc.js +17 -10
- package/dist/utc/calculate/startOfQuarterForUtc.d.ts +2 -0
- package/dist/utc/calculate/startOfQuarterForUtc.js +12 -1
- package/dist/utc/calculate/startOfUtc.d.ts +6 -4
- package/dist/utc/calculate/startOfUtc.js +17 -5
- package/dist/utc/calculate/subtractUtc.js +26 -12
- package/dist/utc/chop/chopUtc.d.ts +5 -2
- package/dist/utc/chop/chopUtc.js +8 -4
- package/dist/utc/compare/areUtcEqualBy.d.ts +10 -5
- package/dist/utc/compare/areUtcEqualBy.js +34 -11
- package/dist/utc/convert/convertUtcToPlainDate.js +22 -10
- package/dist/utc/convert/convertUtcToPlainDateTime.js +28 -16
- package/dist/utc/convert/convertUtcToPlainTime.js +22 -10
- package/dist/utc/convert/convertUtcToUnix.d.ts +12 -5
- package/dist/utc/convert/convertUtcToUnix.js +22 -13
- package/dist/utc/format/formatCalendarUtc.d.ts +11 -6
- package/dist/utc/format/formatCalendarUtc.js +32 -41
- package/dist/utc/format/formatHttp.d.ts +9 -3
- package/dist/utc/format/formatHttp.js +14 -12
- package/dist/utc/format/formatRelativeUtc.d.ts +18 -6
- package/dist/utc/format/formatRelativeUtc.js +43 -51
- package/dist/utc/format/formatUtc.d.ts +20 -3
- package/dist/utc/format/formatUtc.js +41 -12
- package/dist/utc/get/getUtcNowUnit.d.ts +3 -0
- package/dist/utc/get/getUtcNowUnit.js +11 -33
- package/dist/utc/index.d.ts +1 -0
- package/dist/utc/index.js +2 -0
- package/dist/utc/interval/intervalAbutsUtc.d.ts +10 -7
- package/dist/utc/interval/intervalAbutsUtc.js +18 -30
- package/dist/utc/interval/intervalContainsUtc.d.ts +19 -11
- package/dist/utc/interval/intervalContainsUtc.js +33 -34
- package/dist/utc/interval/intervalCountUtc.d.ts +3 -4
- package/dist/utc/interval/intervalCountUtc.js +12 -18
- package/dist/utc/interval/intervalDifferenceUtc.d.ts +13 -5
- package/dist/utc/interval/intervalDifferenceUtc.js +25 -51
- package/dist/utc/interval/intervalDivideEquallyUtc.d.ts +16 -3
- package/dist/utc/interval/intervalDivideEquallyUtc.js +54 -34
- package/dist/utc/interval/intervalEngulfsUtc.d.ts +17 -12
- package/dist/utc/interval/intervalEngulfsUtc.js +25 -26
- package/dist/utc/interval/intervalFromDurationUtc.js +5 -0
- package/dist/utc/interval/intervalIntersectionUtc.d.ts +12 -6
- package/dist/utc/interval/intervalIntersectionUtc.js +24 -41
- package/dist/utc/interval/intervalLengthUtc.js +5 -7
- package/dist/utc/interval/intervalOverlappingDaysUtc.d.ts +7 -13
- package/dist/utc/interval/intervalOverlappingDaysUtc.js +25 -36
- package/dist/utc/interval/intervalSplitAtUtc.d.ts +7 -2
- package/dist/utc/interval/intervalSplitAtUtc.js +39 -33
- package/dist/utc/interval/intervalUnionUtc.d.ts +15 -7
- package/dist/utc/interval/intervalUnionUtc.js +31 -42
- package/dist/utc/interval/intervalXorAllUtc.d.ts +7 -4
- package/dist/utc/interval/intervalXorAllUtc.js +30 -52
- package/dist/utc/interval/intervalXorUtc.d.ts +8 -6
- package/dist/utc/interval/intervalXorUtc.js +22 -56
- package/dist/utc/interval/intervalsOverlapUtc.d.ts +15 -9
- package/dist/utc/interval/intervalsOverlapUtc.js +23 -39
- package/dist/utc/interval/mergeIntervalsUtc.d.ts +9 -2
- package/dist/utc/interval/mergeIntervalsUtc.js +23 -36
- package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +23 -2
- package/dist/utc/interval/splitIntervalByUnitUtc.js +65 -44
- package/dist/utc/interval/validate/isValidUtcInterval.d.ts +5 -0
- package/dist/utc/interval/validate/isValidUtcInterval.js +7 -6
- package/dist/utc/parse/parseDateFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseDateFromUtc.js +14 -9
- package/dist/utc/parse/parseDayFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseDayFromUtc.js +14 -8
- package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseDayOfWeekFromUtc.js +24 -6
- package/dist/utc/parse/parseHourFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseHourFromUtc.js +14 -8
- package/dist/utc/parse/parseHttp.d.ts +39 -14
- package/dist/utc/parse/parseHttp.js +69 -28
- package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +9 -2
- package/dist/utc/parse/parseMicrosecondFromUtc.js +18 -9
- package/dist/utc/parse/parseMillisecondFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseMillisecondFromUtc.js +16 -8
- package/dist/utc/parse/parseMinuteFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseMinuteFromUtc.js +14 -8
- package/dist/utc/parse/parseMonthFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseMonthFromUtc.js +14 -8
- package/dist/utc/parse/parseNanosecondFromUtc.d.ts +9 -2
- package/dist/utc/parse/parseNanosecondFromUtc.js +18 -9
- package/dist/utc/parse/parseSecondFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseSecondFromUtc.js +14 -8
- package/dist/utc/parse/parseTimeFromUtc.js +21 -10
- package/dist/utc/parse/parseUnitFromUtc.d.ts +18 -7
- package/dist/utc/parse/parseUnitFromUtc.js +58 -31
- package/dist/utc/parse/parseWeekFromUtc.d.ts +16 -3
- package/dist/utc/parse/parseWeekFromUtc.js +38 -10
- package/dist/utc/parse/parseYearFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseYearFromUtc.js +14 -8
- package/dist/utc/validate/isValidUtc.d.ts +8 -1
- package/dist/utc/validate/isValidUtc.js +12 -3
- package/dist/utc/validate/isValidUtcRange.d.ts +3 -2
- package/dist/utc/validate/isValidUtcRange.js +30 -19
- package/dist/zoned/calculate/addZoned.d.ts +40 -27
- package/dist/zoned/calculate/addZoned.js +71 -56
- package/dist/zoned/calculate/addZonedBusinessDays.d.ts +2 -0
- package/dist/zoned/calculate/addZonedBusinessDays.js +5 -2
- package/dist/zoned/calculate/clampZoned.js +4 -3
- package/dist/zoned/calculate/closestZonedTo.d.ts +6 -6
- package/dist/zoned/calculate/closestZonedTo.js +35 -26
- package/dist/zoned/calculate/cycleZoned.d.ts +10 -7
- package/dist/zoned/calculate/cycleZoned.js +19 -11
- package/dist/zoned/calculate/diffZoned.d.ts +39 -17
- package/dist/zoned/calculate/diffZoned.js +90 -45
- package/dist/zoned/calculate/diffZonedAsDuration.d.ts +19 -9
- package/dist/zoned/calculate/diffZonedAsDuration.js +32 -15
- package/dist/zoned/calculate/endOfQuarterForZoned.d.ts +11 -11
- package/dist/zoned/calculate/endOfQuarterForZoned.js +32 -31
- package/dist/zoned/calculate/endOfZoned.d.ts +21 -14
- package/dist/zoned/calculate/endOfZoned.js +25 -111
- package/dist/zoned/calculate/getHoursInZonedDay.d.ts +8 -1
- package/dist/zoned/calculate/getHoursInZonedDay.js +10 -14
- package/dist/zoned/calculate/getLocaleZonedDayOfWeek.d.ts +8 -4
- package/dist/zoned/calculate/getLocaleZonedDayOfWeek.js +9 -6
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +20 -26
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +40 -44
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +16 -24
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +36 -42
- package/dist/zoned/calculate/getQuarterForZoned.js +2 -2
- package/dist/zoned/calculate/maxZoned.js +20 -12
- package/dist/zoned/calculate/minZoned.d.ts +1 -1
- package/dist/zoned/calculate/minZoned.js +21 -13
- package/dist/zoned/calculate/roundZoned.d.ts +18 -4
- package/dist/zoned/calculate/roundZoned.js +58 -33
- package/dist/zoned/calculate/setZoned.d.ts +9 -3
- package/dist/zoned/calculate/setZoned.js +39 -18
- package/dist/zoned/calculate/sortZoned.js +18 -10
- package/dist/zoned/calculate/startOfQuarterForZoned.d.ts +4 -7
- package/dist/zoned/calculate/startOfQuarterForZoned.js +23 -17
- package/dist/zoned/calculate/startOfZoned.d.ts +17 -13
- package/dist/zoned/calculate/startOfZoned.js +21 -103
- package/dist/zoned/calculate/subtractZoned.d.ts +36 -24
- package/dist/zoned/calculate/subtractZoned.js +66 -50
- package/dist/zoned/calculate/subtractZonedBusinessDays.d.ts +2 -0
- package/dist/zoned/calculate/subtractZonedBusinessDays.js +5 -2
- package/dist/zoned/chop/chopZonedDate.js +2 -2
- package/dist/zoned/chop/chopZonedDateTime.js +2 -2
- package/dist/zoned/chop/chopZonedMilliseconds.js +2 -2
- package/dist/zoned/chop/chopZonedSeconds.js +2 -2
- package/dist/zoned/chop/chopZonedTime.js +2 -2
- package/dist/zoned/chop/chopZonedTimezone.js +2 -2
- package/dist/zoned/compare/areZonedEqual.js +3 -2
- package/dist/zoned/compare/areZonedEqualBy.d.ts +15 -2
- package/dist/zoned/compare/areZonedEqualBy.js +45 -12
- package/dist/zoned/compare/isAfterZoned.js +3 -2
- package/dist/zoned/compare/isBeforeZoned.d.ts +1 -1
- package/dist/zoned/compare/isBeforeZoned.js +4 -3
- package/dist/zoned/compare/isBetweenZoned.js +46 -29
- package/dist/zoned/compare/isInDaylightSaving.js +4 -4
- package/dist/zoned/compare/isZonedBusinessDay.d.ts +7 -4
- package/dist/zoned/compare/isZonedBusinessDay.js +9 -6
- package/dist/zoned/compare/isZonedFuture.js +2 -1
- package/dist/zoned/compare/isZonedPast.js +2 -1
- package/dist/zoned/compare/isZonedRelativeDay.js +2 -1
- package/dist/zoned/compare/isZonedThisUnit.d.ts +12 -4
- package/dist/zoned/compare/isZonedThisUnit.js +37 -16
- package/dist/zoned/compare/isZonedWeekend.d.ts +8 -4
- package/dist/zoned/compare/isZonedWeekend.js +9 -6
- package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +10 -5
- package/dist/zoned/convert/convertPlainDateTimeToZoned.js +34 -16
- package/dist/zoned/convert/convertZonedToCalendar.d.ts +26 -38
- package/dist/zoned/convert/convertZonedToCalendar.js +33 -48
- package/dist/zoned/convert/convertZonedToPlainDateTime.d.ts +6 -0
- package/dist/zoned/convert/convertZonedToPlainDateTime.js +8 -2
- package/dist/zoned/convert/convertZonedToUnix.d.ts +12 -6
- package/dist/zoned/convert/convertZonedToUnix.js +23 -16
- package/dist/zoned/convert/convertZonedToUtc.js +2 -2
- package/dist/zoned/convert/convertZonedToZoned.js +2 -2
- package/dist/zoned/format/formatCalendarZoned.d.ts +7 -3
- package/dist/zoned/format/formatCalendarZoned.js +37 -39
- package/dist/zoned/format/formatRelativeZoned.d.ts +15 -6
- package/dist/zoned/format/formatRelativeZoned.js +54 -54
- package/dist/zoned/format/formatRfc2822.d.ts +14 -1
- package/dist/zoned/format/formatRfc2822.js +27 -13
- package/dist/zoned/format/formatRfc3339.d.ts +14 -1
- package/dist/zoned/format/formatRfc3339.js +29 -3
- package/dist/zoned/format/formatTimeZoneName.d.ts +3 -2
- package/dist/zoned/format/formatTimeZoneName.js +28 -18
- package/dist/zoned/format/formatZonedDateTime.d.ts +25 -5
- package/dist/zoned/format/formatZonedDateTime.js +40 -9
- package/dist/zoned/format/formatZonedRange.d.ts +24 -6
- package/dist/zoned/format/formatZonedRange.js +61 -28
- package/dist/zoned/format/formatZonedToParts.d.ts +29 -6
- package/dist/zoned/format/formatZonedToParts.js +42 -13
- package/dist/zoned/get/getDstTransitions.d.ts +6 -1
- package/dist/zoned/get/getDstTransitions.js +17 -15
- package/dist/zoned/get/getTimeZoneOffset.d.ts +11 -1
- package/dist/zoned/get/getTimeZoneOffset.js +19 -2
- package/dist/zoned/get/getZonedNow.js +20 -9
- package/dist/zoned/get/getZonedNowUnit.d.ts +8 -4
- package/dist/zoned/get/getZonedNowUnit.js +15 -31
- package/dist/zoned/index.js +1 -1
- package/dist/zoned/interval/intervalAbutsZoned.d.ts +18 -11
- package/dist/zoned/interval/intervalAbutsZoned.js +24 -25
- package/dist/zoned/interval/intervalContainsZoned.d.ts +16 -7
- package/dist/zoned/interval/intervalContainsZoned.js +22 -14
- package/dist/zoned/interval/intervalCountZoned.d.ts +19 -11
- package/dist/zoned/interval/intervalCountZoned.js +32 -27
- package/dist/zoned/interval/intervalDifferenceZoned.d.ts +13 -7
- package/dist/zoned/interval/intervalDifferenceZoned.js +24 -36
- package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +18 -9
- package/dist/zoned/interval/intervalDivideEquallyZoned.js +67 -46
- package/dist/zoned/interval/intervalEngulfsZoned.d.ts +10 -5
- package/dist/zoned/interval/intervalEngulfsZoned.js +16 -10
- package/dist/zoned/interval/intervalFromDurationZoned.d.ts +25 -11
- package/dist/zoned/interval/intervalFromDurationZoned.js +61 -44
- package/dist/zoned/interval/intervalIntersectionZoned.d.ts +12 -6
- package/dist/zoned/interval/intervalIntersectionZoned.js +24 -18
- package/dist/zoned/interval/intervalLengthZoned.d.ts +15 -6
- package/dist/zoned/interval/intervalLengthZoned.js +23 -9
- package/dist/zoned/interval/intervalOverlappingDaysZoned.d.ts +28 -17
- package/dist/zoned/interval/intervalOverlappingDaysZoned.js +46 -34
- package/dist/zoned/interval/intervalSplitAtZoned.d.ts +6 -3
- package/dist/zoned/interval/intervalSplitAtZoned.js +52 -42
- package/dist/zoned/interval/intervalUnionZoned.d.ts +14 -8
- package/dist/zoned/interval/intervalUnionZoned.js +25 -20
- package/dist/zoned/interval/intervalXorAllZoned.d.ts +9 -7
- package/dist/zoned/interval/intervalXorAllZoned.js +42 -73
- package/dist/zoned/interval/intervalXorZoned.d.ts +20 -12
- package/dist/zoned/interval/intervalXorZoned.js +34 -64
- package/dist/zoned/interval/intervalsOverlapZoned.d.ts +15 -7
- package/dist/zoned/interval/intervalsOverlapZoned.js +21 -12
- package/dist/zoned/interval/mergeIntervalsZoned.d.ts +10 -3
- package/dist/zoned/interval/mergeIntervalsZoned.js +44 -41
- package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +28 -5
- package/dist/zoned/interval/splitIntervalByUnitZoned.js +72 -39
- package/dist/zoned/interval/validate/isValidCalendarZonedInterval.d.ts +13 -10
- package/dist/zoned/interval/validate/isValidCalendarZonedInterval.js +13 -10
- package/dist/zoned/interval/validate/isValidZonedInterval.d.ts +7 -5
- package/dist/zoned/interval/validate/isValidZonedInterval.js +12 -16
- package/dist/zoned/map/mapZonedDatesInRange.d.ts +17 -1
- package/dist/zoned/map/mapZonedDatesInRange.js +62 -26
- package/dist/zoned/map/mapZonedHoursInDay.d.ts +10 -13
- package/dist/zoned/map/mapZonedHoursInDay.js +13 -21
- package/dist/zoned/parse/getZonedOffset.js +2 -2
- package/dist/zoned/parse/getZonedOffsetAs.d.ts +4 -2
- package/dist/zoned/parse/getZonedOffsetAs.js +10 -5
- package/dist/zoned/parse/parseDateFromZoned.js +2 -2
- package/dist/zoned/parse/parseDateTimeFromZoned.js +2 -2
- package/dist/zoned/parse/parseDayFromZoned.js +2 -2
- package/dist/zoned/parse/parseDayOfWeekFromZoned.js +2 -2
- package/dist/zoned/parse/parseHourFromZoned.js +2 -2
- package/dist/zoned/parse/parseMicrosecondFromZoned.d.ts +2 -1
- package/dist/zoned/parse/parseMicrosecondFromZoned.js +4 -3
- package/dist/zoned/parse/parseMillisecondFromZoned.js +2 -2
- package/dist/zoned/parse/parseMinuteFromZoned.js +2 -2
- package/dist/zoned/parse/parseMonthFromZoned.js +2 -2
- package/dist/zoned/parse/parseNanosecondFromZoned.d.ts +2 -1
- package/dist/zoned/parse/parseNanosecondFromZoned.js +4 -3
- package/dist/zoned/parse/parseRfc2822.d.ts +32 -12
- package/dist/zoned/parse/parseRfc2822.js +47 -45
- package/dist/zoned/parse/parseRfc3339.d.ts +6 -0
- package/dist/zoned/parse/parseRfc3339.js +6 -0
- package/dist/zoned/parse/parseSecondFromZoned.js +2 -2
- package/dist/zoned/parse/parseTimeFromZoned.js +2 -2
- package/dist/zoned/parse/parseTimeZoneFromZoned.js +2 -2
- package/dist/zoned/parse/parseUnitFromZoned.d.ts +14 -5
- package/dist/zoned/parse/parseUnitFromZoned.js +59 -33
- package/dist/zoned/parse/parseWeekFromZoned.d.ts +13 -3
- package/dist/zoned/parse/parseWeekFromZoned.js +34 -10
- package/dist/zoned/parse/parseYearFromZoned.js +2 -2
- package/dist/zoned/validate/hasDaylightSaving.js +3 -3
- package/dist/zoned/validate/isValidCalendarZonedDateTime.d.ts +31 -16
- package/dist/zoned/validate/isValidCalendarZonedDateTime.js +31 -16
- package/dist/zoned/validate/isValidTimeZone.d.ts +15 -2
- package/dist/zoned/validate/isValidTimeZone.js +17 -4
- package/dist/zoned/validate/isValidZonedDateTime.d.ts +14 -7
- package/dist/zoned/validate/isValidZonedDateTime.js +20 -12
- package/dist/zoned/validate/isValidZonedRange.d.ts +9 -2
- package/dist/zoned/validate/isValidZonedRange.js +44 -16
- package/package.json +510 -34
- package/skills/gmt-arithmetic/SKILL.md +197 -16
- package/skills/gmt-basics/SKILL.md +61 -14
- package/skills/gmt-integration/SKILL.md +54 -8
- package/skills/gmt-timezone/SKILL.md +208 -24
- package/dist/internal/advanceBusinessDays.d.ts +0 -2
- package/dist/internal/advanceBusinessDays.js +0 -15
- package/dist/internal/ethiopicFamilyCalendar.d.ts +0 -47
- package/dist/internal/ethiopicFamilyCalendar.js +0 -136
- package/dist/internal/getLocaleMinimalDaysInFirstWeek.d.ts +0 -20
- package/dist/internal/getLocaleMinimalDaysInFirstWeek.js +0 -31
- package/dist/internal/resolveUnixTimeZone.d.ts +0 -20
- package/dist/internal/resolveUnixTimeZone.js +0 -30
- package/dist/unix/calculate/startOrEndOfUnix.d.ts +0 -27
- package/dist/unix/calculate/startOrEndOfUnix.js +0 -140
- package/dist/unix/interval/resolveUnixIntervalPair.d.ts +0 -7
- package/dist/unix/interval/resolveUnixIntervalPair.js +0 -36
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { resolveDurationRelativeTo } from "../../internal/index.js";
|
|
1
|
+
import { durationCompare, resolveDurationRelativeTo } from "../../internal/index.js";
|
|
3
2
|
import { isValidDuration } from "../validate/isValidDuration.js";
|
|
3
|
+
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
4
4
|
/**
|
|
5
5
|
* Compare two ISO 8601 duration strings by length.
|
|
6
6
|
*
|
|
@@ -8,7 +8,8 @@ import { isValidDuration } from "../validate/isValidDuration.js";
|
|
|
8
8
|
* - Equality is by length, not by spelling — "PT60M" and "PT1H" compare 0, as do "P1D" and
|
|
9
9
|
* "PT24H" absent a `relativeTo`.
|
|
10
10
|
* - `relativeTo` is required whenever a calendar unit (year/month/week) appears on either
|
|
11
|
-
* side; without it, returns null.
|
|
11
|
+
* side and the two durations differ; without it, returns null. Field-identical durations
|
|
12
|
+
* compare 0 without it ("P1Y" vs "P1Y"), since Temporal checks identity first. Note the asymmetry with `addDuration`/`subtractDuration`
|
|
12
13
|
* (A2): Temporal.Duration.compare *does* accept `relativeTo`, while .add/.subtract do not,
|
|
13
14
|
* so calendar-unit durations are comparable here even though they cannot be combined there.
|
|
14
15
|
* `durationAs` and `normalizeDuration` (A3) carry the same relativeTo rule as this function.
|
|
@@ -16,6 +17,23 @@ import { isValidDuration } from "../validate/isValidDuration.js";
|
|
|
16
17
|
* than "P30D" relative to January (31 days) and shorter relative to February 2024 (29).
|
|
17
18
|
* - It matters for non-calendar units too when it names a zoned instant — across a DST
|
|
18
19
|
* spring-forward, "P1D" is 23 real hours and so compares shorter than "PT24H".
|
|
20
|
+
* - A zoned `relativeTo` string resolves its wall time with disambiguation "compatible" and
|
|
21
|
+
* offset "reject", as Temporal does: an ambiguous wall time takes the earlier instant, a
|
|
22
|
+
* nonexistent one the later instant, and an offset that does not match the zone returns null.
|
|
23
|
+
* Pass an explicit offset to pick the other reading of an ambiguous wall time.
|
|
24
|
+
* - A `relativeTo` string is ISO 8601 extended format before its first `[`:
|
|
25
|
+
* a date, a date-time, or with a time zone annotation a zoned date-time (`<date>T<time>`, then
|
|
26
|
+
* nothing, `Z` or `±HH:MM`). Basic format (`"20240101"`), a space or lower-case `t` separator, a
|
|
27
|
+
* lower-case `z`, a UTC offset without a zone and a zoned date without a time are invalid.
|
|
28
|
+
* - A `relativeTo` string takes a calendar in RFC 9557 form, as `convertDateToCalendar` and
|
|
29
|
+
* `convertZonedToCalendar` write it: ISO digits and a `[u-ca=<id>]` annotation, after the zone
|
|
30
|
+
* for a zoned string (`"2024-02-24[u-ca=hebrew]"`, `"2024-02-24T00:00:00-05:00[America/New_York][u-ca=hebrew]"`).
|
|
31
|
+
* The annotations are read as Temporal reads them: the critical flag and the id's letter case
|
|
32
|
+
* are accepted, elective unknown annotations are ignored, the first `u-ca` names the calendar,
|
|
33
|
+
* and a string with a time zone annotation is zoned. An unknown critical annotation, a critical
|
|
34
|
+
* duplicate calendar, a calendar before the zone, an unsupported calendar and a leap second in
|
|
35
|
+
* any spelling return null.
|
|
36
|
+
* Compatibility: before 1.16.0 the digits were read as the calendar's own year, month and day.
|
|
19
37
|
* - Returns null if either operand is not a valid ISO 8601 duration string, or `relativeTo`
|
|
20
38
|
* is invalid.
|
|
21
39
|
*
|
|
@@ -30,18 +48,24 @@ import { isValidDuration } from "../validate/isValidDuration.js";
|
|
|
30
48
|
* @example compareDurations("P1M", "P30D") // null (calendar unit needs relativeTo)
|
|
31
49
|
* @example compareDurations("P1M", "P30D", { relativeTo: "2024-01-01" }) // 1
|
|
32
50
|
* @example compareDurations("P1M", "P30D", { relativeTo: "2024-02-01" }) // -1
|
|
51
|
+
* @example compareDurations("P1M", "P30D", { relativeTo: "2024-02-01 00:00" }) // null (space separator)
|
|
33
52
|
* @example compareDurations("P1D", "PT24H", { relativeTo: "2024-03-10T00:00:00-05:00[America/New_York]" }) // -1 (spring-forward)
|
|
53
|
+
* @example compareDurations("P1Y", "P1Y") // 0
|
|
54
|
+
* @example compareDurations("P1D", "PT24H", { relativeTo: "2024-11-03T01:30[America/New_York]" }) // 1
|
|
34
55
|
* @example compareDurations("not a duration", "PT1H") // null
|
|
35
|
-
* @example compareDurations("P1M", "P30D", { relativeTo: "
|
|
56
|
+
* @example compareDurations("P1M", "P30D", { relativeTo: "2025-01-15[u-ca=hebrew]" }) // -1 (Tevet 5785, a 29-day Hebrew month)
|
|
57
|
+
* @example compareDurations("P1M", "P30D", { relativeTo: "2024-02-10[!u-ca=hebrew]" }) // 0 (1 Adar I 5784, a 30-day month; the critical flag is accepted)
|
|
58
|
+
* @example compareDurations("P1M", "P30D", { relativeTo: "2024-02-10T00:00:00[u-ca=hebrew]" }) // 0 (a date-time without a zone reads as its date, as Temporal reads relativeTo)
|
|
36
59
|
*/
|
|
37
60
|
export function compareDurations(a, b, options) {
|
|
61
|
+
if (!isOptionsArgument(options)) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
38
64
|
if (!isValidDuration(a) || !isValidDuration(b)) {
|
|
39
65
|
return null;
|
|
40
66
|
}
|
|
41
67
|
try {
|
|
42
|
-
return
|
|
43
|
-
relativeTo: resolveDurationRelativeTo(options?.relativeTo),
|
|
44
|
-
});
|
|
68
|
+
return durationCompare(a, b, resolveDurationRelativeTo(options?.relativeTo));
|
|
45
69
|
}
|
|
46
70
|
catch {
|
|
47
71
|
return null;
|
|
@@ -9,9 +9,14 @@ export interface FormatDurationOptions {
|
|
|
9
9
|
* to render each nonzero year/month/week/day/hour/minute/second component with
|
|
10
10
|
* correct per-locale unit labels and pluralization, joined via Intl.ListFormat.
|
|
11
11
|
* - Sub-second components (milliseconds/microseconds/nanoseconds) are folded into
|
|
12
|
-
* the seconds component as
|
|
13
|
-
* component),
|
|
14
|
-
*
|
|
12
|
+
* the seconds component as an exact fractional value (e.g. "PT1.5S" -> one "1.5 seconds"
|
|
13
|
+
* component). Every digit the duration holds is rendered, up to 9 fraction digits and
|
|
14
|
+
* seconds up to 2^53 - 1: nothing is rounded, so a non-zero duration never prints
|
|
15
|
+
* "0 seconds" and "PT9007199254740991.999999999S" renders exactly.
|
|
16
|
+
* - To render fewer fraction digits, round the string first with parseDuration, e.g.
|
|
17
|
+
* { smallestUnit: "millisecond", roundingMode: "halfExpand" } for the 3-digit output this
|
|
18
|
+
* function produced before (parseDuration's default roundingMode "trunc" drops the digits).
|
|
19
|
+
* - By default, zero-valued components are omitted (e.g. "P1DT0H30M" -> "1 day and 30
|
|
15
20
|
* minutes"). Pass { zero: true } to include them.
|
|
16
21
|
* - A zero-length duration (e.g. "PT0S") always renders its seconds component
|
|
17
22
|
* ("0 seconds") even with the default zero-omitting behavior, since omitting
|
|
@@ -21,7 +26,7 @@ export interface FormatDurationOptions {
|
|
|
21
26
|
* - Returns "" for invalid input: non-string value or invalid duration string.
|
|
22
27
|
*
|
|
23
28
|
* @param value ISO 8601 duration string
|
|
24
|
-
* @param locale BCP 47 locale tag, passed to Intl.NumberFormat/Intl.ListFormat; system default if omitted
|
|
29
|
+
* @param locale BCP 47 locale tag, passed to Intl.NumberFormat/Intl.ListFormat; system default if omitted, or a preference list of tags (ECMA-402)
|
|
25
30
|
* @param options optional: { style: "long" | "short" | "narrow" (default "long"), zero: boolean (default false) }
|
|
26
31
|
* @returns human-readable rendering of the duration, or "" on invalid input
|
|
27
32
|
*
|
|
@@ -32,6 +37,10 @@ export interface FormatDurationOptions {
|
|
|
32
37
|
* @example formatDuration("PT0S", "en-US") // "0 seconds"
|
|
33
38
|
* @example formatDuration("-P1DT2H", "en-US") // "-1 day and -2 hours"
|
|
34
39
|
* @example formatDuration("P1DT2H30M", "de-DE") // "1 Tag, 2 Stunden und 30 Minuten"
|
|
40
|
+
* @example formatDuration("PT0.000000001S", "en-US") // "0.000000001 seconds"
|
|
41
|
+
* @example formatDuration("PT1.123456789S", "en-US") // "1.123456789 seconds"
|
|
42
|
+
* @example formatDuration(parseDuration("PT1.123456789S", { smallestUnit: "millisecond" }), "en-US") // "1.123 seconds"
|
|
35
43
|
* @example formatDuration("invalid") // ""
|
|
44
|
+
* @example formatDuration("P1DT2H30M", ["es-ES", "en-US"]) // "1 día, 2 horas y 30 minutos"
|
|
36
45
|
*/
|
|
37
|
-
export declare function formatDuration(value: string, locale?: string, options?: FormatDurationOptions): string;
|
|
46
|
+
export declare function formatDuration(value: string, locale?: string | string[], options?: FormatDurationOptions): string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
2
3
|
const UNIT_TO_INTL = {
|
|
3
4
|
years: "year",
|
|
4
5
|
months: "month",
|
|
@@ -17,6 +18,32 @@ const UNITS_IN_ORDER = [
|
|
|
17
18
|
"minutes",
|
|
18
19
|
"seconds",
|
|
19
20
|
];
|
|
21
|
+
const NANOSECONDS_PER_SECOND = 1000000000n;
|
|
22
|
+
function isZeroAmount(amount) {
|
|
23
|
+
return amount === 0 || amount === "0";
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The duration's seconds plus its sub-second fields as an exact decimal string.
|
|
27
|
+
*
|
|
28
|
+
* Summed in bigint nanoseconds, not float seconds: Temporal allows seconds up to 2^53 - 1 with 9
|
|
29
|
+
* fraction digits (IsValidDuration), which a float cannot hold. ECMA-402 Intl.NumberFormat accepts
|
|
30
|
+
* a decimal string and formats it without converting to a Number (ToIntlMathematicalValue).
|
|
31
|
+
* Returns "0", never "-0", for a zero amount, so a negative duration's zero seconds renders as 0.
|
|
32
|
+
*/
|
|
33
|
+
function exactSeconds(duration) {
|
|
34
|
+
const total = BigInt(duration.seconds) * NANOSECONDS_PER_SECOND +
|
|
35
|
+
BigInt(duration.milliseconds) * 1000000n +
|
|
36
|
+
BigInt(duration.microseconds) * 1000n +
|
|
37
|
+
BigInt(duration.nanoseconds);
|
|
38
|
+
const magnitude = total < 0n ? -total : total;
|
|
39
|
+
const whole = magnitude / NANOSECONDS_PER_SECOND;
|
|
40
|
+
const fraction = (magnitude % NANOSECONDS_PER_SECOND)
|
|
41
|
+
.toString()
|
|
42
|
+
.padStart(9, "0")
|
|
43
|
+
.replace(/0+$/, "");
|
|
44
|
+
const sign = total < 0n ? "-" : "";
|
|
45
|
+
return `${sign}${whole}${fraction === "" ? "" : `.${fraction}`}`;
|
|
46
|
+
}
|
|
20
47
|
/**
|
|
21
48
|
* Render an ISO 8601 duration string as a locale-aware, human-readable string.
|
|
22
49
|
*
|
|
@@ -24,9 +51,14 @@ const UNITS_IN_ORDER = [
|
|
|
24
51
|
* to render each nonzero year/month/week/day/hour/minute/second component with
|
|
25
52
|
* correct per-locale unit labels and pluralization, joined via Intl.ListFormat.
|
|
26
53
|
* - Sub-second components (milliseconds/microseconds/nanoseconds) are folded into
|
|
27
|
-
* the seconds component as
|
|
28
|
-
* component),
|
|
29
|
-
*
|
|
54
|
+
* the seconds component as an exact fractional value (e.g. "PT1.5S" -> one "1.5 seconds"
|
|
55
|
+
* component). Every digit the duration holds is rendered, up to 9 fraction digits and
|
|
56
|
+
* seconds up to 2^53 - 1: nothing is rounded, so a non-zero duration never prints
|
|
57
|
+
* "0 seconds" and "PT9007199254740991.999999999S" renders exactly.
|
|
58
|
+
* - To render fewer fraction digits, round the string first with parseDuration, e.g.
|
|
59
|
+
* { smallestUnit: "millisecond", roundingMode: "halfExpand" } for the 3-digit output this
|
|
60
|
+
* function produced before (parseDuration's default roundingMode "trunc" drops the digits).
|
|
61
|
+
* - By default, zero-valued components are omitted (e.g. "P1DT0H30M" -> "1 day and 30
|
|
30
62
|
* minutes"). Pass { zero: true } to include them.
|
|
31
63
|
* - A zero-length duration (e.g. "PT0S") always renders its seconds component
|
|
32
64
|
* ("0 seconds") even with the default zero-omitting behavior, since omitting
|
|
@@ -36,7 +68,7 @@ const UNITS_IN_ORDER = [
|
|
|
36
68
|
* - Returns "" for invalid input: non-string value or invalid duration string.
|
|
37
69
|
*
|
|
38
70
|
* @param value ISO 8601 duration string
|
|
39
|
-
* @param locale BCP 47 locale tag, passed to Intl.NumberFormat/Intl.ListFormat; system default if omitted
|
|
71
|
+
* @param locale BCP 47 locale tag, passed to Intl.NumberFormat/Intl.ListFormat; system default if omitted, or a preference list of tags (ECMA-402)
|
|
40
72
|
* @param options optional: { style: "long" | "short" | "narrow" (default "long"), zero: boolean (default false) }
|
|
41
73
|
* @returns human-readable rendering of the duration, or "" on invalid input
|
|
42
74
|
*
|
|
@@ -47,20 +79,23 @@ const UNITS_IN_ORDER = [
|
|
|
47
79
|
* @example formatDuration("PT0S", "en-US") // "0 seconds"
|
|
48
80
|
* @example formatDuration("-P1DT2H", "en-US") // "-1 day and -2 hours"
|
|
49
81
|
* @example formatDuration("P1DT2H30M", "de-DE") // "1 Tag, 2 Stunden und 30 Minuten"
|
|
82
|
+
* @example formatDuration("PT0.000000001S", "en-US") // "0.000000001 seconds"
|
|
83
|
+
* @example formatDuration("PT1.123456789S", "en-US") // "1.123456789 seconds"
|
|
84
|
+
* @example formatDuration(parseDuration("PT1.123456789S", { smallestUnit: "millisecond" }), "en-US") // "1.123 seconds"
|
|
50
85
|
* @example formatDuration("invalid") // ""
|
|
86
|
+
* @example formatDuration("P1DT2H30M", ["es-ES", "en-US"]) // "1 día, 2 horas y 30 minutos"
|
|
51
87
|
*/
|
|
52
88
|
export function formatDuration(value, locale, options = {}) {
|
|
89
|
+
if (!isOptionsArgument(options)) {
|
|
90
|
+
return "";
|
|
91
|
+
}
|
|
53
92
|
if (typeof value !== "string") {
|
|
54
93
|
return "";
|
|
55
94
|
}
|
|
56
95
|
try {
|
|
57
96
|
const duration = Temporal.Duration.from(value);
|
|
58
|
-
const style = options.style
|
|
97
|
+
const style = options.style === undefined ? "long" : options.style;
|
|
59
98
|
const includeZero = options.zero ?? false;
|
|
60
|
-
const seconds = duration.seconds +
|
|
61
|
-
duration.milliseconds / 1e3 +
|
|
62
|
-
duration.microseconds / 1e6 +
|
|
63
|
-
duration.nanoseconds / 1e9;
|
|
64
99
|
const amounts = {
|
|
65
100
|
years: duration.years,
|
|
66
101
|
months: duration.months,
|
|
@@ -68,12 +103,13 @@ export function formatDuration(value, locale, options = {}) {
|
|
|
68
103
|
days: duration.days,
|
|
69
104
|
hours: duration.hours,
|
|
70
105
|
minutes: duration.minutes,
|
|
71
|
-
seconds,
|
|
106
|
+
seconds: exactSeconds(duration),
|
|
72
107
|
};
|
|
73
|
-
const parts = UNITS_IN_ORDER.filter((unit) => includeZero || amounts[unit]
|
|
108
|
+
const parts = UNITS_IN_ORDER.filter((unit) => includeZero || !isZeroAmount(amounts[unit])).map((unit) => new Intl.NumberFormat(locale, {
|
|
74
109
|
style: "unit",
|
|
75
110
|
unit: UNIT_TO_INTL[unit],
|
|
76
111
|
unitDisplay: style,
|
|
112
|
+
maximumFractionDigits: 9,
|
|
77
113
|
}).format(amounts[unit]));
|
|
78
114
|
if (parts.length === 0) {
|
|
79
115
|
parts.push(new Intl.NumberFormat(locale, {
|
package/dist/duration/index.d.ts
CHANGED
package/dist/duration/index.js
CHANGED
|
@@ -4,15 +4,36 @@ import type { DurationRelativeTo } from "../../types/index.js";
|
|
|
4
4
|
* Roll an ISO 8601 duration string's small units into larger ones.
|
|
5
5
|
*
|
|
6
6
|
* - Uses Temporal.Duration.from and .round to rebalance, then .toString() to re-emit.
|
|
7
|
-
* - Defaults to { largestUnit: "auto" }
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* - Defaults to { largestUnit: "auto" }, which resolves to the larger of smallestUnit and the
|
|
8
|
+
* duration's own largest non-zero unit, then balances up to it. Units are promoted only up to
|
|
9
|
+
* a unit already present: "PT90M" stays "PT90M", but "P1DT25H" becomes "P2DT1H" and "PT1H90M"
|
|
10
|
+
* becomes "PT2H30M". Pass an explicit largestUnit to promote further.
|
|
10
11
|
* - relativeTo is required whenever a calendar unit (year/month/week) is involved,
|
|
11
12
|
* either as the requested largestUnit or because the input duration already has a
|
|
12
13
|
* nonzero year/month/week component (this applies even under the "auto" default).
|
|
13
14
|
* Without relativeTo in either case, returns "".
|
|
14
|
-
* - roundingIncrement must evenly divide
|
|
15
|
-
*
|
|
15
|
+
* - roundingIncrement must evenly divide, and be less than, 24 for hour, 60 for minute/second
|
|
16
|
+
* and 1000 for millisecond/microsecond/nanosecond (so 60 and 24 themselves are rejected).
|
|
17
|
+
* For year/month/week/day it has no maximum, but an increment above 1 is rejected unless
|
|
18
|
+
* largestUnit is that same unit ("auto" resolves to the largest unit present). An invalid
|
|
19
|
+
* increment returns "".
|
|
20
|
+
* - A zoned relativeTo string resolves its wall time with disambiguation "compatible" and offset
|
|
21
|
+
* "reject", as Temporal does: an ambiguous wall time takes the earlier instant, a nonexistent
|
|
22
|
+
* one the later instant, and an offset that does not match the zone returns "". Pass an
|
|
23
|
+
* explicit offset to pick the other reading of an ambiguous wall time.
|
|
24
|
+
* - A `relativeTo` string is ISO 8601 extended format before its first `[`:
|
|
25
|
+
* a date, a date-time, or with a time zone annotation a zoned date-time (`<date>T<time>`, then
|
|
26
|
+
* nothing, `Z` or `±HH:MM`). Basic format (`"20240101"`), a space or lower-case `t` separator, a
|
|
27
|
+
* lower-case `z`, a UTC offset without a zone and a zoned date without a time are invalid.
|
|
28
|
+
* - A `relativeTo` string takes a calendar in RFC 9557 form, as `convertDateToCalendar` and
|
|
29
|
+
* `convertZonedToCalendar` write it: ISO digits and a `[u-ca=<id>]` annotation, after the zone
|
|
30
|
+
* for a zoned string (`"2024-02-24[u-ca=hebrew]"`, `"2024-02-24T00:00:00-05:00[America/New_York][u-ca=hebrew]"`).
|
|
31
|
+
* The annotations are read as Temporal reads them: the critical flag and the id's letter case
|
|
32
|
+
* are accepted, elective unknown annotations are ignored, the first `u-ca` names the calendar,
|
|
33
|
+
* and a string with a time zone annotation is zoned. An unknown critical annotation, a critical
|
|
34
|
+
* duplicate calendar, a calendar before the zone, an unsupported calendar and a leap second in
|
|
35
|
+
* any spelling return `""`.
|
|
36
|
+
* Compatibility: before 1.16.0 the digits were read as the calendar's own year, month and day.
|
|
16
37
|
* - Returns "" for invalid input: non-string value, invalid duration string, or
|
|
17
38
|
* invalid relativeTo.
|
|
18
39
|
*
|
|
@@ -24,8 +45,14 @@ import type { DurationRelativeTo } from "../../types/index.js";
|
|
|
24
45
|
* @example normalizeDuration("PT90M30S", { smallestUnit: "minute" }) // "PT91M"
|
|
25
46
|
* @example normalizeDuration("P45D", { largestUnit: "month" }) // "" (relativeTo required)
|
|
26
47
|
* @example normalizeDuration("P45D", { largestUnit: "month", relativeTo: "2024-01-01" }) // "P1M14D"
|
|
48
|
+
* @example normalizeDuration("P45D", { largestUnit: "month", relativeTo: "20240101" }) // "" (basic format)
|
|
49
|
+
* @example normalizeDuration("P1DT25H") // "P2DT1H"
|
|
50
|
+
* @example normalizeDuration("PT2H", { smallestUnit: "minute", roundingIncrement: 60 }) // ""
|
|
51
|
+
* @example normalizeDuration("PT25H", { largestUnit: "day", relativeTo: "2024-11-03T01:30[America/New_York]" }) // "P1D"
|
|
27
52
|
* @example normalizeDuration("invalid") // ""
|
|
28
|
-
* @example normalizeDuration("P400D", { largestUnit: "year", relativeTo: "
|
|
53
|
+
* @example normalizeDuration("P400D", { largestUnit: "year", relativeTo: "2024-02-24[u-ca=hebrew]" }) // "P1Y15D" (Hebrew leap year 5784)
|
|
54
|
+
* @example normalizeDuration("P45D", { largestUnit: "month", relativeTo: "2024-02-10[!u-ca=hebrew]" }) // "P1M15D" (1 Adar I 5784; the critical flag is accepted)
|
|
55
|
+
* @example normalizeDuration("P45D", { largestUnit: "month", relativeTo: "2024-02-10T00:00:00[u-ca=hebrew]" }) // "P1M15D" (a date-time without a zone reads as its date, as Temporal reads relativeTo)
|
|
29
56
|
*/
|
|
30
57
|
export declare function normalizeDuration(value: string, options?: {
|
|
31
58
|
largestUnit?: Temporal.LargestUnit<Temporal.DateTimeUnit>;
|
|
@@ -1,18 +1,40 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
-
import { resolveDurationRelativeTo } from "../../internal/index.js";
|
|
2
|
+
import { durationRound, resolveDurationRelativeTo } from "../../internal/index.js";
|
|
3
|
+
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
3
4
|
/**
|
|
4
5
|
* Roll an ISO 8601 duration string's small units into larger ones.
|
|
5
6
|
*
|
|
6
7
|
* - Uses Temporal.Duration.from and .round to rebalance, then .toString() to re-emit.
|
|
7
|
-
* - Defaults to { largestUnit: "auto" }
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* - Defaults to { largestUnit: "auto" }, which resolves to the larger of smallestUnit and the
|
|
9
|
+
* duration's own largest non-zero unit, then balances up to it. Units are promoted only up to
|
|
10
|
+
* a unit already present: "PT90M" stays "PT90M", but "P1DT25H" becomes "P2DT1H" and "PT1H90M"
|
|
11
|
+
* becomes "PT2H30M". Pass an explicit largestUnit to promote further.
|
|
10
12
|
* - relativeTo is required whenever a calendar unit (year/month/week) is involved,
|
|
11
13
|
* either as the requested largestUnit or because the input duration already has a
|
|
12
14
|
* nonzero year/month/week component (this applies even under the "auto" default).
|
|
13
15
|
* Without relativeTo in either case, returns "".
|
|
14
|
-
* - roundingIncrement must evenly divide
|
|
15
|
-
*
|
|
16
|
+
* - roundingIncrement must evenly divide, and be less than, 24 for hour, 60 for minute/second
|
|
17
|
+
* and 1000 for millisecond/microsecond/nanosecond (so 60 and 24 themselves are rejected).
|
|
18
|
+
* For year/month/week/day it has no maximum, but an increment above 1 is rejected unless
|
|
19
|
+
* largestUnit is that same unit ("auto" resolves to the largest unit present). An invalid
|
|
20
|
+
* increment returns "".
|
|
21
|
+
* - A zoned relativeTo string resolves its wall time with disambiguation "compatible" and offset
|
|
22
|
+
* "reject", as Temporal does: an ambiguous wall time takes the earlier instant, a nonexistent
|
|
23
|
+
* one the later instant, and an offset that does not match the zone returns "". Pass an
|
|
24
|
+
* explicit offset to pick the other reading of an ambiguous wall time.
|
|
25
|
+
* - A `relativeTo` string is ISO 8601 extended format before its first `[`:
|
|
26
|
+
* a date, a date-time, or with a time zone annotation a zoned date-time (`<date>T<time>`, then
|
|
27
|
+
* nothing, `Z` or `±HH:MM`). Basic format (`"20240101"`), a space or lower-case `t` separator, a
|
|
28
|
+
* lower-case `z`, a UTC offset without a zone and a zoned date without a time are invalid.
|
|
29
|
+
* - A `relativeTo` string takes a calendar in RFC 9557 form, as `convertDateToCalendar` and
|
|
30
|
+
* `convertZonedToCalendar` write it: ISO digits and a `[u-ca=<id>]` annotation, after the zone
|
|
31
|
+
* for a zoned string (`"2024-02-24[u-ca=hebrew]"`, `"2024-02-24T00:00:00-05:00[America/New_York][u-ca=hebrew]"`).
|
|
32
|
+
* The annotations are read as Temporal reads them: the critical flag and the id's letter case
|
|
33
|
+
* are accepted, elective unknown annotations are ignored, the first `u-ca` names the calendar,
|
|
34
|
+
* and a string with a time zone annotation is zoned. An unknown critical annotation, a critical
|
|
35
|
+
* duplicate calendar, a calendar before the zone, an unsupported calendar and a leap second in
|
|
36
|
+
* any spelling return `""`.
|
|
37
|
+
* Compatibility: before 1.16.0 the digits were read as the calendar's own year, month and day.
|
|
16
38
|
* - Returns "" for invalid input: non-string value, invalid duration string, or
|
|
17
39
|
* invalid relativeTo.
|
|
18
40
|
*
|
|
@@ -24,24 +46,31 @@ import { resolveDurationRelativeTo } from "../../internal/index.js";
|
|
|
24
46
|
* @example normalizeDuration("PT90M30S", { smallestUnit: "minute" }) // "PT91M"
|
|
25
47
|
* @example normalizeDuration("P45D", { largestUnit: "month" }) // "" (relativeTo required)
|
|
26
48
|
* @example normalizeDuration("P45D", { largestUnit: "month", relativeTo: "2024-01-01" }) // "P1M14D"
|
|
49
|
+
* @example normalizeDuration("P45D", { largestUnit: "month", relativeTo: "20240101" }) // "" (basic format)
|
|
50
|
+
* @example normalizeDuration("P1DT25H") // "P2DT1H"
|
|
51
|
+
* @example normalizeDuration("PT2H", { smallestUnit: "minute", roundingIncrement: 60 }) // ""
|
|
52
|
+
* @example normalizeDuration("PT25H", { largestUnit: "day", relativeTo: "2024-11-03T01:30[America/New_York]" }) // "P1D"
|
|
27
53
|
* @example normalizeDuration("invalid") // ""
|
|
28
|
-
* @example normalizeDuration("P400D", { largestUnit: "year", relativeTo: "
|
|
54
|
+
* @example normalizeDuration("P400D", { largestUnit: "year", relativeTo: "2024-02-24[u-ca=hebrew]" }) // "P1Y15D" (Hebrew leap year 5784)
|
|
55
|
+
* @example normalizeDuration("P45D", { largestUnit: "month", relativeTo: "2024-02-10[!u-ca=hebrew]" }) // "P1M15D" (1 Adar I 5784; the critical flag is accepted)
|
|
56
|
+
* @example normalizeDuration("P45D", { largestUnit: "month", relativeTo: "2024-02-10T00:00:00[u-ca=hebrew]" }) // "P1M15D" (a date-time without a zone reads as its date, as Temporal reads relativeTo)
|
|
29
57
|
*/
|
|
30
58
|
export function normalizeDuration(value, options) {
|
|
59
|
+
if (!isOptionsArgument(options)) {
|
|
60
|
+
return "";
|
|
61
|
+
}
|
|
31
62
|
if (typeof value !== "string") {
|
|
32
63
|
return "";
|
|
33
64
|
}
|
|
34
65
|
try {
|
|
35
66
|
const duration = Temporal.Duration.from(value);
|
|
36
|
-
return duration
|
|
37
|
-
.
|
|
38
|
-
largestUnit: options?.largestUnit ?? "auto",
|
|
67
|
+
return durationRound(duration, {
|
|
68
|
+
largestUnit: options?.largestUnit === undefined ? "auto" : options.largestUnit,
|
|
39
69
|
smallestUnit: options?.smallestUnit,
|
|
40
70
|
roundingIncrement: options?.roundingIncrement,
|
|
41
71
|
roundingMode: options?.roundingMode,
|
|
42
72
|
relativeTo: resolveDurationRelativeTo(options?.relativeTo),
|
|
43
|
-
})
|
|
44
|
-
.toString();
|
|
73
|
+
}).toString();
|
|
45
74
|
}
|
|
46
75
|
catch {
|
|
47
76
|
return "";
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
2
3
|
/**
|
|
3
4
|
* Parse and re-normalize an ISO 8601 duration string.
|
|
4
5
|
*
|
|
@@ -18,6 +19,9 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
|
18
19
|
* @example parseDuration("invalid") // ""
|
|
19
20
|
*/
|
|
20
21
|
export function parseDuration(value, options) {
|
|
22
|
+
if (!isOptionsArgument(options)) {
|
|
23
|
+
return "";
|
|
24
|
+
}
|
|
21
25
|
if (typeof value !== "string") {
|
|
22
26
|
return "";
|
|
23
27
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
export * from "@js-temporal/polyfill";
|
|
2
|
+
export * from "./calendar/index.js";
|
|
2
3
|
export * from "./duration/index.js";
|
|
4
|
+
export * from "./instant/index.js";
|
|
5
|
+
export * from "./intermodal/index.js";
|
|
6
|
+
export * from "./interval/index.js";
|
|
3
7
|
export * from "./plain/index.js";
|
|
8
|
+
export * from "./precision/index.js";
|
|
4
9
|
export * from "./regex/index.js";
|
|
10
|
+
export * from "./span/index.js";
|
|
11
|
+
export * from "./transport/index.js";
|
|
5
12
|
export * from "./types/index.js";
|
|
6
13
|
export * from "./unix/index.js";
|
|
7
14
|
export * from "./utc/index.js";
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
export * from "@js-temporal/polyfill";
|
|
2
|
+
export * from "./calendar/index.js";
|
|
2
3
|
export * from "./duration/index.js";
|
|
4
|
+
export * from "./instant/index.js";
|
|
5
|
+
export * from "./intermodal/index.js";
|
|
6
|
+
export * from "./interval/index.js";
|
|
3
7
|
export * from "./plain/index.js";
|
|
8
|
+
export * from "./precision/index.js";
|
|
4
9
|
export * from "./regex/index.js";
|
|
10
|
+
export * from "./span/index.js";
|
|
11
|
+
export * from "./transport/index.js";
|
|
5
12
|
export * from "./types/index.js";
|
|
6
13
|
export * from "./unix/index.js";
|
|
7
14
|
export * from "./utc/index.js";
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a zoneless wall time turns out to be once a zone is attached to it.
|
|
3
|
+
*
|
|
4
|
+
* @remarks Members:
|
|
5
|
+
*
|
|
6
|
+
* | Member | Description |
|
|
7
|
+
* | --- | --- |
|
|
8
|
+
* | `unique` | One instant. The ordinary case, and every case in a zone with no DST. |
|
|
9
|
+
* | `ambiguous` | Two instants an offset shift apart — a fall-back hour the clock ran through twice. |
|
|
10
|
+
* | `nonexistent` | No instant. A spring-forward hour the clock skipped, or a calendar day a zone deleted crossing the date line. |
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* import { LocalTimeClassification } from "@northguild/gmt/instant";
|
|
14
|
+
* const kind: LocalTimeClassification = "ambiguous";
|
|
15
|
+
*/
|
|
16
|
+
export type LocalTimeClassification = "unique" | "ambiguous" | "nonexistent";
|
|
17
|
+
/**
|
|
18
|
+
* Report whether a zoneless local wall time is unique, ambiguous or nonexistent in a zone —
|
|
19
|
+
* before any policy resolves it.
|
|
20
|
+
*
|
|
21
|
+
* Ambiguous and nonexistent wall times are the single most common datetime bug there is:
|
|
22
|
+
* 01:30 happens twice on a fall-back day and never on a spring-forward one. `resolveLocal`
|
|
23
|
+
* will pick one for you; this exists so a demurrage clock, a medication window or a duty
|
|
24
|
+
* limit can refuse instead, or route the case to a human, rather than silently accepting
|
|
25
|
+
* whichever instant a default handed it.
|
|
26
|
+
*
|
|
27
|
+
* - Reads the zone's own transition table via `Temporal`, so it is right for every IANA zone
|
|
28
|
+
* and every year, including 30- and 45-minute shifts and zones that skipped a whole
|
|
29
|
+
* calendar day changing sides of the date line.
|
|
30
|
+
* - `localDateTime` is a PlainDateTime string, as `isValidDateTime` accepts: `<date>T<time>`
|
|
31
|
+
* with no offset (a string with an offset has no ambiguity left to report). Its RFC 9557
|
|
32
|
+
* annotations are read as `Temporal.PlainDateTime.from` reads them, so a time zone annotation
|
|
33
|
+
* is ignored and `timeZone` alone is the zone.
|
|
34
|
+
* - Returns null on invalid input — never `"unique"`, which would read as a verdict.
|
|
35
|
+
*
|
|
36
|
+
* @param localDateTime zoneless ISO 8601 local datetime string (e.g. "2024-11-03T01:30:00")
|
|
37
|
+
* @param timeZone IANA timeZone identifier the wall time is read in
|
|
38
|
+
* @returns "unique" | "ambiguous" | "nonexistent", or null on invalid input
|
|
39
|
+
*
|
|
40
|
+
* @example classifyLocal("2024-07-15T12:00:00", "America/New_York") // "unique"
|
|
41
|
+
* @example classifyLocal("2024-11-03T01:30:00", "America/New_York") // "ambiguous" (fall-back overlap)
|
|
42
|
+
* @example classifyLocal("2024-03-10T02:30:00", "America/New_York") // "nonexistent" (spring-forward gap)
|
|
43
|
+
* @example classifyLocal("2024-04-07T01:45:00", "Australia/Lord_Howe") // "ambiguous" (a 30-minute overlap)
|
|
44
|
+
* @example classifyLocal("2024-09-29T03:15:00", "Pacific/Chatham") // "nonexistent" (a 45-minute-offset zone's gap)
|
|
45
|
+
* @example classifyLocal("2011-12-30T12:00:00", "Pacific/Apia") // "nonexistent" (the day Samoa skipped crossing the date line)
|
|
46
|
+
* @example classifyLocal("2024-11-03T01:30:00", "UTC") // "unique" (UTC has no transitions)
|
|
47
|
+
* @example classifyLocal("2024-11-03T01:30:00-04:00", "America/New_York") // null (not a zoneless wall time)
|
|
48
|
+
* @example classifyLocal("2024-11-03T01:30:00", "Invalid/Zone") // null
|
|
49
|
+
*/
|
|
50
|
+
export declare function classifyLocal(localDateTime: string, timeZone: string): LocalTimeClassification | null;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import { isValidDateTime } from "../../plain/validate/index.js";
|
|
3
|
+
import { isValidTimeZone } from "../../zoned/validate/index.js";
|
|
4
|
+
import { plainToZoned } from "../../internal/index.js";
|
|
5
|
+
/**
|
|
6
|
+
* Report whether a zoneless local wall time is unique, ambiguous or nonexistent in a zone —
|
|
7
|
+
* before any policy resolves it.
|
|
8
|
+
*
|
|
9
|
+
* Ambiguous and nonexistent wall times are the single most common datetime bug there is:
|
|
10
|
+
* 01:30 happens twice on a fall-back day and never on a spring-forward one. `resolveLocal`
|
|
11
|
+
* will pick one for you; this exists so a demurrage clock, a medication window or a duty
|
|
12
|
+
* limit can refuse instead, or route the case to a human, rather than silently accepting
|
|
13
|
+
* whichever instant a default handed it.
|
|
14
|
+
*
|
|
15
|
+
* - Reads the zone's own transition table via `Temporal`, so it is right for every IANA zone
|
|
16
|
+
* and every year, including 30- and 45-minute shifts and zones that skipped a whole
|
|
17
|
+
* calendar day changing sides of the date line.
|
|
18
|
+
* - `localDateTime` is a PlainDateTime string, as `isValidDateTime` accepts: `<date>T<time>`
|
|
19
|
+
* with no offset (a string with an offset has no ambiguity left to report). Its RFC 9557
|
|
20
|
+
* annotations are read as `Temporal.PlainDateTime.from` reads them, so a time zone annotation
|
|
21
|
+
* is ignored and `timeZone` alone is the zone.
|
|
22
|
+
* - Returns null on invalid input — never `"unique"`, which would read as a verdict.
|
|
23
|
+
*
|
|
24
|
+
* @param localDateTime zoneless ISO 8601 local datetime string (e.g. "2024-11-03T01:30:00")
|
|
25
|
+
* @param timeZone IANA timeZone identifier the wall time is read in
|
|
26
|
+
* @returns "unique" | "ambiguous" | "nonexistent", or null on invalid input
|
|
27
|
+
*
|
|
28
|
+
* @example classifyLocal("2024-07-15T12:00:00", "America/New_York") // "unique"
|
|
29
|
+
* @example classifyLocal("2024-11-03T01:30:00", "America/New_York") // "ambiguous" (fall-back overlap)
|
|
30
|
+
* @example classifyLocal("2024-03-10T02:30:00", "America/New_York") // "nonexistent" (spring-forward gap)
|
|
31
|
+
* @example classifyLocal("2024-04-07T01:45:00", "Australia/Lord_Howe") // "ambiguous" (a 30-minute overlap)
|
|
32
|
+
* @example classifyLocal("2024-09-29T03:15:00", "Pacific/Chatham") // "nonexistent" (a 45-minute-offset zone's gap)
|
|
33
|
+
* @example classifyLocal("2011-12-30T12:00:00", "Pacific/Apia") // "nonexistent" (the day Samoa skipped crossing the date line)
|
|
34
|
+
* @example classifyLocal("2024-11-03T01:30:00", "UTC") // "unique" (UTC has no transitions)
|
|
35
|
+
* @example classifyLocal("2024-11-03T01:30:00-04:00", "America/New_York") // null (not a zoneless wall time)
|
|
36
|
+
* @example classifyLocal("2024-11-03T01:30:00", "Invalid/Zone") // null
|
|
37
|
+
*/
|
|
38
|
+
export function classifyLocal(localDateTime, timeZone) {
|
|
39
|
+
if (!isValidDateTime(localDateTime) || !isValidTimeZone(timeZone)) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
const wallClock = Temporal.PlainDateTime.from(localDateTime);
|
|
44
|
+
const earliest = plainToZoned(wallClock, timeZone, "earlier");
|
|
45
|
+
const latest = plainToZoned(wallClock, timeZone, "later");
|
|
46
|
+
if (earliest.epochNanoseconds === latest.epochNanoseconds) {
|
|
47
|
+
return "unique";
|
|
48
|
+
}
|
|
49
|
+
// Two instants, so the wall time is either repeated or skipped. Temporal separates them
|
|
50
|
+
// the same way for both, and only the wall clock it lands on tells them apart: for an
|
|
51
|
+
// overlap both instants read back as the requested time, and for a gap neither does —
|
|
52
|
+
// "earlier"/"later" resolve a gap by moving off the requested time entirely.
|
|
53
|
+
return earliest.toPlainDateTime().equals(wallClock)
|
|
54
|
+
? "ambiguous"
|
|
55
|
+
: "nonexistent";
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { OffsetInstant } from "./toOffsetInstant.js";
|
|
2
|
+
/**
|
|
3
|
+
* Render an instant-plus-offset pair back to the local time it describes.
|
|
4
|
+
*
|
|
5
|
+
* The inverse of `toOffsetInstant`: `toOffsetInstant(fromOffsetInstant(pair))` returns
|
|
6
|
+
* `pair`, for zones with and without DST.
|
|
7
|
+
*
|
|
8
|
+
* - Without `timeZone`, returns `<date>T<time>±HH:MM` — the wall clock the event carried and
|
|
9
|
+
* the offset it carried it in, which is all an offset-only pair knows.
|
|
10
|
+
* - With `timeZone`, returns the bracketed zoned string `<date>T<time>±HH:MM[Zone]`, so the
|
|
11
|
+
* zone survives the round trip instead of being silently dropped.
|
|
12
|
+
* - A `timeZone` whose offset at `instant` is not `offset` returns `""`. The pair is stating
|
|
13
|
+
* two things that cannot both be true, and the whole point of carrying both fields is that
|
|
14
|
+
* a contradiction between them is visible.
|
|
15
|
+
* - `timeZone` accepts every identifier Temporal does, as `toOffsetInstant`'s bracket does —
|
|
16
|
+
* including the single-component IANA names (`EST5EDT`, `Zulu`). A `timeZone` that is really
|
|
17
|
+
* an offset (`"-04:00"`, or the `"-0400"`/`"+05"` spellings Temporal canonicalises to one)
|
|
18
|
+
* returns `""`: it names no place, and no pair `toOffsetInstant` produces carries one.
|
|
19
|
+
* - `offset` is canonicalised, so `"+05:45:00"` renders as `+05:45` and `"-00:00"` as
|
|
20
|
+
* `+00:00`. `Z` is not an accepted offset — for an event that happened at UTC the pair's
|
|
21
|
+
* offset is `+00:00`. RFC 9557 §2.2 gives `Z` and `-00:00` a different meaning from `+00:00`
|
|
22
|
+
* ("UTC known, local offset unknown"); a pair cannot carry that, so all three render as
|
|
23
|
+
* `+00:00`.
|
|
24
|
+
* - With a `timeZone`, a sub-minute offset is *written* rounded to the minute, because RFC
|
|
25
|
+
* 9557 has no field for the seconds — `Africa/Monrovia`'s `-00:44:30` renders as `-00:45`.
|
|
26
|
+
* The bracketed zone is what resolves it, so the instant stays exact and the round trip
|
|
27
|
+
* returns `-00:44:30`. Without a `timeZone` there is no zone to resolve against, so the
|
|
28
|
+
* full `±HH:MM:SS` is written instead; that is ISO 8601, not RFC 9557.
|
|
29
|
+
* - Returns `""` on invalid input.
|
|
30
|
+
*
|
|
31
|
+
* @param value `{ instant, offset, timeZone? }` pair, as produced by `toOffsetInstant`
|
|
32
|
+
* @returns local ISO 8601 string carrying the pair's own offset, or "" on invalid input
|
|
33
|
+
*
|
|
34
|
+
* @example fromOffsetInstant({ instant: "2024-07-15T16:00:00Z", offset: "-04:00" }) // "2024-07-15T12:00:00-04:00"
|
|
35
|
+
* @example fromOffsetInstant({ instant: "2024-07-15T16:00:00Z", offset: "-04:00", timeZone: "America/New_York" }) // "2024-07-15T12:00:00-04:00[America/New_York]"
|
|
36
|
+
* @example fromOffsetInstant({ instant: "2024-11-03T05:30:00Z", offset: "-04:00", timeZone: "America/New_York" }) // "2024-11-03T01:30:00-04:00[America/New_York]" — the first 01:30 of the fall-back night
|
|
37
|
+
* @example fromOffsetInstant({ instant: "2024-11-03T06:30:00Z", offset: "-05:00", timeZone: "America/New_York" }) // "2024-11-03T01:30:00-05:00[America/New_York]" — the second, an hour later
|
|
38
|
+
* @example fromOffsetInstant({ instant: "2024-07-15T16:00:00Z", offset: "+00:00" }) // "2024-07-15T16:00:00+00:00"
|
|
39
|
+
* @example fromOffsetInstant({ instant: "2024-07-15T16:00:00Z", offset: "-00:00" }) // "2024-07-15T16:00:00+00:00" (RFC 9557's "offset unknown" is not kept)
|
|
40
|
+
* @example fromOffsetInstant({ instant: "1970-01-01T00:00:00Z", offset: "-00:44:30", timeZone: "Africa/Monrovia" }) // "1969-12-31T23:15:30-00:45[Africa/Monrovia]" — RFC 9557 rounds the written offset; the zone keeps the instant exact
|
|
41
|
+
* @example fromOffsetInstant({ instant: "1970-01-01T00:00:00Z", offset: "-00:44:30" }) // "1969-12-31T23:15:30-00:44:30" — no zone to round against, so the seconds are written
|
|
42
|
+
* @example fromOffsetInstant({ instant: "2024-07-15T16:00:00Z", offset: "-05:00", timeZone: "America/New_York" }) // "" (offset contradicts the zone)
|
|
43
|
+
* @example fromOffsetInstant({ instant: "2024-07-15T16:00:00Z", offset: "-04:00", timeZone: "-04:00" }) // "" (an offset is not a zone)
|
|
44
|
+
* @example fromOffsetInstant({ instant: "2024-07-15T16:00:00Z", offset: "Z" }) // "" (a designator, not an offset)
|
|
45
|
+
* @example fromOffsetInstant({ instant: "not an instant", offset: "-04:00" }) // ""
|
|
46
|
+
*/
|
|
47
|
+
export declare function fromOffsetInstant(value: OffsetInstant): string;
|