@northguild/gmt 1.14.2 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +887 -277
- package/dist/calendar/business/businessDaysBetween.d.ts +37 -0
- package/dist/calendar/business/businessDaysBetween.js +89 -0
- package/dist/calendar/business/index.d.ts +7 -0
- package/dist/calendar/business/index.js +10 -0
- package/dist/calendar/business/mergeCalendars.d.ts +33 -0
- package/dist/calendar/business/mergeCalendars.js +68 -0
- package/dist/calendar/business/nextBusinessDay.d.ts +30 -0
- package/dist/calendar/business/nextBusinessDay.js +39 -0
- package/dist/calendar/business/previousBusinessDay.d.ts +30 -0
- package/dist/calendar/business/previousBusinessDay.js +39 -0
- package/dist/calendar/business/rollDate.d.ts +59 -0
- package/dist/calendar/business/rollDate.js +116 -0
- package/dist/calendar/calculate/bucketRange.d.ts +49 -0
- package/dist/calendar/calculate/bucketRange.js +169 -0
- package/dist/calendar/calculate/floorToZone.d.ts +42 -0
- package/dist/calendar/calculate/floorToZone.js +62 -0
- package/dist/calendar/calculate/getFiscalPeriod.d.ts +64 -0
- package/dist/calendar/calculate/getFiscalPeriod.js +96 -0
- package/dist/calendar/calculate/getIsoWeekDate.d.ts +35 -0
- package/dist/calendar/calculate/getIsoWeekDate.js +41 -0
- package/dist/calendar/calculate/getOrdinalDate.d.ts +25 -0
- package/dist/calendar/calculate/getOrdinalDate.js +28 -0
- package/dist/calendar/calculate/getQuarter.d.ts +36 -0
- package/dist/calendar/calculate/getQuarter.js +64 -0
- package/dist/calendar/calculate/index.d.ts +6 -0
- package/dist/calendar/calculate/index.js +6 -0
- package/dist/calendar/index.d.ts +4 -0
- package/dist/calendar/index.js +5 -0
- package/dist/calendar/validate/index.d.ts +4 -0
- package/dist/calendar/validate/index.js +4 -0
- package/dist/calendar/validate/isValidBusinessCalendar.d.ts +31 -0
- package/dist/calendar/validate/isValidBusinessCalendar.js +40 -0
- package/dist/calendar/validate/isValidFiscalPattern.d.ts +25 -0
- package/dist/calendar/validate/isValidFiscalPattern.js +29 -0
- package/dist/calendar/validate/isValidRollConvention.d.ts +28 -0
- package/dist/calendar/validate/isValidRollConvention.js +38 -0
- package/dist/calendar/validate/isValidZoneBucketUnit.d.ts +31 -0
- package/dist/calendar/validate/isValidZoneBucketUnit.js +39 -0
- package/dist/duration/calculate/durationAs.d.ts +27 -3
- package/dist/duration/calculate/durationAs.js +34 -8
- package/dist/duration/calculate/getDurationUnit.d.ts +5 -2
- package/dist/duration/calculate/getDurationUnit.js +7 -3
- package/dist/duration/compare/compareDurations.d.ts +25 -2
- package/dist/duration/compare/compareDurations.js +31 -7
- package/dist/duration/format/formatDuration.d.ts +14 -5
- package/dist/duration/format/formatDuration.js +47 -11
- package/dist/duration/index.d.ts +1 -0
- package/dist/duration/index.js +2 -0
- package/dist/duration/normalize/normalizeDuration.d.ts +33 -6
- package/dist/duration/normalize/normalizeDuration.js +41 -12
- package/dist/duration/parse/parseDuration.js +4 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +6 -0
- package/dist/instant/convert/classifyLocal.d.ts +50 -0
- package/dist/instant/convert/classifyLocal.js +60 -0
- package/dist/instant/convert/fromOffsetInstant.d.ts +47 -0
- package/dist/instant/convert/fromOffsetInstant.js +99 -0
- package/dist/instant/convert/index.d.ts +4 -0
- package/dist/instant/convert/index.js +4 -0
- package/dist/instant/convert/resolveLocal.d.ts +40 -0
- package/dist/instant/convert/resolveLocal.js +76 -0
- package/dist/instant/convert/toOffsetInstant.d.ts +73 -0
- package/dist/instant/convert/toOffsetInstant.js +185 -0
- package/dist/instant/index.d.ts +2 -0
- package/dist/instant/index.js +3 -0
- package/dist/internal/adjustZonedBusinessDays.js +9 -7
- package/dist/internal/businessCalendar.d.ts +46 -0
- package/dist/internal/businessCalendar.js +230 -0
- package/dist/internal/businessDayValues.d.ts +20 -0
- package/dist/internal/businessDayValues.js +54 -0
- package/dist/internal/calendarDatePairPolicy.d.ts +10 -12
- package/dist/internal/calendarDatePairPolicy.js +13 -19
- package/dist/internal/calendarDateString.d.ts +32 -58
- package/dist/internal/calendarDateString.js +51 -93
- package/dist/internal/calendarSystemIds.d.ts +26 -2
- package/dist/internal/calendarSystemIds.js +57 -51
- package/dist/internal/calendarValueOfDate.d.ts +10 -12
- package/dist/internal/calendarValueOfDate.js +22 -20
- package/dist/internal/calendarValueOfZoned.d.ts +14 -17
- package/dist/internal/calendarValueOfZoned.js +25 -25
- package/dist/internal/calendarZonedPairPolicy.d.ts +11 -18
- package/dist/internal/calendarZonedPairPolicy.js +14 -25
- package/dist/internal/calendarZonedString.d.ts +41 -65
- package/dist/internal/calendarZonedString.js +52 -101
- package/dist/internal/compareUnixEpochs.d.ts +14 -0
- package/dist/internal/compareUnixEpochs.js +25 -0
- package/dist/internal/dateTimeUnitHelpers.d.ts +18 -0
- package/dist/internal/dateTimeUnitHelpers.js +27 -0
- package/dist/internal/dateUnitHelpers.d.ts +39 -1
- package/dist/internal/dateUnitHelpers.js +73 -11
- package/dist/internal/defaultFractionalDigits.d.ts +14 -0
- package/dist/internal/defaultFractionalDigits.js +23 -0
- package/dist/internal/differenceRecord.d.ts +32 -0
- package/dist/internal/differenceRecord.js +79 -0
- package/dist/internal/divisionBoundary.d.ts +19 -0
- package/dist/internal/divisionBoundary.js +23 -0
- package/dist/internal/durationUntilString.d.ts +1 -1
- package/dist/internal/durationUntilString.js +10 -2
- package/dist/internal/englishCalendarNames.d.ts +11 -0
- package/dist/internal/englishCalendarNames.js +21 -1
- package/dist/internal/epochNanoseconds.d.ts +27 -0
- package/dist/internal/epochNanoseconds.js +31 -0
- package/dist/internal/fiscalCalendar.d.ts +36 -0
- package/dist/internal/fiscalCalendar.js +86 -0
- package/dist/internal/floorDivide.d.ts +15 -0
- package/dist/internal/floorDivide.js +18 -0
- package/dist/internal/foreignEpochs.d.ts +134 -0
- package/dist/internal/foreignEpochs.js +139 -0
- package/dist/internal/formatCalendarDays.d.ts +28 -0
- package/dist/internal/formatCalendarDays.js +49 -0
- package/dist/internal/formatDateInCalendar.d.ts +14 -39
- package/dist/internal/formatDateInCalendar.js +16 -47
- package/dist/internal/formatRelativeDuration.d.ts +27 -0
- package/dist/internal/formatRelativeDuration.js +45 -0
- package/dist/internal/getLocaleFirstDayOfWeek.d.ts +9 -6
- package/dist/internal/getLocaleFirstDayOfWeek.js +9 -10
- package/dist/internal/getLocaleWeekYearBounds.d.ts +17 -9
- package/dist/internal/getLocaleWeekYearBounds.js +45 -26
- package/dist/internal/getLocaleWeekendDays.d.ts +9 -18
- package/dist/internal/getLocaleWeekendDays.js +9 -5
- package/dist/internal/halfOpenIntervals.d.ts +102 -0
- package/dist/internal/halfOpenIntervals.js +180 -0
- package/dist/internal/hasCalendarAnnotation.d.ts +20 -20
- package/dist/internal/hasCalendarAnnotation.js +23 -21
- package/dist/internal/hourDurationString.d.ts +16 -0
- package/dist/internal/hourDurationString.js +47 -0
- package/dist/internal/httpDateFields.d.ts +24 -0
- package/dist/internal/httpDateFields.js +86 -0
- package/dist/internal/index.d.ts +28 -9
- package/dist/internal/index.js +28 -9
- package/dist/internal/instantFormatOptions.d.ts +43 -0
- package/dist/internal/instantFormatOptions.js +99 -0
- package/dist/internal/instantIntervalText.d.ts +20 -0
- package/dist/internal/instantIntervalText.js +25 -0
- package/dist/internal/instantNanoseconds.d.ts +25 -0
- package/dist/internal/instantNanoseconds.js +41 -0
- package/dist/internal/intervalCountHelpers.d.ts +16 -10
- package/dist/internal/intervalCountHelpers.js +1 -31
- package/dist/internal/intervalNanoseconds.d.ts +47 -0
- package/dist/internal/intervalNanoseconds.js +86 -0
- package/dist/internal/isObject.d.ts +26 -0
- package/dist/internal/isObject.js +30 -0
- package/dist/internal/isoStringBody.d.ts +40 -0
- package/dist/internal/isoStringBody.js +85 -0
- package/dist/internal/joinDateTimeConnector.d.ts +1 -1
- package/dist/internal/localeWeekInfo.d.ts +34 -0
- package/dist/internal/localeWeekInfo.js +27 -0
- package/dist/internal/maxPieces.d.ts +41 -0
- package/dist/internal/maxPieces.js +53 -0
- package/dist/internal/measureNearRangeEnd.d.ts +26 -0
- package/dist/internal/measureNearRangeEnd.js +47 -0
- package/dist/internal/monthGridWeekRow.d.ts +4 -1
- package/dist/internal/monthGridWeekRow.js +3 -0
- package/dist/internal/normalizeTimeZone.d.ts +17 -10
- package/dist/internal/normalizeTimeZone.js +25 -15
- package/dist/internal/patternToken.d.ts +2 -1
- package/dist/internal/patternToken.js +10 -4
- package/dist/internal/plainDateAdd.d.ts +20 -0
- package/dist/internal/plainDateAdd.js +42 -0
- package/dist/internal/plainDateUntil.d.ts +21 -0
- package/dist/internal/plainDateUntil.js +48 -0
- package/dist/internal/plainFormatOptions.d.ts +59 -0
- package/dist/internal/plainFormatOptions.js +165 -0
- package/dist/internal/resolveDateTimeUnit.d.ts +4 -1
- package/dist/internal/resolveDateTimeUnit.js +2 -12
- package/dist/internal/resolveDurationRelativeTo.d.ts +28 -22
- package/dist/internal/resolveDurationRelativeTo.js +69 -25
- package/dist/internal/resolveDurationUnit.d.ts +4 -1
- package/dist/internal/resolveDurationUnit.js +2 -11
- package/dist/internal/resolveLocale.d.ts +37 -0
- package/dist/internal/resolveLocale.js +59 -0
- package/dist/internal/resolveManualRoundingOptions.d.ts +23 -0
- package/dist/internal/resolveManualRoundingOptions.js +39 -0
- package/dist/internal/resolveMinimalDaysInFirstWeek.d.ts +19 -0
- package/dist/internal/resolveMinimalDaysInFirstWeek.js +28 -0
- package/dist/internal/resolveOverflow.d.ts +6 -0
- package/dist/internal/resolveOverflow.js +7 -1
- package/dist/internal/resolveReadingTimeZone.d.ts +11 -0
- package/dist/internal/resolveReadingTimeZone.js +18 -0
- package/dist/internal/resolveUnixIntervalPair.d.ts +30 -0
- package/dist/internal/resolveUnixIntervalPair.js +53 -0
- package/dist/internal/resolveWeekStartsOn.d.ts +12 -0
- package/dist/internal/resolveWeekStartsOn.js +18 -0
- package/dist/internal/rfc5322DateTime.d.ts +26 -0
- package/dist/internal/rfc5322DateTime.js +176 -0
- package/dist/internal/splitStep.d.ts +81 -0
- package/dist/internal/splitStep.js +182 -0
- package/dist/internal/startOrEndOfUnix.d.ts +26 -0
- package/dist/internal/startOrEndOfUnix.js +47 -0
- package/dist/internal/startOrEndOfUtc.d.ts +27 -0
- package/dist/{utc/calculate → internal}/startOrEndOfUtc.js +45 -24
- package/dist/internal/startOrEndOfZoned.d.ts +22 -0
- package/dist/internal/startOrEndOfZoned.js +49 -0
- package/dist/internal/temporalCompat/calendarDateArithmetic.d.ts +33 -0
- package/dist/internal/temporalCompat/calendarDateArithmetic.js +199 -0
- package/dist/internal/temporalCompat/calendarDateFromFields.d.ts +36 -0
- package/dist/internal/temporalCompat/calendarDateFromFields.js +120 -0
- package/dist/internal/temporalCompat/calendarFields.d.ts +25 -0
- package/dist/internal/temporalCompat/calendarFields.js +131 -0
- package/dist/internal/temporalCompat/capabilities.d.ts +28 -0
- package/dist/internal/temporalCompat/capabilities.js +74 -0
- package/dist/internal/temporalCompat/fieldSearch.d.ts +21 -0
- package/dist/internal/temporalCompat/fieldSearch.js +83 -0
- package/dist/internal/temporalCompat/fixedDay.d.ts +25 -0
- package/dist/internal/temporalCompat/fixedDay.js +45 -0
- package/dist/internal/temporalCompat/hebrewArithmetic.d.ts +19 -0
- package/dist/internal/temporalCompat/hebrewArithmetic.js +150 -0
- package/dist/internal/temporalCompat/index.d.ts +4 -0
- package/dist/internal/temporalCompat/index.js +5 -0
- package/dist/internal/temporalCompat/indianArithmetic.d.ts +16 -0
- package/dist/internal/temporalCompat/indianArithmetic.js +87 -0
- package/dist/internal/temporalCompat/largeMonthSpan.d.ts +19 -0
- package/dist/internal/temporalCompat/largeMonthSpan.js +199 -0
- package/dist/internal/temporalCompat/nonIsoArithmetic.d.ts +59 -0
- package/dist/internal/temporalCompat/nonIsoArithmetic.js +220 -0
- package/dist/internal/temporalCompat/readArithmeticModel.d.ts +3 -0
- package/dist/internal/temporalCompat/readArithmeticModel.js +284 -0
- package/dist/internal/temporalCompat/repros.d.ts +31 -0
- package/dist/internal/temporalCompat/repros.js +556 -0
- package/dist/internal/toInstantFromUtc.d.ts +10 -0
- package/dist/internal/toInstantFromUtc.js +19 -0
- package/dist/internal/unixEpochValue.d.ts +166 -0
- package/dist/internal/unixEpochValue.js +245 -0
- package/dist/internal/unixFormatReference.d.ts +18 -0
- package/dist/internal/unixFormatReference.js +44 -0
- package/dist/internal/unixZonedDateTime.d.ts +22 -0
- package/dist/internal/unixZonedDateTime.js +32 -0
- package/dist/internal/utcOffsetString.d.ts +39 -0
- package/dist/internal/utcOffsetString.js +75 -0
- package/dist/internal/utcZonedDateTime.d.ts +16 -0
- package/dist/internal/utcZonedDateTime.js +28 -0
- package/dist/internal/zonedBucket.d.ts +91 -0
- package/dist/internal/zonedBucket.js +441 -0
- package/dist/internal/zonedFormatReference.d.ts +15 -0
- package/dist/internal/zonedFormatReference.js +24 -0
- package/dist/internal/zonedLocalDates.d.ts +15 -0
- package/dist/internal/zonedLocalDates.js +58 -0
- package/dist/internal/zonedNowUnitValue.d.ts +24 -0
- package/dist/internal/zonedNowUnitValue.js +58 -0
- package/dist/internal/zonedWallClock.d.ts +84 -0
- package/dist/internal/zonedWallClock.js +427 -0
- package/dist/internal/zonedWallClockDifference.d.ts +92 -0
- package/dist/internal/zonedWallClockDifference.js +1173 -0
- package/dist/internal/zonedWallClockOperations.d.ts +132 -0
- package/dist/internal/zonedWallClockOperations.js +553 -0
- package/dist/internal/zonelessCalendarDate.d.ts +12 -0
- package/dist/internal/zonelessCalendarDate.js +22 -0
- package/dist/interval/calculate/clampInterval.d.ts +22 -0
- package/dist/interval/calculate/clampInterval.js +31 -0
- package/dist/interval/calculate/index.d.ts +6 -0
- package/dist/interval/calculate/index.js +6 -0
- package/dist/interval/calculate/intersectIntervals.d.ts +23 -0
- package/dist/interval/calculate/intersectIntervals.js +43 -0
- package/dist/interval/calculate/mergeIntervals.d.ts +28 -0
- package/dist/interval/calculate/mergeIntervals.js +44 -0
- package/dist/interval/calculate/splitIntervalAt.d.ts +28 -0
- package/dist/interval/calculate/splitIntervalAt.js +63 -0
- package/dist/interval/calculate/subtractIntervals.d.ts +31 -0
- package/dist/interval/calculate/subtractIntervals.js +64 -0
- package/dist/interval/calculate/sumIntervals.d.ts +26 -0
- package/dist/interval/calculate/sumIntervals.js +40 -0
- package/dist/interval/compare/index.d.ts +2 -0
- package/dist/interval/compare/index.js +2 -0
- package/dist/interval/compare/intervalContains.d.ts +25 -0
- package/dist/interval/compare/intervalContains.js +39 -0
- package/dist/interval/compare/intervalsOverlap.d.ts +28 -0
- package/dist/interval/compare/intervalsOverlap.js +42 -0
- package/dist/interval/index.d.ts +4 -0
- package/dist/interval/index.js +5 -0
- package/dist/interval/validate/index.d.ts +1 -0
- package/dist/interval/validate/index.js +1 -0
- package/dist/interval/validate/isValidInterval.d.ts +29 -0
- package/dist/interval/validate/isValidInterval.js +38 -0
- package/dist/plain/calculate/addBusinessDays.d.ts +26 -9
- package/dist/plain/calculate/addBusinessDays.js +29 -21
- package/dist/plain/calculate/addDate.d.ts +9 -8
- package/dist/plain/calculate/addDate.js +35 -22
- package/dist/plain/calculate/addDateTime.js +24 -10
- package/dist/plain/calculate/addTime.d.ts +5 -8
- package/dist/plain/calculate/addTime.js +23 -16
- package/dist/plain/calculate/clampDate.js +3 -3
- package/dist/plain/calculate/closestDateTo.d.ts +11 -7
- package/dist/plain/calculate/closestDateTo.js +36 -24
- package/dist/plain/calculate/cycleDate.d.ts +1 -1
- package/dist/plain/calculate/cycleDate.js +10 -3
- package/dist/plain/calculate/cycleDateTime.d.ts +1 -1
- package/dist/plain/calculate/cycleDateTime.js +10 -3
- package/dist/plain/calculate/cycleTime.d.ts +6 -8
- package/dist/plain/calculate/cycleTime.js +15 -9
- package/dist/plain/calculate/diffDate.d.ts +31 -14
- package/dist/plain/calculate/diffDate.js +73 -38
- package/dist/plain/calculate/diffDateAsDuration.d.ts +13 -8
- package/dist/plain/calculate/diffDateAsDuration.js +23 -10
- package/dist/plain/calculate/diffDateTime.d.ts +17 -5
- package/dist/plain/calculate/diffDateTime.js +67 -28
- package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +2 -2
- package/dist/plain/calculate/diffDateTimeAsDuration.js +10 -3
- package/dist/plain/calculate/diffTime.d.ts +18 -5
- package/dist/plain/calculate/diffTime.js +68 -27
- package/dist/plain/calculate/endOfDate.d.ts +10 -2
- package/dist/plain/calculate/endOfDate.js +52 -27
- package/dist/plain/calculate/endOfDateTime.d.ts +17 -2
- package/dist/plain/calculate/endOfDateTime.js +126 -103
- package/dist/plain/calculate/endOfTime.d.ts +16 -2
- package/dist/plain/calculate/endOfTime.js +77 -59
- package/dist/plain/calculate/getLargestDateDurationUnit.d.ts +13 -5
- package/dist/plain/calculate/getLargestDateDurationUnit.js +26 -10
- package/dist/plain/calculate/getLargestDateTimeDurationUnit.d.ts +13 -6
- package/dist/plain/calculate/getLargestDateTimeDurationUnit.js +37 -22
- package/dist/plain/calculate/getLargestTimeDurationUnit.d.ts +13 -6
- package/dist/plain/calculate/getLargestTimeDurationUnit.js +33 -18
- package/dist/plain/calculate/getLocaleDayOfWeek.d.ts +8 -4
- package/dist/plain/calculate/getLocaleDayOfWeek.js +8 -3
- package/dist/plain/calculate/getLocaleEndOfWeek.d.ts +8 -4
- package/dist/plain/calculate/getLocaleEndOfWeek.js +8 -3
- package/dist/plain/calculate/getLocaleStartOfWeek.d.ts +8 -4
- package/dist/plain/calculate/getLocaleStartOfWeek.js +8 -3
- package/dist/plain/calculate/getLocaleWeekYear.d.ts +29 -19
- package/dist/plain/calculate/getLocaleWeekYear.js +48 -28
- package/dist/plain/calculate/getWeekNumber.d.ts +21 -2
- package/dist/plain/calculate/getWeekNumber.js +33 -12
- package/dist/plain/calculate/getWeekOfMonth.d.ts +4 -2
- package/dist/plain/calculate/getWeekOfMonth.js +8 -3
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +25 -14
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +45 -25
- package/dist/plain/calculate/getWeeksInMonth.d.ts +4 -2
- package/dist/plain/calculate/getWeeksInMonth.js +8 -3
- package/dist/plain/calculate/getWeeksInYear.d.ts +5 -4
- package/dist/plain/calculate/getWeeksInYear.js +9 -14
- package/dist/plain/calculate/index.d.ts +2 -1
- package/dist/plain/calculate/index.js +2 -1
- package/dist/plain/calculate/maxDate.js +19 -12
- package/dist/plain/calculate/maxDateTime.js +19 -12
- package/dist/plain/calculate/maxTime.js +19 -12
- package/dist/plain/calculate/minDate.js +19 -12
- package/dist/plain/calculate/minDateTime.js +19 -12
- package/dist/plain/calculate/minTime.js +19 -12
- package/dist/plain/calculate/nextWeekday.js +5 -0
- package/dist/plain/calculate/previousWeekday.js +5 -0
- package/dist/plain/calculate/roundDate.d.ts +23 -5
- package/dist/plain/calculate/roundDate.js +88 -46
- package/dist/plain/calculate/roundDateTime.d.ts +27 -3
- package/dist/plain/calculate/roundDateTime.js +128 -69
- package/dist/plain/calculate/roundTime.d.ts +8 -1
- package/dist/plain/calculate/roundTime.js +32 -17
- package/dist/plain/calculate/setDate.js +4 -0
- package/dist/plain/calculate/setDateTime.js +4 -0
- package/dist/plain/calculate/setTime.d.ts +1 -1
- package/dist/plain/calculate/setTime.js +5 -1
- package/dist/plain/calculate/sortDateTimes.js +17 -10
- package/dist/plain/calculate/sortDates.js +17 -10
- package/dist/plain/calculate/sortTimes.js +17 -10
- package/dist/plain/calculate/startOfDate.d.ts +7 -2
- package/dist/plain/calculate/startOfDate.js +52 -27
- package/dist/plain/calculate/startOfDateTime.d.ts +5 -2
- package/dist/plain/calculate/startOfDateTime.js +81 -62
- package/dist/plain/calculate/startOfQuarterForDateTime.d.ts +2 -0
- package/dist/plain/calculate/startOfQuarterForDateTime.js +12 -1
- package/dist/plain/calculate/startOfTime.d.ts +15 -2
- package/dist/plain/calculate/startOfTime.js +33 -37
- package/dist/plain/calculate/subtractBusinessDays.d.ts +25 -10
- package/dist/plain/calculate/subtractBusinessDays.js +28 -22
- package/dist/plain/calculate/subtractDate.d.ts +8 -7
- package/dist/plain/calculate/subtractDate.js +35 -21
- package/dist/plain/calculate/subtractDateTime.js +24 -10
- package/dist/plain/calculate/subtractTime.d.ts +5 -8
- package/dist/plain/calculate/subtractTime.js +23 -16
- package/dist/plain/calculate/{weekOfYear.d.ts → weekOfYearForDate.d.ts} +0 -14
- package/dist/plain/calculate/weekOfYearForDate.js +28 -0
- package/dist/plain/calculate/weekOfYearForDateTime.d.ts +14 -0
- package/dist/plain/calculate/{weekOfYear.js → weekOfYearForDateTime.js} +1 -27
- package/dist/plain/chop/index.d.ts +0 -1
- package/dist/plain/chop/index.js +0 -1
- package/dist/plain/compare/areDateTimesEqualBy.d.ts +10 -5
- package/dist/plain/compare/areDateTimesEqualBy.js +35 -10
- package/dist/plain/compare/areDatesEqualBy.d.ts +10 -3
- package/dist/plain/compare/areDatesEqualBy.js +41 -14
- package/dist/plain/compare/isBetweenDate.js +32 -16
- package/dist/plain/compare/isBetweenDateTime.js +34 -18
- package/dist/plain/compare/isBetweenTime.js +32 -16
- package/dist/plain/compare/isBusinessDay.d.ts +25 -11
- package/dist/plain/compare/isBusinessDay.js +36 -15
- package/dist/plain/compare/isThisUnit.d.ts +13 -4
- package/dist/plain/compare/isThisUnit.js +33 -13
- package/dist/plain/compare/isWeekend.d.ts +8 -4
- package/dist/plain/compare/isWeekend.js +7 -3
- package/dist/plain/convert/convertDateToCalendar.d.ts +34 -33
- package/dist/plain/convert/convertDateToCalendar.js +41 -40
- package/dist/plain/format/formatCalendar.d.ts +14 -8
- package/dist/plain/format/formatCalendar.js +47 -25
- package/dist/plain/format/formatDate.d.ts +22 -4
- package/dist/plain/format/formatDate.js +37 -5
- package/dist/plain/format/formatDateRange.d.ts +18 -4
- package/dist/plain/format/formatDateRange.js +29 -5
- package/dist/plain/format/formatDateTime.d.ts +23 -4
- package/dist/plain/format/formatDateTime.js +31 -5
- package/dist/plain/format/formatDateTimeRange.d.ts +21 -4
- package/dist/plain/format/formatDateTimeRange.js +29 -5
- package/dist/plain/format/formatDateTimeToParts.d.ts +33 -6
- package/dist/plain/format/formatDateTimeToParts.js +40 -14
- package/dist/plain/format/formatDateToParts.d.ts +25 -3
- package/dist/plain/format/formatDateToParts.js +36 -11
- package/dist/plain/format/formatRelativeDate.d.ts +10 -17
- package/dist/plain/format/formatRelativeDate.js +39 -24
- package/dist/plain/format/formatRelativeDateTime.d.ts +18 -20
- package/dist/plain/format/formatRelativeDateTime.js +35 -33
- package/dist/plain/format/formatRelativeTime.d.ts +11 -18
- package/dist/plain/format/formatRelativeTime.js +36 -21
- package/dist/plain/format/formatSql.d.ts +15 -10
- package/dist/plain/format/formatSql.js +20 -11
- package/dist/plain/format/formatTime.d.ts +19 -4
- package/dist/plain/format/formatTime.js +32 -5
- package/dist/plain/get/getNowUnit.d.ts +5 -3
- package/dist/plain/get/getNowUnit.js +14 -29
- package/dist/plain/index.js +1 -1
- package/dist/plain/interval/intervalAbutsDate.d.ts +12 -7
- package/dist/plain/interval/intervalAbutsDate.js +15 -19
- package/dist/plain/interval/intervalAbutsDateTime.d.ts +9 -7
- package/dist/plain/interval/intervalAbutsDateTime.js +17 -23
- package/dist/plain/interval/intervalAbutsTime.d.ts +11 -5
- package/dist/plain/interval/intervalAbutsTime.js +19 -21
- package/dist/plain/interval/intervalContainsDate.d.ts +17 -10
- package/dist/plain/interval/intervalContainsDate.js +20 -15
- package/dist/plain/interval/intervalContainsDateTime.d.ts +16 -11
- package/dist/plain/interval/intervalContainsDateTime.js +24 -20
- package/dist/plain/interval/intervalContainsTime.d.ts +20 -10
- package/dist/plain/interval/intervalContainsTime.js +28 -19
- package/dist/plain/interval/intervalCountDate.d.ts +13 -8
- package/dist/plain/interval/intervalCountDate.js +46 -14
- package/dist/plain/interval/intervalCountDateTime.d.ts +6 -4
- package/dist/plain/interval/intervalCountDateTime.js +63 -18
- package/dist/plain/interval/intervalCountTime.d.ts +3 -4
- package/dist/plain/interval/intervalCountTime.js +9 -9
- package/dist/plain/interval/intervalDifferenceDate.d.ts +13 -6
- package/dist/plain/interval/intervalDifferenceDate.js +19 -32
- package/dist/plain/interval/intervalDifferenceDateTime.d.ts +10 -4
- package/dist/plain/interval/intervalDifferenceDateTime.js +21 -27
- package/dist/plain/interval/intervalDifferenceTime.d.ts +11 -4
- package/dist/plain/interval/intervalDifferenceTime.js +22 -27
- package/dist/plain/interval/intervalDivideEquallyDate.d.ts +16 -4
- package/dist/plain/interval/intervalDivideEquallyDate.js +57 -33
- package/dist/plain/interval/intervalDivideEquallyDateTime.d.ts +16 -4
- package/dist/plain/interval/intervalDivideEquallyDateTime.js +67 -31
- package/dist/plain/interval/intervalDivideEquallyTime.d.ts +16 -4
- package/dist/plain/interval/intervalDivideEquallyTime.js +58 -31
- package/dist/plain/interval/intervalEngulfsDate.d.ts +16 -9
- package/dist/plain/interval/intervalEngulfsDate.js +19 -12
- package/dist/plain/interval/intervalEngulfsDateTime.d.ts +16 -11
- package/dist/plain/interval/intervalEngulfsDateTime.js +24 -18
- package/dist/plain/interval/intervalEngulfsTime.d.ts +18 -8
- package/dist/plain/interval/intervalEngulfsTime.js +26 -15
- package/dist/plain/interval/intervalFromDurationDate.d.ts +5 -4
- package/dist/plain/interval/intervalFromDurationDate.js +11 -8
- package/dist/plain/interval/intervalFromDurationDateTime.js +4 -0
- package/dist/plain/interval/intervalFromDurationTime.d.ts +10 -12
- package/dist/plain/interval/intervalFromDurationTime.js +28 -17
- package/dist/plain/interval/intervalIntersectionDate.d.ts +9 -4
- package/dist/plain/interval/intervalIntersectionDate.js +14 -9
- package/dist/plain/interval/intervalIntersectionDateTime.d.ts +9 -4
- package/dist/plain/interval/intervalIntersectionDateTime.js +19 -13
- package/dist/plain/interval/intervalIntersectionTime.d.ts +7 -3
- package/dist/plain/interval/intervalIntersectionTime.js +17 -12
- package/dist/plain/interval/intervalLengthDate.d.ts +9 -6
- package/dist/plain/interval/intervalLengthDate.js +40 -8
- package/dist/plain/interval/intervalLengthDateTime.js +2 -2
- package/dist/plain/interval/intervalOverlappingDaysDate.d.ts +16 -17
- package/dist/plain/interval/intervalOverlappingDaysDate.js +30 -30
- package/dist/plain/interval/intervalOverlappingDaysDateTime.d.ts +7 -12
- package/dist/plain/interval/intervalOverlappingDaysDateTime.js +24 -24
- package/dist/plain/interval/intervalSplitAtDate.d.ts +10 -5
- package/dist/plain/interval/intervalSplitAtDate.js +48 -36
- package/dist/plain/interval/intervalSplitAtDateTime.d.ts +9 -4
- package/dist/plain/interval/intervalSplitAtDateTime.js +44 -32
- package/dist/plain/interval/intervalSplitAtTime.d.ts +9 -4
- package/dist/plain/interval/intervalSplitAtTime.js +44 -32
- package/dist/plain/interval/intervalUnionDate.d.ts +14 -6
- package/dist/plain/interval/intervalUnionDate.js +19 -11
- package/dist/plain/interval/intervalUnionDateTime.d.ts +12 -5
- package/dist/plain/interval/intervalUnionDateTime.js +22 -14
- package/dist/plain/interval/intervalUnionTime.d.ts +10 -3
- package/dist/plain/interval/intervalUnionTime.js +20 -12
- package/dist/plain/interval/intervalXorAllDate.d.ts +11 -10
- package/dist/plain/interval/intervalXorAllDate.js +37 -59
- package/dist/plain/interval/intervalXorAllDateTime.d.ts +7 -5
- package/dist/plain/interval/intervalXorAllDateTime.js +28 -48
- package/dist/plain/interval/intervalXorAllTime.d.ts +8 -4
- package/dist/plain/interval/intervalXorAllTime.js +29 -47
- package/dist/plain/interval/intervalXorDate.d.ts +10 -9
- package/dist/plain/interval/intervalXorDate.js +19 -54
- package/dist/plain/interval/intervalXorDateTime.d.ts +9 -7
- package/dist/plain/interval/intervalXorDateTime.js +23 -50
- package/dist/plain/interval/intervalXorTime.d.ts +8 -7
- package/dist/plain/interval/intervalXorTime.js +22 -50
- package/dist/plain/interval/intervalsOverlapDate.d.ts +14 -7
- package/dist/plain/interval/intervalsOverlapDate.js +17 -10
- package/dist/plain/interval/intervalsOverlapDateTime.d.ts +12 -7
- package/dist/plain/interval/intervalsOverlapDateTime.js +20 -14
- package/dist/plain/interval/intervalsOverlapTime.d.ts +10 -5
- package/dist/plain/interval/intervalsOverlapTime.js +18 -12
- package/dist/plain/interval/mergeIntervalsDate.d.ts +9 -5
- package/dist/plain/interval/mergeIntervalsDate.js +37 -38
- package/dist/plain/interval/mergeIntervalsDateTime.d.ts +7 -3
- package/dist/plain/interval/mergeIntervalsDateTime.js +31 -32
- package/dist/plain/interval/mergeIntervalsTime.d.ts +7 -3
- package/dist/plain/interval/mergeIntervalsTime.js +31 -31
- package/dist/plain/interval/splitIntervalByUnitDate.d.ts +26 -6
- package/dist/plain/interval/splitIntervalByUnitDate.js +76 -43
- package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +22 -2
- package/dist/plain/interval/splitIntervalByUnitDateTime.js +65 -39
- package/dist/plain/interval/splitIntervalByUnitTime.d.ts +18 -2
- package/dist/plain/interval/splitIntervalByUnitTime.js +76 -39
- package/dist/plain/interval/validate/isValidDateInterval.d.ts +4 -2
- package/dist/plain/interval/validate/isValidDateInterval.js +4 -2
- package/dist/plain/interval/validate/isValidDateTimeInterval.d.ts +5 -0
- package/dist/plain/interval/validate/isValidDateTimeInterval.js +7 -2
- package/dist/plain/interval/validate/isValidTimeInterval.d.ts +5 -0
- package/dist/plain/interval/validate/isValidTimeInterval.js +8 -18
- package/dist/plain/locale/getLocaleEraNames.d.ts +14 -4
- package/dist/plain/locale/getLocaleEraNames.js +56 -41
- package/dist/plain/locale/getLocaleMeridiems.d.ts +7 -4
- package/dist/plain/locale/getLocaleMeridiems.js +28 -22
- package/dist/plain/locale/getLocaleMonthNames.d.ts +14 -4
- package/dist/plain/locale/getLocaleMonthNames.js +34 -19
- package/dist/plain/locale/getLocaleWeekdayNames.d.ts +14 -7
- package/dist/plain/locale/getLocaleWeekdayNames.js +40 -22
- package/dist/plain/map/mapDatesInRange.d.ts +18 -1
- package/dist/plain/map/mapDatesInRange.js +53 -17
- package/dist/plain/parse/parseDateTimeWithPattern.d.ts +3 -2
- package/dist/plain/parse/parseDateTimeWithPattern.js +30 -24
- package/dist/plain/parse/parseDateWithPattern.d.ts +3 -2
- package/dist/plain/parse/parseDateWithPattern.js +22 -16
- package/dist/plain/parse/parseMicrosecondFromDateTime.d.ts +2 -1
- package/dist/plain/parse/parseMicrosecondFromDateTime.js +2 -1
- package/dist/plain/parse/parseMicrosecondFromTime.d.ts +2 -1
- package/dist/plain/parse/parseMicrosecondFromTime.js +2 -1
- package/dist/plain/parse/parseNanosecondFromDateTime.d.ts +2 -1
- package/dist/plain/parse/parseNanosecondFromDateTime.js +2 -1
- package/dist/plain/parse/parseNanosecondFromTime.d.ts +2 -1
- package/dist/plain/parse/parseNanosecondFromTime.js +2 -1
- package/dist/plain/parse/parseSql.d.ts +15 -12
- package/dist/plain/parse/parseSql.js +16 -13
- package/dist/plain/parse/parseTimeWithPattern.d.ts +3 -2
- package/dist/plain/parse/parseTimeWithPattern.js +27 -21
- package/dist/plain/parse/parseUnitFromDate.d.ts +9 -2
- package/dist/plain/parse/parseUnitFromDate.js +39 -19
- package/dist/plain/parse/parseUnitFromDateTime.d.ts +11 -3
- package/dist/plain/parse/parseUnitFromDateTime.js +54 -28
- package/dist/plain/parse/parseUnitFromTime.d.ts +9 -3
- package/dist/plain/parse/parseUnitFromTime.js +13 -3
- package/dist/plain/parse/parseWeekFromDate.d.ts +5 -0
- package/dist/plain/parse/parseWeekFromDate.js +24 -5
- package/dist/plain/parse/parseWeekFromDateTime.d.ts +5 -0
- package/dist/plain/parse/parseWeekFromDateTime.js +26 -5
- package/dist/plain/validate/isLeapSecond.d.ts +27 -9
- package/dist/plain/validate/isLeapSecond.js +30 -9
- package/dist/plain/validate/isLeapYear.d.ts +7 -1
- package/dist/plain/validate/isLeapYear.js +10 -1
- package/dist/plain/validate/isValidCalendarDate.d.ts +37 -6
- package/dist/plain/validate/isValidCalendarDate.js +37 -6
- package/dist/plain/validate/isValidDate.d.ts +9 -1
- package/dist/plain/validate/isValidDate.js +14 -5
- package/dist/plain/validate/isValidDateRange.d.ts +11 -4
- package/dist/plain/validate/isValidDateRange.js +32 -22
- package/dist/plain/validate/isValidDateTime.d.ts +7 -1
- package/dist/plain/validate/isValidDateTime.js +12 -5
- package/dist/plain/validate/isValidDateTimeRange.d.ts +3 -2
- package/dist/plain/validate/isValidDateTimeRange.js +30 -15
- package/dist/plain/validate/isValidIsoDateLike.d.ts +6 -1
- package/dist/plain/validate/isValidIsoDateLike.js +13 -8
- package/dist/plain/validate/isValidTime.d.ts +6 -1
- package/dist/plain/validate/isValidTime.js +10 -3
- package/dist/plain/validate/isValidTimeRange.d.ts +4 -2
- package/dist/plain/validate/isValidTimeRange.js +31 -27
- package/dist/precision/calculate/index.d.ts +1 -0
- package/dist/precision/calculate/index.js +1 -0
- package/dist/precision/calculate/truncateNanoseconds.d.ts +37 -0
- package/dist/precision/calculate/truncateNanoseconds.js +41 -0
- package/dist/precision/convert/fromDotNetTicks.d.ts +30 -0
- package/dist/precision/convert/fromDotNetTicks.js +39 -0
- package/dist/precision/convert/fromExcelSerial.d.ts +38 -0
- package/dist/precision/convert/fromExcelSerial.js +81 -0
- package/dist/precision/convert/fromFileTime.d.ts +30 -0
- package/dist/precision/convert/fromFileTime.js +39 -0
- package/dist/precision/convert/fromNanoseconds.d.ts +29 -0
- package/dist/precision/convert/fromNanoseconds.js +50 -0
- package/dist/precision/convert/fromNtpTimestamp.d.ts +43 -0
- package/dist/precision/convert/fromNtpTimestamp.js +57 -0
- package/dist/precision/convert/fromPgMicroseconds.d.ts +26 -0
- package/dist/precision/convert/fromPgMicroseconds.js +33 -0
- package/dist/precision/convert/index.d.ts +12 -0
- package/dist/precision/convert/index.js +12 -0
- package/dist/precision/convert/toDotNetTicks.d.ts +29 -0
- package/dist/precision/convert/toDotNetTicks.js +40 -0
- package/dist/precision/convert/toExcelSerial.d.ts +56 -0
- package/dist/precision/convert/toExcelSerial.js +85 -0
- package/dist/precision/convert/toFileTime.d.ts +31 -0
- package/dist/precision/convert/toFileTime.js +43 -0
- package/dist/precision/convert/toNanoseconds.d.ts +37 -0
- package/dist/precision/convert/toNanoseconds.js +40 -0
- package/dist/precision/convert/toNtpTimestamp.d.ts +30 -0
- package/dist/precision/convert/toNtpTimestamp.js +38 -0
- package/dist/precision/convert/toPgMicroseconds.d.ts +29 -0
- package/dist/precision/convert/toPgMicroseconds.js +42 -0
- package/dist/precision/format/formatNanoseconds.d.ts +26 -0
- package/dist/precision/format/formatNanoseconds.js +32 -0
- package/dist/precision/format/index.d.ts +1 -0
- package/dist/precision/format/index.js +1 -0
- package/dist/precision/index.d.ts +6 -0
- package/dist/precision/index.js +7 -0
- package/dist/precision/parse/index.d.ts +1 -0
- package/dist/precision/parse/index.js +1 -0
- package/dist/precision/parse/parseNanoseconds.d.ts +27 -0
- package/dist/precision/parse/parseNanoseconds.js +32 -0
- package/dist/precision/validate/index.d.ts +3 -0
- package/dist/precision/validate/index.js +3 -0
- package/dist/precision/validate/isValidInstant.d.ts +37 -0
- package/dist/precision/validate/isValidInstant.js +40 -0
- package/dist/precision/validate/isValidNanoPattern.d.ts +27 -0
- package/dist/precision/validate/isValidNanoPattern.js +40 -0
- package/dist/precision/validate/isValidNanoseconds.d.ts +25 -0
- package/dist/precision/validate/isValidNanoseconds.js +28 -0
- package/dist/regex/calendar-date.d.ts +30 -0
- package/dist/regex/calendar-date.js +31 -11
- package/dist/regex/calendar-zoned-date-time.d.ts +29 -0
- package/dist/regex/calendar-zoned-date-time.js +30 -41
- package/dist/regex/date-time.d.ts +28 -0
- package/dist/regex/date-time.js +29 -2
- package/dist/regex/date.d.ts +58 -0
- package/dist/regex/date.js +60 -3
- package/dist/regex/http-date.d.ts +19 -0
- package/dist/regex/http-date.js +19 -6
- package/dist/regex/index.d.ts +3 -0
- package/dist/regex/index.js +4 -0
- package/dist/regex/leap-second.d.ts +45 -0
- package/dist/regex/leap-second.js +46 -2
- package/dist/regex/nanoseconds.d.ts +20 -0
- package/dist/regex/nanoseconds.js +20 -0
- package/dist/regex/rfc-2822.d.ts +26 -0
- package/dist/regex/rfc-2822.js +26 -8
- package/dist/regex/rfc-3339.d.ts +26 -0
- package/dist/regex/rfc-3339.js +27 -7
- package/dist/regex/sql-date-time.d.ts +33 -0
- package/dist/regex/sql-date-time.js +34 -7
- package/dist/regex/time-zone-like.d.ts +30 -0
- package/dist/regex/time-zone-like.js +31 -1
- package/dist/regex/time.d.ts +73 -0
- package/dist/regex/time.js +73 -3
- package/dist/regex/unix.d.ts +29 -0
- package/dist/regex/unix.js +29 -0
- package/dist/regex/utc-date-time.d.ts +30 -0
- package/dist/regex/utc-date-time.js +31 -2
- package/dist/regex/utc-offset.d.ts +24 -0
- package/dist/regex/utc-offset.js +24 -0
- package/dist/span/calculate/index.d.ts +3 -0
- package/dist/span/calculate/index.js +3 -0
- package/dist/span/calculate/spanMs.d.ts +52 -0
- package/dist/span/calculate/spanMs.js +80 -0
- package/dist/span/calculate/spanNs.d.ts +43 -0
- package/dist/span/calculate/spanNs.js +51 -0
- package/dist/span/calculate/spanWallClock.d.ts +60 -0
- package/dist/span/calculate/spanWallClock.js +80 -0
- package/dist/span/index.d.ts +3 -0
- package/dist/span/index.js +4 -0
- package/dist/span/validate/index.d.ts +1 -0
- package/dist/span/validate/index.js +1 -0
- package/dist/span/validate/isValidSpan.d.ts +37 -0
- package/dist/span/validate/isValidSpan.js +41 -0
- package/dist/types/business-calendar.d.ts +27 -0
- package/dist/types/business-calendar.js +0 -0
- package/dist/types/calendar-options.d.ts +11 -0
- package/dist/types/calendar-options.js +0 -0
- package/dist/types/calendar-system.d.ts +9 -1
- package/dist/types/datetime-format-options.d.ts +6 -0
- package/dist/types/datetime-format-options.js +0 -0
- package/dist/types/duration-unit.d.ts +5 -0
- package/dist/types/duration-unit.js +0 -0
- package/dist/types/fiscal-calendar.d.ts +22 -0
- package/dist/types/fiscal-calendar.js +0 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.js +16 -0
- package/dist/types/interval.d.ts +18 -0
- package/dist/types/interval.js +0 -0
- package/dist/types/now-unit.d.ts +5 -0
- package/dist/types/now-unit.js +0 -0
- package/dist/types/relative-date-time-unit.d.ts +6 -0
- package/dist/types/relative-date-time-unit.js +0 -0
- package/dist/types/relative-date-unit.d.ts +5 -0
- package/dist/types/relative-date-unit.js +0 -0
- package/dist/types/relative-time-options.d.ts +18 -0
- package/dist/types/relative-time-options.js +0 -0
- package/dist/types/relative-time-unit.d.ts +5 -0
- package/dist/types/relative-time-unit.js +0 -0
- package/dist/types/relative-unit.d.ts +6 -0
- package/dist/types/relative-unit.js +0 -0
- package/dist/types/roll-convention.d.ts +32 -0
- package/dist/types/roll-convention.js +0 -0
- package/dist/types/unix-now-unit.d.ts +5 -0
- package/dist/types/unix-now-unit.js +0 -0
- package/dist/types/utc-now-unit.d.ts +5 -0
- package/dist/types/utc-now-unit.js +0 -0
- package/dist/types/zone-bucket-unit.d.ts +11 -0
- package/dist/types/zone-bucket-unit.js +0 -0
- package/dist/unix/calculate/addUnix.d.ts +10 -4
- package/dist/unix/calculate/addUnix.js +39 -26
- package/dist/unix/calculate/diffUnix.d.ts +38 -11
- package/dist/unix/calculate/diffUnix.js +84 -40
- package/dist/unix/calculate/diffUnixAsDuration.d.ts +17 -7
- package/dist/unix/calculate/diffUnixAsDuration.js +42 -23
- package/dist/unix/calculate/endOfQuarterForUnix.d.ts +15 -11
- package/dist/unix/calculate/endOfQuarterForUnix.js +20 -39
- package/dist/unix/calculate/endOfUnix.d.ts +23 -18
- package/dist/unix/calculate/endOfUnix.js +37 -15
- package/dist/unix/calculate/isBetweenUnix.d.ts +12 -6
- package/dist/unix/calculate/isBetweenUnix.js +34 -23
- package/dist/unix/calculate/maxUnix.d.ts +6 -3
- package/dist/unix/calculate/maxUnix.js +17 -8
- package/dist/unix/calculate/minUnix.d.ts +6 -3
- package/dist/unix/calculate/minUnix.js +17 -8
- package/dist/unix/calculate/roundUnix.d.ts +24 -10
- package/dist/unix/calculate/roundUnix.js +67 -42
- package/dist/unix/calculate/setUnix.d.ts +14 -5
- package/dist/unix/calculate/setUnix.js +48 -29
- package/dist/unix/calculate/sortUnix.d.ts +6 -3
- package/dist/unix/calculate/sortUnix.js +19 -11
- package/dist/unix/calculate/startOfQuarterForUnix.d.ts +17 -12
- package/dist/unix/calculate/startOfQuarterForUnix.js +22 -30
- package/dist/unix/calculate/startOfUnix.d.ts +23 -18
- package/dist/unix/calculate/startOfUnix.js +37 -15
- package/dist/unix/calculate/subtractUnix.d.ts +10 -4
- package/dist/unix/calculate/subtractUnix.js +39 -26
- package/dist/unix/compare/areUnixEqual.d.ts +9 -5
- package/dist/unix/compare/areUnixEqual.js +17 -13
- package/dist/unix/compare/areUnixEqualBy.d.ts +14 -7
- package/dist/unix/compare/areUnixEqualBy.js +14 -7
- package/dist/unix/compare/isAfterUnix.d.ts +8 -4
- package/dist/unix/compare/isAfterUnix.js +16 -12
- package/dist/unix/compare/isBeforeUnix.d.ts +7 -4
- package/dist/unix/compare/isBeforeUnix.js +15 -12
- package/dist/unix/convert/convertUnixToPlainDate.d.ts +17 -9
- package/dist/unix/convert/convertUnixToPlainDate.js +34 -21
- package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +15 -9
- package/dist/unix/convert/convertUnixToPlainDateTime.js +32 -21
- package/dist/unix/convert/convertUnixToPlainTime.d.ts +15 -9
- package/dist/unix/convert/convertUnixToPlainTime.js +32 -21
- package/dist/unix/convert/convertUnixToUtc.d.ts +15 -7
- package/dist/unix/convert/convertUnixToUtc.js +20 -15
- package/dist/unix/convert/convertUnixToZoned.d.ts +17 -10
- package/dist/unix/convert/convertUnixToZoned.js +31 -20
- package/dist/unix/format/formatCalendarUnix.d.ts +35 -6
- package/dist/unix/format/formatCalendarUnix.js +35 -81
- package/dist/unix/format/formatRelativeUnix.d.ts +26 -16
- package/dist/unix/format/formatRelativeUnix.js +46 -93
- package/dist/unix/format/formatUnix.d.ts +43 -2
- package/dist/unix/format/formatUnix.js +65 -32
- package/dist/unix/get/getUnixNow.d.ts +13 -7
- package/dist/unix/get/getUnixNow.js +27 -17
- package/dist/unix/get/getUnixNowUnit.d.ts +7 -5
- package/dist/unix/get/getUnixNowUnit.js +9 -35
- package/dist/unix/index.d.ts +1 -0
- package/dist/unix/index.js +2 -0
- package/dist/unix/interval/intervalAbutsUnix.d.ts +17 -12
- package/dist/unix/interval/intervalAbutsUnix.js +23 -41
- package/dist/unix/interval/intervalContainsUnix.d.ts +17 -7
- package/dist/unix/interval/intervalContainsUnix.js +25 -37
- package/dist/unix/interval/intervalCountUnix.d.ts +30 -13
- package/dist/unix/interval/intervalCountUnix.js +49 -23
- package/dist/unix/interval/intervalDifferenceUnix.d.ts +19 -10
- package/dist/unix/interval/intervalDifferenceUnix.js +25 -43
- package/dist/unix/interval/intervalDivideEquallyUnix.d.ts +24 -10
- package/dist/unix/interval/intervalDivideEquallyUnix.js +57 -36
- package/dist/unix/interval/intervalEngulfsUnix.d.ts +13 -7
- package/dist/unix/interval/intervalEngulfsUnix.js +18 -30
- package/dist/unix/interval/intervalFromDurationUnix.d.ts +10 -6
- package/dist/unix/interval/intervalFromDurationUnix.js +51 -39
- package/dist/unix/interval/intervalIntersectionUnix.d.ts +18 -11
- package/dist/unix/interval/intervalIntersectionUnix.js +25 -46
- package/dist/unix/interval/intervalLengthUnix.d.ts +21 -9
- package/dist/unix/interval/intervalLengthUnix.js +41 -18
- package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +26 -12
- package/dist/unix/interval/intervalOverlappingDaysUnix.js +67 -63
- package/dist/unix/interval/intervalSplitAtUnix.d.ts +11 -6
- package/dist/unix/interval/intervalSplitAtUnix.js +41 -34
- package/dist/unix/interval/intervalUnionUnix.d.ts +15 -9
- package/dist/unix/interval/intervalUnionUnix.js +20 -42
- package/dist/unix/interval/intervalXorAllUnix.d.ts +8 -6
- package/dist/unix/interval/intervalXorAllUnix.js +21 -56
- package/dist/unix/interval/intervalXorUnix.d.ts +22 -11
- package/dist/unix/interval/intervalXorUnix.js +28 -56
- package/dist/unix/interval/intervalsOverlapUnix.d.ts +16 -10
- package/dist/unix/interval/intervalsOverlapUnix.js +21 -37
- package/dist/unix/interval/mergeIntervalsUnix.d.ts +10 -4
- package/dist/unix/interval/mergeIntervalsUnix.js +25 -36
- package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +38 -8
- package/dist/unix/interval/splitIntervalByUnitUnix.js +72 -56
- package/dist/unix/interval/validate/isValidUnixInterval.d.ts +12 -6
- package/dist/unix/interval/validate/isValidUnixInterval.js +17 -16
- package/dist/unix/parse/index.d.ts +2 -0
- package/dist/unix/parse/index.js +2 -0
- package/dist/unix/parse/parseDateFromUnix.d.ts +10 -8
- package/dist/unix/parse/parseDateFromUnix.js +17 -29
- package/dist/unix/parse/parseDayFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseDayFromUnix.js +18 -5
- package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +8 -5
- package/dist/unix/parse/parseDayOfWeekFromUnix.js +15 -28
- package/dist/unix/parse/parseHourFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseHourFromUnix.js +18 -5
- package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMicrosecondFromUnix.js +16 -3
- package/dist/unix/parse/parseMillisecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMillisecondFromUnix.js +16 -3
- package/dist/unix/parse/parseMinuteFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseMinuteFromUnix.js +18 -5
- package/dist/unix/parse/parseMonthFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseMonthFromUnix.js +18 -5
- package/dist/unix/parse/parseNanosecondFromUnix.d.ts +8 -5
- package/dist/unix/parse/parseNanosecondFromUnix.js +20 -6
- package/dist/unix/parse/parseSecondFromUnix.d.ts +5 -3
- package/dist/unix/parse/parseSecondFromUnix.js +17 -4
- package/dist/unix/parse/parseTimeFromUnix.d.ts +10 -8
- package/dist/unix/parse/parseTimeFromUnix.js +17 -29
- package/dist/unix/parse/parseUnitFromUnix.d.ts +40 -9
- package/dist/unix/parse/parseUnitFromUnix.js +57 -55
- package/dist/unix/parse/parseWeekFromUnix.d.ts +15 -7
- package/dist/unix/parse/parseWeekFromUnix.js +32 -30
- package/dist/unix/parse/parseYearFromUnix.d.ts +5 -3
- package/dist/unix/parse/parseYearFromUnix.js +17 -4
- package/dist/unix/validate/isValidUnixMilliseconds.d.ts +8 -5
- package/dist/unix/validate/isValidUnixMilliseconds.js +10 -9
- package/dist/unix/validate/isValidUnixRange.d.ts +13 -7
- package/dist/unix/validate/isValidUnixRange.js +29 -19
- package/dist/unix/validate/isValidUnixSeconds.d.ts +8 -5
- package/dist/unix/validate/isValidUnixSeconds.js +10 -9
- package/dist/unix/validate/isValidUnixUnit.d.ts +22 -5
- package/dist/unix/validate/isValidUnixUnit.js +6 -8
- package/dist/utc/calculate/addUtc.js +26 -12
- package/dist/utc/calculate/diffUtc.d.ts +22 -7
- package/dist/utc/calculate/diffUtc.js +75 -31
- package/dist/utc/calculate/diffUtcAsDuration.d.ts +2 -2
- package/dist/utc/calculate/diffUtcAsDuration.js +10 -3
- package/dist/utc/calculate/endOfQuarterForUtc.d.ts +1 -1
- package/dist/utc/calculate/endOfQuarterForUtc.js +1 -1
- package/dist/utc/calculate/endOfUtc.d.ts +11 -4
- package/dist/utc/calculate/endOfUtc.js +22 -5
- package/dist/utc/calculate/isBetweenUtc.js +40 -24
- package/dist/utc/calculate/maxUtc.js +19 -12
- package/dist/utc/calculate/minUtc.js +19 -12
- package/dist/utc/calculate/roundUtc.d.ts +16 -2
- package/dist/utc/calculate/roundUtc.js +42 -31
- package/dist/utc/calculate/setUtc.d.ts +4 -8
- package/dist/utc/calculate/setUtc.js +25 -18
- package/dist/utc/calculate/sortUtc.js +17 -10
- package/dist/utc/calculate/startOfQuarterForUtc.d.ts +2 -0
- package/dist/utc/calculate/startOfQuarterForUtc.js +12 -1
- package/dist/utc/calculate/startOfUtc.d.ts +6 -4
- package/dist/utc/calculate/startOfUtc.js +17 -5
- package/dist/utc/calculate/subtractUtc.js +26 -12
- package/dist/utc/chop/chopUtc.d.ts +5 -2
- package/dist/utc/chop/chopUtc.js +8 -4
- package/dist/utc/compare/areUtcEqualBy.d.ts +10 -5
- package/dist/utc/compare/areUtcEqualBy.js +34 -11
- package/dist/utc/convert/convertUtcToPlainDate.js +22 -10
- package/dist/utc/convert/convertUtcToPlainDateTime.js +28 -16
- package/dist/utc/convert/convertUtcToPlainTime.js +22 -10
- package/dist/utc/convert/convertUtcToUnix.d.ts +12 -5
- package/dist/utc/convert/convertUtcToUnix.js +22 -13
- package/dist/utc/format/formatCalendarUtc.d.ts +13 -8
- package/dist/utc/format/formatCalendarUtc.js +32 -41
- package/dist/utc/format/formatHttp.d.ts +9 -3
- package/dist/utc/format/formatHttp.js +14 -12
- package/dist/utc/format/formatRelativeUtc.d.ts +20 -18
- package/dist/utc/format/formatRelativeUtc.js +43 -51
- package/dist/utc/format/formatUtc.d.ts +51 -1
- package/dist/utc/format/formatUtc.js +57 -11
- package/dist/utc/get/getUtcNowUnit.d.ts +5 -3
- package/dist/utc/get/getUtcNowUnit.js +11 -33
- package/dist/utc/index.d.ts +1 -0
- package/dist/utc/index.js +2 -0
- package/dist/utc/interval/intervalAbutsUtc.d.ts +10 -7
- package/dist/utc/interval/intervalAbutsUtc.js +18 -30
- package/dist/utc/interval/intervalContainsUtc.d.ts +19 -11
- package/dist/utc/interval/intervalContainsUtc.js +33 -34
- package/dist/utc/interval/intervalCountUtc.d.ts +3 -4
- package/dist/utc/interval/intervalCountUtc.js +12 -18
- package/dist/utc/interval/intervalDifferenceUtc.d.ts +13 -5
- package/dist/utc/interval/intervalDifferenceUtc.js +25 -51
- package/dist/utc/interval/intervalDivideEquallyUtc.d.ts +16 -3
- package/dist/utc/interval/intervalDivideEquallyUtc.js +54 -34
- package/dist/utc/interval/intervalEngulfsUtc.d.ts +17 -12
- package/dist/utc/interval/intervalEngulfsUtc.js +25 -26
- package/dist/utc/interval/intervalFromDurationUtc.js +5 -0
- package/dist/utc/interval/intervalIntersectionUtc.d.ts +12 -6
- package/dist/utc/interval/intervalIntersectionUtc.js +24 -41
- package/dist/utc/interval/intervalLengthUtc.js +5 -7
- package/dist/utc/interval/intervalOverlappingDaysUtc.d.ts +7 -13
- package/dist/utc/interval/intervalOverlappingDaysUtc.js +25 -36
- package/dist/utc/interval/intervalSplitAtUtc.d.ts +7 -2
- package/dist/utc/interval/intervalSplitAtUtc.js +39 -33
- package/dist/utc/interval/intervalUnionUtc.d.ts +15 -7
- package/dist/utc/interval/intervalUnionUtc.js +31 -42
- package/dist/utc/interval/intervalXorAllUtc.d.ts +7 -4
- package/dist/utc/interval/intervalXorAllUtc.js +30 -52
- package/dist/utc/interval/intervalXorUtc.d.ts +8 -6
- package/dist/utc/interval/intervalXorUtc.js +22 -56
- package/dist/utc/interval/intervalsOverlapUtc.d.ts +15 -9
- package/dist/utc/interval/intervalsOverlapUtc.js +23 -39
- package/dist/utc/interval/mergeIntervalsUtc.d.ts +9 -2
- package/dist/utc/interval/mergeIntervalsUtc.js +23 -36
- package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +23 -2
- package/dist/utc/interval/splitIntervalByUnitUtc.js +65 -44
- package/dist/utc/interval/validate/isValidUtcInterval.d.ts +5 -0
- package/dist/utc/interval/validate/isValidUtcInterval.js +7 -6
- package/dist/utc/parse/parseDateFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseDateFromUtc.js +14 -9
- package/dist/utc/parse/parseDayFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseDayFromUtc.js +14 -8
- package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseDayOfWeekFromUtc.js +24 -6
- package/dist/utc/parse/parseHourFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseHourFromUtc.js +14 -8
- package/dist/utc/parse/parseHttp.d.ts +39 -14
- package/dist/utc/parse/parseHttp.js +69 -28
- package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +9 -2
- package/dist/utc/parse/parseMicrosecondFromUtc.js +18 -9
- package/dist/utc/parse/parseMillisecondFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseMillisecondFromUtc.js +16 -8
- package/dist/utc/parse/parseMinuteFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseMinuteFromUtc.js +14 -8
- package/dist/utc/parse/parseMonthFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseMonthFromUtc.js +14 -8
- package/dist/utc/parse/parseNanosecondFromUtc.d.ts +9 -2
- package/dist/utc/parse/parseNanosecondFromUtc.js +18 -9
- package/dist/utc/parse/parseSecondFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseSecondFromUtc.js +14 -8
- package/dist/utc/parse/parseTimeFromUtc.js +21 -10
- package/dist/utc/parse/parseUnitFromUtc.d.ts +39 -5
- package/dist/utc/parse/parseUnitFromUtc.js +58 -31
- package/dist/utc/parse/parseWeekFromUtc.d.ts +16 -3
- package/dist/utc/parse/parseWeekFromUtc.js +38 -10
- package/dist/utc/parse/parseYearFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseYearFromUtc.js +14 -8
- package/dist/utc/validate/isValidUtc.d.ts +8 -1
- package/dist/utc/validate/isValidUtc.js +12 -3
- package/dist/utc/validate/isValidUtcRange.d.ts +3 -2
- package/dist/utc/validate/isValidUtcRange.js +30 -19
- package/dist/zoned/calculate/addZoned.d.ts +40 -27
- package/dist/zoned/calculate/addZoned.js +71 -56
- package/dist/zoned/calculate/addZonedBusinessDays.d.ts +2 -0
- package/dist/zoned/calculate/addZonedBusinessDays.js +5 -2
- package/dist/zoned/calculate/clampZoned.js +4 -3
- package/dist/zoned/calculate/closestZonedTo.d.ts +6 -6
- package/dist/zoned/calculate/closestZonedTo.js +35 -26
- package/dist/zoned/calculate/cycleZoned.d.ts +10 -7
- package/dist/zoned/calculate/cycleZoned.js +19 -11
- package/dist/zoned/calculate/diffZoned.d.ts +39 -17
- package/dist/zoned/calculate/diffZoned.js +90 -45
- package/dist/zoned/calculate/diffZonedAsDuration.d.ts +19 -9
- package/dist/zoned/calculate/diffZonedAsDuration.js +32 -15
- package/dist/zoned/calculate/endOfQuarterForZoned.d.ts +11 -11
- package/dist/zoned/calculate/endOfQuarterForZoned.js +32 -31
- package/dist/zoned/calculate/endOfZoned.d.ts +21 -14
- package/dist/zoned/calculate/endOfZoned.js +25 -111
- package/dist/zoned/calculate/getHoursInZonedDay.d.ts +8 -1
- package/dist/zoned/calculate/getHoursInZonedDay.js +10 -14
- package/dist/zoned/calculate/getLocaleZonedDayOfWeek.d.ts +8 -4
- package/dist/zoned/calculate/getLocaleZonedDayOfWeek.js +9 -6
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +20 -26
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +40 -44
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +16 -24
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +36 -42
- package/dist/zoned/calculate/getQuarterForZoned.js +2 -2
- package/dist/zoned/calculate/maxZoned.js +20 -12
- package/dist/zoned/calculate/minZoned.d.ts +1 -1
- package/dist/zoned/calculate/minZoned.js +21 -13
- package/dist/zoned/calculate/roundZoned.d.ts +18 -4
- package/dist/zoned/calculate/roundZoned.js +58 -33
- package/dist/zoned/calculate/setZoned.d.ts +9 -3
- package/dist/zoned/calculate/setZoned.js +39 -18
- package/dist/zoned/calculate/sortZoned.js +18 -10
- package/dist/zoned/calculate/startOfQuarterForZoned.d.ts +4 -7
- package/dist/zoned/calculate/startOfQuarterForZoned.js +23 -17
- package/dist/zoned/calculate/startOfZoned.d.ts +17 -13
- package/dist/zoned/calculate/startOfZoned.js +21 -103
- package/dist/zoned/calculate/subtractZoned.d.ts +36 -24
- package/dist/zoned/calculate/subtractZoned.js +66 -50
- package/dist/zoned/calculate/subtractZonedBusinessDays.d.ts +2 -0
- package/dist/zoned/calculate/subtractZonedBusinessDays.js +5 -2
- package/dist/zoned/chop/chopZonedDate.js +2 -2
- package/dist/zoned/chop/chopZonedDateTime.js +2 -2
- package/dist/zoned/chop/chopZonedMilliseconds.js +2 -2
- package/dist/zoned/chop/chopZonedSeconds.js +2 -2
- package/dist/zoned/chop/chopZonedTime.js +2 -2
- package/dist/zoned/chop/chopZonedTimezone.js +2 -2
- package/dist/zoned/compare/areZonedEqual.js +3 -2
- package/dist/zoned/compare/areZonedEqualBy.d.ts +15 -2
- package/dist/zoned/compare/areZonedEqualBy.js +45 -12
- package/dist/zoned/compare/isAfterZoned.js +3 -2
- package/dist/zoned/compare/isBeforeZoned.d.ts +1 -1
- package/dist/zoned/compare/isBeforeZoned.js +4 -3
- package/dist/zoned/compare/isBetweenZoned.js +46 -29
- package/dist/zoned/compare/isInDaylightSaving.js +4 -4
- package/dist/zoned/compare/isZonedBusinessDay.d.ts +7 -4
- package/dist/zoned/compare/isZonedBusinessDay.js +9 -6
- package/dist/zoned/compare/isZonedFuture.js +2 -1
- package/dist/zoned/compare/isZonedPast.js +2 -1
- package/dist/zoned/compare/isZonedRelativeDay.js +2 -1
- package/dist/zoned/compare/isZonedThisUnit.d.ts +12 -4
- package/dist/zoned/compare/isZonedThisUnit.js +37 -16
- package/dist/zoned/compare/isZonedWeekend.d.ts +8 -4
- package/dist/zoned/compare/isZonedWeekend.js +9 -6
- package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +10 -5
- package/dist/zoned/convert/convertPlainDateTimeToZoned.js +34 -16
- package/dist/zoned/convert/convertZonedToCalendar.d.ts +26 -38
- package/dist/zoned/convert/convertZonedToCalendar.js +33 -48
- package/dist/zoned/convert/convertZonedToPlainDateTime.d.ts +6 -0
- package/dist/zoned/convert/convertZonedToPlainDateTime.js +8 -2
- package/dist/zoned/convert/convertZonedToUnix.d.ts +12 -6
- package/dist/zoned/convert/convertZonedToUnix.js +23 -16
- package/dist/zoned/convert/convertZonedToUtc.js +2 -2
- package/dist/zoned/convert/convertZonedToZoned.js +2 -2
- package/dist/zoned/format/formatCalendarZoned.d.ts +7 -3
- package/dist/zoned/format/formatCalendarZoned.js +37 -39
- package/dist/zoned/format/formatRelativeZoned.d.ts +16 -14
- package/dist/zoned/format/formatRelativeZoned.js +54 -54
- package/dist/zoned/format/formatRfc2822.d.ts +14 -1
- package/dist/zoned/format/formatRfc2822.js +27 -13
- package/dist/zoned/format/formatRfc3339.d.ts +14 -1
- package/dist/zoned/format/formatRfc3339.js +29 -3
- package/dist/zoned/format/formatTimeZoneName.d.ts +18 -2
- package/dist/zoned/format/formatTimeZoneName.js +28 -18
- package/dist/zoned/format/formatZonedDateTime.d.ts +26 -5
- package/dist/zoned/format/formatZonedDateTime.js +40 -9
- package/dist/zoned/format/formatZonedRange.d.ts +25 -6
- package/dist/zoned/format/formatZonedRange.js +61 -28
- package/dist/zoned/format/formatZonedToParts.d.ts +30 -6
- package/dist/zoned/format/formatZonedToParts.js +42 -13
- package/dist/zoned/get/getDstTransitions.d.ts +24 -3
- package/dist/zoned/get/getDstTransitions.js +17 -15
- package/dist/zoned/get/getTimeZoneOffset.d.ts +11 -1
- package/dist/zoned/get/getTimeZoneOffset.js +19 -2
- package/dist/zoned/get/getZonedNow.js +20 -9
- package/dist/zoned/get/getZonedNowUnit.d.ts +30 -2
- package/dist/zoned/get/getZonedNowUnit.js +15 -31
- package/dist/zoned/index.js +1 -1
- package/dist/zoned/interval/intervalAbutsZoned.d.ts +18 -11
- package/dist/zoned/interval/intervalAbutsZoned.js +24 -25
- package/dist/zoned/interval/intervalContainsZoned.d.ts +16 -7
- package/dist/zoned/interval/intervalContainsZoned.js +22 -14
- package/dist/zoned/interval/intervalCountZoned.d.ts +19 -11
- package/dist/zoned/interval/intervalCountZoned.js +32 -27
- package/dist/zoned/interval/intervalDifferenceZoned.d.ts +14 -8
- package/dist/zoned/interval/intervalDifferenceZoned.js +25 -37
- package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +18 -9
- package/dist/zoned/interval/intervalDivideEquallyZoned.js +67 -46
- package/dist/zoned/interval/intervalEngulfsZoned.d.ts +10 -5
- package/dist/zoned/interval/intervalEngulfsZoned.js +16 -10
- package/dist/zoned/interval/intervalFromDurationZoned.d.ts +25 -11
- package/dist/zoned/interval/intervalFromDurationZoned.js +61 -44
- package/dist/zoned/interval/intervalIntersectionZoned.d.ts +12 -6
- package/dist/zoned/interval/intervalIntersectionZoned.js +24 -18
- package/dist/zoned/interval/intervalLengthZoned.d.ts +15 -6
- package/dist/zoned/interval/intervalLengthZoned.js +23 -9
- package/dist/zoned/interval/intervalOverlappingDaysZoned.d.ts +28 -17
- package/dist/zoned/interval/intervalOverlappingDaysZoned.js +46 -34
- package/dist/zoned/interval/intervalSplitAtZoned.d.ts +6 -3
- package/dist/zoned/interval/intervalSplitAtZoned.js +52 -42
- package/dist/zoned/interval/intervalUnionZoned.d.ts +14 -8
- package/dist/zoned/interval/intervalUnionZoned.js +25 -20
- package/dist/zoned/interval/intervalXorAllZoned.d.ts +9 -7
- package/dist/zoned/interval/intervalXorAllZoned.js +42 -73
- package/dist/zoned/interval/intervalXorZoned.d.ts +20 -10
- package/dist/zoned/interval/intervalXorZoned.js +34 -62
- package/dist/zoned/interval/intervalsOverlapZoned.d.ts +15 -7
- package/dist/zoned/interval/intervalsOverlapZoned.js +21 -12
- package/dist/zoned/interval/mergeIntervalsZoned.d.ts +10 -3
- package/dist/zoned/interval/mergeIntervalsZoned.js +44 -41
- package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +28 -5
- package/dist/zoned/interval/splitIntervalByUnitZoned.js +72 -39
- package/dist/zoned/interval/validate/isValidCalendarZonedInterval.d.ts +13 -10
- package/dist/zoned/interval/validate/isValidCalendarZonedInterval.js +13 -10
- package/dist/zoned/interval/validate/isValidZonedInterval.d.ts +7 -5
- package/dist/zoned/interval/validate/isValidZonedInterval.js +12 -16
- package/dist/zoned/map/mapZonedDatesInRange.d.ts +17 -1
- package/dist/zoned/map/mapZonedDatesInRange.js +62 -26
- package/dist/zoned/map/mapZonedHoursInDay.d.ts +10 -13
- package/dist/zoned/map/mapZonedHoursInDay.js +13 -21
- package/dist/zoned/parse/getZonedOffset.js +2 -2
- package/dist/zoned/parse/getZonedOffsetAs.d.ts +15 -2
- package/dist/zoned/parse/getZonedOffsetAs.js +10 -5
- package/dist/zoned/parse/parseDateFromZoned.js +2 -2
- package/dist/zoned/parse/parseDateTimeFromZoned.js +2 -2
- package/dist/zoned/parse/parseDayFromZoned.js +2 -2
- package/dist/zoned/parse/parseDayOfWeekFromZoned.js +2 -2
- package/dist/zoned/parse/parseHourFromZoned.js +2 -2
- package/dist/zoned/parse/parseMicrosecondFromZoned.d.ts +2 -1
- package/dist/zoned/parse/parseMicrosecondFromZoned.js +4 -3
- package/dist/zoned/parse/parseMillisecondFromZoned.js +2 -2
- package/dist/zoned/parse/parseMinuteFromZoned.js +2 -2
- package/dist/zoned/parse/parseMonthFromZoned.js +2 -2
- package/dist/zoned/parse/parseNanosecondFromZoned.d.ts +2 -1
- package/dist/zoned/parse/parseNanosecondFromZoned.js +4 -3
- package/dist/zoned/parse/parseRfc2822.d.ts +32 -12
- package/dist/zoned/parse/parseRfc2822.js +47 -45
- package/dist/zoned/parse/parseRfc3339.d.ts +6 -0
- package/dist/zoned/parse/parseRfc3339.js +6 -0
- package/dist/zoned/parse/parseSecondFromZoned.js +2 -2
- package/dist/zoned/parse/parseTimeFromZoned.js +2 -2
- package/dist/zoned/parse/parseTimeZoneFromZoned.js +2 -2
- package/dist/zoned/parse/parseUnitFromZoned.d.ts +36 -3
- package/dist/zoned/parse/parseUnitFromZoned.js +59 -33
- package/dist/zoned/parse/parseWeekFromZoned.d.ts +13 -3
- package/dist/zoned/parse/parseWeekFromZoned.js +34 -10
- package/dist/zoned/parse/parseYearFromZoned.js +2 -2
- package/dist/zoned/validate/hasDaylightSaving.js +3 -3
- package/dist/zoned/validate/isValidCalendarZonedDateTime.d.ts +31 -16
- package/dist/zoned/validate/isValidCalendarZonedDateTime.js +31 -16
- package/dist/zoned/validate/isValidTimeZone.d.ts +15 -2
- package/dist/zoned/validate/isValidTimeZone.js +17 -4
- package/dist/zoned/validate/isValidZonedDateTime.d.ts +14 -7
- package/dist/zoned/validate/isValidZonedDateTime.js +20 -12
- package/dist/zoned/validate/isValidZonedRange.d.ts +9 -2
- package/dist/zoned/validate/isValidZonedRange.js +44 -16
- package/package.json +487 -28
- package/skills/gmt-arithmetic/SKILL.md +264 -0
- package/skills/gmt-basics/SKILL.md +127 -0
- package/skills/gmt-integration/SKILL.md +119 -0
- package/skills/gmt-timezone/SKILL.md +197 -0
- package/dist/internal/advanceBusinessDays.d.ts +0 -2
- package/dist/internal/advanceBusinessDays.js +0 -15
- package/dist/internal/ethiopicFamilyCalendar.d.ts +0 -47
- package/dist/internal/ethiopicFamilyCalendar.js +0 -136
- package/dist/internal/getLocaleMinimalDaysInFirstWeek.d.ts +0 -20
- package/dist/internal/getLocaleMinimalDaysInFirstWeek.js +0 -31
- package/dist/internal/resolveUnixTimeZone.d.ts +0 -20
- package/dist/internal/resolveUnixTimeZone.js +0 -30
- package/dist/unix/calculate/startOrEndOfUnix.d.ts +0 -9
- package/dist/unix/calculate/startOrEndOfUnix.js +0 -122
- package/dist/unix/interval/resolveUnixIntervalPair.d.ts +0 -7
- package/dist/unix/interval/resolveUnixIntervalPair.js +0 -36
- package/dist/utc/calculate/startOrEndOfUtc.d.ts +0 -6
- package/skills/_artifacts/domain_map.yaml +0 -547
- package/skills/_artifacts/skill_spec.md +0 -67
- package/skills/_artifacts/skill_tree.yaml +0 -278
- package/skills/api-expansion-workflow/SKILL.md +0 -52
- package/skills/app-integration/SKILL.md +0 -38
- package/skills/calculate-dates/SKILL.md +0 -432
- package/skills/compare-dates/SKILL.md +0 -412
- package/skills/convert-types/SKILL.md +0 -305
- package/skills/durations/SKILL.md +0 -418
- package/skills/format-date-time/SKILL.md +0 -486
- package/skills/format-date-time/references/format-api.md +0 -34
- package/skills/format-relative-time/SKILL.md +0 -223
- package/skills/get-current/SKILL.md +0 -229
- package/skills/interval-ops/SKILL.md +0 -432
- package/skills/issue-creation/SKILL.md +0 -118
- package/skills/lint-package-suggestion/SKILL.md +0 -37
- package/skills/new-method-implementation/SKILL.md +0 -71
- package/skills/parse-date-time/SKILL.md +0 -349
- package/skills/pr-contribution/SKILL.md +0 -180
- package/skills/unit-test-generation/SKILL.md +0 -56
- package/skills/validate-dates/SKILL.md +0 -438
- package/skills/zoned-date-ops/SKILL.md +0 -422
- package/skills/zoned-date-ops/references/timezones.md +0 -13
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import { MAX_ISO_EPOCH_DAYS } from "../zonedWallClock.js";
|
|
3
|
+
import { calendarFieldsOf } from "./calendarFields.js";
|
|
4
|
+
/*
|
|
5
|
+
* Read-only fields → ISO search. Calendar fields increase strictly with ISO order under the key
|
|
6
|
+
* (year, ordinal month, day), and a read (`calendarFieldsOf`) is correct for every in-range ISO
|
|
7
|
+
* date, so binary search over epoch days finds the ISO date for any fields without any calendar
|
|
8
|
+
* rule. It replaces the polyfill's `calendarToIsoDate` only where that throws (defect D1).
|
|
9
|
+
*/
|
|
10
|
+
/** TC39 `ISODateWithinLimits`: -271821-04-19 is one day before -10^8 epoch days. */
|
|
11
|
+
const MIN_EPOCH_DAY = -(MAX_ISO_EPOCH_DAYS + 1);
|
|
12
|
+
const MAX_EPOCH_DAY = MAX_ISO_EPOCH_DAYS;
|
|
13
|
+
/** 2^64 days covers any window; the full range needs 28 halvings. */
|
|
14
|
+
const MAX_BISECTION_STEPS = 64;
|
|
15
|
+
const UNIX_EPOCH_DATE = new Temporal.PlainDate(1970, 1, 1);
|
|
16
|
+
function dateAt(epochDay) {
|
|
17
|
+
return UNIX_EPOCH_DATE.add({ days: epochDay });
|
|
18
|
+
}
|
|
19
|
+
function compareKeys(a, b) {
|
|
20
|
+
return a.year - b.year || a.month - b.month || a.day - b.day;
|
|
21
|
+
}
|
|
22
|
+
function keyAt(calendarId, epochDay) {
|
|
23
|
+
return calendarFieldsOf(dateAt(epochDay), calendarId);
|
|
24
|
+
}
|
|
25
|
+
function epochDayOf(date) {
|
|
26
|
+
return UNIX_EPOCH_DATE.until(date.withCalendar("iso8601"), {
|
|
27
|
+
largestUnit: "days",
|
|
28
|
+
}).days;
|
|
29
|
+
}
|
|
30
|
+
/** True when `date` is the last representable date, +275760-09-13. */
|
|
31
|
+
export function isLastRepresentableDate(date) {
|
|
32
|
+
return epochDayOf(date) === MAX_EPOCH_DAY;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The latest in-range ISO date whose `calendarId` key is at or before `target`, or `null` when
|
|
36
|
+
* `target` precedes the first representable date. Throws RangeError if the search fails to
|
|
37
|
+
* converge (callers return their sentinel).
|
|
38
|
+
*/
|
|
39
|
+
export function floorDateForFields(calendarId, target) {
|
|
40
|
+
return floorBetween(calendarId, target, MIN_EPOCH_DAY, MAX_EPOCH_DAY);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* `floorDateForFields` within `[from, from + days]` (clamped to the range): `null` when `target`
|
|
44
|
+
* precedes `from`, the window's last date when `target` is at or past it.
|
|
45
|
+
*/
|
|
46
|
+
export function floorDateForFieldsBetween(calendarId, target, from, days) {
|
|
47
|
+
const low = Math.max(MIN_EPOCH_DAY, epochDayOf(from));
|
|
48
|
+
return floorBetween(calendarId, target, low, Math.min(MAX_EPOCH_DAY, low + days));
|
|
49
|
+
}
|
|
50
|
+
function floorBetween(calendarId, target, lowEpochDay, highEpochDay) {
|
|
51
|
+
let low = lowEpochDay;
|
|
52
|
+
let high = highEpochDay;
|
|
53
|
+
if (compareKeys(keyAt(calendarId, low), target) > 0) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
if (compareKeys(keyAt(calendarId, high), target) <= 0) {
|
|
57
|
+
return dateAt(high);
|
|
58
|
+
}
|
|
59
|
+
// Invariant: key(low) <= target < key(high).
|
|
60
|
+
for (let step = 0; step < MAX_BISECTION_STEPS; step++) {
|
|
61
|
+
if (high - low <= 1) {
|
|
62
|
+
return dateAt(low);
|
|
63
|
+
}
|
|
64
|
+
const middle = Math.floor((low + high) / 2);
|
|
65
|
+
if (compareKeys(keyAt(calendarId, middle), target) <= 0) {
|
|
66
|
+
low = middle;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
high = middle;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
throw new RangeError(`Field search for ${calendarId} did not converge`);
|
|
73
|
+
}
|
|
74
|
+
/** The ISO date (iso8601) whose `calendarId` fields are exactly `target`, or `null`. */
|
|
75
|
+
export function isoForFields(calendarId, target) {
|
|
76
|
+
const floor = floorDateForFields(calendarId, target);
|
|
77
|
+
if (floor === null) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
return compareKeys(calendarFieldsOf(floor, calendarId), target) === 0
|
|
81
|
+
? floor
|
|
82
|
+
: null;
|
|
83
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
/**
|
|
3
|
+
* Floored integer division remainder: the result has the sign of `divisor` (`mod(-1, 19)` is 18),
|
|
4
|
+
* as the calendar formulas below require. JS `%` keeps the dividend's sign.
|
|
5
|
+
*/
|
|
6
|
+
export declare function mod(value: number, divisor: number): number;
|
|
7
|
+
/** Proleptic Gregorian (ISO 8601) leap year. */
|
|
8
|
+
export declare function isIsoLeapYear(year: number): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* The fixed day number (R.D.; 0001-01-01 is day 1) of a proleptic Gregorian date, per
|
|
11
|
+
* Dershowitz & Reingold, *Calendrical Calculations* (3rd ed.), §2.2 `fixed-from-gregorian`.
|
|
12
|
+
* Pure integer arithmetic, so it also works for dates outside the Temporal PlainDate range, which
|
|
13
|
+
* the calendar arithmetic needs for year boundaries next to the minimum.
|
|
14
|
+
*
|
|
15
|
+
* @example fixedFromIso(1, 1, 1) // 1
|
|
16
|
+
* @example fixedFromIso(1970, 1, 1) // 719163
|
|
17
|
+
*/
|
|
18
|
+
export declare function fixedFromIso(year: number, month: number, day: number): number;
|
|
19
|
+
/**
|
|
20
|
+
* The ISO-calendared PlainDate of a fixed day number. Throws RangeError outside the TC39 PlainDate
|
|
21
|
+
* range (`ISODateWithinLimits`), through ISO day arithmetic.
|
|
22
|
+
*
|
|
23
|
+
* @example dateFromFixed(719163).toString() // "1970-01-01"
|
|
24
|
+
*/
|
|
25
|
+
export declare function dateFromFixed(fixed: number): Temporal.PlainDate;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
/** `fixedFromIso(1970, 1, 1)`. */
|
|
3
|
+
const UNIX_EPOCH_FIXED_DAY = 719_163;
|
|
4
|
+
/**
|
|
5
|
+
* Floored integer division remainder: the result has the sign of `divisor` (`mod(-1, 19)` is 18),
|
|
6
|
+
* as the calendar formulas below require. JS `%` keeps the dividend's sign.
|
|
7
|
+
*/
|
|
8
|
+
export function mod(value, divisor) {
|
|
9
|
+
return value - divisor * Math.floor(value / divisor);
|
|
10
|
+
}
|
|
11
|
+
/** Proleptic Gregorian (ISO 8601) leap year. */
|
|
12
|
+
export function isIsoLeapYear(year) {
|
|
13
|
+
return mod(year, 4) === 0 && (mod(year, 100) !== 0 || mod(year, 400) === 0);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The fixed day number (R.D.; 0001-01-01 is day 1) of a proleptic Gregorian date, per
|
|
17
|
+
* Dershowitz & Reingold, *Calendrical Calculations* (3rd ed.), §2.2 `fixed-from-gregorian`.
|
|
18
|
+
* Pure integer arithmetic, so it also works for dates outside the Temporal PlainDate range, which
|
|
19
|
+
* the calendar arithmetic needs for year boundaries next to the minimum.
|
|
20
|
+
*
|
|
21
|
+
* @example fixedFromIso(1, 1, 1) // 1
|
|
22
|
+
* @example fixedFromIso(1970, 1, 1) // 719163
|
|
23
|
+
*/
|
|
24
|
+
export function fixedFromIso(year, month, day) {
|
|
25
|
+
const prior = year - 1;
|
|
26
|
+
const monthAdjustment = month <= 2 ? 0 : isIsoLeapYear(year) ? -1 : -2;
|
|
27
|
+
return (365 * prior +
|
|
28
|
+
Math.floor(prior / 4) -
|
|
29
|
+
Math.floor(prior / 100) +
|
|
30
|
+
Math.floor(prior / 400) +
|
|
31
|
+
Math.floor((367 * month - 362) / 12) +
|
|
32
|
+
monthAdjustment +
|
|
33
|
+
day);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The ISO-calendared PlainDate of a fixed day number. Throws RangeError outside the TC39 PlainDate
|
|
37
|
+
* range (`ISODateWithinLimits`), through ISO day arithmetic.
|
|
38
|
+
*
|
|
39
|
+
* @example dateFromFixed(719163).toString() // "1970-01-01"
|
|
40
|
+
*/
|
|
41
|
+
export function dateFromFixed(fixed) {
|
|
42
|
+
return new Temporal.PlainDate(1970, 1, 1).add({
|
|
43
|
+
days: fixed - UNIX_EPOCH_FIXED_DAY,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ArithmeticModel } from "./nonIsoArithmetic.js";
|
|
2
|
+
export interface HebrewFields {
|
|
3
|
+
year: number;
|
|
4
|
+
/** Ordinal month, Tishri = 1; in a leap year Adar I (`M05L`) is 6. */
|
|
5
|
+
month: number;
|
|
6
|
+
monthCode: string;
|
|
7
|
+
day: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function isHebrewLeapYear(year: number): boolean;
|
|
10
|
+
/** Fixed day (R.D.) of Tishri 1 of `year`. */
|
|
11
|
+
export declare function hebrewNewYear(year: number): number;
|
|
12
|
+
/** The Hebrew year, ordinal month, month code and day of a fixed day (R.D.). */
|
|
13
|
+
export declare function hebrewFieldsFromFixed(fixed: number): HebrewFields;
|
|
14
|
+
/**
|
|
15
|
+
* The Hebrew calendar as an integer arithmetic model for `nonIsoArithmetic.ts`, so add and until
|
|
16
|
+
* are correct for years <= 0 too (D3 + D4). Every answer is this file's arithmetic; nothing is
|
|
17
|
+
* read from the runtime.
|
|
18
|
+
*/
|
|
19
|
+
export declare const hebrewArithmeticModel: ArithmeticModel;
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { dateFromFixed, fixedFromIso, mod } from "./fixedDay.js";
|
|
2
|
+
/*
|
|
3
|
+
* The arithmetic Hebrew calendar, from Dershowitz & Reingold, *Calendrical Calculations*
|
|
4
|
+
* (3rd ed.), ch. 8 "The Hebrew Calendar": `hebrew-leap-year?`, `hebrew-calendar-elapsed-days`,
|
|
5
|
+
* `hebrew-year-length-correction`, `hebrew-new-year`, `last-day-of-hebrew-month`,
|
|
6
|
+
* `hebrew-from-fixed`. It is valid for every year, including years <= 0.
|
|
7
|
+
*
|
|
8
|
+
* WHY GMT OWNS IT (CORE-6 owner decision, Q4): in years <= 0 the runtime is wrong twice. The
|
|
9
|
+
* polyfill's `inLeapYear` treats every year <= -1 as leap (D3, fixed upstream by
|
|
10
|
+
* proposal-temporal 0df570c, not yet ported to js-temporal), and Node's ICU4C is a day off
|
|
11
|
+
* (D4, fixed by ICU 5267bb5778 / ICU-23007, not yet in a Node release). Used only while one of
|
|
12
|
+
* those probes fails, and only for Hebrew years <= 0.
|
|
13
|
+
*
|
|
14
|
+
* Remove when a js-temporal release ports 0df570c AND GMT's Node floor bundles an ICU with
|
|
15
|
+
* 5267bb5778 (see README.md).
|
|
16
|
+
*/
|
|
17
|
+
/** Fixed day (R.D.) of Tishri 1, AM 1: `fixed-from-julian(3761 BCE, October 7)`. */
|
|
18
|
+
const HEBREW_EPOCH = -1_373_427;
|
|
19
|
+
/** Mean Hebrew year in days, used only to estimate the year before correcting it. */
|
|
20
|
+
const MEAN_YEAR_DAYS = 35_975_351 / 98_496;
|
|
21
|
+
/** The estimate is off by at most one year; a few extra steps cost nothing. */
|
|
22
|
+
const MAX_YEAR_ADJUSTMENTS = 4;
|
|
23
|
+
export function isHebrewLeapYear(year) {
|
|
24
|
+
return mod(7 * year + 1, 19) < 7;
|
|
25
|
+
}
|
|
26
|
+
/** Months from Tishri AM 1 to Tishri of `year` (`hebrew-calendar-elapsed-days`' month count). */
|
|
27
|
+
function monthsBeforeYear(year) {
|
|
28
|
+
return Math.floor((235 * year - 234) / 19);
|
|
29
|
+
}
|
|
30
|
+
function elapsedDays(year) {
|
|
31
|
+
const monthsElapsed = monthsBeforeYear(year);
|
|
32
|
+
const partsElapsed = 12_084 + 13_753 * monthsElapsed;
|
|
33
|
+
const days = 29 * monthsElapsed + Math.floor(partsElapsed / 25_920);
|
|
34
|
+
return mod(3 * (days + 1), 7) < 3 ? days + 1 : days;
|
|
35
|
+
}
|
|
36
|
+
function yearLengthCorrection(year) {
|
|
37
|
+
const previous = elapsedDays(year - 1);
|
|
38
|
+
const current = elapsedDays(year);
|
|
39
|
+
const next = elapsedDays(year + 1);
|
|
40
|
+
if (next - current === 356) {
|
|
41
|
+
return 2;
|
|
42
|
+
}
|
|
43
|
+
return current - previous === 382 ? 1 : 0;
|
|
44
|
+
}
|
|
45
|
+
/** Fixed day (R.D.) of Tishri 1 of `year`. */
|
|
46
|
+
export function hebrewNewYear(year) {
|
|
47
|
+
return HEBREW_EPOCH + elapsedDays(year) + yearLengthCorrection(year);
|
|
48
|
+
}
|
|
49
|
+
/** Month codes and lengths from Tishri, per `last-day-of-hebrew-month`. */
|
|
50
|
+
function monthsOfYear(year) {
|
|
51
|
+
const yearLength = hebrewNewYear(year + 1) - hebrewNewYear(year);
|
|
52
|
+
const longHeshvan = yearLength === 355 || yearLength === 385;
|
|
53
|
+
const shortKislev = yearLength === 353 || yearLength === 383;
|
|
54
|
+
const adar = isHebrewLeapYear(year)
|
|
55
|
+
? [
|
|
56
|
+
["M05L", 30],
|
|
57
|
+
["M06", 29],
|
|
58
|
+
]
|
|
59
|
+
: [["M06", 29]];
|
|
60
|
+
return [
|
|
61
|
+
["M01", 30],
|
|
62
|
+
["M02", longHeshvan ? 30 : 29],
|
|
63
|
+
["M03", shortKislev ? 29 : 30],
|
|
64
|
+
["M04", 29],
|
|
65
|
+
["M05", 30],
|
|
66
|
+
...adar,
|
|
67
|
+
["M07", 30],
|
|
68
|
+
["M08", 29],
|
|
69
|
+
["M09", 30],
|
|
70
|
+
["M10", 29],
|
|
71
|
+
["M11", 30],
|
|
72
|
+
["M12", 29],
|
|
73
|
+
];
|
|
74
|
+
}
|
|
75
|
+
function fieldsInYear(year, dayOfYear) {
|
|
76
|
+
let remaining = dayOfYear;
|
|
77
|
+
const months = monthsOfYear(year);
|
|
78
|
+
for (const [index, [monthCode, length]] of months.entries()) {
|
|
79
|
+
if (remaining < length) {
|
|
80
|
+
return { year, month: index + 1, monthCode, day: remaining + 1 };
|
|
81
|
+
}
|
|
82
|
+
remaining -= length;
|
|
83
|
+
}
|
|
84
|
+
throw new RangeError(`Day ${dayOfYear} is past Hebrew year ${year}`);
|
|
85
|
+
}
|
|
86
|
+
/** The Hebrew year, ordinal month, month code and day of a fixed day (R.D.). */
|
|
87
|
+
export function hebrewFieldsFromFixed(fixed) {
|
|
88
|
+
let year = Math.floor((fixed - HEBREW_EPOCH) / MEAN_YEAR_DAYS) + 1;
|
|
89
|
+
for (let step = 0; step < MAX_YEAR_ADJUSTMENTS; step++) {
|
|
90
|
+
const newYear = hebrewNewYear(year);
|
|
91
|
+
if (newYear > fixed) {
|
|
92
|
+
year -= 1;
|
|
93
|
+
}
|
|
94
|
+
else if (hebrewNewYear(year + 1) <= fixed) {
|
|
95
|
+
year += 1;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
return fieldsInYear(year, fixed - newYear);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
throw new RangeError(`Hebrew year of fixed day ${fixed} did not converge`);
|
|
102
|
+
}
|
|
103
|
+
function monthIndex({ year, month }) {
|
|
104
|
+
return monthsBeforeYear(year) + month - 1;
|
|
105
|
+
}
|
|
106
|
+
function yearMonthAt(index) {
|
|
107
|
+
let year = Math.floor((19 * index) / 235) + 1;
|
|
108
|
+
for (let step = 0; step < MAX_YEAR_ADJUSTMENTS; step++) {
|
|
109
|
+
if (monthsBeforeYear(year) > index) {
|
|
110
|
+
year -= 1;
|
|
111
|
+
}
|
|
112
|
+
else if (monthsBeforeYear(year + 1) <= index) {
|
|
113
|
+
year += 1;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
return { year, month: index - monthsBeforeYear(year) + 1 };
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
throw new RangeError(`Hebrew year of month ${index} did not converge`);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* The Hebrew calendar as an integer arithmetic model for `nonIsoArithmetic.ts`, so add and until
|
|
123
|
+
* are correct for years <= 0 too (D3 + D4). Every answer is this file's arithmetic; nothing is
|
|
124
|
+
* read from the runtime.
|
|
125
|
+
*/
|
|
126
|
+
export const hebrewArithmeticModel = {
|
|
127
|
+
calendarId: "hebrew",
|
|
128
|
+
fields(date) {
|
|
129
|
+
const iso = date.withCalendar("iso8601");
|
|
130
|
+
return hebrewFieldsFromFixed(fixedFromIso(iso.year, iso.month, iso.day));
|
|
131
|
+
},
|
|
132
|
+
monthOrdinal(year, monthCode) {
|
|
133
|
+
const index = monthsOfYear(year).findIndex(([code]) => code === monthCode);
|
|
134
|
+
return index < 0 ? "missing" : index + 1;
|
|
135
|
+
},
|
|
136
|
+
addMonths: (start, months) => yearMonthAt(monthIndex(start) + months),
|
|
137
|
+
monthsBetween: (from, to) => monthIndex(to) - monthIndex(from),
|
|
138
|
+
daysInMonth: ({ year, month }) => monthsOfYear(year)[month - 1]?.[1] ?? null,
|
|
139
|
+
toDate(year, month, day) {
|
|
140
|
+
const months = monthsOfYear(year);
|
|
141
|
+
const length = months[month - 1]?.[1] ?? 0;
|
|
142
|
+
if (day < 1 || day > length) {
|
|
143
|
+
throw new RangeError(`No Hebrew date ${year}-${month}-${day}`);
|
|
144
|
+
}
|
|
145
|
+
const daysBefore = months
|
|
146
|
+
.slice(0, month - 1)
|
|
147
|
+
.reduce((total, [, days]) => total + days, 0);
|
|
148
|
+
return dateFromFixed(hebrewNewYear(year) + daysBefore + day - 1);
|
|
149
|
+
},
|
|
150
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { type CalendarDateUnit, calendarDateAdd, calendarDateUntil, } from "./calendarDateArithmetic.js";
|
|
2
|
+
export { calendarDateFromFields } from "./calendarDateFromFields.js";
|
|
3
|
+
export { isCalendarArithmeticCompatNeeded, isNudgeWindowCompatNeeded, } from "./capabilities.js";
|
|
4
|
+
export { calendarFieldsOf } from "./calendarFields.js";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// The only import surface of the Temporal compat layer. See README.md.
|
|
2
|
+
export { calendarDateAdd, calendarDateUntil, } from "./calendarDateArithmetic.js";
|
|
3
|
+
export { calendarDateFromFields } from "./calendarDateFromFields.js";
|
|
4
|
+
export { isCalendarArithmeticCompatNeeded, isNudgeWindowCompatNeeded, } from "./capabilities.js";
|
|
5
|
+
export { calendarFieldsOf } from "./calendarFields.js";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ArithmeticModel } from "./nonIsoArithmetic.js";
|
|
2
|
+
/** Saka year = Gregorian year of its Chaitra 1 minus this. */
|
|
3
|
+
export declare const SAKA_YEAR_OFFSET = 78;
|
|
4
|
+
export interface IndianFields {
|
|
5
|
+
year: number;
|
|
6
|
+
month: number;
|
|
7
|
+
monthCode: string;
|
|
8
|
+
day: number;
|
|
9
|
+
}
|
|
10
|
+
/** The Saka year, month, month code and day of a proleptic Gregorian (ISO) date. */
|
|
11
|
+
export declare function indianFieldsFromIso(isoYear: number, isoMonth: number, isoDay: number): IndianFields;
|
|
12
|
+
/**
|
|
13
|
+
* The Indian calendar as an integer arithmetic model for `nonIsoArithmetic.ts`, so add and until
|
|
14
|
+
* are correct before ISO year 1 too (D5). Every answer is this file's arithmetic.
|
|
15
|
+
*/
|
|
16
|
+
export declare const indianArithmeticModel: ArithmeticModel;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { dateFromFixed, fixedFromIso, isIsoLeapYear, mod } from "./fixedDay.js";
|
|
2
|
+
/*
|
|
3
|
+
* The Indian national (Saka) calendar, as adopted on the recommendation of the Calendar Reform
|
|
4
|
+
* Committee (Government of India, 1955) and described in the *Explanatory Supplement to the
|
|
5
|
+
* Astronomical Almanac* (Indian National Calendar): Chaitra 1 is March 22, or March 21 in a
|
|
6
|
+
* Gregorian leap year; Chaitra has 30 days (31 in a Gregorian leap year), Vaishakha to Bhadra 31
|
|
7
|
+
* each, Ashvina to Phalguna 30 each; the Saka year is the Gregorian year of its Chaitra 1 minus 78.
|
|
8
|
+
* Chromium 152 (ICU4X) matches this rule for every scanned date before ISO year 1.
|
|
9
|
+
*
|
|
10
|
+
* WHY GMT OWNS IT (CORE-6 owner decision, Q4): polyfill 0.5.1's "V8 bug 10529" detector compares
|
|
11
|
+
* against `'10/11/-79 Saka'` while ICU 78 prints `Śaka`, so it throws for every ISO year < 1
|
|
12
|
+
* although ICU is correct (D5). Used only while the D5 probe fails, and only for those dates.
|
|
13
|
+
*
|
|
14
|
+
* Remove when a js-temporal release ports proposal-temporal 314b112 (see README.md).
|
|
15
|
+
*/
|
|
16
|
+
/** Saka year = Gregorian year of its Chaitra 1 minus this. */
|
|
17
|
+
export const SAKA_YEAR_OFFSET = 78;
|
|
18
|
+
const MONTHS_PER_YEAR = 12;
|
|
19
|
+
/** Chaitra is month 1; Vaishakha (2) to Bhadra (6) have 31 days, Ashvina (7) to Phalguna (12) 30. */
|
|
20
|
+
const LAST_31_DAY_MONTH = 6;
|
|
21
|
+
function chaitraOne(gregorianYear) {
|
|
22
|
+
return fixedFromIso(gregorianYear, 3, isIsoLeapYear(gregorianYear) ? 21 : 22);
|
|
23
|
+
}
|
|
24
|
+
function monthLength(sakaYear, month) {
|
|
25
|
+
if (month === 1) {
|
|
26
|
+
return isIsoLeapYear(sakaYear + SAKA_YEAR_OFFSET) ? 31 : 30;
|
|
27
|
+
}
|
|
28
|
+
return month <= LAST_31_DAY_MONTH ? 31 : 30;
|
|
29
|
+
}
|
|
30
|
+
/** The Saka year, month, month code and day of a proleptic Gregorian (ISO) date. */
|
|
31
|
+
export function indianFieldsFromIso(isoYear, isoMonth, isoDay) {
|
|
32
|
+
const fixed = fixedFromIso(isoYear, isoMonth, isoDay);
|
|
33
|
+
const gregorianYear = fixed < chaitraOne(isoYear) ? isoYear - 1 : isoYear;
|
|
34
|
+
const year = gregorianYear - SAKA_YEAR_OFFSET;
|
|
35
|
+
let remaining = fixed - chaitraOne(gregorianYear);
|
|
36
|
+
for (let month = 1; month <= MONTHS_PER_YEAR; month++) {
|
|
37
|
+
const length = monthLength(year, month);
|
|
38
|
+
if (remaining < length) {
|
|
39
|
+
return {
|
|
40
|
+
year,
|
|
41
|
+
month,
|
|
42
|
+
monthCode: `M${String(month).padStart(2, "0")}`,
|
|
43
|
+
day: remaining + 1,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
remaining -= length;
|
|
47
|
+
}
|
|
48
|
+
throw new RangeError(`${isoYear}-${isoMonth}-${isoDay} is past its Saka year`);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The Indian calendar as an integer arithmetic model for `nonIsoArithmetic.ts`, so add and until
|
|
52
|
+
* are correct before ISO year 1 too (D5). Every answer is this file's arithmetic.
|
|
53
|
+
*/
|
|
54
|
+
export const indianArithmeticModel = {
|
|
55
|
+
calendarId: "indian",
|
|
56
|
+
fields(date) {
|
|
57
|
+
const iso = date.withCalendar("iso8601");
|
|
58
|
+
return indianFieldsFromIso(iso.year, iso.month, iso.day);
|
|
59
|
+
},
|
|
60
|
+
monthOrdinal(_year, monthCode) {
|
|
61
|
+
const month = /^M(\d{2})$/.exec(monthCode);
|
|
62
|
+
const ordinal = month ? Number(month[1]) : 0;
|
|
63
|
+
return ordinal >= 1 && ordinal <= MONTHS_PER_YEAR ? ordinal : "missing";
|
|
64
|
+
},
|
|
65
|
+
addMonths({ year, month }, months) {
|
|
66
|
+
const index = year * MONTHS_PER_YEAR + month - 1 + months;
|
|
67
|
+
return {
|
|
68
|
+
year: Math.floor(index / MONTHS_PER_YEAR),
|
|
69
|
+
month: mod(index, MONTHS_PER_YEAR) + 1,
|
|
70
|
+
};
|
|
71
|
+
},
|
|
72
|
+
monthsBetween: (from, to) => (to.year - from.year) * MONTHS_PER_YEAR + to.month - from.month,
|
|
73
|
+
daysInMonth: ({ year, month }) => monthLength(year, month),
|
|
74
|
+
toDate(year, month, day) {
|
|
75
|
+
if (month < 1 ||
|
|
76
|
+
month > MONTHS_PER_YEAR ||
|
|
77
|
+
day < 1 ||
|
|
78
|
+
day > monthLength(year, month)) {
|
|
79
|
+
throw new RangeError(`No Indian date ${year}-${month}-${day}`);
|
|
80
|
+
}
|
|
81
|
+
let fixed = chaitraOne(year + SAKA_YEAR_OFFSET) + day - 1;
|
|
82
|
+
for (let earlier = 1; earlier < month; earlier++) {
|
|
83
|
+
fixed += monthLength(year, earlier);
|
|
84
|
+
}
|
|
85
|
+
return dateFromFixed(fixed);
|
|
86
|
+
},
|
|
87
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { YearMonth } from "./nonIsoArithmetic.js";
|
|
2
|
+
/** True when an amount of months is large enough for the year jumps. */
|
|
3
|
+
export declare function isLargeMonthSpan(months: number): boolean;
|
|
4
|
+
/** True when two calendar years are far enough apart for the year jumps. */
|
|
5
|
+
export declare function isLargeYearSpan(fromYear: number, toYear: number): boolean;
|
|
6
|
+
type AddMonths = (start: YearMonth, months: number) => YearMonth | null;
|
|
7
|
+
type MonthsBetween = (from: YearMonth, to: YearMonth) => number;
|
|
8
|
+
/**
|
|
9
|
+
* `BalanceNonISODate(start.year, start.month + months, 1)` for a large `months`: step to the next
|
|
10
|
+
* (or previous) year start, jump whole years, and let `addSmall` finish the few years left.
|
|
11
|
+
* `null` when the result lies outside the range.
|
|
12
|
+
*/
|
|
13
|
+
export declare function addManyMonths(calendarId: string, start: YearMonth, months: number, addSmall: AddMonths, betweenSmall: MonthsBetween): YearMonth | null;
|
|
14
|
+
/**
|
|
15
|
+
* The signed month count from `from` to `to` (both month starts in range) when they are years
|
|
16
|
+
* apart: the months to the first whole year, the whole years, and the months after the last.
|
|
17
|
+
*/
|
|
18
|
+
export declare function countManyMonths(calendarId: string, from: YearMonth, to: YearMonth, betweenSmall: MonthsBetween): number;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import { calendarDateFromFields } from "./calendarDateFromFields.js";
|
|
3
|
+
import { calendarFieldsOf } from "./calendarFields.js";
|
|
4
|
+
/*
|
|
5
|
+
* D9: bounded month arithmetic over long spans in non-ISO calendars.
|
|
6
|
+
*
|
|
7
|
+
* WHY THIS FILE EXISTS. Polyfill 0.5.1 adds non-ISO months one month at a time
|
|
8
|
+
* (`addMonthsCalendar`) and counts them the same way (`untilCalendar` with `largestUnit: "months"`),
|
|
9
|
+
* caching every intermediate date. An in-range amount of a few million months is a fatal V8 heap
|
|
10
|
+
* OOM, which no `try/catch` can turn into a sentinel. Its year steps (`add({ years })`,
|
|
11
|
+
* `until({ largestUnit: "years" })`) and its reads are O(1). Measured in a 256 MB child process:
|
|
12
|
+
* adding 100,000 years takes about 1.5 ms, while months cost 5–12 µs each and 3,000,000 of them
|
|
13
|
+
* abort the process.
|
|
14
|
+
*
|
|
15
|
+
* WHAT IT DOES. It answers the two month questions of the arithmetic model (`addMonths`,
|
|
16
|
+
* `monthsBetween` between month starts) by jumping whole years and leaving a remainder of a few
|
|
17
|
+
* years' months to the caller's ordinary month-by-month answer. The months a year jump consumes
|
|
18
|
+
* come only from Temporal's own reads:
|
|
19
|
+
* - a calendar with no leap month code in the Intl era/monthCode proposal §4.1.4 Table 3 has the
|
|
20
|
+
* same months in every year, so the count is `years × monthsInYear`, read once;
|
|
21
|
+
* - a calendar with leap month codes (`hebrew` among GMT's calendars) counts months from the ISO
|
|
22
|
+
* day span between the two year starts, divided by a mean month length that this file measures
|
|
23
|
+
* from Temporal's reads (an exact 64-year sum, then doubled spans, each counted by the previous
|
|
24
|
+
* mean). A count is accepted only when the span is within a third of a month of that count of mean
|
|
25
|
+
* months, which lunar month starts always are, and otherwise throws RangeError (a sentinel at
|
|
26
|
+
* the public seam). GMT states no calendar rule, month table or cycle length.
|
|
27
|
+
*
|
|
28
|
+
* DORMANT. Only amounts of at least `LARGE_MONTH_SPAN` months take this path, and it computes
|
|
29
|
+
* the spec's answer, so removing it on a fixed runtime changes no output.
|
|
30
|
+
*
|
|
31
|
+
* Remove when a js-temporal release adds and differences non-ISO months in bounded work
|
|
32
|
+
* (`pnpm compat`, repro D9). See README.md.
|
|
33
|
+
*/
|
|
34
|
+
/** Month amounts from here on take the year jumps; below it the polyfill costs about 10 ms. */
|
|
35
|
+
const LARGE_MONTH_SPAN = 1_200;
|
|
36
|
+
/** Intl era/monthCode proposal §4.1.4 Table 3: the calendars with leap month codes (`MxxL`). */
|
|
37
|
+
const LEAP_MONTH_CALENDARS = new Set([
|
|
38
|
+
"chinese",
|
|
39
|
+
"dangi",
|
|
40
|
+
"hebrew",
|
|
41
|
+
]);
|
|
42
|
+
const ISO_CALENDAR = "iso8601";
|
|
43
|
+
/** Years whose month counts are read one by one before any mean is trusted. */
|
|
44
|
+
const SUMMED_YEARS = 64;
|
|
45
|
+
/** Year jumps stop this many years short of the estimate, so the remainder keeps its sign. */
|
|
46
|
+
const MARGIN_YEARS = 2;
|
|
47
|
+
/** The largest distance, in mean months, a span may be from a whole month count. */
|
|
48
|
+
const RESIDUAL_LIMIT = 1 / 3;
|
|
49
|
+
const profiles = new Map();
|
|
50
|
+
function yearStart(calendarId, year) {
|
|
51
|
+
try {
|
|
52
|
+
return calendarDateFromFields(calendarId, { year, month: 1, day: 1 }, "reject");
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
if (error instanceof RangeError) {
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function daysBetween(one, two) {
|
|
62
|
+
return one
|
|
63
|
+
.withCalendar(ISO_CALENDAR)
|
|
64
|
+
.until(two.withCalendar(ISO_CALENDAR), { largestUnit: "days" }).days;
|
|
65
|
+
}
|
|
66
|
+
/** The ordinal of `year`'s last month, read from the day before the next year starts. */
|
|
67
|
+
function monthsInYear(calendarId, year) {
|
|
68
|
+
const next = yearStart(calendarId, year + 1);
|
|
69
|
+
const read = next === undefined
|
|
70
|
+
? undefined
|
|
71
|
+
: calendarFieldsOf(next.subtract({ days: 1 }), calendarId);
|
|
72
|
+
if (read?.year !== year) {
|
|
73
|
+
throw new RangeError(`${calendarId} year ${year} is not fully in range`);
|
|
74
|
+
}
|
|
75
|
+
return read.month;
|
|
76
|
+
}
|
|
77
|
+
/** Months in whole years `[from, from + years)`, read one year at a time. */
|
|
78
|
+
function summedMonths(calendarId, from, years) {
|
|
79
|
+
let months = 0;
|
|
80
|
+
for (let year = from; year < from + years; year++) {
|
|
81
|
+
months += monthsInYear(calendarId, year);
|
|
82
|
+
}
|
|
83
|
+
return months;
|
|
84
|
+
}
|
|
85
|
+
/** `days / meanMonthDays` when it is within `RESIDUAL_LIMIT` of a whole number of months. */
|
|
86
|
+
function wholeMonths(days, meanMonthDays) {
|
|
87
|
+
const months = Math.round(days / meanMonthDays);
|
|
88
|
+
if (Math.abs(days - months * meanMonthDays) >
|
|
89
|
+
RESIDUAL_LIMIT * meanMonthDays) {
|
|
90
|
+
throw new RangeError("Month count is not determined by the day span");
|
|
91
|
+
}
|
|
92
|
+
return months;
|
|
93
|
+
}
|
|
94
|
+
function measureProfile(calendarId) {
|
|
95
|
+
const base = calendarFieldsOf(Temporal.PlainDate.from("2000-01-01"), calendarId).year;
|
|
96
|
+
if (!LEAP_MONTH_CALENDARS.has(calendarId)) {
|
|
97
|
+
const months = monthsInYear(calendarId, base);
|
|
98
|
+
return { fixedMonthsPerYear: months, meanMonthsPerYear: months };
|
|
99
|
+
}
|
|
100
|
+
const start = yearStart(calendarId, base);
|
|
101
|
+
const summedEnd = yearStart(calendarId, base + SUMMED_YEARS);
|
|
102
|
+
if (start === undefined || summedEnd === undefined) {
|
|
103
|
+
throw new RangeError(`${calendarId} has no modern years to measure`);
|
|
104
|
+
}
|
|
105
|
+
let months = summedMonths(calendarId, base, SUMMED_YEARS);
|
|
106
|
+
let meanMonthDays = daysBetween(start, summedEnd) / months;
|
|
107
|
+
let years = SUMMED_YEARS;
|
|
108
|
+
for (;;) {
|
|
109
|
+
const end = yearStart(calendarId, base + 2 * years);
|
|
110
|
+
if (end === undefined) {
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
years *= 2;
|
|
114
|
+
const days = daysBetween(start, end);
|
|
115
|
+
months = wholeMonths(days, meanMonthDays);
|
|
116
|
+
meanMonthDays = days / months;
|
|
117
|
+
}
|
|
118
|
+
return { meanMonthDays, meanMonthsPerYear: months / years };
|
|
119
|
+
}
|
|
120
|
+
function profileOf(calendarId) {
|
|
121
|
+
let profile = profiles.get(calendarId);
|
|
122
|
+
if (profile === undefined) {
|
|
123
|
+
profile = measureProfile(calendarId);
|
|
124
|
+
profiles.set(calendarId, profile);
|
|
125
|
+
}
|
|
126
|
+
return profile;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Months from the start of `fromYear` to the start of `toYear` (negative when `toYear` is
|
|
130
|
+
* earlier); `null` when a leap-month calendar cannot place one of those year starts, which lies
|
|
131
|
+
* outside the range.
|
|
132
|
+
*/
|
|
133
|
+
function monthsBetweenYearStarts(calendarId, fromYear, toYear) {
|
|
134
|
+
const profile = profileOf(calendarId);
|
|
135
|
+
if (profile.fixedMonthsPerYear !== undefined) {
|
|
136
|
+
return (toYear - fromYear) * profile.fixedMonthsPerYear;
|
|
137
|
+
}
|
|
138
|
+
const sign = Math.sign(toYear - fromYear);
|
|
139
|
+
const low = Math.min(fromYear, toYear);
|
|
140
|
+
const years = Math.abs(toYear - fromYear);
|
|
141
|
+
if (years <= SUMMED_YEARS) {
|
|
142
|
+
return sign * summedMonths(calendarId, low, years);
|
|
143
|
+
}
|
|
144
|
+
const start = yearStart(calendarId, fromYear);
|
|
145
|
+
const end = yearStart(calendarId, toYear);
|
|
146
|
+
if (start === undefined || end === undefined) {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
// `measureProfile` always sets `meanMonthDays` for every `LEAP_MONTH_CALENDARS` member —
|
|
150
|
+
// the only calendars that reach this line, since the `fixedMonthsPerYear` branch above
|
|
151
|
+
// already returned. Dead by construction today, but a `?? 0` here would silently turn a
|
|
152
|
+
// future violation of that invariant into `days / 0` (`Infinity`) instead of a clear
|
|
153
|
+
// error, so it is asserted instead.
|
|
154
|
+
if (profile.meanMonthDays === undefined) {
|
|
155
|
+
throw new RangeError(`${calendarId} has no measured mean month length`);
|
|
156
|
+
}
|
|
157
|
+
return wholeMonths(daysBetween(start, end), profile.meanMonthDays);
|
|
158
|
+
}
|
|
159
|
+
/** True when an amount of months is large enough for the year jumps. */
|
|
160
|
+
export function isLargeMonthSpan(months) {
|
|
161
|
+
return Math.abs(months) >= LARGE_MONTH_SPAN;
|
|
162
|
+
}
|
|
163
|
+
/** True when two calendar years are far enough apart for the year jumps. */
|
|
164
|
+
export function isLargeYearSpan(fromYear, toYear) {
|
|
165
|
+
return Math.abs(toYear - fromYear) * 12 >= LARGE_MONTH_SPAN;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* `BalanceNonISODate(start.year, start.month + months, 1)` for a large `months`: step to the next
|
|
169
|
+
* (or previous) year start, jump whole years, and let `addSmall` finish the few years left.
|
|
170
|
+
* `null` when the result lies outside the range.
|
|
171
|
+
*/
|
|
172
|
+
export function addManyMonths(calendarId, start, months, addSmall, betweenSmall) {
|
|
173
|
+
const sign = Math.sign(months);
|
|
174
|
+
const first = { year: start.year + sign, month: 1 };
|
|
175
|
+
if (yearStart(calendarId, first.year) === undefined) {
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
const remaining = months - betweenSmall(start, first);
|
|
179
|
+
const years = sign *
|
|
180
|
+
Math.max(0, Math.floor(Math.abs(remaining) / profileOf(calendarId).meanMonthsPerYear) - MARGIN_YEARS);
|
|
181
|
+
const consumed = monthsBetweenYearStarts(calendarId, first.year, first.year + years);
|
|
182
|
+
return consumed === null
|
|
183
|
+
? null
|
|
184
|
+
: addSmall({ year: first.year + years, month: 1 }, remaining - consumed);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* The signed month count from `from` to `to` (both month starts in range) when they are years
|
|
188
|
+
* apart: the months to the first whole year, the whole years, and the months after the last.
|
|
189
|
+
*/
|
|
190
|
+
export function countManyMonths(calendarId, from, to, betweenSmall) {
|
|
191
|
+
const forward = to.year > from.year;
|
|
192
|
+
const first = { year: from.year + (forward ? 1 : 0), month: 1 };
|
|
193
|
+
const last = { year: to.year + (forward ? 0 : 1), month: 1 };
|
|
194
|
+
const whole = monthsBetweenYearStarts(calendarId, first.year, last.year);
|
|
195
|
+
if (whole === null) {
|
|
196
|
+
throw new RangeError(`Cannot count ${calendarId} months from ${from.year} to ${to.year}`);
|
|
197
|
+
}
|
|
198
|
+
return betweenSmall(from, first) + whole + betweenSmall(last, to);
|
|
199
|
+
}
|