@northguild/gmt 1.14.2 → 1.16.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 +887 -277
- 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 +6 -0
- package/dist/index.js +6 -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 +99 -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 +73 -0
- package/dist/instant/convert/toOffsetInstant.js +185 -0
- package/dist/instant/index.d.ts +2 -0
- package/dist/instant/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/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 +28 -9
- package/dist/internal/index.js +28 -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 +40 -0
- package/dist/internal/isoStringBody.js +85 -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/internal/startOrEndOfUtc.d.ts +27 -0
- package/dist/{utc/calculate → internal}/startOrEndOfUtc.js +45 -24
- 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/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 +1173 -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 +23 -10
- 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/index.d.ts +2 -1
- package/dist/plain/calculate/index.js +2 -1
- 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/calculate/{weekOfYear.d.ts → weekOfYearForDate.d.ts} +0 -14
- package/dist/plain/calculate/weekOfYearForDate.js +28 -0
- package/dist/plain/calculate/weekOfYearForDateTime.d.ts +14 -0
- package/dist/plain/calculate/{weekOfYear.js → weekOfYearForDateTime.js} +1 -27
- 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 +14 -8
- package/dist/plain/format/formatCalendar.js +47 -25
- package/dist/plain/format/formatDate.d.ts +22 -4
- package/dist/plain/format/formatDate.js +37 -5
- package/dist/plain/format/formatDateRange.d.ts +18 -4
- package/dist/plain/format/formatDateRange.js +29 -5
- package/dist/plain/format/formatDateTime.d.ts +23 -4
- package/dist/plain/format/formatDateTime.js +31 -5
- package/dist/plain/format/formatDateTimeRange.d.ts +21 -4
- package/dist/plain/format/formatDateTimeRange.js +29 -5
- package/dist/plain/format/formatDateTimeToParts.d.ts +33 -6
- package/dist/plain/format/formatDateTimeToParts.js +40 -14
- package/dist/plain/format/formatDateToParts.d.ts +25 -3
- package/dist/plain/format/formatDateToParts.js +36 -11
- package/dist/plain/format/formatRelativeDate.d.ts +10 -17
- package/dist/plain/format/formatRelativeDate.js +39 -24
- package/dist/plain/format/formatRelativeDateTime.d.ts +18 -20
- package/dist/plain/format/formatRelativeDateTime.js +35 -33
- package/dist/plain/format/formatRelativeTime.d.ts +11 -18
- 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 +19 -4
- package/dist/plain/format/formatTime.js +32 -5
- package/dist/plain/get/getNowUnit.d.ts +5 -3
- 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 +30 -0
- package/dist/regex/calendar-date.js +31 -11
- package/dist/regex/calendar-zoned-date-time.d.ts +29 -0
- package/dist/regex/calendar-zoned-date-time.js +30 -41
- package/dist/regex/date-time.d.ts +28 -0
- package/dist/regex/date-time.js +29 -2
- package/dist/regex/date.d.ts +58 -0
- package/dist/regex/date.js +60 -3
- package/dist/regex/http-date.d.ts +19 -0
- package/dist/regex/http-date.js +19 -6
- package/dist/regex/index.d.ts +3 -0
- package/dist/regex/index.js +4 -0
- package/dist/regex/leap-second.d.ts +45 -0
- package/dist/regex/leap-second.js +46 -2
- package/dist/regex/nanoseconds.d.ts +20 -0
- package/dist/regex/nanoseconds.js +20 -0
- package/dist/regex/rfc-2822.d.ts +26 -0
- package/dist/regex/rfc-2822.js +26 -8
- package/dist/regex/rfc-3339.d.ts +26 -0
- package/dist/regex/rfc-3339.js +27 -7
- package/dist/regex/sql-date-time.d.ts +33 -0
- package/dist/regex/sql-date-time.js +34 -7
- package/dist/regex/time-zone-like.d.ts +30 -0
- package/dist/regex/time-zone-like.js +31 -1
- package/dist/regex/time.d.ts +73 -0
- package/dist/regex/time.js +73 -3
- package/dist/regex/unix.d.ts +29 -0
- package/dist/regex/unix.js +29 -0
- package/dist/regex/utc-date-time.d.ts +30 -0
- package/dist/regex/utc-date-time.js +31 -2
- 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/types/business-calendar.d.ts +27 -0
- package/dist/types/business-calendar.js +0 -0
- package/dist/types/calendar-options.d.ts +11 -0
- package/dist/types/calendar-options.js +0 -0
- package/dist/types/calendar-system.d.ts +9 -1
- package/dist/types/datetime-format-options.d.ts +6 -0
- package/dist/types/datetime-format-options.js +0 -0
- package/dist/types/duration-unit.d.ts +5 -0
- package/dist/types/duration-unit.js +0 -0
- package/dist/types/fiscal-calendar.d.ts +22 -0
- package/dist/types/fiscal-calendar.js +0 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.js +16 -0
- package/dist/types/interval.d.ts +18 -0
- package/dist/types/interval.js +0 -0
- package/dist/types/now-unit.d.ts +5 -0
- package/dist/types/now-unit.js +0 -0
- package/dist/types/relative-date-time-unit.d.ts +6 -0
- package/dist/types/relative-date-time-unit.js +0 -0
- package/dist/types/relative-date-unit.d.ts +5 -0
- package/dist/types/relative-date-unit.js +0 -0
- package/dist/types/relative-time-options.d.ts +18 -0
- package/dist/types/relative-time-options.js +0 -0
- package/dist/types/relative-time-unit.d.ts +5 -0
- package/dist/types/relative-time-unit.js +0 -0
- package/dist/types/relative-unit.d.ts +6 -0
- package/dist/types/relative-unit.js +0 -0
- package/dist/types/roll-convention.d.ts +32 -0
- package/dist/types/roll-convention.js +0 -0
- package/dist/types/unix-now-unit.d.ts +5 -0
- package/dist/types/unix-now-unit.js +0 -0
- package/dist/types/utc-now-unit.d.ts +5 -0
- package/dist/types/utc-now-unit.js +0 -0
- 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 +35 -6
- package/dist/unix/format/formatCalendarUnix.js +35 -81
- package/dist/unix/format/formatRelativeUnix.d.ts +26 -16
- package/dist/unix/format/formatRelativeUnix.js +46 -93
- package/dist/unix/format/formatUnix.d.ts +43 -2
- package/dist/unix/format/formatUnix.js +65 -32
- package/dist/unix/get/getUnixNow.d.ts +13 -7
- package/dist/unix/get/getUnixNow.js +27 -17
- package/dist/unix/get/getUnixNowUnit.d.ts +7 -5
- 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 +40 -9
- 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 +22 -5
- 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 +13 -8
- 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 +20 -18
- package/dist/utc/format/formatRelativeUtc.js +43 -51
- package/dist/utc/format/formatUtc.d.ts +51 -1
- package/dist/utc/format/formatUtc.js +57 -11
- package/dist/utc/get/getUtcNowUnit.d.ts +5 -3
- 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 +39 -5
- 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 +16 -14
- 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 +18 -2
- package/dist/zoned/format/formatTimeZoneName.js +28 -18
- package/dist/zoned/format/formatZonedDateTime.d.ts +26 -5
- package/dist/zoned/format/formatZonedDateTime.js +40 -9
- package/dist/zoned/format/formatZonedRange.d.ts +25 -6
- package/dist/zoned/format/formatZonedRange.js +61 -28
- package/dist/zoned/format/formatZonedToParts.d.ts +30 -6
- package/dist/zoned/format/formatZonedToParts.js +42 -13
- package/dist/zoned/get/getDstTransitions.d.ts +24 -3
- 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 +30 -2
- 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 +14 -8
- package/dist/zoned/interval/intervalDifferenceZoned.js +25 -37
- 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 -10
- package/dist/zoned/interval/intervalXorZoned.js +34 -62
- 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 +15 -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 +36 -3
- 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 +487 -28
- package/skills/gmt-arithmetic/SKILL.md +264 -0
- package/skills/gmt-basics/SKILL.md +127 -0
- package/skills/gmt-integration/SKILL.md +119 -0
- package/skills/gmt-timezone/SKILL.md +197 -0
- 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 -9
- package/dist/unix/calculate/startOrEndOfUnix.js +0 -122
- package/dist/unix/interval/resolveUnixIntervalPair.d.ts +0 -7
- package/dist/unix/interval/resolveUnixIntervalPair.js +0 -36
- package/dist/utc/calculate/startOrEndOfUtc.d.ts +0 -6
- package/skills/_artifacts/domain_map.yaml +0 -547
- package/skills/_artifacts/skill_spec.md +0 -67
- package/skills/_artifacts/skill_tree.yaml +0 -278
- package/skills/api-expansion-workflow/SKILL.md +0 -52
- package/skills/app-integration/SKILL.md +0 -38
- package/skills/calculate-dates/SKILL.md +0 -432
- package/skills/compare-dates/SKILL.md +0 -412
- package/skills/convert-types/SKILL.md +0 -305
- package/skills/durations/SKILL.md +0 -418
- package/skills/format-date-time/SKILL.md +0 -486
- package/skills/format-date-time/references/format-api.md +0 -34
- package/skills/format-relative-time/SKILL.md +0 -223
- package/skills/get-current/SKILL.md +0 -229
- package/skills/interval-ops/SKILL.md +0 -432
- package/skills/issue-creation/SKILL.md +0 -118
- package/skills/lint-package-suggestion/SKILL.md +0 -37
- package/skills/new-method-implementation/SKILL.md +0 -71
- package/skills/parse-date-time/SKILL.md +0 -349
- package/skills/pr-contribution/SKILL.md +0 -180
- package/skills/unit-test-generation/SKILL.md +0 -56
- package/skills/validate-dates/SKILL.md +0 -438
- package/skills/zoned-date-ops/SKILL.md +0 -422
- package/skills/zoned-date-ops/references/timezones.md +0 -13
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { zonelessCalendarDate } from "../../internal/index.js";
|
|
2
|
+
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
3
|
+
/** Months in a quarter. */
|
|
4
|
+
const MONTHS_PER_QUARTER = 3;
|
|
5
|
+
/** Months in a year. */
|
|
6
|
+
const MONTHS_PER_YEAR = 12;
|
|
7
|
+
/**
|
|
8
|
+
* Return the quarter `value` falls in, as a year and a quarter number.
|
|
9
|
+
*
|
|
10
|
+
* - `quarter` is 1–4. With no options these are the calendar quarters: Q1 is January to
|
|
11
|
+
* March, and `year` is the calendar year.
|
|
12
|
+
* - `fiscalYearStartMonth` (1–12, default 1) moves the year's first month. A date before it
|
|
13
|
+
* belongs to the previous fiscal year, so `getQuarter("2024-03-31", { fiscalYearStartMonth:
|
|
14
|
+
* 4 })` is Q4 of 2023.
|
|
15
|
+
* - **`year` is the calendar year the fiscal year starts in**, matching the NRF retail
|
|
16
|
+
* convention `getFiscalPeriod` uses. Organisations that label a fiscal year by the calendar
|
|
17
|
+
* year it *ends* in — the US federal government's October-start FY2025 begins in October
|
|
18
|
+
* 2024 — should add one.
|
|
19
|
+
* - `value` must be zoneless — an ISO date or datetime, as `isValidIsoDateLike` accepts. See
|
|
20
|
+
* `getIsoWeekDate` for why a moment is not accepted here.
|
|
21
|
+
* - Returns null on invalid input, including a `fiscalYearStartMonth` that is not an integer
|
|
22
|
+
* from 1 to 12.
|
|
23
|
+
*
|
|
24
|
+
* @param value zoneless ISO 8601 date or datetime string (e.g. "2024-06-15")
|
|
25
|
+
* @param optionsArg optional: fiscalYearStartMonth (1-12, default 1)
|
|
26
|
+
* @returns { year, quarter }, or null on invalid input
|
|
27
|
+
*
|
|
28
|
+
* @example getQuarter("2024-06-15") // { year: 2024, quarter: 2 }
|
|
29
|
+
* @example getQuarter("2024-10-01") // { year: 2024, quarter: 4 }
|
|
30
|
+
* @example getQuarter("2024-06-15", { fiscalYearStartMonth: 1 }) // { year: 2024, quarter: 2 } (the default, stated)
|
|
31
|
+
* @example getQuarter("2024-04-01", { fiscalYearStartMonth: 4 }) // { year: 2024, quarter: 1 }
|
|
32
|
+
* @example getQuarter("2024-03-31", { fiscalYearStartMonth: 4 }) // { year: 2023, quarter: 4 } (the previous fiscal year)
|
|
33
|
+
* @example getQuarter("2024-06-15", { fiscalYearStartMonth: 13 }) // null
|
|
34
|
+
* @example getQuarter("2024-06-15T12:00:00Z") // null (a moment, not a calendar date)
|
|
35
|
+
* @example getQuarter("invalid") // null
|
|
36
|
+
*/
|
|
37
|
+
export function getQuarter(value, optionsArg) {
|
|
38
|
+
try {
|
|
39
|
+
if (!isOptionsArgument(optionsArg)) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const fiscalYearStartMonth = optionsArg?.fiscalYearStartMonth === undefined
|
|
43
|
+
? 1
|
|
44
|
+
: optionsArg.fiscalYearStartMonth;
|
|
45
|
+
if (!Number.isInteger(fiscalYearStartMonth) ||
|
|
46
|
+
fiscalYearStartMonth < 1 ||
|
|
47
|
+
fiscalYearStartMonth > MONTHS_PER_YEAR) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
const date = zonelessCalendarDate(value);
|
|
51
|
+
if (!date)
|
|
52
|
+
return null;
|
|
53
|
+
const monthsIntoYear = (date.month - fiscalYearStartMonth + MONTHS_PER_YEAR) % MONTHS_PER_YEAR;
|
|
54
|
+
return {
|
|
55
|
+
year: date.month < fiscalYearStartMonth ? date.year - 1 : date.year,
|
|
56
|
+
quarter: Math.floor(monthsIntoYear / MONTHS_PER_QUARTER) + 1,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
// Never throws (Core Rule 3): a hostile
|
|
61
|
+
// argument is invalid input, not an exception.
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// Re-export the Temporal polyfill (`Temporal`, `Intl`, `toTemporalInstant`) so every namespace subpath offers it
|
|
2
|
+
export * from "@js-temporal/polyfill";
|
|
3
|
+
export * from "./business/index.js";
|
|
4
|
+
export * from "./calculate/index.js";
|
|
5
|
+
export * from "./validate/index.js";
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { BusinessCalendar } from "../../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Return true when `calendar` is a `BusinessCalendar` the business-day functions accept.
|
|
4
|
+
*
|
|
5
|
+
* - `weekend` must be an array of ISO weekday integers, 1 (Monday) through 7 (Sunday).
|
|
6
|
+
* Duplicates are ignored and `[]` is valid — a calendar with no weekly closure.
|
|
7
|
+
* - All seven weekdays being weekend is **invalid**: such a calendar has no business day, so
|
|
8
|
+
* `nextBusinessDay` and every other walk would have nothing to walk to.
|
|
9
|
+
* - `holidays` must be an array of ISO PlainDate strings. `[]` is valid. A datetime, a leap
|
|
10
|
+
* second or a date that does not exist is not.
|
|
11
|
+
* - `timeZone` must be a valid IANA identifier. It records which locality the calendar
|
|
12
|
+
* describes; the business-day functions never read it, because they work on local dates.
|
|
13
|
+
* - Returns `false` for non-objects, `null` and arrays.
|
|
14
|
+
* - Use it to tell a legitimate result from `mergeCalendars` apart from its invalid-input
|
|
15
|
+
* sentinel, which is also `null`, and to tell a misconfigured calendar apart from a bad date
|
|
16
|
+
* when a business-day function returns `""`.
|
|
17
|
+
*
|
|
18
|
+
* @param calendar candidate value of any type
|
|
19
|
+
* @returns boolean indicating whether every business-day function accepts it
|
|
20
|
+
*
|
|
21
|
+
* @example isValidBusinessCalendar({ weekend: [6, 7], holidays: [], timeZone: "UTC" }) // true
|
|
22
|
+
* @example isValidBusinessCalendar({ weekend: [5, 6], holidays: ["2024-07-04"], timeZone: "Asia/Riyadh" }) // true — Friday–Saturday
|
|
23
|
+
* @example isValidBusinessCalendar({ weekend: [], holidays: [], timeZone: "UTC" }) // true — no weekly closure
|
|
24
|
+
* @example isValidBusinessCalendar({ weekend: [1, 2, 3, 4, 5, 6, 7], holidays: [], timeZone: "UTC" }) // false — no business day left
|
|
25
|
+
* @example isValidBusinessCalendar({ weekend: [6, 8], holidays: [], timeZone: "UTC" }) // false — 8 is not an ISO weekday
|
|
26
|
+
* @example isValidBusinessCalendar({ weekend: [6, 7], holidays: ["2024-02-30"], timeZone: "UTC" }) // false — that date does not exist
|
|
27
|
+
* @example isValidBusinessCalendar({ weekend: [6, 7], holidays: ["2024-07-04T00:00:00"], timeZone: "UTC" }) // false — a datetime, not a date
|
|
28
|
+
* @example isValidBusinessCalendar({ weekend: [6, 7], holidays: [], timeZone: "Invalid/Zone" }) // false
|
|
29
|
+
* @example isValidBusinessCalendar(null) // false
|
|
30
|
+
*/
|
|
31
|
+
export declare function isValidBusinessCalendar(calendar: unknown): calendar is BusinessCalendar;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { parseBusinessCalendar } from "../../internal/businessCalendar.js";
|
|
2
|
+
/**
|
|
3
|
+
* Return true when `calendar` is a `BusinessCalendar` the business-day functions accept.
|
|
4
|
+
*
|
|
5
|
+
* - `weekend` must be an array of ISO weekday integers, 1 (Monday) through 7 (Sunday).
|
|
6
|
+
* Duplicates are ignored and `[]` is valid — a calendar with no weekly closure.
|
|
7
|
+
* - All seven weekdays being weekend is **invalid**: such a calendar has no business day, so
|
|
8
|
+
* `nextBusinessDay` and every other walk would have nothing to walk to.
|
|
9
|
+
* - `holidays` must be an array of ISO PlainDate strings. `[]` is valid. A datetime, a leap
|
|
10
|
+
* second or a date that does not exist is not.
|
|
11
|
+
* - `timeZone` must be a valid IANA identifier. It records which locality the calendar
|
|
12
|
+
* describes; the business-day functions never read it, because they work on local dates.
|
|
13
|
+
* - Returns `false` for non-objects, `null` and arrays.
|
|
14
|
+
* - Use it to tell a legitimate result from `mergeCalendars` apart from its invalid-input
|
|
15
|
+
* sentinel, which is also `null`, and to tell a misconfigured calendar apart from a bad date
|
|
16
|
+
* when a business-day function returns `""`.
|
|
17
|
+
*
|
|
18
|
+
* @param calendar candidate value of any type
|
|
19
|
+
* @returns boolean indicating whether every business-day function accepts it
|
|
20
|
+
*
|
|
21
|
+
* @example isValidBusinessCalendar({ weekend: [6, 7], holidays: [], timeZone: "UTC" }) // true
|
|
22
|
+
* @example isValidBusinessCalendar({ weekend: [5, 6], holidays: ["2024-07-04"], timeZone: "Asia/Riyadh" }) // true — Friday–Saturday
|
|
23
|
+
* @example isValidBusinessCalendar({ weekend: [], holidays: [], timeZone: "UTC" }) // true — no weekly closure
|
|
24
|
+
* @example isValidBusinessCalendar({ weekend: [1, 2, 3, 4, 5, 6, 7], holidays: [], timeZone: "UTC" }) // false — no business day left
|
|
25
|
+
* @example isValidBusinessCalendar({ weekend: [6, 8], holidays: [], timeZone: "UTC" }) // false — 8 is not an ISO weekday
|
|
26
|
+
* @example isValidBusinessCalendar({ weekend: [6, 7], holidays: ["2024-02-30"], timeZone: "UTC" }) // false — that date does not exist
|
|
27
|
+
* @example isValidBusinessCalendar({ weekend: [6, 7], holidays: ["2024-07-04T00:00:00"], timeZone: "UTC" }) // false — a datetime, not a date
|
|
28
|
+
* @example isValidBusinessCalendar({ weekend: [6, 7], holidays: [], timeZone: "Invalid/Zone" }) // false
|
|
29
|
+
* @example isValidBusinessCalendar(null) // false
|
|
30
|
+
*/
|
|
31
|
+
export function isValidBusinessCalendar(calendar) {
|
|
32
|
+
try {
|
|
33
|
+
return parseBusinessCalendar(calendar) !== null;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// Never throws (Core Rule 3): a hostile
|
|
37
|
+
// argument is invalid input, not an exception.
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { FiscalPattern } from "../../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Return true when `pattern` is a valid FiscalPattern.
|
|
4
|
+
*
|
|
5
|
+
* - Valid patterns are: "4-5-4" (the NRF retail calendar), "4-4-5", "5-4-4".
|
|
6
|
+
* - Accepts any input type and returns false for non-string values.
|
|
7
|
+
* - Uses type assertion to narrow the type.
|
|
8
|
+
* - `getFiscalPeriod` returns null for a pattern it does not recognise — the same sentinel it
|
|
9
|
+
* returns for a date it cannot place. Check the pattern here to tell a misconfigured
|
|
10
|
+
* calendar apart from an unusable date: a pattern read from config, an env var or a form is
|
|
11
|
+
* a bare string until something narrows it.
|
|
12
|
+
*
|
|
13
|
+
* @param pattern candidate value of any type
|
|
14
|
+
* @returns boolean indicating validity
|
|
15
|
+
*
|
|
16
|
+
* @example isValidFiscalPattern("4-5-4") // true (the NRF retail calendar)
|
|
17
|
+
* @example isValidFiscalPattern("4-4-5") // true
|
|
18
|
+
* @example isValidFiscalPattern("5-4-4") // true
|
|
19
|
+
* @example isValidFiscalPattern("4-5-5") // false (the shape a 53-week year's last quarter takes, not a pattern)
|
|
20
|
+
* @example isValidFiscalPattern("454") // false
|
|
21
|
+
* @example isValidFiscalPattern("invalid") // false
|
|
22
|
+
* @example isValidFiscalPattern(454) // false
|
|
23
|
+
* @example isValidFiscalPattern(null) // false
|
|
24
|
+
*/
|
|
25
|
+
export declare function isValidFiscalPattern(pattern: unknown): pattern is FiscalPattern;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Return true when `pattern` is a valid FiscalPattern.
|
|
3
|
+
*
|
|
4
|
+
* - Valid patterns are: "4-5-4" (the NRF retail calendar), "4-4-5", "5-4-4".
|
|
5
|
+
* - Accepts any input type and returns false for non-string values.
|
|
6
|
+
* - Uses type assertion to narrow the type.
|
|
7
|
+
* - `getFiscalPeriod` returns null for a pattern it does not recognise — the same sentinel it
|
|
8
|
+
* returns for a date it cannot place. Check the pattern here to tell a misconfigured
|
|
9
|
+
* calendar apart from an unusable date: a pattern read from config, an env var or a form is
|
|
10
|
+
* a bare string until something narrows it.
|
|
11
|
+
*
|
|
12
|
+
* @param pattern candidate value of any type
|
|
13
|
+
* @returns boolean indicating validity
|
|
14
|
+
*
|
|
15
|
+
* @example isValidFiscalPattern("4-5-4") // true (the NRF retail calendar)
|
|
16
|
+
* @example isValidFiscalPattern("4-4-5") // true
|
|
17
|
+
* @example isValidFiscalPattern("5-4-4") // true
|
|
18
|
+
* @example isValidFiscalPattern("4-5-5") // false (the shape a 53-week year's last quarter takes, not a pattern)
|
|
19
|
+
* @example isValidFiscalPattern("454") // false
|
|
20
|
+
* @example isValidFiscalPattern("invalid") // false
|
|
21
|
+
* @example isValidFiscalPattern(454) // false
|
|
22
|
+
* @example isValidFiscalPattern(null) // false
|
|
23
|
+
*/
|
|
24
|
+
export function isValidFiscalPattern(pattern) {
|
|
25
|
+
if (typeof pattern !== "string") {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
return pattern === "4-5-4" || pattern === "4-4-5" || pattern === "5-4-4";
|
|
29
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { RollConvention } from "../../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Return true when `convention` is a `RollConvention` that `rollDate` implements.
|
|
4
|
+
*
|
|
5
|
+
* - Valid conventions are `"following"`, `"modifiedFollowing"`, `"preceding"`,
|
|
6
|
+
* `"modifiedPreceding"`, `"endOfMonth"` and `"none"`. The first three are the conventions
|
|
7
|
+
* [ISDA 2006 Definitions §4.12(a)](https://www.isda.org/a/smMDE/Blackline-2000-v-2006-ISDA-Definitions.pdf)
|
|
8
|
+
* defines in (i)–(iii); `"modifiedPreceding"` is FpML's `BusinessDayConventionEnum`
|
|
9
|
+
* `MODPRECEDING`, which §4.12(a) does not define; `"none"` is Strata's `NO_ADJUST`; and
|
|
10
|
+
* `"endOfMonth"` is GMT's own. The camelCase spelling
|
|
11
|
+
* is GMT's — no standard fixes the identifiers, only the behaviour.
|
|
12
|
+
* - Matching is exact: case, spacing and abbreviations are not normalised.
|
|
13
|
+
* - Accepts any input type and returns false for non-string values.
|
|
14
|
+
* - `rollDate` returns `""` for a convention it does not recognise — the same sentinel it
|
|
15
|
+
* returns for a bad date or calendar. Check the convention here to tell a misconfigured
|
|
16
|
+
* contract term apart from bad data.
|
|
17
|
+
*
|
|
18
|
+
* @param convention candidate value of any type
|
|
19
|
+
* @returns boolean indicating validity
|
|
20
|
+
*
|
|
21
|
+
* @example isValidRollConvention("modifiedFollowing") // true
|
|
22
|
+
* @example isValidRollConvention("endOfMonth") // true
|
|
23
|
+
* @example isValidRollConvention("none") // true
|
|
24
|
+
* @example isValidRollConvention("Following") // false (case is exact)
|
|
25
|
+
* @example isValidRollConvention("nearest") // false (not implemented)
|
|
26
|
+
* @example isValidRollConvention(null) // false
|
|
27
|
+
*/
|
|
28
|
+
export declare function isValidRollConvention(convention: unknown): convention is RollConvention;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const ROLL_CONVENTIONS = [
|
|
2
|
+
"following",
|
|
3
|
+
"modifiedFollowing",
|
|
4
|
+
"preceding",
|
|
5
|
+
"modifiedPreceding",
|
|
6
|
+
"endOfMonth",
|
|
7
|
+
"none",
|
|
8
|
+
];
|
|
9
|
+
/**
|
|
10
|
+
* Return true when `convention` is a `RollConvention` that `rollDate` implements.
|
|
11
|
+
*
|
|
12
|
+
* - Valid conventions are `"following"`, `"modifiedFollowing"`, `"preceding"`,
|
|
13
|
+
* `"modifiedPreceding"`, `"endOfMonth"` and `"none"`. The first three are the conventions
|
|
14
|
+
* [ISDA 2006 Definitions §4.12(a)](https://www.isda.org/a/smMDE/Blackline-2000-v-2006-ISDA-Definitions.pdf)
|
|
15
|
+
* defines in (i)–(iii); `"modifiedPreceding"` is FpML's `BusinessDayConventionEnum`
|
|
16
|
+
* `MODPRECEDING`, which §4.12(a) does not define; `"none"` is Strata's `NO_ADJUST`; and
|
|
17
|
+
* `"endOfMonth"` is GMT's own. The camelCase spelling
|
|
18
|
+
* is GMT's — no standard fixes the identifiers, only the behaviour.
|
|
19
|
+
* - Matching is exact: case, spacing and abbreviations are not normalised.
|
|
20
|
+
* - Accepts any input type and returns false for non-string values.
|
|
21
|
+
* - `rollDate` returns `""` for a convention it does not recognise — the same sentinel it
|
|
22
|
+
* returns for a bad date or calendar. Check the convention here to tell a misconfigured
|
|
23
|
+
* contract term apart from bad data.
|
|
24
|
+
*
|
|
25
|
+
* @param convention candidate value of any type
|
|
26
|
+
* @returns boolean indicating validity
|
|
27
|
+
*
|
|
28
|
+
* @example isValidRollConvention("modifiedFollowing") // true
|
|
29
|
+
* @example isValidRollConvention("endOfMonth") // true
|
|
30
|
+
* @example isValidRollConvention("none") // true
|
|
31
|
+
* @example isValidRollConvention("Following") // false (case is exact)
|
|
32
|
+
* @example isValidRollConvention("nearest") // false (not implemented)
|
|
33
|
+
* @example isValidRollConvention(null) // false
|
|
34
|
+
*/
|
|
35
|
+
export function isValidRollConvention(convention) {
|
|
36
|
+
return (typeof convention === "string" &&
|
|
37
|
+
ROLL_CONVENTIONS.includes(convention));
|
|
38
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import type { ZoneBucketUnit } from "../../types/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* Return true when `unit` is a valid ZoneBucketUnit.
|
|
5
|
+
*
|
|
6
|
+
* - Valid units are: "hour", "day", "week", "month", singular or plural (`"days"`), as Temporal
|
|
7
|
+
* §13.17 names a unit either way and `floorToZone`/`bucketRange` accept both.
|
|
8
|
+
* - Accepts any input type and returns false for non-string values.
|
|
9
|
+
* - Uses type assertion to narrow the type.
|
|
10
|
+
* - Narrower than `isValidDateTimeUnit` on purpose: these are the boundaries a calendar in a
|
|
11
|
+
* zone actually has. Sub-hour units need no zone, and "year" is left out because the
|
|
12
|
+
* calendar and fiscal year questions are `getQuarter`'s and `getFiscalPeriod`'s.
|
|
13
|
+
* - `floorToZone` returns "" and `bucketRange` returns [] for a unit they do not recognise —
|
|
14
|
+
* the same sentinels they return for an unusable instant. Check the unit here to tell a
|
|
15
|
+
* misconfigured rollup apart from a bad timestamp.
|
|
16
|
+
*
|
|
17
|
+
* @param unit candidate value of any type
|
|
18
|
+
* @returns boolean indicating validity
|
|
19
|
+
*
|
|
20
|
+
* @example isValidZoneBucketUnit("hour") // true
|
|
21
|
+
* @example isValidZoneBucketUnit("day") // true
|
|
22
|
+
* @example isValidZoneBucketUnit("week") // true
|
|
23
|
+
* @example isValidZoneBucketUnit("month") // true
|
|
24
|
+
* @example isValidZoneBucketUnit("year") // false (a calendar year is getQuarter's question)
|
|
25
|
+
* @example isValidZoneBucketUnit("minute") // false (a sub-hour boundary needs no zone)
|
|
26
|
+
* @example isValidZoneBucketUnit("days") // true (plural name)
|
|
27
|
+
* @example isValidZoneBucketUnit("years") // false
|
|
28
|
+
* @example isValidZoneBucketUnit(1) // false
|
|
29
|
+
* @example isValidZoneBucketUnit(null) // false
|
|
30
|
+
*/
|
|
31
|
+
export declare function isValidZoneBucketUnit(unit: unknown): unit is Temporal.SmallestUnit<ZoneBucketUnit>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { resolveDateTimeUnit } from "../../internal/resolveDateTimeUnit.js";
|
|
2
|
+
/**
|
|
3
|
+
* Return true when `unit` is a valid ZoneBucketUnit.
|
|
4
|
+
*
|
|
5
|
+
* - Valid units are: "hour", "day", "week", "month", singular or plural (`"days"`), as Temporal
|
|
6
|
+
* §13.17 names a unit either way and `floorToZone`/`bucketRange` accept both.
|
|
7
|
+
* - Accepts any input type and returns false for non-string values.
|
|
8
|
+
* - Uses type assertion to narrow the type.
|
|
9
|
+
* - Narrower than `isValidDateTimeUnit` on purpose: these are the boundaries a calendar in a
|
|
10
|
+
* zone actually has. Sub-hour units need no zone, and "year" is left out because the
|
|
11
|
+
* calendar and fiscal year questions are `getQuarter`'s and `getFiscalPeriod`'s.
|
|
12
|
+
* - `floorToZone` returns "" and `bucketRange` returns [] for a unit they do not recognise —
|
|
13
|
+
* the same sentinels they return for an unusable instant. Check the unit here to tell a
|
|
14
|
+
* misconfigured rollup apart from a bad timestamp.
|
|
15
|
+
*
|
|
16
|
+
* @param unit candidate value of any type
|
|
17
|
+
* @returns boolean indicating validity
|
|
18
|
+
*
|
|
19
|
+
* @example isValidZoneBucketUnit("hour") // true
|
|
20
|
+
* @example isValidZoneBucketUnit("day") // true
|
|
21
|
+
* @example isValidZoneBucketUnit("week") // true
|
|
22
|
+
* @example isValidZoneBucketUnit("month") // true
|
|
23
|
+
* @example isValidZoneBucketUnit("year") // false (a calendar year is getQuarter's question)
|
|
24
|
+
* @example isValidZoneBucketUnit("minute") // false (a sub-hour boundary needs no zone)
|
|
25
|
+
* @example isValidZoneBucketUnit("days") // true (plural name)
|
|
26
|
+
* @example isValidZoneBucketUnit("years") // false
|
|
27
|
+
* @example isValidZoneBucketUnit(1) // false
|
|
28
|
+
* @example isValidZoneBucketUnit(null) // false
|
|
29
|
+
*/
|
|
30
|
+
export function isValidZoneBucketUnit(unit) {
|
|
31
|
+
if (typeof unit !== "string") {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
const singular = resolveDateTimeUnit(unit);
|
|
35
|
+
return (singular === "hour" ||
|
|
36
|
+
singular === "day" ||
|
|
37
|
+
singular === "week" ||
|
|
38
|
+
singular === "month");
|
|
39
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
1
2
|
import type { DateTimeDurationUnit, DurationRelativeTo } from "../../types/index.js";
|
|
2
3
|
/**
|
|
3
4
|
* Express an ISO 8601 duration as a single fractional total in one unit.
|
|
@@ -16,10 +17,28 @@ import type { DateTimeDurationUnit, DurationRelativeTo } from "../../types/index
|
|
|
16
17
|
* calendar quantity to Temporal regardless of what it is being measured from.
|
|
17
18
|
* - `relativeTo` changes the answer for non-calendar units too when it names a zoned instant:
|
|
18
19
|
* a day spanning a DST spring-forward transition totals 23 hours, not 24.
|
|
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.
|
|
37
|
+
* - `unit` accepts the plural or singular name (`"hours"` or `"hour"`), as Temporal does.
|
|
19
38
|
* - Returns null on a non-duration `value`, an invalid `unit`, or an invalid `relativeTo`.
|
|
20
39
|
*
|
|
21
40
|
* @param value ISO 8601 duration string
|
|
22
|
-
* @param unit DateTimeDurationUnit to total into ("years" | "months" | "weeks" | "days" | "hours" | "minutes" | "seconds" | "milliseconds" | "microseconds" | "nanoseconds")
|
|
41
|
+
* @param unit DateTimeDurationUnit to total into ("years" | "months" | "weeks" | "days" | "hours" | "minutes" | "seconds" | "milliseconds" | "microseconds" | "nanoseconds", or the singular name)
|
|
23
42
|
* @param options optional: { relativeTo } — anchor date/instant, required for any calendar unit
|
|
24
43
|
* @returns the fractional total in `unit`, or null on invalid input
|
|
25
44
|
*
|
|
@@ -29,10 +48,15 @@ import type { DateTimeDurationUnit, DurationRelativeTo } from "../../types/index
|
|
|
29
48
|
* @example durationAs("-PT90M", "hours") // -1.5
|
|
30
49
|
* @example durationAs("P1M", "days") // null (calendar unit needs relativeTo)
|
|
31
50
|
* @example durationAs("P1M", "days", { relativeTo: "2024-02-01" }) // 29
|
|
51
|
+
* @example durationAs("P1M", "days", { relativeTo: "20240201" }) // null (basic format)
|
|
32
52
|
* @example durationAs("P1D", "hours", { relativeTo: "2024-03-10T00:00:00-05:00[America/New_York]" }) // 23 (spring-forward)
|
|
53
|
+
* @example durationAs("P1D", "hours", { relativeTo: "2024-11-03T01:30[America/New_York]" }) // 25
|
|
54
|
+
* @example durationAs("P1DT2H30M", "minute") // 1590 (singular unit name)
|
|
33
55
|
* @example durationAs("not a duration", "hours") // null
|
|
34
|
-
* @example durationAs("P1Y", "days", { relativeTo: "
|
|
56
|
+
* @example durationAs("P1Y", "days", { relativeTo: "2024-02-24[u-ca=hebrew]" }) // 385 (Hebrew leap year 5784)
|
|
57
|
+
* @example durationAs("P1M", "days", { relativeTo: "2024-02-10[!u-ca=hebrew]" }) // 30 (1 Adar I 5784; the critical flag is accepted)
|
|
58
|
+
* @example durationAs("P1M", "days", { relativeTo: "2024-02-10T00:00:00[u-ca=hebrew]" }) // 30 (a date-time without a zone reads as its date, as Temporal reads relativeTo)
|
|
35
59
|
*/
|
|
36
|
-
export declare function durationAs(value: string, unit: DateTimeDurationUnit, options?: {
|
|
60
|
+
export declare function durationAs(value: string, unit: DateTimeDurationUnit | Temporal.DateTimeUnit, options?: {
|
|
37
61
|
relativeTo?: DurationRelativeTo;
|
|
38
62
|
}): number | null;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
-
import { resolveDurationRelativeTo } from "../../internal/index.js";
|
|
2
|
+
import { durationTotal, resolveDurationRelativeTo } from "../../internal/index.js";
|
|
3
3
|
import { isValidDateTimeDurationUnit } from "../../plain/validate/index.js";
|
|
4
4
|
import { isValidDuration } from "../validate/isValidDuration.js";
|
|
5
|
+
import { resolveDurationUnit } from "../../internal/resolveDurationUnit.js";
|
|
6
|
+
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
5
7
|
/**
|
|
6
8
|
* Express an ISO 8601 duration as a single fractional total in one unit.
|
|
7
9
|
*
|
|
@@ -19,10 +21,28 @@ import { isValidDuration } from "../validate/isValidDuration.js";
|
|
|
19
21
|
* calendar quantity to Temporal regardless of what it is being measured from.
|
|
20
22
|
* - `relativeTo` changes the answer for non-calendar units too when it names a zoned instant:
|
|
21
23
|
* a day spanning a DST spring-forward transition totals 23 hours, not 24.
|
|
24
|
+
* - A zoned `relativeTo` string resolves its wall time with disambiguation "compatible" and
|
|
25
|
+
* offset "reject", as Temporal does: an ambiguous wall time takes the earlier instant, a
|
|
26
|
+
* nonexistent one the later instant, and an offset that does not match the zone returns null.
|
|
27
|
+
* Pass an explicit offset to pick the other reading of an ambiguous wall time.
|
|
28
|
+
* - A `relativeTo` string is ISO 8601 extended format before its first `[`:
|
|
29
|
+
* a date, a date-time, or with a time zone annotation a zoned date-time (`<date>T<time>`, then
|
|
30
|
+
* nothing, `Z` or `±HH:MM`). Basic format (`"20240101"`), a space or lower-case `t` separator, a
|
|
31
|
+
* lower-case `z`, a UTC offset without a zone and a zoned date without a time are invalid.
|
|
32
|
+
* - A `relativeTo` string takes a calendar in RFC 9557 form, as `convertDateToCalendar` and
|
|
33
|
+
* `convertZonedToCalendar` write it: ISO digits and a `[u-ca=<id>]` annotation, after the zone
|
|
34
|
+
* for a zoned string (`"2024-02-24[u-ca=hebrew]"`, `"2024-02-24T00:00:00-05:00[America/New_York][u-ca=hebrew]"`).
|
|
35
|
+
* The annotations are read as Temporal reads them: the critical flag and the id's letter case
|
|
36
|
+
* are accepted, elective unknown annotations are ignored, the first `u-ca` names the calendar,
|
|
37
|
+
* and a string with a time zone annotation is zoned. An unknown critical annotation, a critical
|
|
38
|
+
* duplicate calendar, a calendar before the zone, an unsupported calendar and a leap second in
|
|
39
|
+
* any spelling return null.
|
|
40
|
+
* Compatibility: before 1.16.0 the digits were read as the calendar's own year, month and day.
|
|
41
|
+
* - `unit` accepts the plural or singular name (`"hours"` or `"hour"`), as Temporal does.
|
|
22
42
|
* - Returns null on a non-duration `value`, an invalid `unit`, or an invalid `relativeTo`.
|
|
23
43
|
*
|
|
24
44
|
* @param value ISO 8601 duration string
|
|
25
|
-
* @param unit DateTimeDurationUnit to total into ("years" | "months" | "weeks" | "days" | "hours" | "minutes" | "seconds" | "milliseconds" | "microseconds" | "nanoseconds")
|
|
45
|
+
* @param unit DateTimeDurationUnit to total into ("years" | "months" | "weeks" | "days" | "hours" | "minutes" | "seconds" | "milliseconds" | "microseconds" | "nanoseconds", or the singular name)
|
|
26
46
|
* @param options optional: { relativeTo } — anchor date/instant, required for any calendar unit
|
|
27
47
|
* @returns the fractional total in `unit`, or null on invalid input
|
|
28
48
|
*
|
|
@@ -32,19 +52,25 @@ import { isValidDuration } from "../validate/isValidDuration.js";
|
|
|
32
52
|
* @example durationAs("-PT90M", "hours") // -1.5
|
|
33
53
|
* @example durationAs("P1M", "days") // null (calendar unit needs relativeTo)
|
|
34
54
|
* @example durationAs("P1M", "days", { relativeTo: "2024-02-01" }) // 29
|
|
55
|
+
* @example durationAs("P1M", "days", { relativeTo: "20240201" }) // null (basic format)
|
|
35
56
|
* @example durationAs("P1D", "hours", { relativeTo: "2024-03-10T00:00:00-05:00[America/New_York]" }) // 23 (spring-forward)
|
|
57
|
+
* @example durationAs("P1D", "hours", { relativeTo: "2024-11-03T01:30[America/New_York]" }) // 25
|
|
58
|
+
* @example durationAs("P1DT2H30M", "minute") // 1590 (singular unit name)
|
|
36
59
|
* @example durationAs("not a duration", "hours") // null
|
|
37
|
-
* @example durationAs("P1Y", "days", { relativeTo: "
|
|
60
|
+
* @example durationAs("P1Y", "days", { relativeTo: "2024-02-24[u-ca=hebrew]" }) // 385 (Hebrew leap year 5784)
|
|
61
|
+
* @example durationAs("P1M", "days", { relativeTo: "2024-02-10[!u-ca=hebrew]" }) // 30 (1 Adar I 5784; the critical flag is accepted)
|
|
62
|
+
* @example durationAs("P1M", "days", { relativeTo: "2024-02-10T00:00:00[u-ca=hebrew]" }) // 30 (a date-time without a zone reads as its date, as Temporal reads relativeTo)
|
|
38
63
|
*/
|
|
39
64
|
export function durationAs(value, unit, options) {
|
|
40
|
-
if (!
|
|
65
|
+
if (!isOptionsArgument(options)) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const resolvedUnit = resolveDurationUnit(unit);
|
|
69
|
+
if (!isValidDuration(value) || !isValidDateTimeDurationUnit(resolvedUnit)) {
|
|
41
70
|
return null;
|
|
42
71
|
}
|
|
43
72
|
try {
|
|
44
|
-
return Temporal.Duration.from(value)
|
|
45
|
-
unit,
|
|
46
|
-
relativeTo: resolveDurationRelativeTo(options?.relativeTo),
|
|
47
|
-
});
|
|
73
|
+
return durationTotal(Temporal.Duration.from(value), resolvedUnit, resolveDurationRelativeTo(options?.relativeTo));
|
|
48
74
|
}
|
|
49
75
|
catch {
|
|
50
76
|
return null;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
1
2
|
import type { DateTimeDurationUnit } from "../../types/index.js";
|
|
2
3
|
/**
|
|
3
4
|
* Read a single component out of an ISO 8601 duration string.
|
|
@@ -12,11 +13,12 @@ import type { DateTimeDurationUnit } from "../../types/index.js";
|
|
|
12
13
|
* is 30 — the input's own precision, not the caller's spelling of it, decides the fields.
|
|
13
14
|
* - A negative duration stores *every* field as negative, so this returns a negative number
|
|
14
15
|
* for each nonzero component of "-P1DT2H", not just the leading one.
|
|
16
|
+
* - `unit` accepts the plural or singular name (`"hours"` or `"hour"`), as Temporal does.
|
|
15
17
|
* - Returns null when `value` is not a valid duration string or `unit` is not a valid
|
|
16
18
|
* DateTimeDurationUnit.
|
|
17
19
|
*
|
|
18
20
|
* @param value ISO 8601 duration string
|
|
19
|
-
* @param unit DateTimeDurationUnit to read ("years" | "months" | "weeks" | "days" | "hours" | "minutes" | "seconds" | "milliseconds" | "microseconds" | "nanoseconds")
|
|
21
|
+
* @param unit DateTimeDurationUnit to read ("years" | "months" | "weeks" | "days" | "hours" | "minutes" | "seconds" | "milliseconds" | "microseconds" | "nanoseconds", or the singular name)
|
|
20
22
|
* @returns the component's value, or null on invalid input
|
|
21
23
|
*
|
|
22
24
|
* @example getDurationUnit("P1DT2H30M", "hours") // 2
|
|
@@ -26,6 +28,7 @@ import type { DateTimeDurationUnit } from "../../types/index.js";
|
|
|
26
28
|
* @example getDurationUnit("P1M", "months") // 1 (no relativeTo needed to read a field)
|
|
27
29
|
* @example getDurationUnit("PT0S", "days") // 0
|
|
28
30
|
* @example getDurationUnit("not a duration", "hours") // null
|
|
31
|
+
* @example getDurationUnit("P1DT2H30M", "hour") // 2 (singular unit name)
|
|
29
32
|
* @example getDurationUnit("P1D", "fortnights") // null
|
|
30
33
|
*/
|
|
31
|
-
export declare function getDurationUnit(value: string, unit: DateTimeDurationUnit): number | null;
|
|
34
|
+
export declare function getDurationUnit(value: string, unit: DateTimeDurationUnit | Temporal.DateTimeUnit): number | null;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import { isValidDateTimeDurationUnit } from "../../plain/validate/index.js";
|
|
3
3
|
import { isValidDuration } from "../validate/isValidDuration.js";
|
|
4
|
+
import { resolveDurationUnit } from "../../internal/resolveDurationUnit.js";
|
|
4
5
|
/**
|
|
5
6
|
* Read a single component out of an ISO 8601 duration string.
|
|
6
7
|
*
|
|
@@ -14,11 +15,12 @@ import { isValidDuration } from "../validate/isValidDuration.js";
|
|
|
14
15
|
* is 30 — the input's own precision, not the caller's spelling of it, decides the fields.
|
|
15
16
|
* - A negative duration stores *every* field as negative, so this returns a negative number
|
|
16
17
|
* for each nonzero component of "-P1DT2H", not just the leading one.
|
|
18
|
+
* - `unit` accepts the plural or singular name (`"hours"` or `"hour"`), as Temporal does.
|
|
17
19
|
* - Returns null when `value` is not a valid duration string or `unit` is not a valid
|
|
18
20
|
* DateTimeDurationUnit.
|
|
19
21
|
*
|
|
20
22
|
* @param value ISO 8601 duration string
|
|
21
|
-
* @param unit DateTimeDurationUnit to read ("years" | "months" | "weeks" | "days" | "hours" | "minutes" | "seconds" | "milliseconds" | "microseconds" | "nanoseconds")
|
|
23
|
+
* @param unit DateTimeDurationUnit to read ("years" | "months" | "weeks" | "days" | "hours" | "minutes" | "seconds" | "milliseconds" | "microseconds" | "nanoseconds", or the singular name)
|
|
22
24
|
* @returns the component's value, or null on invalid input
|
|
23
25
|
*
|
|
24
26
|
* @example getDurationUnit("P1DT2H30M", "hours") // 2
|
|
@@ -28,14 +30,16 @@ import { isValidDuration } from "../validate/isValidDuration.js";
|
|
|
28
30
|
* @example getDurationUnit("P1M", "months") // 1 (no relativeTo needed to read a field)
|
|
29
31
|
* @example getDurationUnit("PT0S", "days") // 0
|
|
30
32
|
* @example getDurationUnit("not a duration", "hours") // null
|
|
33
|
+
* @example getDurationUnit("P1DT2H30M", "hour") // 2 (singular unit name)
|
|
31
34
|
* @example getDurationUnit("P1D", "fortnights") // null
|
|
32
35
|
*/
|
|
33
36
|
export function getDurationUnit(value, unit) {
|
|
34
|
-
|
|
37
|
+
const resolvedUnit = resolveDurationUnit(unit);
|
|
38
|
+
if (!isValidDuration(value) || !isValidDateTimeDurationUnit(resolvedUnit)) {
|
|
35
39
|
return null;
|
|
36
40
|
}
|
|
37
41
|
try {
|
|
38
|
-
return Temporal.Duration.from(value)[
|
|
42
|
+
return Temporal.Duration.from(value)[resolvedUnit];
|
|
39
43
|
}
|
|
40
44
|
catch {
|
|
41
45
|
return null;
|
|
@@ -6,7 +6,8 @@ import type { DurationRelativeTo } from "../../types/index.js";
|
|
|
6
6
|
* - Equality is by length, not by spelling — "PT60M" and "PT1H" compare 0, as do "P1D" and
|
|
7
7
|
* "PT24H" absent a `relativeTo`.
|
|
8
8
|
* - `relativeTo` is required whenever a calendar unit (year/month/week) appears on either
|
|
9
|
-
* side; without it, returns null.
|
|
9
|
+
* side and the two durations differ; without it, returns null. Field-identical durations
|
|
10
|
+
* compare 0 without it ("P1Y" vs "P1Y"), since Temporal checks identity first. Note the asymmetry with `addDuration`/`subtractDuration`
|
|
10
11
|
* (A2): Temporal.Duration.compare *does* accept `relativeTo`, while .add/.subtract do not,
|
|
11
12
|
* so calendar-unit durations are comparable here even though they cannot be combined there.
|
|
12
13
|
* `durationAs` and `normalizeDuration` (A3) carry the same relativeTo rule as this function.
|
|
@@ -14,6 +15,23 @@ import type { DurationRelativeTo } from "../../types/index.js";
|
|
|
14
15
|
* than "P30D" relative to January (31 days) and shorter relative to February 2024 (29).
|
|
15
16
|
* - It matters for non-calendar units too when it names a zoned instant — across a DST
|
|
16
17
|
* spring-forward, "P1D" is 23 real hours and so compares shorter than "PT24H".
|
|
18
|
+
* - A zoned `relativeTo` string resolves its wall time with disambiguation "compatible" and
|
|
19
|
+
* offset "reject", as Temporal does: an ambiguous wall time takes the earlier instant, a
|
|
20
|
+
* nonexistent one the later instant, and an offset that does not match the zone returns null.
|
|
21
|
+
* Pass an explicit offset to pick the other reading of an ambiguous wall time.
|
|
22
|
+
* - A `relativeTo` string is ISO 8601 extended format before its first `[`:
|
|
23
|
+
* a date, a date-time, or with a time zone annotation a zoned date-time (`<date>T<time>`, then
|
|
24
|
+
* nothing, `Z` or `±HH:MM`). Basic format (`"20240101"`), a space or lower-case `t` separator, a
|
|
25
|
+
* lower-case `z`, a UTC offset without a zone and a zoned date without a time are invalid.
|
|
26
|
+
* - A `relativeTo` string takes a calendar in RFC 9557 form, as `convertDateToCalendar` and
|
|
27
|
+
* `convertZonedToCalendar` write it: ISO digits and a `[u-ca=<id>]` annotation, after the zone
|
|
28
|
+
* for a zoned string (`"2024-02-24[u-ca=hebrew]"`, `"2024-02-24T00:00:00-05:00[America/New_York][u-ca=hebrew]"`).
|
|
29
|
+
* The annotations are read as Temporal reads them: the critical flag and the id's letter case
|
|
30
|
+
* are accepted, elective unknown annotations are ignored, the first `u-ca` names the calendar,
|
|
31
|
+
* and a string with a time zone annotation is zoned. An unknown critical annotation, a critical
|
|
32
|
+
* duplicate calendar, a calendar before the zone, an unsupported calendar and a leap second in
|
|
33
|
+
* any spelling return null.
|
|
34
|
+
* Compatibility: before 1.16.0 the digits were read as the calendar's own year, month and day.
|
|
17
35
|
* - Returns null if either operand is not a valid ISO 8601 duration string, or `relativeTo`
|
|
18
36
|
* is invalid.
|
|
19
37
|
*
|
|
@@ -28,9 +46,14 @@ import type { DurationRelativeTo } from "../../types/index.js";
|
|
|
28
46
|
* @example compareDurations("P1M", "P30D") // null (calendar unit needs relativeTo)
|
|
29
47
|
* @example compareDurations("P1M", "P30D", { relativeTo: "2024-01-01" }) // 1
|
|
30
48
|
* @example compareDurations("P1M", "P30D", { relativeTo: "2024-02-01" }) // -1
|
|
49
|
+
* @example compareDurations("P1M", "P30D", { relativeTo: "2024-02-01 00:00" }) // null (space separator)
|
|
31
50
|
* @example compareDurations("P1D", "PT24H", { relativeTo: "2024-03-10T00:00:00-05:00[America/New_York]" }) // -1 (spring-forward)
|
|
51
|
+
* @example compareDurations("P1Y", "P1Y") // 0
|
|
52
|
+
* @example compareDurations("P1D", "PT24H", { relativeTo: "2024-11-03T01:30[America/New_York]" }) // 1
|
|
32
53
|
* @example compareDurations("not a duration", "PT1H") // null
|
|
33
|
-
* @example compareDurations("P1M", "P30D", { relativeTo: "
|
|
54
|
+
* @example compareDurations("P1M", "P30D", { relativeTo: "2025-01-15[u-ca=hebrew]" }) // -1 (Tevet 5785, a 29-day Hebrew month)
|
|
55
|
+
* @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)
|
|
56
|
+
* @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)
|
|
34
57
|
*/
|
|
35
58
|
export declare function compareDurations(a: string, b: string, options?: {
|
|
36
59
|
relativeTo?: DurationRelativeTo;
|