@northguild/gmt 1.15.0 → 1.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1133 -272
- package/dist/calendar/business/businessDaysBetween.d.ts +37 -0
- package/dist/calendar/business/businessDaysBetween.js +89 -0
- package/dist/calendar/business/index.d.ts +7 -0
- package/dist/calendar/business/index.js +10 -0
- package/dist/calendar/business/mergeCalendars.d.ts +33 -0
- package/dist/calendar/business/mergeCalendars.js +68 -0
- package/dist/calendar/business/nextBusinessDay.d.ts +30 -0
- package/dist/calendar/business/nextBusinessDay.js +39 -0
- package/dist/calendar/business/previousBusinessDay.d.ts +30 -0
- package/dist/calendar/business/previousBusinessDay.js +39 -0
- package/dist/calendar/business/rollDate.d.ts +59 -0
- package/dist/calendar/business/rollDate.js +116 -0
- package/dist/calendar/calculate/bucketRange.d.ts +49 -0
- package/dist/calendar/calculate/bucketRange.js +169 -0
- package/dist/calendar/calculate/floorToZone.d.ts +42 -0
- package/dist/calendar/calculate/floorToZone.js +62 -0
- package/dist/calendar/calculate/getFiscalPeriod.d.ts +64 -0
- package/dist/calendar/calculate/getFiscalPeriod.js +96 -0
- package/dist/calendar/calculate/getIsoWeekDate.d.ts +35 -0
- package/dist/calendar/calculate/getIsoWeekDate.js +41 -0
- package/dist/calendar/calculate/getOrdinalDate.d.ts +25 -0
- package/dist/calendar/calculate/getOrdinalDate.js +28 -0
- package/dist/calendar/calculate/getQuarter.d.ts +36 -0
- package/dist/calendar/calculate/getQuarter.js +64 -0
- package/dist/calendar/calculate/index.d.ts +6 -0
- package/dist/calendar/calculate/index.js +6 -0
- package/dist/calendar/index.d.ts +4 -0
- package/dist/calendar/index.js +5 -0
- package/dist/calendar/validate/index.d.ts +4 -0
- package/dist/calendar/validate/index.js +4 -0
- package/dist/calendar/validate/isValidBusinessCalendar.d.ts +31 -0
- package/dist/calendar/validate/isValidBusinessCalendar.js +40 -0
- package/dist/calendar/validate/isValidFiscalPattern.d.ts +25 -0
- package/dist/calendar/validate/isValidFiscalPattern.js +29 -0
- package/dist/calendar/validate/isValidRollConvention.d.ts +28 -0
- package/dist/calendar/validate/isValidRollConvention.js +38 -0
- package/dist/calendar/validate/isValidZoneBucketUnit.d.ts +31 -0
- package/dist/calendar/validate/isValidZoneBucketUnit.js +39 -0
- package/dist/duration/calculate/durationAs.d.ts +27 -3
- package/dist/duration/calculate/durationAs.js +34 -8
- package/dist/duration/calculate/getDurationUnit.d.ts +5 -2
- package/dist/duration/calculate/getDurationUnit.js +7 -3
- package/dist/duration/compare/compareDurations.d.ts +25 -2
- package/dist/duration/compare/compareDurations.js +31 -7
- package/dist/duration/format/formatDuration.d.ts +14 -5
- package/dist/duration/format/formatDuration.js +47 -11
- package/dist/duration/index.d.ts +1 -0
- package/dist/duration/index.js +2 -0
- package/dist/duration/normalize/normalizeDuration.d.ts +33 -6
- package/dist/duration/normalize/normalizeDuration.js +41 -12
- package/dist/duration/parse/parseDuration.js +4 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +7 -0
- package/dist/instant/convert/classifyLocal.d.ts +50 -0
- package/dist/instant/convert/classifyLocal.js +60 -0
- package/dist/instant/convert/fromOffsetInstant.d.ts +47 -0
- package/dist/instant/convert/fromOffsetInstant.js +91 -0
- package/dist/instant/convert/index.d.ts +4 -0
- package/dist/instant/convert/index.js +4 -0
- package/dist/instant/convert/resolveLocal.d.ts +40 -0
- package/dist/instant/convert/resolveLocal.js +76 -0
- package/dist/instant/convert/toOffsetInstant.d.ts +96 -0
- package/dist/instant/convert/toOffsetInstant.js +162 -0
- package/dist/instant/index.d.ts +2 -0
- package/dist/instant/index.js +3 -0
- package/dist/intermodal/calculate/billingTimeline.d.ts +94 -0
- package/dist/intermodal/calculate/billingTimeline.js +168 -0
- package/dist/intermodal/calculate/chargeableDays.d.ts +98 -0
- package/dist/intermodal/calculate/chargeableDays.js +101 -0
- package/dist/intermodal/calculate/demurrageClock.d.ts +93 -0
- package/dist/intermodal/calculate/demurrageClock.js +140 -0
- package/dist/intermodal/calculate/freeTimeExpiry.d.ts +66 -0
- package/dist/intermodal/calculate/freeTimeExpiry.js +82 -0
- package/dist/intermodal/calculate/index.d.ts +4 -0
- package/dist/intermodal/calculate/index.js +4 -0
- package/dist/intermodal/index.d.ts +2 -0
- package/dist/intermodal/index.js +3 -0
- package/dist/internal/adjustZonedBusinessDays.js +9 -7
- package/dist/internal/businessCalendar.d.ts +46 -0
- package/dist/internal/businessCalendar.js +230 -0
- package/dist/internal/businessDayValues.d.ts +20 -0
- package/dist/internal/businessDayValues.js +54 -0
- package/dist/internal/calendarDatePairPolicy.d.ts +10 -12
- package/dist/internal/calendarDatePairPolicy.js +13 -19
- package/dist/internal/calendarDateString.d.ts +32 -58
- package/dist/internal/calendarDateString.js +51 -93
- package/dist/internal/calendarSystemIds.d.ts +26 -2
- package/dist/internal/calendarSystemIds.js +57 -51
- package/dist/internal/calendarValueOfDate.d.ts +10 -12
- package/dist/internal/calendarValueOfDate.js +22 -20
- package/dist/internal/calendarValueOfZoned.d.ts +14 -17
- package/dist/internal/calendarValueOfZoned.js +25 -25
- package/dist/internal/calendarZonedPairPolicy.d.ts +11 -18
- package/dist/internal/calendarZonedPairPolicy.js +14 -25
- package/dist/internal/calendarZonedString.d.ts +41 -65
- package/dist/internal/calendarZonedString.js +52 -101
- package/dist/internal/compareUnixEpochs.d.ts +14 -0
- package/dist/internal/compareUnixEpochs.js +25 -0
- package/dist/internal/dateTimeUnitHelpers.d.ts +18 -0
- package/dist/internal/dateTimeUnitHelpers.js +27 -0
- package/dist/internal/dateUnitHelpers.d.ts +39 -1
- package/dist/internal/dateUnitHelpers.js +73 -11
- package/dist/internal/defaultFractionalDigits.d.ts +14 -0
- package/dist/internal/defaultFractionalDigits.js +23 -0
- package/dist/internal/differenceRecord.d.ts +32 -0
- package/dist/internal/differenceRecord.js +79 -0
- package/dist/internal/divisionBoundary.d.ts +19 -0
- package/dist/internal/divisionBoundary.js +23 -0
- package/dist/internal/durationUntilString.d.ts +1 -1
- package/dist/internal/durationUntilString.js +10 -2
- package/dist/internal/englishCalendarNames.d.ts +11 -0
- package/dist/internal/englishCalendarNames.js +21 -1
- package/dist/internal/epochNanoseconds.d.ts +27 -0
- package/dist/internal/epochNanoseconds.js +31 -0
- package/dist/internal/fiscalCalendar.d.ts +36 -0
- package/dist/internal/fiscalCalendar.js +86 -0
- package/dist/internal/floorDivide.d.ts +15 -0
- package/dist/internal/floorDivide.js +18 -0
- package/dist/internal/foreignEpochs.d.ts +134 -0
- package/dist/internal/foreignEpochs.js +139 -0
- package/dist/internal/formatCalendarDays.d.ts +28 -0
- package/dist/internal/formatCalendarDays.js +49 -0
- package/dist/internal/formatDateInCalendar.d.ts +14 -39
- package/dist/internal/formatDateInCalendar.js +16 -47
- package/dist/internal/formatRelativeDuration.d.ts +27 -0
- package/dist/internal/formatRelativeDuration.js +45 -0
- package/dist/internal/freeTimeLedger.d.ts +93 -0
- package/dist/internal/freeTimeLedger.js +262 -0
- package/dist/internal/getLocaleFirstDayOfWeek.d.ts +9 -6
- package/dist/internal/getLocaleFirstDayOfWeek.js +9 -10
- package/dist/internal/getLocaleWeekYearBounds.d.ts +17 -9
- package/dist/internal/getLocaleWeekYearBounds.js +45 -26
- package/dist/internal/getLocaleWeekendDays.d.ts +9 -18
- package/dist/internal/getLocaleWeekendDays.js +9 -5
- package/dist/internal/halfOpenIntervals.d.ts +102 -0
- package/dist/internal/halfOpenIntervals.js +180 -0
- package/dist/internal/hasCalendarAnnotation.d.ts +20 -20
- package/dist/internal/hasCalendarAnnotation.js +23 -21
- package/dist/internal/hourDurationString.d.ts +16 -0
- package/dist/internal/hourDurationString.js +47 -0
- package/dist/internal/httpDateFields.d.ts +24 -0
- package/dist/internal/httpDateFields.js +86 -0
- package/dist/internal/index.d.ts +30 -9
- package/dist/internal/index.js +30 -9
- package/dist/internal/instantFormatOptions.d.ts +43 -0
- package/dist/internal/instantFormatOptions.js +99 -0
- package/dist/internal/instantIntervalText.d.ts +20 -0
- package/dist/internal/instantIntervalText.js +25 -0
- package/dist/internal/instantNanoseconds.d.ts +25 -0
- package/dist/internal/instantNanoseconds.js +41 -0
- package/dist/internal/intervalCountHelpers.d.ts +16 -10
- package/dist/internal/intervalCountHelpers.js +1 -31
- package/dist/internal/intervalNanoseconds.d.ts +47 -0
- package/dist/internal/intervalNanoseconds.js +86 -0
- package/dist/internal/isObject.d.ts +26 -0
- package/dist/internal/isObject.js +30 -0
- package/dist/internal/isoStringBody.d.ts +66 -0
- package/dist/internal/isoStringBody.js +105 -0
- package/dist/internal/joinDateTimeConnector.d.ts +1 -1
- package/dist/internal/localeWeekInfo.d.ts +34 -0
- package/dist/internal/localeWeekInfo.js +27 -0
- package/dist/internal/maxPieces.d.ts +41 -0
- package/dist/internal/maxPieces.js +53 -0
- package/dist/internal/measureNearRangeEnd.d.ts +26 -0
- package/dist/internal/measureNearRangeEnd.js +47 -0
- package/dist/internal/monthGridWeekRow.d.ts +4 -1
- package/dist/internal/monthGridWeekRow.js +3 -0
- package/dist/internal/normalizeTimeZone.d.ts +17 -10
- package/dist/internal/normalizeTimeZone.js +25 -15
- package/dist/internal/patternToken.d.ts +2 -1
- package/dist/internal/patternToken.js +10 -4
- package/dist/internal/plainDateAdd.d.ts +20 -0
- package/dist/internal/plainDateAdd.js +42 -0
- package/dist/internal/plainDateUntil.d.ts +21 -0
- package/dist/internal/plainDateUntil.js +48 -0
- package/dist/internal/plainFormatOptions.d.ts +59 -0
- package/dist/internal/plainFormatOptions.js +165 -0
- package/dist/internal/resolveDateTimeUnit.d.ts +4 -1
- package/dist/internal/resolveDateTimeUnit.js +2 -12
- package/dist/internal/resolveDurationRelativeTo.d.ts +28 -22
- package/dist/internal/resolveDurationRelativeTo.js +69 -25
- package/dist/internal/resolveDurationUnit.d.ts +4 -1
- package/dist/internal/resolveDurationUnit.js +2 -11
- package/dist/internal/resolveLocale.d.ts +37 -0
- package/dist/internal/resolveLocale.js +59 -0
- package/dist/internal/resolveManualRoundingOptions.d.ts +23 -0
- package/dist/internal/resolveManualRoundingOptions.js +39 -0
- package/dist/internal/resolveMinimalDaysInFirstWeek.d.ts +19 -0
- package/dist/internal/resolveMinimalDaysInFirstWeek.js +28 -0
- package/dist/internal/resolveOverflow.d.ts +6 -0
- package/dist/internal/resolveOverflow.js +7 -1
- package/dist/internal/resolveReadingTimeZone.d.ts +11 -0
- package/dist/internal/resolveReadingTimeZone.js +18 -0
- package/dist/internal/resolveUnixIntervalPair.d.ts +30 -0
- package/dist/internal/resolveUnixIntervalPair.js +53 -0
- package/dist/internal/resolveWeekStartsOn.d.ts +12 -0
- package/dist/internal/resolveWeekStartsOn.js +18 -0
- package/dist/internal/rfc5322DateTime.d.ts +26 -0
- package/dist/internal/rfc5322DateTime.js +176 -0
- package/dist/internal/splitStep.d.ts +81 -0
- package/dist/internal/splitStep.js +182 -0
- package/dist/internal/startOrEndOfUnix.d.ts +26 -0
- package/dist/internal/startOrEndOfUnix.js +47 -0
- package/dist/{utc/calculate → internal}/startOrEndOfUtc.d.ts +8 -4
- package/dist/{utc/calculate → internal}/startOrEndOfUtc.js +30 -26
- package/dist/internal/startOrEndOfZoned.d.ts +22 -0
- package/dist/internal/startOrEndOfZoned.js +49 -0
- package/dist/internal/temporalCompat/calendarDateArithmetic.d.ts +33 -0
- package/dist/internal/temporalCompat/calendarDateArithmetic.js +199 -0
- package/dist/internal/temporalCompat/calendarDateFromFields.d.ts +36 -0
- package/dist/internal/temporalCompat/calendarDateFromFields.js +120 -0
- package/dist/internal/temporalCompat/calendarFields.d.ts +25 -0
- package/dist/internal/temporalCompat/calendarFields.js +131 -0
- package/dist/internal/temporalCompat/capabilities.d.ts +28 -0
- package/dist/internal/temporalCompat/capabilities.js +74 -0
- package/dist/internal/temporalCompat/fieldSearch.d.ts +21 -0
- package/dist/internal/temporalCompat/fieldSearch.js +83 -0
- package/dist/internal/temporalCompat/fixedDay.d.ts +25 -0
- package/dist/internal/temporalCompat/fixedDay.js +45 -0
- package/dist/internal/temporalCompat/hebrewArithmetic.d.ts +19 -0
- package/dist/internal/temporalCompat/hebrewArithmetic.js +150 -0
- package/dist/internal/temporalCompat/index.d.ts +4 -0
- package/dist/internal/temporalCompat/index.js +5 -0
- package/dist/internal/temporalCompat/indianArithmetic.d.ts +16 -0
- package/dist/internal/temporalCompat/indianArithmetic.js +87 -0
- package/dist/internal/temporalCompat/largeMonthSpan.d.ts +19 -0
- package/dist/internal/temporalCompat/largeMonthSpan.js +199 -0
- package/dist/internal/temporalCompat/nonIsoArithmetic.d.ts +59 -0
- package/dist/internal/temporalCompat/nonIsoArithmetic.js +220 -0
- package/dist/internal/temporalCompat/readArithmeticModel.d.ts +3 -0
- package/dist/internal/temporalCompat/readArithmeticModel.js +284 -0
- package/dist/internal/temporalCompat/repros.d.ts +31 -0
- package/dist/internal/temporalCompat/repros.js +556 -0
- package/dist/internal/toInstantFromUtc.d.ts +10 -0
- package/dist/internal/toInstantFromUtc.js +19 -0
- package/dist/internal/unixEpochValue.d.ts +166 -0
- package/dist/internal/unixEpochValue.js +245 -0
- package/dist/internal/unixFormatReference.d.ts +18 -0
- package/dist/internal/unixFormatReference.js +44 -0
- package/dist/internal/unixZonedDateTime.d.ts +22 -0
- package/dist/internal/unixZonedDateTime.js +32 -0
- package/dist/internal/utcOffsetString.d.ts +39 -0
- package/dist/internal/utcOffsetString.js +75 -0
- package/dist/internal/utcZonedDateTime.d.ts +16 -0
- package/dist/internal/utcZonedDateTime.js +28 -0
- package/dist/internal/wallClockAtOffset.d.ts +22 -0
- package/dist/internal/wallClockAtOffset.js +26 -0
- package/dist/internal/zonedBucket.d.ts +91 -0
- package/dist/internal/zonedBucket.js +441 -0
- package/dist/internal/zonedFormatReference.d.ts +15 -0
- package/dist/internal/zonedFormatReference.js +24 -0
- package/dist/internal/zonedLocalDates.d.ts +15 -0
- package/dist/internal/zonedLocalDates.js +58 -0
- package/dist/internal/zonedNowUnitValue.d.ts +24 -0
- package/dist/internal/zonedNowUnitValue.js +58 -0
- package/dist/internal/zonedWallClock.d.ts +84 -0
- package/dist/internal/zonedWallClock.js +427 -0
- package/dist/internal/zonedWallClockDifference.d.ts +92 -0
- package/dist/internal/zonedWallClockDifference.js +1174 -0
- package/dist/internal/zonedWallClockOperations.d.ts +132 -0
- package/dist/internal/zonedWallClockOperations.js +553 -0
- package/dist/internal/zonelessCalendarDate.d.ts +12 -0
- package/dist/internal/zonelessCalendarDate.js +22 -0
- package/dist/interval/calculate/clampInterval.d.ts +22 -0
- package/dist/interval/calculate/clampInterval.js +31 -0
- package/dist/interval/calculate/index.d.ts +6 -0
- package/dist/interval/calculate/index.js +6 -0
- package/dist/interval/calculate/intersectIntervals.d.ts +23 -0
- package/dist/interval/calculate/intersectIntervals.js +43 -0
- package/dist/interval/calculate/mergeIntervals.d.ts +28 -0
- package/dist/interval/calculate/mergeIntervals.js +44 -0
- package/dist/interval/calculate/splitIntervalAt.d.ts +28 -0
- package/dist/interval/calculate/splitIntervalAt.js +63 -0
- package/dist/interval/calculate/subtractIntervals.d.ts +31 -0
- package/dist/interval/calculate/subtractIntervals.js +64 -0
- package/dist/interval/calculate/sumIntervals.d.ts +26 -0
- package/dist/interval/calculate/sumIntervals.js +40 -0
- package/dist/interval/compare/index.d.ts +2 -0
- package/dist/interval/compare/index.js +2 -0
- package/dist/interval/compare/intervalContains.d.ts +25 -0
- package/dist/interval/compare/intervalContains.js +39 -0
- package/dist/interval/compare/intervalsOverlap.d.ts +28 -0
- package/dist/interval/compare/intervalsOverlap.js +42 -0
- package/dist/interval/index.d.ts +4 -0
- package/dist/interval/index.js +5 -0
- package/dist/interval/validate/index.d.ts +1 -0
- package/dist/interval/validate/index.js +1 -0
- package/dist/interval/validate/isValidInterval.d.ts +29 -0
- package/dist/interval/validate/isValidInterval.js +38 -0
- package/dist/plain/calculate/addBusinessDays.d.ts +26 -9
- package/dist/plain/calculate/addBusinessDays.js +29 -21
- package/dist/plain/calculate/addDate.d.ts +9 -8
- package/dist/plain/calculate/addDate.js +35 -22
- package/dist/plain/calculate/addDateTime.js +24 -10
- package/dist/plain/calculate/addTime.d.ts +5 -8
- package/dist/plain/calculate/addTime.js +23 -16
- package/dist/plain/calculate/clampDate.js +3 -3
- package/dist/plain/calculate/closestDateTo.d.ts +11 -7
- package/dist/plain/calculate/closestDateTo.js +36 -24
- package/dist/plain/calculate/cycleDate.d.ts +1 -1
- package/dist/plain/calculate/cycleDate.js +10 -3
- package/dist/plain/calculate/cycleDateTime.d.ts +1 -1
- package/dist/plain/calculate/cycleDateTime.js +10 -3
- package/dist/plain/calculate/cycleTime.d.ts +6 -8
- package/dist/plain/calculate/cycleTime.js +15 -9
- package/dist/plain/calculate/diffDate.d.ts +31 -14
- package/dist/plain/calculate/diffDate.js +73 -38
- package/dist/plain/calculate/diffDateAsDuration.d.ts +13 -8
- package/dist/plain/calculate/diffDateAsDuration.js +22 -9
- package/dist/plain/calculate/diffDateTime.d.ts +17 -5
- package/dist/plain/calculate/diffDateTime.js +67 -28
- package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +2 -2
- package/dist/plain/calculate/diffDateTimeAsDuration.js +10 -3
- package/dist/plain/calculate/diffTime.d.ts +18 -5
- package/dist/plain/calculate/diffTime.js +68 -27
- package/dist/plain/calculate/endOfDate.d.ts +10 -2
- package/dist/plain/calculate/endOfDate.js +52 -27
- package/dist/plain/calculate/endOfDateTime.d.ts +17 -2
- package/dist/plain/calculate/endOfDateTime.js +126 -103
- package/dist/plain/calculate/endOfTime.d.ts +16 -2
- package/dist/plain/calculate/endOfTime.js +77 -59
- package/dist/plain/calculate/getLargestDateDurationUnit.d.ts +13 -5
- package/dist/plain/calculate/getLargestDateDurationUnit.js +26 -10
- package/dist/plain/calculate/getLargestDateTimeDurationUnit.d.ts +13 -6
- package/dist/plain/calculate/getLargestDateTimeDurationUnit.js +37 -22
- package/dist/plain/calculate/getLargestTimeDurationUnit.d.ts +13 -6
- package/dist/plain/calculate/getLargestTimeDurationUnit.js +33 -18
- package/dist/plain/calculate/getLocaleDayOfWeek.d.ts +8 -4
- package/dist/plain/calculate/getLocaleDayOfWeek.js +8 -3
- package/dist/plain/calculate/getLocaleEndOfWeek.d.ts +8 -4
- package/dist/plain/calculate/getLocaleEndOfWeek.js +8 -3
- package/dist/plain/calculate/getLocaleStartOfWeek.d.ts +8 -4
- package/dist/plain/calculate/getLocaleStartOfWeek.js +8 -3
- package/dist/plain/calculate/getLocaleWeekYear.d.ts +29 -19
- package/dist/plain/calculate/getLocaleWeekYear.js +48 -28
- package/dist/plain/calculate/getWeekNumber.d.ts +21 -2
- package/dist/plain/calculate/getWeekNumber.js +33 -12
- package/dist/plain/calculate/getWeekOfMonth.d.ts +4 -2
- package/dist/plain/calculate/getWeekOfMonth.js +8 -3
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +25 -14
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +45 -25
- package/dist/plain/calculate/getWeeksInMonth.d.ts +4 -2
- package/dist/plain/calculate/getWeeksInMonth.js +8 -3
- package/dist/plain/calculate/getWeeksInYear.d.ts +5 -4
- package/dist/plain/calculate/getWeeksInYear.js +9 -14
- package/dist/plain/calculate/maxDate.js +19 -12
- package/dist/plain/calculate/maxDateTime.js +19 -12
- package/dist/plain/calculate/maxTime.js +19 -12
- package/dist/plain/calculate/minDate.js +19 -12
- package/dist/plain/calculate/minDateTime.js +19 -12
- package/dist/plain/calculate/minTime.js +19 -12
- package/dist/plain/calculate/nextWeekday.js +5 -0
- package/dist/plain/calculate/previousWeekday.js +5 -0
- package/dist/plain/calculate/roundDate.d.ts +23 -5
- package/dist/plain/calculate/roundDate.js +88 -46
- package/dist/plain/calculate/roundDateTime.d.ts +27 -3
- package/dist/plain/calculate/roundDateTime.js +128 -69
- package/dist/plain/calculate/roundTime.d.ts +8 -1
- package/dist/plain/calculate/roundTime.js +32 -17
- package/dist/plain/calculate/setDate.js +4 -0
- package/dist/plain/calculate/setDateTime.js +4 -0
- package/dist/plain/calculate/setTime.d.ts +1 -1
- package/dist/plain/calculate/setTime.js +5 -1
- package/dist/plain/calculate/sortDateTimes.js +17 -10
- package/dist/plain/calculate/sortDates.js +17 -10
- package/dist/plain/calculate/sortTimes.js +17 -10
- package/dist/plain/calculate/startOfDate.d.ts +7 -2
- package/dist/plain/calculate/startOfDate.js +52 -27
- package/dist/plain/calculate/startOfDateTime.d.ts +5 -2
- package/dist/plain/calculate/startOfDateTime.js +81 -62
- package/dist/plain/calculate/startOfQuarterForDateTime.d.ts +2 -0
- package/dist/plain/calculate/startOfQuarterForDateTime.js +12 -1
- package/dist/plain/calculate/startOfTime.d.ts +15 -2
- package/dist/plain/calculate/startOfTime.js +33 -37
- package/dist/plain/calculate/subtractBusinessDays.d.ts +25 -10
- package/dist/plain/calculate/subtractBusinessDays.js +28 -22
- package/dist/plain/calculate/subtractDate.d.ts +8 -7
- package/dist/plain/calculate/subtractDate.js +35 -21
- package/dist/plain/calculate/subtractDateTime.js +24 -10
- package/dist/plain/calculate/subtractTime.d.ts +5 -8
- package/dist/plain/calculate/subtractTime.js +23 -16
- package/dist/plain/chop/index.d.ts +0 -1
- package/dist/plain/chop/index.js +0 -1
- package/dist/plain/compare/areDateTimesEqualBy.d.ts +10 -5
- package/dist/plain/compare/areDateTimesEqualBy.js +35 -10
- package/dist/plain/compare/areDatesEqualBy.d.ts +10 -3
- package/dist/plain/compare/areDatesEqualBy.js +41 -14
- package/dist/plain/compare/isBetweenDate.js +32 -16
- package/dist/plain/compare/isBetweenDateTime.js +34 -18
- package/dist/plain/compare/isBetweenTime.js +32 -16
- package/dist/plain/compare/isBusinessDay.d.ts +25 -11
- package/dist/plain/compare/isBusinessDay.js +36 -15
- package/dist/plain/compare/isThisUnit.d.ts +13 -4
- package/dist/plain/compare/isThisUnit.js +33 -13
- package/dist/plain/compare/isWeekend.d.ts +8 -4
- package/dist/plain/compare/isWeekend.js +7 -3
- package/dist/plain/convert/convertDateToCalendar.d.ts +34 -33
- package/dist/plain/convert/convertDateToCalendar.js +41 -40
- package/dist/plain/format/formatCalendar.d.ts +12 -6
- package/dist/plain/format/formatCalendar.js +47 -25
- package/dist/plain/format/formatDate.d.ts +21 -4
- package/dist/plain/format/formatDate.js +37 -5
- package/dist/plain/format/formatDateRange.d.ts +17 -4
- package/dist/plain/format/formatDateRange.js +29 -5
- package/dist/plain/format/formatDateTime.d.ts +22 -4
- package/dist/plain/format/formatDateTime.js +31 -5
- package/dist/plain/format/formatDateTimeRange.d.ts +20 -4
- package/dist/plain/format/formatDateTimeRange.js +29 -5
- package/dist/plain/format/formatDateTimeToParts.d.ts +32 -6
- package/dist/plain/format/formatDateTimeToParts.js +40 -14
- package/dist/plain/format/formatDateToParts.d.ts +24 -3
- package/dist/plain/format/formatDateToParts.js +36 -11
- package/dist/plain/format/formatRelativeDate.d.ts +7 -3
- package/dist/plain/format/formatRelativeDate.js +39 -24
- package/dist/plain/format/formatRelativeDateTime.d.ts +15 -6
- package/dist/plain/format/formatRelativeDateTime.js +35 -33
- package/dist/plain/format/formatRelativeTime.d.ts +8 -4
- package/dist/plain/format/formatRelativeTime.js +36 -21
- package/dist/plain/format/formatSql.d.ts +15 -10
- package/dist/plain/format/formatSql.js +20 -11
- package/dist/plain/format/formatTime.d.ts +18 -4
- package/dist/plain/format/formatTime.js +32 -5
- package/dist/plain/get/getNowUnit.d.ts +3 -0
- package/dist/plain/get/getNowUnit.js +14 -29
- package/dist/plain/index.js +1 -1
- package/dist/plain/interval/intervalAbutsDate.d.ts +12 -7
- package/dist/plain/interval/intervalAbutsDate.js +15 -19
- package/dist/plain/interval/intervalAbutsDateTime.d.ts +9 -7
- package/dist/plain/interval/intervalAbutsDateTime.js +17 -23
- package/dist/plain/interval/intervalAbutsTime.d.ts +11 -5
- package/dist/plain/interval/intervalAbutsTime.js +19 -21
- package/dist/plain/interval/intervalContainsDate.d.ts +17 -10
- package/dist/plain/interval/intervalContainsDate.js +20 -15
- package/dist/plain/interval/intervalContainsDateTime.d.ts +16 -11
- package/dist/plain/interval/intervalContainsDateTime.js +24 -20
- package/dist/plain/interval/intervalContainsTime.d.ts +20 -10
- package/dist/plain/interval/intervalContainsTime.js +28 -19
- package/dist/plain/interval/intervalCountDate.d.ts +13 -8
- package/dist/plain/interval/intervalCountDate.js +46 -14
- package/dist/plain/interval/intervalCountDateTime.d.ts +6 -4
- package/dist/plain/interval/intervalCountDateTime.js +63 -18
- package/dist/plain/interval/intervalCountTime.d.ts +3 -4
- package/dist/plain/interval/intervalCountTime.js +9 -9
- package/dist/plain/interval/intervalDifferenceDate.d.ts +13 -6
- package/dist/plain/interval/intervalDifferenceDate.js +19 -32
- package/dist/plain/interval/intervalDifferenceDateTime.d.ts +10 -4
- package/dist/plain/interval/intervalDifferenceDateTime.js +21 -27
- package/dist/plain/interval/intervalDifferenceTime.d.ts +11 -4
- package/dist/plain/interval/intervalDifferenceTime.js +22 -27
- package/dist/plain/interval/intervalDivideEquallyDate.d.ts +16 -4
- package/dist/plain/interval/intervalDivideEquallyDate.js +57 -33
- package/dist/plain/interval/intervalDivideEquallyDateTime.d.ts +16 -4
- package/dist/plain/interval/intervalDivideEquallyDateTime.js +67 -31
- package/dist/plain/interval/intervalDivideEquallyTime.d.ts +16 -4
- package/dist/plain/interval/intervalDivideEquallyTime.js +58 -31
- package/dist/plain/interval/intervalEngulfsDate.d.ts +16 -9
- package/dist/plain/interval/intervalEngulfsDate.js +19 -12
- package/dist/plain/interval/intervalEngulfsDateTime.d.ts +16 -11
- package/dist/plain/interval/intervalEngulfsDateTime.js +24 -18
- package/dist/plain/interval/intervalEngulfsTime.d.ts +18 -8
- package/dist/plain/interval/intervalEngulfsTime.js +26 -15
- package/dist/plain/interval/intervalFromDurationDate.d.ts +5 -4
- package/dist/plain/interval/intervalFromDurationDate.js +11 -8
- package/dist/plain/interval/intervalFromDurationDateTime.js +4 -0
- package/dist/plain/interval/intervalFromDurationTime.d.ts +10 -12
- package/dist/plain/interval/intervalFromDurationTime.js +28 -17
- package/dist/plain/interval/intervalIntersectionDate.d.ts +9 -4
- package/dist/plain/interval/intervalIntersectionDate.js +14 -9
- package/dist/plain/interval/intervalIntersectionDateTime.d.ts +9 -4
- package/dist/plain/interval/intervalIntersectionDateTime.js +19 -13
- package/dist/plain/interval/intervalIntersectionTime.d.ts +7 -3
- package/dist/plain/interval/intervalIntersectionTime.js +17 -12
- package/dist/plain/interval/intervalLengthDate.d.ts +9 -6
- package/dist/plain/interval/intervalLengthDate.js +40 -8
- package/dist/plain/interval/intervalLengthDateTime.js +2 -2
- package/dist/plain/interval/intervalOverlappingDaysDate.d.ts +16 -17
- package/dist/plain/interval/intervalOverlappingDaysDate.js +30 -30
- package/dist/plain/interval/intervalOverlappingDaysDateTime.d.ts +7 -12
- package/dist/plain/interval/intervalOverlappingDaysDateTime.js +24 -24
- package/dist/plain/interval/intervalSplitAtDate.d.ts +10 -5
- package/dist/plain/interval/intervalSplitAtDate.js +48 -36
- package/dist/plain/interval/intervalSplitAtDateTime.d.ts +9 -4
- package/dist/plain/interval/intervalSplitAtDateTime.js +44 -32
- package/dist/plain/interval/intervalSplitAtTime.d.ts +9 -4
- package/dist/plain/interval/intervalSplitAtTime.js +44 -32
- package/dist/plain/interval/intervalUnionDate.d.ts +14 -6
- package/dist/plain/interval/intervalUnionDate.js +19 -11
- package/dist/plain/interval/intervalUnionDateTime.d.ts +12 -5
- package/dist/plain/interval/intervalUnionDateTime.js +22 -14
- package/dist/plain/interval/intervalUnionTime.d.ts +10 -3
- package/dist/plain/interval/intervalUnionTime.js +20 -12
- package/dist/plain/interval/intervalXorAllDate.d.ts +11 -10
- package/dist/plain/interval/intervalXorAllDate.js +37 -59
- package/dist/plain/interval/intervalXorAllDateTime.d.ts +7 -5
- package/dist/plain/interval/intervalXorAllDateTime.js +28 -48
- package/dist/plain/interval/intervalXorAllTime.d.ts +8 -4
- package/dist/plain/interval/intervalXorAllTime.js +29 -47
- package/dist/plain/interval/intervalXorDate.d.ts +10 -9
- package/dist/plain/interval/intervalXorDate.js +19 -54
- package/dist/plain/interval/intervalXorDateTime.d.ts +9 -7
- package/dist/plain/interval/intervalXorDateTime.js +23 -50
- package/dist/plain/interval/intervalXorTime.d.ts +8 -7
- package/dist/plain/interval/intervalXorTime.js +22 -50
- package/dist/plain/interval/intervalsOverlapDate.d.ts +14 -7
- package/dist/plain/interval/intervalsOverlapDate.js +17 -10
- package/dist/plain/interval/intervalsOverlapDateTime.d.ts +12 -7
- package/dist/plain/interval/intervalsOverlapDateTime.js +20 -14
- package/dist/plain/interval/intervalsOverlapTime.d.ts +10 -5
- package/dist/plain/interval/intervalsOverlapTime.js +18 -12
- package/dist/plain/interval/mergeIntervalsDate.d.ts +9 -5
- package/dist/plain/interval/mergeIntervalsDate.js +37 -38
- package/dist/plain/interval/mergeIntervalsDateTime.d.ts +7 -3
- package/dist/plain/interval/mergeIntervalsDateTime.js +31 -32
- package/dist/plain/interval/mergeIntervalsTime.d.ts +7 -3
- package/dist/plain/interval/mergeIntervalsTime.js +31 -31
- package/dist/plain/interval/splitIntervalByUnitDate.d.ts +26 -6
- package/dist/plain/interval/splitIntervalByUnitDate.js +76 -43
- package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +22 -2
- package/dist/plain/interval/splitIntervalByUnitDateTime.js +65 -39
- package/dist/plain/interval/splitIntervalByUnitTime.d.ts +18 -2
- package/dist/plain/interval/splitIntervalByUnitTime.js +76 -39
- package/dist/plain/interval/validate/isValidDateInterval.d.ts +4 -2
- package/dist/plain/interval/validate/isValidDateInterval.js +4 -2
- package/dist/plain/interval/validate/isValidDateTimeInterval.d.ts +5 -0
- package/dist/plain/interval/validate/isValidDateTimeInterval.js +7 -2
- package/dist/plain/interval/validate/isValidTimeInterval.d.ts +5 -0
- package/dist/plain/interval/validate/isValidTimeInterval.js +8 -18
- package/dist/plain/locale/getLocaleEraNames.d.ts +14 -4
- package/dist/plain/locale/getLocaleEraNames.js +56 -41
- package/dist/plain/locale/getLocaleMeridiems.d.ts +7 -4
- package/dist/plain/locale/getLocaleMeridiems.js +28 -22
- package/dist/plain/locale/getLocaleMonthNames.d.ts +14 -4
- package/dist/plain/locale/getLocaleMonthNames.js +34 -19
- package/dist/plain/locale/getLocaleWeekdayNames.d.ts +14 -7
- package/dist/plain/locale/getLocaleWeekdayNames.js +40 -22
- package/dist/plain/map/mapDatesInRange.d.ts +18 -1
- package/dist/plain/map/mapDatesInRange.js +53 -17
- package/dist/plain/parse/parseDateTimeWithPattern.d.ts +3 -2
- package/dist/plain/parse/parseDateTimeWithPattern.js +30 -24
- package/dist/plain/parse/parseDateWithPattern.d.ts +3 -2
- package/dist/plain/parse/parseDateWithPattern.js +22 -16
- package/dist/plain/parse/parseMicrosecondFromDateTime.d.ts +2 -1
- package/dist/plain/parse/parseMicrosecondFromDateTime.js +2 -1
- package/dist/plain/parse/parseMicrosecondFromTime.d.ts +2 -1
- package/dist/plain/parse/parseMicrosecondFromTime.js +2 -1
- package/dist/plain/parse/parseNanosecondFromDateTime.d.ts +2 -1
- package/dist/plain/parse/parseNanosecondFromDateTime.js +2 -1
- package/dist/plain/parse/parseNanosecondFromTime.d.ts +2 -1
- package/dist/plain/parse/parseNanosecondFromTime.js +2 -1
- package/dist/plain/parse/parseSql.d.ts +15 -12
- package/dist/plain/parse/parseSql.js +16 -13
- package/dist/plain/parse/parseTimeWithPattern.d.ts +3 -2
- package/dist/plain/parse/parseTimeWithPattern.js +27 -21
- package/dist/plain/parse/parseUnitFromDate.d.ts +9 -2
- package/dist/plain/parse/parseUnitFromDate.js +39 -19
- package/dist/plain/parse/parseUnitFromDateTime.d.ts +11 -3
- package/dist/plain/parse/parseUnitFromDateTime.js +54 -28
- package/dist/plain/parse/parseUnitFromTime.d.ts +9 -3
- package/dist/plain/parse/parseUnitFromTime.js +13 -3
- package/dist/plain/parse/parseWeekFromDate.d.ts +5 -0
- package/dist/plain/parse/parseWeekFromDate.js +24 -5
- package/dist/plain/parse/parseWeekFromDateTime.d.ts +5 -0
- package/dist/plain/parse/parseWeekFromDateTime.js +26 -5
- package/dist/plain/validate/isLeapSecond.d.ts +27 -9
- package/dist/plain/validate/isLeapSecond.js +30 -9
- package/dist/plain/validate/isLeapYear.d.ts +7 -1
- package/dist/plain/validate/isLeapYear.js +10 -1
- package/dist/plain/validate/isValidCalendarDate.d.ts +37 -6
- package/dist/plain/validate/isValidCalendarDate.js +37 -6
- package/dist/plain/validate/isValidDate.d.ts +9 -1
- package/dist/plain/validate/isValidDate.js +14 -5
- package/dist/plain/validate/isValidDateRange.d.ts +11 -4
- package/dist/plain/validate/isValidDateRange.js +32 -22
- package/dist/plain/validate/isValidDateTime.d.ts +7 -1
- package/dist/plain/validate/isValidDateTime.js +12 -5
- package/dist/plain/validate/isValidDateTimeRange.d.ts +3 -2
- package/dist/plain/validate/isValidDateTimeRange.js +30 -15
- package/dist/plain/validate/isValidIsoDateLike.d.ts +6 -1
- package/dist/plain/validate/isValidIsoDateLike.js +13 -8
- package/dist/plain/validate/isValidTime.d.ts +6 -1
- package/dist/plain/validate/isValidTime.js +10 -3
- package/dist/plain/validate/isValidTimeRange.d.ts +4 -2
- package/dist/plain/validate/isValidTimeRange.js +31 -27
- package/dist/precision/calculate/index.d.ts +1 -0
- package/dist/precision/calculate/index.js +1 -0
- package/dist/precision/calculate/truncateNanoseconds.d.ts +37 -0
- package/dist/precision/calculate/truncateNanoseconds.js +41 -0
- package/dist/precision/convert/fromDotNetTicks.d.ts +30 -0
- package/dist/precision/convert/fromDotNetTicks.js +39 -0
- package/dist/precision/convert/fromExcelSerial.d.ts +38 -0
- package/dist/precision/convert/fromExcelSerial.js +81 -0
- package/dist/precision/convert/fromFileTime.d.ts +30 -0
- package/dist/precision/convert/fromFileTime.js +39 -0
- package/dist/precision/convert/fromNanoseconds.d.ts +29 -0
- package/dist/precision/convert/fromNanoseconds.js +50 -0
- package/dist/precision/convert/fromNtpTimestamp.d.ts +43 -0
- package/dist/precision/convert/fromNtpTimestamp.js +57 -0
- package/dist/precision/convert/fromPgMicroseconds.d.ts +26 -0
- package/dist/precision/convert/fromPgMicroseconds.js +33 -0
- package/dist/precision/convert/index.d.ts +12 -0
- package/dist/precision/convert/index.js +12 -0
- package/dist/precision/convert/toDotNetTicks.d.ts +29 -0
- package/dist/precision/convert/toDotNetTicks.js +40 -0
- package/dist/precision/convert/toExcelSerial.d.ts +56 -0
- package/dist/precision/convert/toExcelSerial.js +85 -0
- package/dist/precision/convert/toFileTime.d.ts +31 -0
- package/dist/precision/convert/toFileTime.js +43 -0
- package/dist/precision/convert/toNanoseconds.d.ts +37 -0
- package/dist/precision/convert/toNanoseconds.js +40 -0
- package/dist/precision/convert/toNtpTimestamp.d.ts +30 -0
- package/dist/precision/convert/toNtpTimestamp.js +38 -0
- package/dist/precision/convert/toPgMicroseconds.d.ts +29 -0
- package/dist/precision/convert/toPgMicroseconds.js +42 -0
- package/dist/precision/format/formatNanoseconds.d.ts +26 -0
- package/dist/precision/format/formatNanoseconds.js +32 -0
- package/dist/precision/format/index.d.ts +1 -0
- package/dist/precision/format/index.js +1 -0
- package/dist/precision/index.d.ts +6 -0
- package/dist/precision/index.js +7 -0
- package/dist/precision/parse/index.d.ts +1 -0
- package/dist/precision/parse/index.js +1 -0
- package/dist/precision/parse/parseNanoseconds.d.ts +27 -0
- package/dist/precision/parse/parseNanoseconds.js +32 -0
- package/dist/precision/validate/index.d.ts +3 -0
- package/dist/precision/validate/index.js +3 -0
- package/dist/precision/validate/isValidInstant.d.ts +37 -0
- package/dist/precision/validate/isValidInstant.js +40 -0
- package/dist/precision/validate/isValidNanoPattern.d.ts +27 -0
- package/dist/precision/validate/isValidNanoPattern.js +40 -0
- package/dist/precision/validate/isValidNanoseconds.d.ts +25 -0
- package/dist/precision/validate/isValidNanoseconds.js +28 -0
- package/dist/regex/calendar-date.d.ts +25 -14
- package/dist/regex/calendar-date.js +26 -15
- package/dist/regex/calendar-zoned-date-time.d.ts +22 -38
- package/dist/regex/calendar-zoned-date-time.js +23 -39
- package/dist/regex/date-time.d.ts +14 -4
- package/dist/regex/date-time.js +15 -5
- package/dist/regex/date.d.ts +45 -3
- package/dist/regex/date.js +47 -5
- package/dist/regex/http-date.d.ts +10 -6
- package/dist/regex/http-date.js +10 -6
- package/dist/regex/index.d.ts +3 -0
- package/dist/regex/index.js +4 -0
- package/dist/regex/leap-second.d.ts +41 -8
- package/dist/regex/leap-second.js +42 -9
- package/dist/regex/nanoseconds.d.ts +20 -0
- package/dist/regex/nanoseconds.js +20 -0
- package/dist/regex/rfc-2822.d.ts +15 -7
- package/dist/regex/rfc-2822.js +15 -7
- package/dist/regex/rfc-3339.d.ts +8 -1
- package/dist/regex/rfc-3339.js +9 -2
- package/dist/regex/sql-date-time.d.ts +27 -8
- package/dist/regex/sql-date-time.js +28 -9
- package/dist/regex/time-zone-like.d.ts +24 -15
- package/dist/regex/time-zone-like.js +25 -16
- package/dist/regex/time.d.ts +20 -6
- package/dist/regex/time.js +20 -6
- package/dist/regex/unix.d.ts +13 -5
- package/dist/regex/unix.js +13 -5
- package/dist/regex/utc-date-time.d.ts +19 -9
- package/dist/regex/utc-date-time.js +20 -10
- package/dist/regex/utc-offset.d.ts +24 -0
- package/dist/regex/utc-offset.js +24 -0
- package/dist/span/calculate/index.d.ts +3 -0
- package/dist/span/calculate/index.js +3 -0
- package/dist/span/calculate/spanMs.d.ts +52 -0
- package/dist/span/calculate/spanMs.js +80 -0
- package/dist/span/calculate/spanNs.d.ts +43 -0
- package/dist/span/calculate/spanNs.js +51 -0
- package/dist/span/calculate/spanWallClock.d.ts +60 -0
- package/dist/span/calculate/spanWallClock.js +80 -0
- package/dist/span/index.d.ts +3 -0
- package/dist/span/index.js +4 -0
- package/dist/span/validate/index.d.ts +1 -0
- package/dist/span/validate/index.js +1 -0
- package/dist/span/validate/isValidSpan.d.ts +37 -0
- package/dist/span/validate/isValidSpan.js +41 -0
- package/dist/transport/calculate/dwellTime.d.ts +72 -0
- package/dist/transport/calculate/dwellTime.js +126 -0
- package/dist/transport/calculate/index.d.ts +2 -0
- package/dist/transport/calculate/index.js +2 -0
- package/dist/transport/calculate/transitTime.d.ts +53 -0
- package/dist/transport/calculate/transitTime.js +118 -0
- package/dist/transport/convert/etaAtZone.d.ts +36 -0
- package/dist/transport/convert/etaAtZone.js +53 -0
- package/dist/transport/convert/index.d.ts +1 -0
- package/dist/transport/convert/index.js +1 -0
- package/dist/transport/index.d.ts +3 -0
- package/dist/transport/index.js +4 -0
- package/dist/types/business-calendar.d.ts +27 -0
- package/dist/types/business-calendar.js +0 -0
- package/dist/types/calendar-system.d.ts +9 -1
- package/dist/types/fiscal-calendar.d.ts +22 -0
- package/dist/types/fiscal-calendar.js +0 -0
- package/dist/types/free-time-options.d.ts +34 -0
- package/dist/types/free-time-options.js +0 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.js +6 -0
- package/dist/types/interval.d.ts +18 -0
- package/dist/types/interval.js +0 -0
- package/dist/types/now-unit.d.ts +1 -1
- package/dist/types/roll-convention.d.ts +32 -0
- package/dist/types/roll-convention.js +0 -0
- package/dist/types/utc-now-unit.d.ts +1 -1
- package/dist/types/zone-bucket-unit.d.ts +11 -0
- package/dist/types/zone-bucket-unit.js +0 -0
- package/dist/unix/calculate/addUnix.d.ts +10 -4
- package/dist/unix/calculate/addUnix.js +39 -26
- package/dist/unix/calculate/diffUnix.d.ts +38 -11
- package/dist/unix/calculate/diffUnix.js +84 -40
- package/dist/unix/calculate/diffUnixAsDuration.d.ts +17 -7
- package/dist/unix/calculate/diffUnixAsDuration.js +42 -23
- package/dist/unix/calculate/endOfQuarterForUnix.d.ts +15 -11
- package/dist/unix/calculate/endOfQuarterForUnix.js +20 -39
- package/dist/unix/calculate/endOfUnix.d.ts +23 -18
- package/dist/unix/calculate/endOfUnix.js +37 -15
- package/dist/unix/calculate/isBetweenUnix.d.ts +12 -6
- package/dist/unix/calculate/isBetweenUnix.js +34 -23
- package/dist/unix/calculate/maxUnix.d.ts +6 -3
- package/dist/unix/calculate/maxUnix.js +17 -8
- package/dist/unix/calculate/minUnix.d.ts +6 -3
- package/dist/unix/calculate/minUnix.js +17 -8
- package/dist/unix/calculate/roundUnix.d.ts +24 -10
- package/dist/unix/calculate/roundUnix.js +67 -42
- package/dist/unix/calculate/setUnix.d.ts +14 -5
- package/dist/unix/calculate/setUnix.js +48 -29
- package/dist/unix/calculate/sortUnix.d.ts +6 -3
- package/dist/unix/calculate/sortUnix.js +19 -11
- package/dist/unix/calculate/startOfQuarterForUnix.d.ts +17 -12
- package/dist/unix/calculate/startOfQuarterForUnix.js +22 -30
- package/dist/unix/calculate/startOfUnix.d.ts +23 -18
- package/dist/unix/calculate/startOfUnix.js +37 -15
- package/dist/unix/calculate/subtractUnix.d.ts +10 -4
- package/dist/unix/calculate/subtractUnix.js +39 -26
- package/dist/unix/compare/areUnixEqual.d.ts +9 -5
- package/dist/unix/compare/areUnixEqual.js +17 -13
- package/dist/unix/compare/areUnixEqualBy.d.ts +14 -7
- package/dist/unix/compare/areUnixEqualBy.js +14 -7
- package/dist/unix/compare/isAfterUnix.d.ts +8 -4
- package/dist/unix/compare/isAfterUnix.js +16 -12
- package/dist/unix/compare/isBeforeUnix.d.ts +7 -4
- package/dist/unix/compare/isBeforeUnix.js +15 -12
- package/dist/unix/convert/convertUnixToPlainDate.d.ts +17 -9
- package/dist/unix/convert/convertUnixToPlainDate.js +34 -21
- package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +15 -9
- package/dist/unix/convert/convertUnixToPlainDateTime.js +32 -21
- package/dist/unix/convert/convertUnixToPlainTime.d.ts +15 -9
- package/dist/unix/convert/convertUnixToPlainTime.js +32 -21
- package/dist/unix/convert/convertUnixToUtc.d.ts +15 -7
- package/dist/unix/convert/convertUnixToUtc.js +20 -15
- package/dist/unix/convert/convertUnixToZoned.d.ts +17 -10
- package/dist/unix/convert/convertUnixToZoned.js +31 -20
- package/dist/unix/format/formatCalendarUnix.d.ts +22 -19
- package/dist/unix/format/formatCalendarUnix.js +35 -81
- package/dist/unix/format/formatRelativeUnix.d.ts +25 -8
- package/dist/unix/format/formatRelativeUnix.js +46 -93
- package/dist/unix/format/formatUnix.d.ts +26 -4
- package/dist/unix/format/formatUnix.js +48 -34
- package/dist/unix/get/getUnixNow.d.ts +13 -7
- package/dist/unix/get/getUnixNow.js +27 -17
- package/dist/unix/get/getUnixNowUnit.d.ts +5 -2
- package/dist/unix/get/getUnixNowUnit.js +9 -35
- package/dist/unix/index.d.ts +1 -0
- package/dist/unix/index.js +2 -0
- package/dist/unix/interval/intervalAbutsUnix.d.ts +17 -12
- package/dist/unix/interval/intervalAbutsUnix.js +23 -41
- package/dist/unix/interval/intervalContainsUnix.d.ts +17 -7
- package/dist/unix/interval/intervalContainsUnix.js +25 -37
- package/dist/unix/interval/intervalCountUnix.d.ts +30 -13
- package/dist/unix/interval/intervalCountUnix.js +49 -23
- package/dist/unix/interval/intervalDifferenceUnix.d.ts +19 -10
- package/dist/unix/interval/intervalDifferenceUnix.js +25 -43
- package/dist/unix/interval/intervalDivideEquallyUnix.d.ts +24 -10
- package/dist/unix/interval/intervalDivideEquallyUnix.js +57 -36
- package/dist/unix/interval/intervalEngulfsUnix.d.ts +13 -7
- package/dist/unix/interval/intervalEngulfsUnix.js +18 -30
- package/dist/unix/interval/intervalFromDurationUnix.d.ts +10 -6
- package/dist/unix/interval/intervalFromDurationUnix.js +51 -39
- package/dist/unix/interval/intervalIntersectionUnix.d.ts +18 -11
- package/dist/unix/interval/intervalIntersectionUnix.js +25 -46
- package/dist/unix/interval/intervalLengthUnix.d.ts +21 -9
- package/dist/unix/interval/intervalLengthUnix.js +41 -18
- package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +26 -12
- package/dist/unix/interval/intervalOverlappingDaysUnix.js +67 -63
- package/dist/unix/interval/intervalSplitAtUnix.d.ts +11 -6
- package/dist/unix/interval/intervalSplitAtUnix.js +41 -34
- package/dist/unix/interval/intervalUnionUnix.d.ts +15 -9
- package/dist/unix/interval/intervalUnionUnix.js +20 -42
- package/dist/unix/interval/intervalXorAllUnix.d.ts +8 -6
- package/dist/unix/interval/intervalXorAllUnix.js +21 -56
- package/dist/unix/interval/intervalXorUnix.d.ts +22 -11
- package/dist/unix/interval/intervalXorUnix.js +28 -56
- package/dist/unix/interval/intervalsOverlapUnix.d.ts +16 -10
- package/dist/unix/interval/intervalsOverlapUnix.js +21 -37
- package/dist/unix/interval/mergeIntervalsUnix.d.ts +10 -4
- package/dist/unix/interval/mergeIntervalsUnix.js +25 -36
- package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +38 -8
- package/dist/unix/interval/splitIntervalByUnitUnix.js +72 -56
- package/dist/unix/interval/validate/isValidUnixInterval.d.ts +12 -6
- package/dist/unix/interval/validate/isValidUnixInterval.js +17 -16
- package/dist/unix/parse/index.d.ts +2 -0
- package/dist/unix/parse/index.js +2 -0
- package/dist/unix/parse/parseDateFromUnix.d.ts +10 -8
- package/dist/unix/parse/parseDateFromUnix.js +17 -29
- package/dist/unix/parse/parseDayFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseDayFromUnix.js +18 -5
- package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +8 -5
- package/dist/unix/parse/parseDayOfWeekFromUnix.js +15 -28
- package/dist/unix/parse/parseHourFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseHourFromUnix.js +18 -5
- package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMicrosecondFromUnix.js +16 -3
- package/dist/unix/parse/parseMillisecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMillisecondFromUnix.js +16 -3
- package/dist/unix/parse/parseMinuteFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseMinuteFromUnix.js +18 -5
- package/dist/unix/parse/parseMonthFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseMonthFromUnix.js +18 -5
- package/dist/unix/parse/parseNanosecondFromUnix.d.ts +8 -5
- package/dist/unix/parse/parseNanosecondFromUnix.js +20 -6
- package/dist/unix/parse/parseSecondFromUnix.d.ts +5 -3
- package/dist/unix/parse/parseSecondFromUnix.js +17 -4
- package/dist/unix/parse/parseTimeFromUnix.d.ts +10 -8
- package/dist/unix/parse/parseTimeFromUnix.js +17 -29
- package/dist/unix/parse/parseUnitFromUnix.d.ts +18 -11
- package/dist/unix/parse/parseUnitFromUnix.js +57 -55
- package/dist/unix/parse/parseWeekFromUnix.d.ts +15 -7
- package/dist/unix/parse/parseWeekFromUnix.js +32 -30
- package/dist/unix/parse/parseYearFromUnix.d.ts +5 -3
- package/dist/unix/parse/parseYearFromUnix.js +17 -4
- package/dist/unix/validate/isValidUnixMilliseconds.d.ts +8 -5
- package/dist/unix/validate/isValidUnixMilliseconds.js +10 -9
- package/dist/unix/validate/isValidUnixRange.d.ts +13 -7
- package/dist/unix/validate/isValidUnixRange.js +29 -19
- package/dist/unix/validate/isValidUnixSeconds.d.ts +8 -5
- package/dist/unix/validate/isValidUnixSeconds.js +10 -9
- package/dist/unix/validate/isValidUnixUnit.d.ts +9 -7
- package/dist/unix/validate/isValidUnixUnit.js +6 -8
- package/dist/utc/calculate/addUtc.js +26 -12
- package/dist/utc/calculate/diffUtc.d.ts +22 -7
- package/dist/utc/calculate/diffUtc.js +75 -31
- package/dist/utc/calculate/diffUtcAsDuration.d.ts +2 -2
- package/dist/utc/calculate/diffUtcAsDuration.js +10 -3
- package/dist/utc/calculate/endOfQuarterForUtc.d.ts +1 -1
- package/dist/utc/calculate/endOfQuarterForUtc.js +1 -1
- package/dist/utc/calculate/endOfUtc.d.ts +11 -4
- package/dist/utc/calculate/endOfUtc.js +22 -5
- package/dist/utc/calculate/isBetweenUtc.js +40 -24
- package/dist/utc/calculate/maxUtc.js +19 -12
- package/dist/utc/calculate/minUtc.js +19 -12
- package/dist/utc/calculate/roundUtc.d.ts +16 -2
- package/dist/utc/calculate/roundUtc.js +42 -31
- package/dist/utc/calculate/setUtc.d.ts +4 -8
- package/dist/utc/calculate/setUtc.js +25 -18
- package/dist/utc/calculate/sortUtc.js +17 -10
- package/dist/utc/calculate/startOfQuarterForUtc.d.ts +2 -0
- package/dist/utc/calculate/startOfQuarterForUtc.js +12 -1
- package/dist/utc/calculate/startOfUtc.d.ts +6 -4
- package/dist/utc/calculate/startOfUtc.js +17 -5
- package/dist/utc/calculate/subtractUtc.js +26 -12
- package/dist/utc/chop/chopUtc.d.ts +5 -2
- package/dist/utc/chop/chopUtc.js +8 -4
- package/dist/utc/compare/areUtcEqualBy.d.ts +10 -5
- package/dist/utc/compare/areUtcEqualBy.js +34 -11
- package/dist/utc/convert/convertUtcToPlainDate.js +22 -10
- package/dist/utc/convert/convertUtcToPlainDateTime.js +28 -16
- package/dist/utc/convert/convertUtcToPlainTime.js +22 -10
- package/dist/utc/convert/convertUtcToUnix.d.ts +12 -5
- package/dist/utc/convert/convertUtcToUnix.js +22 -13
- package/dist/utc/format/formatCalendarUtc.d.ts +11 -6
- package/dist/utc/format/formatCalendarUtc.js +32 -41
- package/dist/utc/format/formatHttp.d.ts +9 -3
- package/dist/utc/format/formatHttp.js +14 -12
- package/dist/utc/format/formatRelativeUtc.d.ts +18 -6
- package/dist/utc/format/formatRelativeUtc.js +43 -51
- package/dist/utc/format/formatUtc.d.ts +20 -3
- package/dist/utc/format/formatUtc.js +41 -12
- package/dist/utc/get/getUtcNowUnit.d.ts +3 -0
- package/dist/utc/get/getUtcNowUnit.js +11 -33
- package/dist/utc/index.d.ts +1 -0
- package/dist/utc/index.js +2 -0
- package/dist/utc/interval/intervalAbutsUtc.d.ts +10 -7
- package/dist/utc/interval/intervalAbutsUtc.js +18 -30
- package/dist/utc/interval/intervalContainsUtc.d.ts +19 -11
- package/dist/utc/interval/intervalContainsUtc.js +33 -34
- package/dist/utc/interval/intervalCountUtc.d.ts +3 -4
- package/dist/utc/interval/intervalCountUtc.js +12 -18
- package/dist/utc/interval/intervalDifferenceUtc.d.ts +13 -5
- package/dist/utc/interval/intervalDifferenceUtc.js +25 -51
- package/dist/utc/interval/intervalDivideEquallyUtc.d.ts +16 -3
- package/dist/utc/interval/intervalDivideEquallyUtc.js +54 -34
- package/dist/utc/interval/intervalEngulfsUtc.d.ts +17 -12
- package/dist/utc/interval/intervalEngulfsUtc.js +25 -26
- package/dist/utc/interval/intervalFromDurationUtc.js +5 -0
- package/dist/utc/interval/intervalIntersectionUtc.d.ts +12 -6
- package/dist/utc/interval/intervalIntersectionUtc.js +24 -41
- package/dist/utc/interval/intervalLengthUtc.js +5 -7
- package/dist/utc/interval/intervalOverlappingDaysUtc.d.ts +7 -13
- package/dist/utc/interval/intervalOverlappingDaysUtc.js +25 -36
- package/dist/utc/interval/intervalSplitAtUtc.d.ts +7 -2
- package/dist/utc/interval/intervalSplitAtUtc.js +39 -33
- package/dist/utc/interval/intervalUnionUtc.d.ts +15 -7
- package/dist/utc/interval/intervalUnionUtc.js +31 -42
- package/dist/utc/interval/intervalXorAllUtc.d.ts +7 -4
- package/dist/utc/interval/intervalXorAllUtc.js +30 -52
- package/dist/utc/interval/intervalXorUtc.d.ts +8 -6
- package/dist/utc/interval/intervalXorUtc.js +22 -56
- package/dist/utc/interval/intervalsOverlapUtc.d.ts +15 -9
- package/dist/utc/interval/intervalsOverlapUtc.js +23 -39
- package/dist/utc/interval/mergeIntervalsUtc.d.ts +9 -2
- package/dist/utc/interval/mergeIntervalsUtc.js +23 -36
- package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +23 -2
- package/dist/utc/interval/splitIntervalByUnitUtc.js +65 -44
- package/dist/utc/interval/validate/isValidUtcInterval.d.ts +5 -0
- package/dist/utc/interval/validate/isValidUtcInterval.js +7 -6
- package/dist/utc/parse/parseDateFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseDateFromUtc.js +14 -9
- package/dist/utc/parse/parseDayFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseDayFromUtc.js +14 -8
- package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseDayOfWeekFromUtc.js +24 -6
- package/dist/utc/parse/parseHourFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseHourFromUtc.js +14 -8
- package/dist/utc/parse/parseHttp.d.ts +39 -14
- package/dist/utc/parse/parseHttp.js +69 -28
- package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +9 -2
- package/dist/utc/parse/parseMicrosecondFromUtc.js +18 -9
- package/dist/utc/parse/parseMillisecondFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseMillisecondFromUtc.js +16 -8
- package/dist/utc/parse/parseMinuteFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseMinuteFromUtc.js +14 -8
- package/dist/utc/parse/parseMonthFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseMonthFromUtc.js +14 -8
- package/dist/utc/parse/parseNanosecondFromUtc.d.ts +9 -2
- package/dist/utc/parse/parseNanosecondFromUtc.js +18 -9
- package/dist/utc/parse/parseSecondFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseSecondFromUtc.js +14 -8
- package/dist/utc/parse/parseTimeFromUtc.js +21 -10
- package/dist/utc/parse/parseUnitFromUtc.d.ts +18 -7
- package/dist/utc/parse/parseUnitFromUtc.js +58 -31
- package/dist/utc/parse/parseWeekFromUtc.d.ts +16 -3
- package/dist/utc/parse/parseWeekFromUtc.js +38 -10
- package/dist/utc/parse/parseYearFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseYearFromUtc.js +14 -8
- package/dist/utc/validate/isValidUtc.d.ts +8 -1
- package/dist/utc/validate/isValidUtc.js +12 -3
- package/dist/utc/validate/isValidUtcRange.d.ts +3 -2
- package/dist/utc/validate/isValidUtcRange.js +30 -19
- package/dist/zoned/calculate/addZoned.d.ts +40 -27
- package/dist/zoned/calculate/addZoned.js +71 -56
- package/dist/zoned/calculate/addZonedBusinessDays.d.ts +2 -0
- package/dist/zoned/calculate/addZonedBusinessDays.js +5 -2
- package/dist/zoned/calculate/clampZoned.js +4 -3
- package/dist/zoned/calculate/closestZonedTo.d.ts +6 -6
- package/dist/zoned/calculate/closestZonedTo.js +35 -26
- package/dist/zoned/calculate/cycleZoned.d.ts +10 -7
- package/dist/zoned/calculate/cycleZoned.js +19 -11
- package/dist/zoned/calculate/diffZoned.d.ts +39 -17
- package/dist/zoned/calculate/diffZoned.js +90 -45
- package/dist/zoned/calculate/diffZonedAsDuration.d.ts +19 -9
- package/dist/zoned/calculate/diffZonedAsDuration.js +32 -15
- package/dist/zoned/calculate/endOfQuarterForZoned.d.ts +11 -11
- package/dist/zoned/calculate/endOfQuarterForZoned.js +32 -31
- package/dist/zoned/calculate/endOfZoned.d.ts +21 -14
- package/dist/zoned/calculate/endOfZoned.js +25 -111
- package/dist/zoned/calculate/getHoursInZonedDay.d.ts +8 -1
- package/dist/zoned/calculate/getHoursInZonedDay.js +10 -14
- package/dist/zoned/calculate/getLocaleZonedDayOfWeek.d.ts +8 -4
- package/dist/zoned/calculate/getLocaleZonedDayOfWeek.js +9 -6
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +20 -26
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +40 -44
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +16 -24
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +36 -42
- package/dist/zoned/calculate/getQuarterForZoned.js +2 -2
- package/dist/zoned/calculate/maxZoned.js +20 -12
- package/dist/zoned/calculate/minZoned.d.ts +1 -1
- package/dist/zoned/calculate/minZoned.js +21 -13
- package/dist/zoned/calculate/roundZoned.d.ts +18 -4
- package/dist/zoned/calculate/roundZoned.js +58 -33
- package/dist/zoned/calculate/setZoned.d.ts +9 -3
- package/dist/zoned/calculate/setZoned.js +39 -18
- package/dist/zoned/calculate/sortZoned.js +18 -10
- package/dist/zoned/calculate/startOfQuarterForZoned.d.ts +4 -7
- package/dist/zoned/calculate/startOfQuarterForZoned.js +23 -17
- package/dist/zoned/calculate/startOfZoned.d.ts +17 -13
- package/dist/zoned/calculate/startOfZoned.js +21 -103
- package/dist/zoned/calculate/subtractZoned.d.ts +36 -24
- package/dist/zoned/calculate/subtractZoned.js +66 -50
- package/dist/zoned/calculate/subtractZonedBusinessDays.d.ts +2 -0
- package/dist/zoned/calculate/subtractZonedBusinessDays.js +5 -2
- package/dist/zoned/chop/chopZonedDate.js +2 -2
- package/dist/zoned/chop/chopZonedDateTime.js +2 -2
- package/dist/zoned/chop/chopZonedMilliseconds.js +2 -2
- package/dist/zoned/chop/chopZonedSeconds.js +2 -2
- package/dist/zoned/chop/chopZonedTime.js +2 -2
- package/dist/zoned/chop/chopZonedTimezone.js +2 -2
- package/dist/zoned/compare/areZonedEqual.js +3 -2
- package/dist/zoned/compare/areZonedEqualBy.d.ts +15 -2
- package/dist/zoned/compare/areZonedEqualBy.js +45 -12
- package/dist/zoned/compare/isAfterZoned.js +3 -2
- package/dist/zoned/compare/isBeforeZoned.d.ts +1 -1
- package/dist/zoned/compare/isBeforeZoned.js +4 -3
- package/dist/zoned/compare/isBetweenZoned.js +46 -29
- package/dist/zoned/compare/isInDaylightSaving.js +4 -4
- package/dist/zoned/compare/isZonedBusinessDay.d.ts +7 -4
- package/dist/zoned/compare/isZonedBusinessDay.js +9 -6
- package/dist/zoned/compare/isZonedFuture.js +2 -1
- package/dist/zoned/compare/isZonedPast.js +2 -1
- package/dist/zoned/compare/isZonedRelativeDay.js +2 -1
- package/dist/zoned/compare/isZonedThisUnit.d.ts +12 -4
- package/dist/zoned/compare/isZonedThisUnit.js +37 -16
- package/dist/zoned/compare/isZonedWeekend.d.ts +8 -4
- package/dist/zoned/compare/isZonedWeekend.js +9 -6
- package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +10 -5
- package/dist/zoned/convert/convertPlainDateTimeToZoned.js +34 -16
- package/dist/zoned/convert/convertZonedToCalendar.d.ts +26 -38
- package/dist/zoned/convert/convertZonedToCalendar.js +33 -48
- package/dist/zoned/convert/convertZonedToPlainDateTime.d.ts +6 -0
- package/dist/zoned/convert/convertZonedToPlainDateTime.js +8 -2
- package/dist/zoned/convert/convertZonedToUnix.d.ts +12 -6
- package/dist/zoned/convert/convertZonedToUnix.js +23 -16
- package/dist/zoned/convert/convertZonedToUtc.js +2 -2
- package/dist/zoned/convert/convertZonedToZoned.js +2 -2
- package/dist/zoned/format/formatCalendarZoned.d.ts +7 -3
- package/dist/zoned/format/formatCalendarZoned.js +37 -39
- package/dist/zoned/format/formatRelativeZoned.d.ts +15 -6
- package/dist/zoned/format/formatRelativeZoned.js +54 -54
- package/dist/zoned/format/formatRfc2822.d.ts +14 -1
- package/dist/zoned/format/formatRfc2822.js +27 -13
- package/dist/zoned/format/formatRfc3339.d.ts +14 -1
- package/dist/zoned/format/formatRfc3339.js +29 -3
- package/dist/zoned/format/formatTimeZoneName.d.ts +3 -2
- package/dist/zoned/format/formatTimeZoneName.js +28 -18
- package/dist/zoned/format/formatZonedDateTime.d.ts +25 -5
- package/dist/zoned/format/formatZonedDateTime.js +40 -9
- package/dist/zoned/format/formatZonedRange.d.ts +24 -6
- package/dist/zoned/format/formatZonedRange.js +61 -28
- package/dist/zoned/format/formatZonedToParts.d.ts +29 -6
- package/dist/zoned/format/formatZonedToParts.js +42 -13
- package/dist/zoned/get/getDstTransitions.d.ts +6 -1
- package/dist/zoned/get/getDstTransitions.js +17 -15
- package/dist/zoned/get/getTimeZoneOffset.d.ts +11 -1
- package/dist/zoned/get/getTimeZoneOffset.js +19 -2
- package/dist/zoned/get/getZonedNow.js +20 -9
- package/dist/zoned/get/getZonedNowUnit.d.ts +8 -4
- package/dist/zoned/get/getZonedNowUnit.js +15 -31
- package/dist/zoned/index.js +1 -1
- package/dist/zoned/interval/intervalAbutsZoned.d.ts +18 -11
- package/dist/zoned/interval/intervalAbutsZoned.js +24 -25
- package/dist/zoned/interval/intervalContainsZoned.d.ts +16 -7
- package/dist/zoned/interval/intervalContainsZoned.js +22 -14
- package/dist/zoned/interval/intervalCountZoned.d.ts +19 -11
- package/dist/zoned/interval/intervalCountZoned.js +32 -27
- package/dist/zoned/interval/intervalDifferenceZoned.d.ts +13 -7
- package/dist/zoned/interval/intervalDifferenceZoned.js +24 -36
- package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +18 -9
- package/dist/zoned/interval/intervalDivideEquallyZoned.js +67 -46
- package/dist/zoned/interval/intervalEngulfsZoned.d.ts +10 -5
- package/dist/zoned/interval/intervalEngulfsZoned.js +16 -10
- package/dist/zoned/interval/intervalFromDurationZoned.d.ts +25 -11
- package/dist/zoned/interval/intervalFromDurationZoned.js +61 -44
- package/dist/zoned/interval/intervalIntersectionZoned.d.ts +12 -6
- package/dist/zoned/interval/intervalIntersectionZoned.js +24 -18
- package/dist/zoned/interval/intervalLengthZoned.d.ts +15 -6
- package/dist/zoned/interval/intervalLengthZoned.js +23 -9
- package/dist/zoned/interval/intervalOverlappingDaysZoned.d.ts +28 -17
- package/dist/zoned/interval/intervalOverlappingDaysZoned.js +46 -34
- package/dist/zoned/interval/intervalSplitAtZoned.d.ts +6 -3
- package/dist/zoned/interval/intervalSplitAtZoned.js +52 -42
- package/dist/zoned/interval/intervalUnionZoned.d.ts +14 -8
- package/dist/zoned/interval/intervalUnionZoned.js +25 -20
- package/dist/zoned/interval/intervalXorAllZoned.d.ts +9 -7
- package/dist/zoned/interval/intervalXorAllZoned.js +42 -73
- package/dist/zoned/interval/intervalXorZoned.d.ts +20 -12
- package/dist/zoned/interval/intervalXorZoned.js +34 -64
- package/dist/zoned/interval/intervalsOverlapZoned.d.ts +15 -7
- package/dist/zoned/interval/intervalsOverlapZoned.js +21 -12
- package/dist/zoned/interval/mergeIntervalsZoned.d.ts +10 -3
- package/dist/zoned/interval/mergeIntervalsZoned.js +44 -41
- package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +28 -5
- package/dist/zoned/interval/splitIntervalByUnitZoned.js +72 -39
- package/dist/zoned/interval/validate/isValidCalendarZonedInterval.d.ts +13 -10
- package/dist/zoned/interval/validate/isValidCalendarZonedInterval.js +13 -10
- package/dist/zoned/interval/validate/isValidZonedInterval.d.ts +7 -5
- package/dist/zoned/interval/validate/isValidZonedInterval.js +12 -16
- package/dist/zoned/map/mapZonedDatesInRange.d.ts +17 -1
- package/dist/zoned/map/mapZonedDatesInRange.js +62 -26
- package/dist/zoned/map/mapZonedHoursInDay.d.ts +10 -13
- package/dist/zoned/map/mapZonedHoursInDay.js +13 -21
- package/dist/zoned/parse/getZonedOffset.js +2 -2
- package/dist/zoned/parse/getZonedOffsetAs.d.ts +4 -2
- package/dist/zoned/parse/getZonedOffsetAs.js +10 -5
- package/dist/zoned/parse/parseDateFromZoned.js +2 -2
- package/dist/zoned/parse/parseDateTimeFromZoned.js +2 -2
- package/dist/zoned/parse/parseDayFromZoned.js +2 -2
- package/dist/zoned/parse/parseDayOfWeekFromZoned.js +2 -2
- package/dist/zoned/parse/parseHourFromZoned.js +2 -2
- package/dist/zoned/parse/parseMicrosecondFromZoned.d.ts +2 -1
- package/dist/zoned/parse/parseMicrosecondFromZoned.js +4 -3
- package/dist/zoned/parse/parseMillisecondFromZoned.js +2 -2
- package/dist/zoned/parse/parseMinuteFromZoned.js +2 -2
- package/dist/zoned/parse/parseMonthFromZoned.js +2 -2
- package/dist/zoned/parse/parseNanosecondFromZoned.d.ts +2 -1
- package/dist/zoned/parse/parseNanosecondFromZoned.js +4 -3
- package/dist/zoned/parse/parseRfc2822.d.ts +32 -12
- package/dist/zoned/parse/parseRfc2822.js +47 -45
- package/dist/zoned/parse/parseRfc3339.d.ts +6 -0
- package/dist/zoned/parse/parseRfc3339.js +6 -0
- package/dist/zoned/parse/parseSecondFromZoned.js +2 -2
- package/dist/zoned/parse/parseTimeFromZoned.js +2 -2
- package/dist/zoned/parse/parseTimeZoneFromZoned.js +2 -2
- package/dist/zoned/parse/parseUnitFromZoned.d.ts +14 -5
- package/dist/zoned/parse/parseUnitFromZoned.js +59 -33
- package/dist/zoned/parse/parseWeekFromZoned.d.ts +13 -3
- package/dist/zoned/parse/parseWeekFromZoned.js +34 -10
- package/dist/zoned/parse/parseYearFromZoned.js +2 -2
- package/dist/zoned/validate/hasDaylightSaving.js +3 -3
- package/dist/zoned/validate/isValidCalendarZonedDateTime.d.ts +31 -16
- package/dist/zoned/validate/isValidCalendarZonedDateTime.js +31 -16
- package/dist/zoned/validate/isValidTimeZone.d.ts +15 -2
- package/dist/zoned/validate/isValidTimeZone.js +17 -4
- package/dist/zoned/validate/isValidZonedDateTime.d.ts +14 -7
- package/dist/zoned/validate/isValidZonedDateTime.js +20 -12
- package/dist/zoned/validate/isValidZonedRange.d.ts +9 -2
- package/dist/zoned/validate/isValidZonedRange.js +44 -16
- package/package.json +510 -34
- package/skills/gmt-arithmetic/SKILL.md +197 -16
- package/skills/gmt-basics/SKILL.md +61 -14
- package/skills/gmt-integration/SKILL.md +54 -8
- package/skills/gmt-timezone/SKILL.md +208 -24
- package/dist/internal/advanceBusinessDays.d.ts +0 -2
- package/dist/internal/advanceBusinessDays.js +0 -15
- package/dist/internal/ethiopicFamilyCalendar.d.ts +0 -47
- package/dist/internal/ethiopicFamilyCalendar.js +0 -136
- package/dist/internal/getLocaleMinimalDaysInFirstWeek.d.ts +0 -20
- package/dist/internal/getLocaleMinimalDaysInFirstWeek.js +0 -31
- package/dist/internal/resolveUnixTimeZone.d.ts +0 -20
- package/dist/internal/resolveUnixTimeZone.js +0 -30
- package/dist/unix/calculate/startOrEndOfUnix.d.ts +0 -27
- package/dist/unix/calculate/startOrEndOfUnix.js +0 -140
- package/dist/unix/interval/resolveUnixIntervalPair.d.ts +0 -7
- package/dist/unix/interval/resolveUnixIntervalPair.js +0 -36
|
@@ -3,16 +3,19 @@ import type { Temporal } from "@js-temporal/polyfill";
|
|
|
3
3
|
* Return the start of the specified date `unit` for a `Temporal.PlainDate`.
|
|
4
4
|
*
|
|
5
5
|
* - Always uses Monday as the week start (consistent with roundDate semantics).
|
|
6
|
+
* - Works in `source`'s own calendar (a Hebrew month starts on its day 1).
|
|
6
7
|
* - Does NOT validate the unit — caller ensures it is a DateUnit.
|
|
7
8
|
*
|
|
8
9
|
* @param source Temporal.PlainDate to round
|
|
9
10
|
* @param unit DateUnit to specify the unit for the start
|
|
10
|
-
* @returns Temporal.PlainDate at the start of the specified unit
|
|
11
|
+
* @returns Temporal.PlainDate at the start of the specified unit; throws RangeError when it lies
|
|
12
|
+
* before the representable range
|
|
11
13
|
*/
|
|
12
14
|
export declare function getStartOfDateUnit(source: Temporal.PlainDate, unit: string): Temporal.PlainDate;
|
|
13
15
|
/**
|
|
14
16
|
* Add `amount` units of the specified date `unit` to a `Temporal.PlainDate`.
|
|
15
17
|
*
|
|
18
|
+
* - Calendar units resolve in `source`'s calendar through the Temporal compat layer.
|
|
16
19
|
* - Does NOT validate the unit — caller ensures it is a DateUnit.
|
|
17
20
|
*
|
|
18
21
|
* @param date Temporal.PlainDate to advance
|
|
@@ -21,3 +24,38 @@ export declare function getStartOfDateUnit(source: Temporal.PlainDate, unit: str
|
|
|
21
24
|
* @returns new Temporal.PlainDate advanced by the specified amount
|
|
22
25
|
*/
|
|
23
26
|
export declare function addDateUnit(date: Temporal.PlainDate, unit: string, amount: number): Temporal.PlainDate;
|
|
27
|
+
/**
|
|
28
|
+
* Return the start of the date `unit` after the one containing `source`.
|
|
29
|
+
*
|
|
30
|
+
* - Steps one unit first and truncates after, so `source`'s own start is never materialised: the
|
|
31
|
+
* month holding the first representable date (`-271821-04-19`) began before the range, while the
|
|
32
|
+
* next month's start did not. Both orders agree everywhere else, because a one-unit step clamps
|
|
33
|
+
* within the next unit (Jan 31 + 1 month = Feb 29, whose month starts on Feb 1).
|
|
34
|
+
* - Always uses Monday as the week start, like `getStartOfDateUnit`.
|
|
35
|
+
* - Does NOT validate the unit — caller ensures it is a DateUnit.
|
|
36
|
+
*
|
|
37
|
+
* @param source Temporal.PlainDate inside the current unit
|
|
38
|
+
* @param unit DateUnit to step by
|
|
39
|
+
* @returns Temporal.PlainDate at the start of the next unit
|
|
40
|
+
*
|
|
41
|
+
* @example getStartOfNextDateUnit(Temporal.PlainDate.from("2024-01-31"), "month") // 2024-02-01
|
|
42
|
+
* @example getStartOfNextDateUnit(Temporal.PlainDate.from("-271821-04-19"), "month") // -271821-05-01
|
|
43
|
+
*/
|
|
44
|
+
export declare function getStartOfNextDateUnit(source: Temporal.PlainDate, unit: string): Temporal.PlainDate;
|
|
45
|
+
/**
|
|
46
|
+
* Return the whole days from the start of the date `unit` containing `source` to `source`.
|
|
47
|
+
*
|
|
48
|
+
* - Read from the calendar fields, so the unit's start is never materialised (it may lie before
|
|
49
|
+
* the representable range).
|
|
50
|
+
* - Always uses Monday as the week start, like `getStartOfDateUnit`. A day unit is 0 days in.
|
|
51
|
+
* - Accepts a `Temporal.PlainDate` or a `Temporal.PlainDateTime` (only its date matters).
|
|
52
|
+
* - Does NOT validate the unit — caller ensures it is a DateUnit.
|
|
53
|
+
*
|
|
54
|
+
* @param source value with calendar date fields, read in its own calendar
|
|
55
|
+
* @param unit DateUnit to measure within
|
|
56
|
+
* @returns number of whole days since the unit started
|
|
57
|
+
*
|
|
58
|
+
* @example getDaysIntoDateUnit(Temporal.PlainDate.from("2024-03-13"), "month") // 12
|
|
59
|
+
* @example getDaysIntoDateUnit(Temporal.PlainDate.from("2024-03-13"), "week") // 2 (a Wednesday)
|
|
60
|
+
*/
|
|
61
|
+
export declare function getDaysIntoDateUnit(source: Pick<Temporal.PlainDate, "day" | "dayOfWeek" | "dayOfYear">, unit: string): number;
|
|
@@ -1,23 +1,36 @@
|
|
|
1
|
+
import { calendarDateAdd, calendarDateFromFields, calendarFieldsOf, } from "./temporalCompat/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Day 1 of `source`'s month, or of month 1 of its year when `month` is 1, in `source`'s calendar.
|
|
4
|
+
* Non-ISO calendars build it from corrected reads through the Temporal compat layer (CORE-6: the
|
|
5
|
+
* polyfill's `with` is wrong or throws where its fields → ISO conversion is).
|
|
6
|
+
*/
|
|
7
|
+
function startOfCalendarPeriod(source, month) {
|
|
8
|
+
if (source.calendarId === "iso8601") {
|
|
9
|
+
return source.with(month === undefined ? { day: 1 } : { month, day: 1 });
|
|
10
|
+
}
|
|
11
|
+
const fields = calendarFieldsOf(source, source.calendarId);
|
|
12
|
+
return calendarDateFromFields(source.calendarId, { year: fields.year, month: month ?? fields.month, day: 1 }, "reject");
|
|
13
|
+
}
|
|
1
14
|
/**
|
|
2
15
|
* Return the start of the specified date `unit` for a `Temporal.PlainDate`.
|
|
3
16
|
*
|
|
4
17
|
* - Always uses Monday as the week start (consistent with roundDate semantics).
|
|
18
|
+
* - Works in `source`'s own calendar (a Hebrew month starts on its day 1).
|
|
5
19
|
* - Does NOT validate the unit — caller ensures it is a DateUnit.
|
|
6
20
|
*
|
|
7
21
|
* @param source Temporal.PlainDate to round
|
|
8
22
|
* @param unit DateUnit to specify the unit for the start
|
|
9
|
-
* @returns Temporal.PlainDate at the start of the specified unit
|
|
23
|
+
* @returns Temporal.PlainDate at the start of the specified unit; throws RangeError when it lies
|
|
24
|
+
* before the representable range
|
|
10
25
|
*/
|
|
11
26
|
export function getStartOfDateUnit(source, unit) {
|
|
12
27
|
switch (unit) {
|
|
13
28
|
case "year":
|
|
14
|
-
return source
|
|
29
|
+
return startOfCalendarPeriod(source, 1);
|
|
15
30
|
case "month":
|
|
16
|
-
return source
|
|
17
|
-
case "week":
|
|
18
|
-
|
|
19
|
-
return source.subtract({ days: daysToSubtract });
|
|
20
|
-
}
|
|
31
|
+
return startOfCalendarPeriod(source);
|
|
32
|
+
case "week":
|
|
33
|
+
return calendarDateAdd(source, { days: 1 - source.dayOfWeek }, "constrain");
|
|
21
34
|
default:
|
|
22
35
|
return source;
|
|
23
36
|
}
|
|
@@ -25,6 +38,7 @@ export function getStartOfDateUnit(source, unit) {
|
|
|
25
38
|
/**
|
|
26
39
|
* Add `amount` units of the specified date `unit` to a `Temporal.PlainDate`.
|
|
27
40
|
*
|
|
41
|
+
* - Calendar units resolve in `source`'s calendar through the Temporal compat layer.
|
|
28
42
|
* - Does NOT validate the unit — caller ensures it is a DateUnit.
|
|
29
43
|
*
|
|
30
44
|
* @param date Temporal.PlainDate to advance
|
|
@@ -35,12 +49,60 @@ export function getStartOfDateUnit(source, unit) {
|
|
|
35
49
|
export function addDateUnit(date, unit, amount) {
|
|
36
50
|
switch (unit) {
|
|
37
51
|
case "year":
|
|
38
|
-
return date
|
|
52
|
+
return calendarDateAdd(date, { years: amount }, "constrain");
|
|
53
|
+
case "month":
|
|
54
|
+
return calendarDateAdd(date, { months: amount }, "constrain");
|
|
55
|
+
case "week":
|
|
56
|
+
return calendarDateAdd(date, { days: amount * 7 }, "constrain");
|
|
57
|
+
default:
|
|
58
|
+
return calendarDateAdd(date, { days: amount }, "constrain");
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Return the start of the date `unit` after the one containing `source`.
|
|
63
|
+
*
|
|
64
|
+
* - Steps one unit first and truncates after, so `source`'s own start is never materialised: the
|
|
65
|
+
* month holding the first representable date (`-271821-04-19`) began before the range, while the
|
|
66
|
+
* next month's start did not. Both orders agree everywhere else, because a one-unit step clamps
|
|
67
|
+
* within the next unit (Jan 31 + 1 month = Feb 29, whose month starts on Feb 1).
|
|
68
|
+
* - Always uses Monday as the week start, like `getStartOfDateUnit`.
|
|
69
|
+
* - Does NOT validate the unit — caller ensures it is a DateUnit.
|
|
70
|
+
*
|
|
71
|
+
* @param source Temporal.PlainDate inside the current unit
|
|
72
|
+
* @param unit DateUnit to step by
|
|
73
|
+
* @returns Temporal.PlainDate at the start of the next unit
|
|
74
|
+
*
|
|
75
|
+
* @example getStartOfNextDateUnit(Temporal.PlainDate.from("2024-01-31"), "month") // 2024-02-01
|
|
76
|
+
* @example getStartOfNextDateUnit(Temporal.PlainDate.from("-271821-04-19"), "month") // -271821-05-01
|
|
77
|
+
*/
|
|
78
|
+
export function getStartOfNextDateUnit(source, unit) {
|
|
79
|
+
return getStartOfDateUnit(addDateUnit(source, unit, 1), unit);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Return the whole days from the start of the date `unit` containing `source` to `source`.
|
|
83
|
+
*
|
|
84
|
+
* - Read from the calendar fields, so the unit's start is never materialised (it may lie before
|
|
85
|
+
* the representable range).
|
|
86
|
+
* - Always uses Monday as the week start, like `getStartOfDateUnit`. A day unit is 0 days in.
|
|
87
|
+
* - Accepts a `Temporal.PlainDate` or a `Temporal.PlainDateTime` (only its date matters).
|
|
88
|
+
* - Does NOT validate the unit — caller ensures it is a DateUnit.
|
|
89
|
+
*
|
|
90
|
+
* @param source value with calendar date fields, read in its own calendar
|
|
91
|
+
* @param unit DateUnit to measure within
|
|
92
|
+
* @returns number of whole days since the unit started
|
|
93
|
+
*
|
|
94
|
+
* @example getDaysIntoDateUnit(Temporal.PlainDate.from("2024-03-13"), "month") // 12
|
|
95
|
+
* @example getDaysIntoDateUnit(Temporal.PlainDate.from("2024-03-13"), "week") // 2 (a Wednesday)
|
|
96
|
+
*/
|
|
97
|
+
export function getDaysIntoDateUnit(source, unit) {
|
|
98
|
+
switch (unit) {
|
|
99
|
+
case "year":
|
|
100
|
+
return source.dayOfYear - 1;
|
|
39
101
|
case "month":
|
|
40
|
-
return
|
|
102
|
+
return source.day - 1;
|
|
41
103
|
case "week":
|
|
42
|
-
return
|
|
104
|
+
return source.dayOfWeek - 1;
|
|
43
105
|
default:
|
|
44
|
-
return
|
|
106
|
+
return 0;
|
|
45
107
|
}
|
|
46
108
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { FractionalDigit } from "../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Resolve how many fractional second digits a result snapped to `unit` is printed with.
|
|
4
|
+
*
|
|
5
|
+
* - An explicit `fractionalSecondDigits` always wins — including an invalid one, which Temporal's
|
|
6
|
+
* `toString` then rejects, so the caller returns its sentinel. Only an omitted member defaults.
|
|
7
|
+
* - Otherwise 3 for "millisecond", 6 for "microsecond", 9 for "nanosecond", and 0 for anything
|
|
8
|
+
* coarser (or unrecognised), so the output never hides the precision the unit asked for.
|
|
9
|
+
*
|
|
10
|
+
* @param unit the unit the value was snapped or rounded to
|
|
11
|
+
* @param fractionalSecondDigits optional caller-supplied override
|
|
12
|
+
* @returns the digit count to pass to `toString({ fractionalSecondDigits })`
|
|
13
|
+
*/
|
|
14
|
+
export declare function defaultFractionalDigits(unit: string, fractionalSecondDigits?: FractionalDigit): FractionalDigit;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** Sub-second units to the fractional digits that show them; every other unit shows none. */
|
|
2
|
+
const DIGITS_BY_UNIT = {
|
|
3
|
+
millisecond: 3,
|
|
4
|
+
microsecond: 6,
|
|
5
|
+
nanosecond: 9,
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Resolve how many fractional second digits a result snapped to `unit` is printed with.
|
|
9
|
+
*
|
|
10
|
+
* - An explicit `fractionalSecondDigits` always wins — including an invalid one, which Temporal's
|
|
11
|
+
* `toString` then rejects, so the caller returns its sentinel. Only an omitted member defaults.
|
|
12
|
+
* - Otherwise 3 for "millisecond", 6 for "microsecond", 9 for "nanosecond", and 0 for anything
|
|
13
|
+
* coarser (or unrecognised), so the output never hides the precision the unit asked for.
|
|
14
|
+
*
|
|
15
|
+
* @param unit the unit the value was snapped or rounded to
|
|
16
|
+
* @param fractionalSecondDigits optional caller-supplied override
|
|
17
|
+
* @returns the digit count to pass to `toString({ fractionalSecondDigits })`
|
|
18
|
+
*/
|
|
19
|
+
export function defaultFractionalDigits(unit, fractionalSecondDigits) {
|
|
20
|
+
return fractionalSecondDigits === undefined
|
|
21
|
+
? (DIGITS_BY_UNIT[unit] ?? 0)
|
|
22
|
+
: fractionalSecondDigits;
|
|
23
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
/** Temporal's duration fields, largest first (Temporal Table 21, the unit ladder). */
|
|
3
|
+
declare const DURATION_FIELDS: readonly ["years", "months", "weeks", "days", "hours", "minutes", "seconds", "milliseconds", "microseconds", "nanoseconds"];
|
|
4
|
+
/** A plural Temporal duration field name. */
|
|
5
|
+
export type DurationField = (typeof DURATION_FIELDS)[number];
|
|
6
|
+
/** How one Temporal type moves by a duration and measures the difference to another value. */
|
|
7
|
+
export interface DifferenceOperations<T> {
|
|
8
|
+
add: (from: T, duration: Temporal.DurationLike) => T;
|
|
9
|
+
until: (from: T, to: T, largestUnit: DurationField) => Temporal.Duration;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Express a difference in exactly the listed units, so the record is the whole difference.
|
|
13
|
+
*
|
|
14
|
+
* `duration` is `start.until(end)` with `largestUnit` = the largest listed unit and the caller's
|
|
15
|
+
* rounding options. Its fields are kept while the listed units are contiguous or every unlisted
|
|
16
|
+
* unit between them is zero, so a single unit or adjacent units return Temporal's own fields.
|
|
17
|
+
* When an unlisted unit between two listed units has an amount, that amount is carried into the
|
|
18
|
+
* next smaller listed unit (and a listed `weeks` below months or years is measured afresh, because
|
|
19
|
+
* Temporal leaves weeks in `days` unless `largestUnit` is weeks): the start is moved by the listed amounts found so far (one Temporal
|
|
20
|
+
* `add`, which adds years and months before days), and the rest is measured from there to the
|
|
21
|
+
* rounded end (`start.add(duration)`) with `largestUnit` = that listed unit. The record then
|
|
22
|
+
* satisfies `start.add(record)` = `start.add(duration)`. Units smaller than the smallest listed
|
|
23
|
+
* unit are dropped, as for a single unit.
|
|
24
|
+
*
|
|
25
|
+
* @param start the start value
|
|
26
|
+
* @param duration the (rounded) difference from `start` with the largest listed unit
|
|
27
|
+
* @param units the listed plural units, any order, non-empty
|
|
28
|
+
* @param operations the type's `add` and `until`
|
|
29
|
+
* @returns the amount of each listed unit, keyed by plural unit name in the order of `units`
|
|
30
|
+
*/
|
|
31
|
+
export declare function differenceRecord<T>(start: T, duration: Temporal.Duration, units: readonly DurationField[], operations: DifferenceOperations<T>): Record<DurationField, number>;
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/** Temporal's duration fields, largest first (Temporal Table 21, the unit ladder). */
|
|
2
|
+
const DURATION_FIELDS = [
|
|
3
|
+
"years",
|
|
4
|
+
"months",
|
|
5
|
+
"weeks",
|
|
6
|
+
"days",
|
|
7
|
+
"hours",
|
|
8
|
+
"minutes",
|
|
9
|
+
"seconds",
|
|
10
|
+
"milliseconds",
|
|
11
|
+
"microseconds",
|
|
12
|
+
"nanoseconds",
|
|
13
|
+
];
|
|
14
|
+
/** True when a field strictly between `larger` and `smaller` on the ladder has an amount. */
|
|
15
|
+
function hasAmountBetween(duration, larger, smaller) {
|
|
16
|
+
const from = DURATION_FIELDS.indexOf(larger) + 1;
|
|
17
|
+
const to = DURATION_FIELDS.indexOf(smaller);
|
|
18
|
+
return DURATION_FIELDS.slice(from, to).some((field) => duration[field] !== 0);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* True when `unit` has to be measured again from the moved start: an unlisted unit above it (and
|
|
22
|
+
* below the previous listed unit) has an amount, or `unit` is weeks in a duration whose largest
|
|
23
|
+
* unit is larger than weeks. Temporal balances weeks only when `largestUnit` is weeks (TC39
|
|
24
|
+
* Temporal DifferenceISODate: weeks are computed only for largestUnit "week"; for "month" and
|
|
25
|
+
* "year" the remainder is days), so such a duration holds its weeks in `days`.
|
|
26
|
+
*/
|
|
27
|
+
function needsCarry(duration, largest, previous, unit) {
|
|
28
|
+
if (hasAmountBetween(duration, previous, unit))
|
|
29
|
+
return true;
|
|
30
|
+
return unit === "weeks" && largest !== "weeks" && duration.days !== 0;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Express a difference in exactly the listed units, so the record is the whole difference.
|
|
34
|
+
*
|
|
35
|
+
* `duration` is `start.until(end)` with `largestUnit` = the largest listed unit and the caller's
|
|
36
|
+
* rounding options. Its fields are kept while the listed units are contiguous or every unlisted
|
|
37
|
+
* unit between them is zero, so a single unit or adjacent units return Temporal's own fields.
|
|
38
|
+
* When an unlisted unit between two listed units has an amount, that amount is carried into the
|
|
39
|
+
* next smaller listed unit (and a listed `weeks` below months or years is measured afresh, because
|
|
40
|
+
* Temporal leaves weeks in `days` unless `largestUnit` is weeks): the start is moved by the listed amounts found so far (one Temporal
|
|
41
|
+
* `add`, which adds years and months before days), and the rest is measured from there to the
|
|
42
|
+
* rounded end (`start.add(duration)`) with `largestUnit` = that listed unit. The record then
|
|
43
|
+
* satisfies `start.add(record)` = `start.add(duration)`. Units smaller than the smallest listed
|
|
44
|
+
* unit are dropped, as for a single unit.
|
|
45
|
+
*
|
|
46
|
+
* @param start the start value
|
|
47
|
+
* @param duration the (rounded) difference from `start` with the largest listed unit
|
|
48
|
+
* @param units the listed plural units, any order, non-empty
|
|
49
|
+
* @param operations the type's `add` and `until`
|
|
50
|
+
* @returns the amount of each listed unit, keyed by plural unit name in the order of `units`
|
|
51
|
+
*/
|
|
52
|
+
export function differenceRecord(start, duration, units, operations) {
|
|
53
|
+
const ordered = DURATION_FIELDS.filter((field) => units.includes(field));
|
|
54
|
+
const amounts = {};
|
|
55
|
+
let origin = start;
|
|
56
|
+
let current = duration;
|
|
57
|
+
let moved = {};
|
|
58
|
+
let largest = ordered[0];
|
|
59
|
+
let end;
|
|
60
|
+
ordered.forEach((unit, index) => {
|
|
61
|
+
const previous = ordered[index - 1];
|
|
62
|
+
if (previous !== undefined &&
|
|
63
|
+
largest !== undefined &&
|
|
64
|
+
needsCarry(current, largest, previous, unit)) {
|
|
65
|
+
end ??= operations.add(start, duration);
|
|
66
|
+
origin = operations.add(origin, moved);
|
|
67
|
+
current = operations.until(origin, end, unit);
|
|
68
|
+
largest = unit;
|
|
69
|
+
moved = {};
|
|
70
|
+
}
|
|
71
|
+
amounts[unit] = current[unit];
|
|
72
|
+
moved[unit] = current[unit];
|
|
73
|
+
});
|
|
74
|
+
// Keys follow the caller's order.
|
|
75
|
+
return units.reduce((record, unit) => {
|
|
76
|
+
record[unit] = amounts[unit];
|
|
77
|
+
return record;
|
|
78
|
+
}, {});
|
|
79
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Return the offset of boundary `index` when a span of `total` integer units is cut into `count`
|
|
3
|
+
* equal pieces: `(total · index) / count` rounded to the nearest unit, an exact half rounding up
|
|
4
|
+
* (as `Math.round` does for the non-negative quotient).
|
|
5
|
+
*
|
|
6
|
+
* - Exact at any magnitude: the product is taken in `bigint`, never in a double, so spans past
|
|
7
|
+
* 2^53 units (about 104 days of nanoseconds) keep every unit.
|
|
8
|
+
* - `total` must be non-negative and `count` a positive integer; `index` runs from 0 to `count`.
|
|
9
|
+
*
|
|
10
|
+
* @param total span length in integer units (nanoseconds or milliseconds)
|
|
11
|
+
* @param index boundary number, 0 (the start) to `count` (the end)
|
|
12
|
+
* @param count number of pieces
|
|
13
|
+
* @returns the boundary's offset from the start, in the same units
|
|
14
|
+
*
|
|
15
|
+
* @example divisionBoundary(1_000_000_000n, 1, 3) // 333_333_333n
|
|
16
|
+
* @example divisionBoundary(1_000_000_000n, 2, 3) // 666_666_667n
|
|
17
|
+
* @example divisionBoundary(31_536_000_000_000_000_003n, 1, 3) // 10_512_000_000_000_000_001n
|
|
18
|
+
*/
|
|
19
|
+
export declare function divisionBoundary(total: bigint, index: number, count: number): bigint;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Return the offset of boundary `index` when a span of `total` integer units is cut into `count`
|
|
3
|
+
* equal pieces: `(total · index) / count` rounded to the nearest unit, an exact half rounding up
|
|
4
|
+
* (as `Math.round` does for the non-negative quotient).
|
|
5
|
+
*
|
|
6
|
+
* - Exact at any magnitude: the product is taken in `bigint`, never in a double, so spans past
|
|
7
|
+
* 2^53 units (about 104 days of nanoseconds) keep every unit.
|
|
8
|
+
* - `total` must be non-negative and `count` a positive integer; `index` runs from 0 to `count`.
|
|
9
|
+
*
|
|
10
|
+
* @param total span length in integer units (nanoseconds or milliseconds)
|
|
11
|
+
* @param index boundary number, 0 (the start) to `count` (the end)
|
|
12
|
+
* @param count number of pieces
|
|
13
|
+
* @returns the boundary's offset from the start, in the same units
|
|
14
|
+
*
|
|
15
|
+
* @example divisionBoundary(1_000_000_000n, 1, 3) // 333_333_333n
|
|
16
|
+
* @example divisionBoundary(1_000_000_000n, 2, 3) // 666_666_667n
|
|
17
|
+
* @example divisionBoundary(31_536_000_000_000_000_003n, 1, 3) // 10_512_000_000_000_000_001n
|
|
18
|
+
*/
|
|
19
|
+
export function divisionBoundary(total, index, count) {
|
|
20
|
+
const pieces = BigInt(count);
|
|
21
|
+
// floor(total · index / count + 1/2); bigint division truncates, which is floor for these signs.
|
|
22
|
+
return (2n * total * BigInt(index) + pieces) / (2n * pieces);
|
|
23
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import type { DurationStringOptions, RoundingOptions } from "../types/index.js";
|
|
3
3
|
/**
|
|
4
4
|
* Compute the ISO 8601 duration string between two Temporal objects via `.until()` + `.toString()`.
|
|
@@ -1,10 +1,18 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import { plainDateUntil } from "./plainDateUntil.js";
|
|
3
|
+
import { zonedUntil } from "./zonedWallClockDifference.js";
|
|
1
4
|
export function durationUntilString(start, end, largestUnit, options) {
|
|
2
|
-
const
|
|
5
|
+
const untilOptions = {
|
|
3
6
|
largestUnit,
|
|
4
7
|
smallestUnit: options?.smallestUnit,
|
|
5
8
|
roundingIncrement: options?.roundingIncrement,
|
|
6
9
|
roundingMode: options?.roundingMode,
|
|
7
|
-
}
|
|
10
|
+
};
|
|
11
|
+
const duration = start instanceof Temporal.ZonedDateTime
|
|
12
|
+
? zonedUntil(start, end, untilOptions)
|
|
13
|
+
: start instanceof Temporal.PlainDate
|
|
14
|
+
? plainDateUntil(start, end, largestUnit, options)
|
|
15
|
+
: start.until(end, untilOptions);
|
|
8
16
|
return duration.toString({
|
|
9
17
|
smallestUnit: options?.toStringSmallestUnit,
|
|
10
18
|
fractionalSecondDigits: options?.fractionalSecondDigits,
|
|
@@ -1,2 +1,13 @@
|
|
|
1
|
+
import type { Temporal } from "@js-temporal/polyfill";
|
|
1
2
|
export declare const ENGLISH_WEEKDAY_NAMES: readonly ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"];
|
|
2
3
|
export declare const ENGLISH_MONTH_NAMES: readonly ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
|
|
4
|
+
/**
|
|
5
|
+
* The `Mon, 15 Jul 2024 12:00:00` stem RFC 5322 date-time and RFC 9110 IMF-fixdate share: English
|
|
6
|
+
* day and month names, zero-padded fields, read from the date-time's own wall clock.
|
|
7
|
+
*
|
|
8
|
+
* @param zdt the date-time; the caller has already rejected a year outside 0-9999
|
|
9
|
+
* @returns the stem, without a zone or `GMT` suffix
|
|
10
|
+
* @example englishDateTimeStem(Temporal.ZonedDateTime.from("2024-07-15T12:00:05+00:00[UTC]")) // "Mon, 15 Jul 2024 12:00:05"
|
|
11
|
+
* @example englishDateTimeStem(Temporal.ZonedDateTime.from("0099-01-03T04:05:06+00:00[UTC]")) // "Sat, 03 Jan 0099 04:05:06"
|
|
12
|
+
*/
|
|
13
|
+
export declare function englishDateTimeStem(zdt: Temporal.ZonedDateTime): string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
// RFC
|
|
1
|
+
// RFC 5322 §3.3 (which obsoletes RFC 2822) and RFC 9110 §5.6.7 (which obsoletes
|
|
2
|
+
// RFC 7231) mandate English weekday/month
|
|
2
3
|
// abbreviations regardless of the caller's locale — these are fixed,
|
|
3
4
|
// non-locale-adaptive grammars, not a display format, so hardcoding the
|
|
4
5
|
// English names here is not the i18n bug it would be in a formatter (see
|
|
@@ -28,3 +29,22 @@ export const ENGLISH_MONTH_NAMES = [
|
|
|
28
29
|
"Nov",
|
|
29
30
|
"Dec",
|
|
30
31
|
];
|
|
32
|
+
/**
|
|
33
|
+
* The `Mon, 15 Jul 2024 12:00:00` stem RFC 5322 date-time and RFC 9110 IMF-fixdate share: English
|
|
34
|
+
* day and month names, zero-padded fields, read from the date-time's own wall clock.
|
|
35
|
+
*
|
|
36
|
+
* @param zdt the date-time; the caller has already rejected a year outside 0-9999
|
|
37
|
+
* @returns the stem, without a zone or `GMT` suffix
|
|
38
|
+
* @example englishDateTimeStem(Temporal.ZonedDateTime.from("2024-07-15T12:00:05+00:00[UTC]")) // "Mon, 15 Jul 2024 12:00:05"
|
|
39
|
+
* @example englishDateTimeStem(Temporal.ZonedDateTime.from("0099-01-03T04:05:06+00:00[UTC]")) // "Sat, 03 Jan 0099 04:05:06"
|
|
40
|
+
*/
|
|
41
|
+
export function englishDateTimeStem(zdt) {
|
|
42
|
+
const weekday = ENGLISH_WEEKDAY_NAMES[zdt.dayOfWeek - 1];
|
|
43
|
+
const day = String(zdt.day).padStart(2, "0");
|
|
44
|
+
const month = ENGLISH_MONTH_NAMES[zdt.month - 1];
|
|
45
|
+
const year = String(zdt.year).padStart(4, "0");
|
|
46
|
+
const hour = String(zdt.hour).padStart(2, "0");
|
|
47
|
+
const minute = String(zdt.minute).padStart(2, "0");
|
|
48
|
+
const second = String(zdt.second).padStart(2, "0");
|
|
49
|
+
return `${weekday}, ${day} ${month} ${year} ${hour}:${minute}:${second}`;
|
|
50
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Smallest epoch-nanosecond value `Temporal.Instant` can represent:
|
|
3
|
+
* -10^8 days from the Unix epoch, i.e. `-271821-04-20T00:00:00Z`.
|
|
4
|
+
*/
|
|
5
|
+
export declare const MIN_EPOCH_NANOSECONDS = -8640000000000000000000n;
|
|
6
|
+
/**
|
|
7
|
+
* Largest epoch-nanosecond value `Temporal.Instant` can represent:
|
|
8
|
+
* +10^8 days from the Unix epoch, i.e. `+275760-09-13T00:00:00Z`.
|
|
9
|
+
*/
|
|
10
|
+
export declare const MAX_EPOCH_NANOSECONDS = 8640000000000000000000n;
|
|
11
|
+
/**
|
|
12
|
+
* Digits in `MAX_EPOCH_NANOSECONDS` (22) — the longest a decimal form of an in-range
|
|
13
|
+
* epoch-nanosecond value can be, sign excluded.
|
|
14
|
+
*/
|
|
15
|
+
export declare const MAX_EPOCH_NANOSECOND_DIGITS: number;
|
|
16
|
+
/**
|
|
17
|
+
* Type guard for an epoch-nanosecond value the `precision/` namespace accepts: a `bigint`
|
|
18
|
+
* inside the range `Temporal.Instant` can represent.
|
|
19
|
+
*
|
|
20
|
+
* Every `precision/` function gates on this, so anything one of them accepts is renderable
|
|
21
|
+
* by `fromNanoseconds` — a value outside the range has no instant to convert back to.
|
|
22
|
+
*
|
|
23
|
+
* @example isValidEpochNanoseconds(0n) // true
|
|
24
|
+
* @example isValidEpochNanoseconds(8_640_000_000_000_000_000_001n) // false
|
|
25
|
+
* @example isValidEpochNanoseconds(0) // false — number, not bigint
|
|
26
|
+
*/
|
|
27
|
+
export declare function isValidEpochNanoseconds(value: unknown): value is bigint;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Smallest epoch-nanosecond value `Temporal.Instant` can represent:
|
|
3
|
+
* -10^8 days from the Unix epoch, i.e. `-271821-04-20T00:00:00Z`.
|
|
4
|
+
*/
|
|
5
|
+
export const MIN_EPOCH_NANOSECONDS = -8640000000000000000000n;
|
|
6
|
+
/**
|
|
7
|
+
* Largest epoch-nanosecond value `Temporal.Instant` can represent:
|
|
8
|
+
* +10^8 days from the Unix epoch, i.e. `+275760-09-13T00:00:00Z`.
|
|
9
|
+
*/
|
|
10
|
+
export const MAX_EPOCH_NANOSECONDS = 8640000000000000000000n;
|
|
11
|
+
/**
|
|
12
|
+
* Digits in `MAX_EPOCH_NANOSECONDS` (22) — the longest a decimal form of an in-range
|
|
13
|
+
* epoch-nanosecond value can be, sign excluded.
|
|
14
|
+
*/
|
|
15
|
+
export const MAX_EPOCH_NANOSECOND_DIGITS = MAX_EPOCH_NANOSECONDS.toString().length;
|
|
16
|
+
/**
|
|
17
|
+
* Type guard for an epoch-nanosecond value the `precision/` namespace accepts: a `bigint`
|
|
18
|
+
* inside the range `Temporal.Instant` can represent.
|
|
19
|
+
*
|
|
20
|
+
* Every `precision/` function gates on this, so anything one of them accepts is renderable
|
|
21
|
+
* by `fromNanoseconds` — a value outside the range has no instant to convert back to.
|
|
22
|
+
*
|
|
23
|
+
* @example isValidEpochNanoseconds(0n) // true
|
|
24
|
+
* @example isValidEpochNanoseconds(8_640_000_000_000_000_000_001n) // false
|
|
25
|
+
* @example isValidEpochNanoseconds(0) // false — number, not bigint
|
|
26
|
+
*/
|
|
27
|
+
export function isValidEpochNanoseconds(value) {
|
|
28
|
+
return (typeof value === "bigint" &&
|
|
29
|
+
value >= MIN_EPOCH_NANOSECONDS &&
|
|
30
|
+
value <= MAX_EPOCH_NANOSECONDS);
|
|
31
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import type { FiscalPattern } from "../types/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* Return the fiscal year end falling in calendar year `year`, under the rule `anchor` states.
|
|
5
|
+
*
|
|
6
|
+
* The rule is "the <anchor's weekday> nearest to <anchor's month and day>", so the result is
|
|
7
|
+
* `anchor`'s month and day in `year`, shifted at most three days either way onto `anchor`'s
|
|
8
|
+
* weekday. A year end within three days of January 1 lands in the previous calendar year,
|
|
9
|
+
* which is why callers must track the calendar-year argument rather than read `.year` back
|
|
10
|
+
* off the result.
|
|
11
|
+
*
|
|
12
|
+
* - The month-day is moved into `year` with Temporal's `overflow: "constrain"`, so a
|
|
13
|
+
* February 29 anchor targets February 28 in a common year before the weekday shift. A
|
|
14
|
+
* "month-end" rule (the 26 CFR 1.441-2 style, "the last Saturday of February") would
|
|
15
|
+
* instead put a February 28 anchor on February 29 in a leap year; this does not.
|
|
16
|
+
*/
|
|
17
|
+
export declare function fiscalYearEndIn(anchor: Temporal.PlainDate, year: number): Temporal.PlainDate;
|
|
18
|
+
/**
|
|
19
|
+
* Locate the fiscal year containing `date` under the rule `anchor` states.
|
|
20
|
+
*
|
|
21
|
+
* - The fiscal year is the one whose end is the first at or after `date`.
|
|
22
|
+
* - `weeks` is derived from the gap between consecutive year ends — 52 or 53 — never assumed.
|
|
23
|
+
* - Returns null when that gap is neither 364 nor 371 days, which no "nearest weekday" rule
|
|
24
|
+
* can produce and so only a corrupted anchor could reach.
|
|
25
|
+
*/
|
|
26
|
+
export declare function fiscalYearOf(date: Temporal.PlainDate, anchor: Temporal.PlainDate): {
|
|
27
|
+
start: Temporal.PlainDate;
|
|
28
|
+
weeks: number;
|
|
29
|
+
} | null;
|
|
30
|
+
/**
|
|
31
|
+
* Return the 1-based period holding `week` of a `weeks`-long fiscal year under `pattern`.
|
|
32
|
+
*
|
|
33
|
+
* The 53rd week, when the year has one, is appended to the final period — the NRF adds it
|
|
34
|
+
* "to the end of the calendar", which turns a 4-5-4 year's last quarter into 4-5-5.
|
|
35
|
+
*/
|
|
36
|
+
export declare function fiscalPeriodOfWeek(week: number, weeks: number, pattern: FiscalPattern): number;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
/** Weeks per period within one quarter, by pattern. */
|
|
3
|
+
const WEEKS_PER_PERIOD = {
|
|
4
|
+
"4-5-4": [4, 5, 4],
|
|
5
|
+
"4-4-5": [4, 4, 5],
|
|
6
|
+
"5-4-4": [5, 4, 4],
|
|
7
|
+
};
|
|
8
|
+
/** Periods in a fiscal year — four quarters of three periods each. */
|
|
9
|
+
const PERIODS_PER_YEAR = 12;
|
|
10
|
+
/** Days in a 52-week fiscal year. */
|
|
11
|
+
const DAYS_IN_52_WEEK_YEAR = 364;
|
|
12
|
+
/** Days in a 53-week fiscal year. */
|
|
13
|
+
const DAYS_IN_53_WEEK_YEAR = 371;
|
|
14
|
+
/**
|
|
15
|
+
* Calendar-year offsets searched for the fiscal year end that bounds a date.
|
|
16
|
+
*
|
|
17
|
+
* A year end sits within three days of its rule's month-day, so it can fall in the calendar
|
|
18
|
+
* year either side of the one it is named for. Both outer offsets are reachable when the
|
|
19
|
+
* rule's month-day is within three days of January 1: `-1` when a year end lands in early
|
|
20
|
+
* January, `+2` when one lands in late December and the date is the last days of a year.
|
|
21
|
+
*/
|
|
22
|
+
const YEAR_END_SEARCH_OFFSETS = [-1, 0, 1, 2];
|
|
23
|
+
/** Half the width of the 7-day window a "nearest weekday" year end can land in. */
|
|
24
|
+
const NEAREST_WEEKDAY_RADIUS = 3;
|
|
25
|
+
/**
|
|
26
|
+
* Return the fiscal year end falling in calendar year `year`, under the rule `anchor` states.
|
|
27
|
+
*
|
|
28
|
+
* The rule is "the <anchor's weekday> nearest to <anchor's month and day>", so the result is
|
|
29
|
+
* `anchor`'s month and day in `year`, shifted at most three days either way onto `anchor`'s
|
|
30
|
+
* weekday. A year end within three days of January 1 lands in the previous calendar year,
|
|
31
|
+
* which is why callers must track the calendar-year argument rather than read `.year` back
|
|
32
|
+
* off the result.
|
|
33
|
+
*
|
|
34
|
+
* - The month-day is moved into `year` with Temporal's `overflow: "constrain"`, so a
|
|
35
|
+
* February 29 anchor targets February 28 in a common year before the weekday shift. A
|
|
36
|
+
* "month-end" rule (the 26 CFR 1.441-2 style, "the last Saturday of February") would
|
|
37
|
+
* instead put a February 28 anchor on February 29 in a leap year; this does not.
|
|
38
|
+
*/
|
|
39
|
+
export function fiscalYearEndIn(anchor, year) {
|
|
40
|
+
const target = anchor.with({ year }, { overflow: "constrain" });
|
|
41
|
+
const weekdayDelta = anchor.dayOfWeek - target.dayOfWeek;
|
|
42
|
+
// Map the -6..6 weekday delta onto the -3..3 nearest-occurrence shift.
|
|
43
|
+
const shift = ((weekdayDelta + NEAREST_WEEKDAY_RADIUS + 7) % 7) - NEAREST_WEEKDAY_RADIUS;
|
|
44
|
+
return target.add({ days: shift });
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Locate the fiscal year containing `date` under the rule `anchor` states.
|
|
48
|
+
*
|
|
49
|
+
* - The fiscal year is the one whose end is the first at or after `date`.
|
|
50
|
+
* - `weeks` is derived from the gap between consecutive year ends — 52 or 53 — never assumed.
|
|
51
|
+
* - Returns null when that gap is neither 364 nor 371 days, which no "nearest weekday" rule
|
|
52
|
+
* can produce and so only a corrupted anchor could reach.
|
|
53
|
+
*/
|
|
54
|
+
export function fiscalYearOf(date, anchor) {
|
|
55
|
+
for (const offset of YEAR_END_SEARCH_OFFSETS) {
|
|
56
|
+
const year = date.year + offset;
|
|
57
|
+
const end = fiscalYearEndIn(anchor, year);
|
|
58
|
+
if (Temporal.PlainDate.compare(end, date) < 0)
|
|
59
|
+
continue;
|
|
60
|
+
const start = fiscalYearEndIn(anchor, year - 1).add({ days: 1 });
|
|
61
|
+
const days = start.until(end, { largestUnit: "day" }).days + 1;
|
|
62
|
+
if (days !== DAYS_IN_52_WEEK_YEAR && days !== DAYS_IN_53_WEEK_YEAR) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
return { start, weeks: days / 7 };
|
|
66
|
+
}
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Return the 1-based period holding `week` of a `weeks`-long fiscal year under `pattern`.
|
|
71
|
+
*
|
|
72
|
+
* The 53rd week, when the year has one, is appended to the final period — the NRF adds it
|
|
73
|
+
* "to the end of the calendar", which turns a 4-5-4 year's last quarter into 4-5-5.
|
|
74
|
+
*/
|
|
75
|
+
export function fiscalPeriodOfWeek(week, weeks, pattern) {
|
|
76
|
+
const quarterShape = WEEKS_PER_PERIOD[pattern];
|
|
77
|
+
let consumed = 0;
|
|
78
|
+
for (let period = 1; period <= PERIODS_PER_YEAR; period++) {
|
|
79
|
+
const isFinalPeriod = period === PERIODS_PER_YEAR;
|
|
80
|
+
const extraWeek = isFinalPeriod && weeks === 53 ? 1 : 0;
|
|
81
|
+
consumed += quarterShape[(period - 1) % quarterShape.length] + extraWeek;
|
|
82
|
+
if (week <= consumed)
|
|
83
|
+
return period;
|
|
84
|
+
}
|
|
85
|
+
return PERIODS_PER_YEAR;
|
|
86
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Divide two bigints, flooring toward negative infinity.
|
|
3
|
+
*
|
|
4
|
+
* BigInt `/` truncates toward zero, so `-1n / 100n` is `0n` — the same slot as `0n / 100n`.
|
|
5
|
+
* Every foreign-epoch bridge in `precision/convert/` scales nanoseconds down to a coarser
|
|
6
|
+
* unit (100 ns for FILETIME and .NET ticks, 2^-32 s for NTP), and a truncating divide would
|
|
7
|
+
* make the last tick before an epoch collide with the first tick after it. Flooring keeps
|
|
8
|
+
* the unit grid uniform across zero, which is also what `truncateNanoseconds` does.
|
|
9
|
+
*
|
|
10
|
+
* @example floorDivide(150n, 100n) // 1n
|
|
11
|
+
* @example floorDivide(-150n, 100n) // -2n
|
|
12
|
+
* @example floorDivide(-100n, 100n) // -1n
|
|
13
|
+
* @example floorDivide(0n, 100n) // 0n
|
|
14
|
+
*/
|
|
15
|
+
export declare function floorDivide(value: bigint, divisor: bigint): bigint;
|