@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
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import { isoStringBody } from "../../internal/isoStringBody.js";
|
|
2
3
|
import { plainTime } from "../../regex/index.js";
|
|
3
4
|
import { isLeapSecond } from "./isLeapSecond.js";
|
|
4
5
|
/**
|
|
5
6
|
* Return true when `value` is a valid ISO PlainTime string.
|
|
6
7
|
*
|
|
7
|
-
* -
|
|
8
|
+
* - The part before the first annotation must match `plainTime`.
|
|
9
|
+
* - Reads RFC 9557 annotations as `Temporal.PlainTime.from` does: elective ones (`[foo=bar]`), a
|
|
10
|
+
* time zone annotation and a calendar annotation are ignored (a time has no calendar), and an
|
|
11
|
+
* unknown critical one (`[!foo=bar]`) is rejected.
|
|
8
12
|
* - Rejects leap seconds (e.g., "23:59:60").
|
|
9
13
|
* - Rejects invalid times (e.g., "24:00:00", "23:60:00").
|
|
10
14
|
*
|
|
@@ -13,14 +17,17 @@ import { isLeapSecond } from "./isLeapSecond.js";
|
|
|
13
17
|
*
|
|
14
18
|
* @example isValidTime("12:34:56") // true
|
|
15
19
|
* @example isValidTime("24:00:00") // false (invalid hour)
|
|
20
|
+
* @example isValidTime("12:34:56[u-ca=hebrew]") // true (calendar annotation ignored)
|
|
21
|
+
* @example isValidTime("12:34:56[!foo=bar]") // false (unknown critical annotation)
|
|
16
22
|
* @example isValidTime("23:60:00") // false (invalid minute)
|
|
17
23
|
* @example isValidTime("23:59:60") // false (leap second)
|
|
18
24
|
*/
|
|
19
25
|
export function isValidTime(value) {
|
|
20
|
-
|
|
26
|
+
const body = isoStringBody(value);
|
|
27
|
+
if (isLeapSecond(body)) {
|
|
21
28
|
return false;
|
|
22
29
|
}
|
|
23
|
-
if (!plainTime.test(
|
|
30
|
+
if (!plainTime.test(body)) {
|
|
24
31
|
return false;
|
|
25
32
|
}
|
|
26
33
|
try {
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
* Return true if `value1` and `value2` form a valid time range — both parseable as
|
|
3
3
|
* ISO PlainTime strings and `value1 <= value2`.
|
|
4
4
|
*
|
|
5
|
-
* - Both inputs must be ISO 8601 time strings (e.g. `"14:30:00"`)
|
|
5
|
+
* - Both inputs must be ISO 8601 time strings (e.g. `"14:30:00"`), as `isValidTime` accepts,
|
|
6
|
+
* annotations included.
|
|
7
|
+
* - Ordered by `Temporal.PlainTime.compare`, to the nanosecond.
|
|
6
8
|
* - Equal `value1 === value2` is valid when `options.allowEqual` is true.
|
|
7
9
|
* - Invalid input, malformed strings, or leap-second strings return `false`.
|
|
8
10
|
*
|
|
@@ -15,7 +17,7 @@
|
|
|
15
17
|
* @example isValidTimeRange({ value1: "17:00:00", value2: "09:00:00" }) // false
|
|
16
18
|
* @example isValidTimeRange({ value1: "12:00:00", value2: "12:00:00", options: { allowEqual: true } }) // true
|
|
17
19
|
*/
|
|
18
|
-
export declare function isValidTimeRange(
|
|
20
|
+
export declare function isValidTimeRange(props: {
|
|
19
21
|
value1: string;
|
|
20
22
|
value2: string;
|
|
21
23
|
options?: {
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
+
// fallow-ignore-file code-duplication -- cross-family Temporal type clone, by design (rule 5)
|
|
1
2
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
-
import {
|
|
3
|
+
import { isValidTime } from "./isValidTime.js";
|
|
4
|
+
import { isObject, isOptionsArgument } from "../../internal/isObject.js";
|
|
3
5
|
/**
|
|
4
6
|
* Return true if `value1` and `value2` form a valid time range — both parseable as
|
|
5
7
|
* ISO PlainTime strings and `value1 <= value2`.
|
|
6
8
|
*
|
|
7
|
-
* - Both inputs must be ISO 8601 time strings (e.g. `"14:30:00"`)
|
|
9
|
+
* - Both inputs must be ISO 8601 time strings (e.g. `"14:30:00"`), as `isValidTime` accepts,
|
|
10
|
+
* annotations included.
|
|
11
|
+
* - Ordered by `Temporal.PlainTime.compare`, to the nanosecond.
|
|
8
12
|
* - Equal `value1 === value2` is valid when `options.allowEqual` is true.
|
|
9
13
|
* - Invalid input, malformed strings, or leap-second strings return `false`.
|
|
10
14
|
*
|
|
@@ -17,35 +21,35 @@ import { plainTime } from "../../regex/index.js";
|
|
|
17
21
|
* @example isValidTimeRange({ value1: "17:00:00", value2: "09:00:00" }) // false
|
|
18
22
|
* @example isValidTimeRange({ value1: "12:00:00", value2: "12:00:00", options: { allowEqual: true } }) // true
|
|
19
23
|
*/
|
|
20
|
-
export function isValidTimeRange(
|
|
21
|
-
if (typeof value1 !== "string" || typeof value2 !== "string") {
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
if (!plainTime.test(value1) || !plainTime.test(value2)) {
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
24
|
+
export function isValidTimeRange(props) {
|
|
27
25
|
try {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
time1
|
|
41
|
-
|
|
42
|
-
time1
|
|
43
|
-
|
|
44
|
-
|
|
26
|
+
if (!isObject(props))
|
|
27
|
+
return false;
|
|
28
|
+
const { value1, value2, options } = props;
|
|
29
|
+
if (!isOptionsArgument(options))
|
|
30
|
+
return false;
|
|
31
|
+
if (typeof value1 !== "string" || typeof value2 !== "string") {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
if (!isValidTime(value1) || !isValidTime(value2)) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
const time1 = Temporal.PlainTime.from(value1);
|
|
39
|
+
const time2 = Temporal.PlainTime.from(value2);
|
|
40
|
+
const cmp = Temporal.PlainTime.compare(time1, time2);
|
|
41
|
+
if (options?.allowEqual) {
|
|
42
|
+
return cmp <= 0;
|
|
43
|
+
}
|
|
44
|
+
return cmp < 0;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
45
48
|
}
|
|
46
|
-
return isLessThan;
|
|
47
49
|
}
|
|
48
50
|
catch {
|
|
51
|
+
// Never throws (Core Rule 3): a hostile
|
|
52
|
+
// argument is invalid input, not an exception.
|
|
49
53
|
return false;
|
|
50
54
|
}
|
|
51
55
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./truncateNanoseconds.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./truncateNanoseconds.js";
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage precision a nanosecond value can be truncated to.
|
|
3
|
+
*
|
|
4
|
+
* @remarks Members:
|
|
5
|
+
*
|
|
6
|
+
* | Member | Description |
|
|
7
|
+
* | --- | --- |
|
|
8
|
+
* | `ms` | Milliseconds — the precision of `Date`, JSON APIs, and most message brokers. |
|
|
9
|
+
* | `us` | Microseconds — the precision of PostgreSQL `timestamptz` and MySQL `DATETIME(6)`. |
|
|
10
|
+
*/
|
|
11
|
+
export type NanosecondTruncationUnit = "ms" | "us";
|
|
12
|
+
/**
|
|
13
|
+
* Truncate nanoseconds since the Unix epoch to the precision a store can actually hold.
|
|
14
|
+
*
|
|
15
|
+
* - Floors toward negative infinity, so pre-1970 values truncate the same way post-1970 ones
|
|
16
|
+
* do: `truncateNanoseconds(-1500n, "us")` is `-2000n`, not `-1000n`. Rounding toward zero
|
|
17
|
+
* would make the result jump direction either side of the epoch.
|
|
18
|
+
* - Call this before writing to a store that cannot hold nanoseconds — PostgreSQL
|
|
19
|
+
* `timestamptz` and MySQL `DATETIME(6)` hold microseconds, `Date`-based APIs hold
|
|
20
|
+
* milliseconds — so the value read back equals the value written.
|
|
21
|
+
* - Idempotent: truncating an already-truncated value returns it unchanged.
|
|
22
|
+
* - Returns `0n` on invalid input, including nanoseconds outside the range
|
|
23
|
+
* `Temporal.Instant` can represent. `0n` is also the epoch itself — validate first when
|
|
24
|
+
* the two must be told apart.
|
|
25
|
+
*
|
|
26
|
+
* @param nanoseconds nanoseconds since the Unix epoch (bigint)
|
|
27
|
+
* @param unit target storage precision, "ms" (milliseconds) or "us" (microseconds)
|
|
28
|
+
* @returns truncated nanoseconds as a bigint, or 0n on invalid input
|
|
29
|
+
*
|
|
30
|
+
* @example truncateNanoseconds(1710072000123456789n, "us") // 1710072000123456000n
|
|
31
|
+
* @example truncateNanoseconds(1710072000123456789n, "ms") // 1710072000123000000n
|
|
32
|
+
* @example truncateNanoseconds(-1500n, "us") // -2000n
|
|
33
|
+
* @example truncateNanoseconds(0n, "ms") // 0n
|
|
34
|
+
* @example truncateNanoseconds(1710072000123456789n, "ns") // 0n
|
|
35
|
+
* @example truncateNanoseconds(1710072000123456789, "us") // 0n — number, not bigint
|
|
36
|
+
*/
|
|
37
|
+
export declare function truncateNanoseconds(nanoseconds: bigint, unit: NanosecondTruncationUnit): bigint;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { isValidEpochNanoseconds } from "../../internal/index.js";
|
|
2
|
+
const NANOSECONDS_PER_UNIT = {
|
|
3
|
+
ms: 1000000n,
|
|
4
|
+
us: 1000n,
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Truncate nanoseconds since the Unix epoch to the precision a store can actually hold.
|
|
8
|
+
*
|
|
9
|
+
* - Floors toward negative infinity, so pre-1970 values truncate the same way post-1970 ones
|
|
10
|
+
* do: `truncateNanoseconds(-1500n, "us")` is `-2000n`, not `-1000n`. Rounding toward zero
|
|
11
|
+
* would make the result jump direction either side of the epoch.
|
|
12
|
+
* - Call this before writing to a store that cannot hold nanoseconds — PostgreSQL
|
|
13
|
+
* `timestamptz` and MySQL `DATETIME(6)` hold microseconds, `Date`-based APIs hold
|
|
14
|
+
* milliseconds — so the value read back equals the value written.
|
|
15
|
+
* - Idempotent: truncating an already-truncated value returns it unchanged.
|
|
16
|
+
* - Returns `0n` on invalid input, including nanoseconds outside the range
|
|
17
|
+
* `Temporal.Instant` can represent. `0n` is also the epoch itself — validate first when
|
|
18
|
+
* the two must be told apart.
|
|
19
|
+
*
|
|
20
|
+
* @param nanoseconds nanoseconds since the Unix epoch (bigint)
|
|
21
|
+
* @param unit target storage precision, "ms" (milliseconds) or "us" (microseconds)
|
|
22
|
+
* @returns truncated nanoseconds as a bigint, or 0n on invalid input
|
|
23
|
+
*
|
|
24
|
+
* @example truncateNanoseconds(1710072000123456789n, "us") // 1710072000123456000n
|
|
25
|
+
* @example truncateNanoseconds(1710072000123456789n, "ms") // 1710072000123000000n
|
|
26
|
+
* @example truncateNanoseconds(-1500n, "us") // -2000n
|
|
27
|
+
* @example truncateNanoseconds(0n, "ms") // 0n
|
|
28
|
+
* @example truncateNanoseconds(1710072000123456789n, "ns") // 0n
|
|
29
|
+
* @example truncateNanoseconds(1710072000123456789, "us") // 0n — number, not bigint
|
|
30
|
+
*/
|
|
31
|
+
export function truncateNanoseconds(nanoseconds, unit) {
|
|
32
|
+
if (!isValidEpochNanoseconds(nanoseconds)) {
|
|
33
|
+
return 0n;
|
|
34
|
+
}
|
|
35
|
+
if (unit !== "ms" && unit !== "us") {
|
|
36
|
+
return 0n;
|
|
37
|
+
}
|
|
38
|
+
const divisor = NANOSECONDS_PER_UNIT[unit];
|
|
39
|
+
const remainder = ((nanoseconds % divisor) + divisor) % divisor;
|
|
40
|
+
return nanoseconds - remainder;
|
|
41
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert .NET `DateTime.Ticks` back to an ISO 8601 instant string.
|
|
3
|
+
*
|
|
4
|
+
* - `value` counts 100-nanosecond intervals since 0001-01-01T00:00:00 in the proleptic
|
|
5
|
+
* Gregorian calendar.
|
|
6
|
+
* - **Only UTC ticks name an instant.** .NET counts `Ticks` in the zone of the `DateTime`'s
|
|
7
|
+
* `Kind`: a `Local` or `Unspecified` value counts local wall-clock time, and this function
|
|
8
|
+
* reads every value as UTC. Pass `DateTime.UtcNow.Ticks` or `ToUniversalTime().Ticks`;
|
|
9
|
+
* `DateTime.Now.Ticks` on a UTC−5 host decodes five hours early.
|
|
10
|
+
* - Accepts `DateTime.MinValue` (`0n`) to `DateTime.MaxValue` (`3155378975999999999n`,
|
|
11
|
+
* 9999-12-31T23:59:59.9999999). A tick count outside that is not a `DateTime`, and a
|
|
12
|
+
* negative value in particular is rejected rather than read as a pre-year-1 instant.
|
|
13
|
+
* - Pass `Ticks`, not the raw backing field: .NET packs `DateTimeKind` into its top two
|
|
14
|
+
* bits, and a `Kind`-tagged value would decode as an instant thousands of years out.
|
|
15
|
+
* - Exact in this direction — 100 ns is coarser than the nanoseconds an ISO string carries,
|
|
16
|
+
* so nothing is rounded. The loss, if any, happened in `toDotNetTicks`.
|
|
17
|
+
* - Returns "" on invalid input.
|
|
18
|
+
*
|
|
19
|
+
* @param value 100-nanosecond intervals since 0001-01-01 (bigint, 0n to 3155378975999999999n)
|
|
20
|
+
* @returns ISO 8601 instant string (UTC), or "" on invalid input
|
|
21
|
+
*
|
|
22
|
+
* @example fromDotNetTicks(0n) // "0001-01-01T00:00:00Z" — DateTime.MinValue
|
|
23
|
+
* @example fromDotNetTicks(621355968000000000n) // "1970-01-01T00:00:00Z"
|
|
24
|
+
* @example fromDotNetTicks(638456708967890000n) // "2024-03-10T12:34:56.789Z"
|
|
25
|
+
* @example fromDotNetTicks(3155378975999999999n) // "9999-12-31T23:59:59.9999999Z" — DateTime.MaxValue
|
|
26
|
+
* @example fromDotNetTicks(-1n) // "" — before DateTime.MinValue
|
|
27
|
+
* @example fromDotNetTicks(3155378976000000000n) // "" — past DateTime.MaxValue
|
|
28
|
+
* @example fromDotNetTicks(621355968000000000) // "" — number, not bigint
|
|
29
|
+
*/
|
|
30
|
+
export declare function fromDotNetTicks(value: bigint): string;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { DOT_NET_TICKS_EPOCH_OFFSET, MAX_DOT_NET_TICKS, MIN_DOT_NET_TICKS, NANOSECONDS_PER_TICK, } from "../../internal/index.js";
|
|
2
|
+
import { fromNanoseconds } from "./fromNanoseconds.js";
|
|
3
|
+
/**
|
|
4
|
+
* Convert .NET `DateTime.Ticks` back to an ISO 8601 instant string.
|
|
5
|
+
*
|
|
6
|
+
* - `value` counts 100-nanosecond intervals since 0001-01-01T00:00:00 in the proleptic
|
|
7
|
+
* Gregorian calendar.
|
|
8
|
+
* - **Only UTC ticks name an instant.** .NET counts `Ticks` in the zone of the `DateTime`'s
|
|
9
|
+
* `Kind`: a `Local` or `Unspecified` value counts local wall-clock time, and this function
|
|
10
|
+
* reads every value as UTC. Pass `DateTime.UtcNow.Ticks` or `ToUniversalTime().Ticks`;
|
|
11
|
+
* `DateTime.Now.Ticks` on a UTC−5 host decodes five hours early.
|
|
12
|
+
* - Accepts `DateTime.MinValue` (`0n`) to `DateTime.MaxValue` (`3155378975999999999n`,
|
|
13
|
+
* 9999-12-31T23:59:59.9999999). A tick count outside that is not a `DateTime`, and a
|
|
14
|
+
* negative value in particular is rejected rather than read as a pre-year-1 instant.
|
|
15
|
+
* - Pass `Ticks`, not the raw backing field: .NET packs `DateTimeKind` into its top two
|
|
16
|
+
* bits, and a `Kind`-tagged value would decode as an instant thousands of years out.
|
|
17
|
+
* - Exact in this direction — 100 ns is coarser than the nanoseconds an ISO string carries,
|
|
18
|
+
* so nothing is rounded. The loss, if any, happened in `toDotNetTicks`.
|
|
19
|
+
* - Returns "" on invalid input.
|
|
20
|
+
*
|
|
21
|
+
* @param value 100-nanosecond intervals since 0001-01-01 (bigint, 0n to 3155378975999999999n)
|
|
22
|
+
* @returns ISO 8601 instant string (UTC), or "" on invalid input
|
|
23
|
+
*
|
|
24
|
+
* @example fromDotNetTicks(0n) // "0001-01-01T00:00:00Z" — DateTime.MinValue
|
|
25
|
+
* @example fromDotNetTicks(621355968000000000n) // "1970-01-01T00:00:00Z"
|
|
26
|
+
* @example fromDotNetTicks(638456708967890000n) // "2024-03-10T12:34:56.789Z"
|
|
27
|
+
* @example fromDotNetTicks(3155378975999999999n) // "9999-12-31T23:59:59.9999999Z" — DateTime.MaxValue
|
|
28
|
+
* @example fromDotNetTicks(-1n) // "" — before DateTime.MinValue
|
|
29
|
+
* @example fromDotNetTicks(3155378976000000000n) // "" — past DateTime.MaxValue
|
|
30
|
+
* @example fromDotNetTicks(621355968000000000) // "" — number, not bigint
|
|
31
|
+
*/
|
|
32
|
+
export function fromDotNetTicks(value) {
|
|
33
|
+
if (typeof value !== "bigint" ||
|
|
34
|
+
value < MIN_DOT_NET_TICKS ||
|
|
35
|
+
value > MAX_DOT_NET_TICKS) {
|
|
36
|
+
return "";
|
|
37
|
+
}
|
|
38
|
+
return fromNanoseconds((value - DOT_NET_TICKS_EPOCH_OFFSET) * NANOSECONDS_PER_TICK);
|
|
39
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ExcelDateSystem } from "./toExcelSerial.js";
|
|
2
|
+
/**
|
|
3
|
+
* Convert an Excel day serial back to an ISO 8601 instant string.
|
|
4
|
+
*
|
|
5
|
+
* - The serial is days with the time of day as the fraction, read as a UTC wall clock.
|
|
6
|
+
* - **Serial 60 in the 1900 system returns ""** — it is the phantom 29 February 1900, a date
|
|
7
|
+
* that never existed. Lotus 1-2-3 treated 1900 as a leap year and Excel keeps the bug for
|
|
8
|
+
* compatibility, so the whole serial day `[60, 61)` is a hole: 59 is 1900-02-28 and 61 is
|
|
9
|
+
* 1900-03-01. Mapping 60 to either neighbour would put every earlier date one day out.
|
|
10
|
+
* - `{ system: "1904" }` selects the legacy Mac system, whose serial 0 is 1904-01-01 and
|
|
11
|
+
* which has no phantom day — serial 60 there is a real 1904-03-01. A 1904 serial resolves
|
|
12
|
+
* to the same instant as the 1900 serial exactly 1462 higher.
|
|
13
|
+
* - Accepted range is Excel's own: serial 1 (1900-01-01) to just under 2958466 (the end of
|
|
14
|
+
* 9999-12-31) in the 1900 system, serial 0 to just under 2957004 in the 1904 system.
|
|
15
|
+
* Serial 0 in the 1900 system is Excel's "January 0, 1900" placeholder, not a date.
|
|
16
|
+
* - Rounds to the nearest millisecond. A serial is a `double`, whose resolution is about a
|
|
17
|
+
* microsecond near 2024 and about 40 µs near 9999 — finer than a millisecond nowhere in
|
|
18
|
+
* the range, so rounding there is what makes the round trip through `toExcelSerial` exact.
|
|
19
|
+
* - Returns "" on invalid input.
|
|
20
|
+
*
|
|
21
|
+
* @param value Excel day serial (number, may carry a fractional time of day)
|
|
22
|
+
* @param options optional: system ("1900" (default) | "1904")
|
|
23
|
+
* @returns ISO 8601 instant string (UTC), or "" on invalid input
|
|
24
|
+
*
|
|
25
|
+
* @example fromExcelSerial(1) // "1900-01-01T00:00:00Z" — Excel's first serial
|
|
26
|
+
* @example fromExcelSerial(25569) // "1970-01-01T00:00:00Z"
|
|
27
|
+
* @example fromExcelSerial(45361.5) // "2024-03-10T12:00:00Z"
|
|
28
|
+
* @example fromExcelSerial(59) // "1900-02-28T00:00:00Z"
|
|
29
|
+
* @example fromExcelSerial(60) // "" — the phantom 1900-02-29, a date that never existed
|
|
30
|
+
* @example fromExcelSerial(61) // "1900-03-01T00:00:00Z"
|
|
31
|
+
* @example fromExcelSerial(60, { system: "1904" }) // "1904-03-01T00:00:00Z" — no phantom day here
|
|
32
|
+
* @example fromExcelSerial(43899.5, { system: "1904" }) // "2024-03-10T12:00:00Z"
|
|
33
|
+
* @example fromExcelSerial(0) // "" — Excel's "January 0, 1900", not a date
|
|
34
|
+
* @example fromExcelSerial(-1) // ""
|
|
35
|
+
*/
|
|
36
|
+
export declare function fromExcelSerial(value: number, options?: {
|
|
37
|
+
system?: ExcelDateSystem;
|
|
38
|
+
}): string;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { EXCEL_1900_EPOCH_NANOSECONDS, EXCEL_1900_PRE_PHANTOM_EPOCH_NANOSECONDS, EXCEL_1904_EPOCH_NANOSECONDS, EXCEL_PHANTOM_SERIAL, MAX_EXCEL_1900_SERIAL_EXCLUSIVE, MAX_EXCEL_1904_SERIAL_EXCLUSIVE, MILLISECONDS_PER_DAY, MIN_EXCEL_1900_SERIAL, MIN_EXCEL_1904_SERIAL, NANOSECONDS_PER_MILLISECOND, } from "../../internal/index.js";
|
|
2
|
+
import { fromNanoseconds } from "./fromNanoseconds.js";
|
|
3
|
+
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
4
|
+
/**
|
|
5
|
+
* Convert an Excel day serial back to an ISO 8601 instant string.
|
|
6
|
+
*
|
|
7
|
+
* - The serial is days with the time of day as the fraction, read as a UTC wall clock.
|
|
8
|
+
* - **Serial 60 in the 1900 system returns ""** — it is the phantom 29 February 1900, a date
|
|
9
|
+
* that never existed. Lotus 1-2-3 treated 1900 as a leap year and Excel keeps the bug for
|
|
10
|
+
* compatibility, so the whole serial day `[60, 61)` is a hole: 59 is 1900-02-28 and 61 is
|
|
11
|
+
* 1900-03-01. Mapping 60 to either neighbour would put every earlier date one day out.
|
|
12
|
+
* - `{ system: "1904" }` selects the legacy Mac system, whose serial 0 is 1904-01-01 and
|
|
13
|
+
* which has no phantom day — serial 60 there is a real 1904-03-01. A 1904 serial resolves
|
|
14
|
+
* to the same instant as the 1900 serial exactly 1462 higher.
|
|
15
|
+
* - Accepted range is Excel's own: serial 1 (1900-01-01) to just under 2958466 (the end of
|
|
16
|
+
* 9999-12-31) in the 1900 system, serial 0 to just under 2957004 in the 1904 system.
|
|
17
|
+
* Serial 0 in the 1900 system is Excel's "January 0, 1900" placeholder, not a date.
|
|
18
|
+
* - Rounds to the nearest millisecond. A serial is a `double`, whose resolution is about a
|
|
19
|
+
* microsecond near 2024 and about 40 µs near 9999 — finer than a millisecond nowhere in
|
|
20
|
+
* the range, so rounding there is what makes the round trip through `toExcelSerial` exact.
|
|
21
|
+
* - Returns "" on invalid input.
|
|
22
|
+
*
|
|
23
|
+
* @param value Excel day serial (number, may carry a fractional time of day)
|
|
24
|
+
* @param options optional: system ("1900" (default) | "1904")
|
|
25
|
+
* @returns ISO 8601 instant string (UTC), or "" on invalid input
|
|
26
|
+
*
|
|
27
|
+
* @example fromExcelSerial(1) // "1900-01-01T00:00:00Z" — Excel's first serial
|
|
28
|
+
* @example fromExcelSerial(25569) // "1970-01-01T00:00:00Z"
|
|
29
|
+
* @example fromExcelSerial(45361.5) // "2024-03-10T12:00:00Z"
|
|
30
|
+
* @example fromExcelSerial(59) // "1900-02-28T00:00:00Z"
|
|
31
|
+
* @example fromExcelSerial(60) // "" — the phantom 1900-02-29, a date that never existed
|
|
32
|
+
* @example fromExcelSerial(61) // "1900-03-01T00:00:00Z"
|
|
33
|
+
* @example fromExcelSerial(60, { system: "1904" }) // "1904-03-01T00:00:00Z" — no phantom day here
|
|
34
|
+
* @example fromExcelSerial(43899.5, { system: "1904" }) // "2024-03-10T12:00:00Z"
|
|
35
|
+
* @example fromExcelSerial(0) // "" — Excel's "January 0, 1900", not a date
|
|
36
|
+
* @example fromExcelSerial(-1) // ""
|
|
37
|
+
*/
|
|
38
|
+
export function fromExcelSerial(value, options) {
|
|
39
|
+
try {
|
|
40
|
+
if (!isOptionsArgument(options)) {
|
|
41
|
+
return "";
|
|
42
|
+
}
|
|
43
|
+
const system = options?.system === undefined ? "1900" : options.system;
|
|
44
|
+
if (system !== "1900" && system !== "1904") {
|
|
45
|
+
return "";
|
|
46
|
+
}
|
|
47
|
+
if (!Number.isFinite(value)) {
|
|
48
|
+
return "";
|
|
49
|
+
}
|
|
50
|
+
// Snap to the millisecond grid before deciding anything: the range and phantom-day
|
|
51
|
+
// comparisons must be made against the value actually built, not against a serial that
|
|
52
|
+
// rounds across a boundary on the way there.
|
|
53
|
+
const dayMilliseconds = Math.round(value * MILLISECONDS_PER_DAY);
|
|
54
|
+
const minimum = system === "1904" ? MIN_EXCEL_1904_SERIAL : MIN_EXCEL_1900_SERIAL;
|
|
55
|
+
const maximumExclusive = system === "1904"
|
|
56
|
+
? MAX_EXCEL_1904_SERIAL_EXCLUSIVE
|
|
57
|
+
: MAX_EXCEL_1900_SERIAL_EXCLUSIVE;
|
|
58
|
+
if (dayMilliseconds < minimum * MILLISECONDS_PER_DAY ||
|
|
59
|
+
dayMilliseconds >= maximumExclusive * MILLISECONDS_PER_DAY) {
|
|
60
|
+
return "";
|
|
61
|
+
}
|
|
62
|
+
if (system === "1904") {
|
|
63
|
+
return fromNanoseconds(BigInt(dayMilliseconds) * NANOSECONDS_PER_MILLISECOND +
|
|
64
|
+
EXCEL_1904_EPOCH_NANOSECONDS);
|
|
65
|
+
}
|
|
66
|
+
const phantomStart = EXCEL_PHANTOM_SERIAL * MILLISECONDS_PER_DAY;
|
|
67
|
+
const phantomEnd = (EXCEL_PHANTOM_SERIAL + 1) * MILLISECONDS_PER_DAY;
|
|
68
|
+
if (dayMilliseconds >= phantomStart && dayMilliseconds < phantomEnd) {
|
|
69
|
+
return "";
|
|
70
|
+
}
|
|
71
|
+
return fromNanoseconds(BigInt(dayMilliseconds) * NANOSECONDS_PER_MILLISECOND +
|
|
72
|
+
(dayMilliseconds >= phantomEnd
|
|
73
|
+
? EXCEL_1900_EPOCH_NANOSECONDS
|
|
74
|
+
: EXCEL_1900_PRE_PHANTOM_EPOCH_NANOSECONDS));
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
// Never throws (Core Rule 3): a hostile
|
|
78
|
+
// argument is invalid input, not an exception.
|
|
79
|
+
return "";
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert a Windows `FILETIME` back to an ISO 8601 instant string.
|
|
3
|
+
*
|
|
4
|
+
* - `value` counts 100-nanosecond intervals since 1601-01-01T00:00:00Z.
|
|
5
|
+
* - The accepted range is `0n` to `2^63 − 1`, 1601-01-01 to
|
|
6
|
+
* `+030828-09-14T02:48:05.4775807Z`. `FILETIME` is a pair of `DWORD`s, so a negative value is
|
|
7
|
+
* rejected rather than read as a pre-1601 instant. Values from `2^63` up are rejected too:
|
|
8
|
+
* Microsoft's `FileTimeToSystemTime` requires a value "less than 0x8000000000000000", and
|
|
9
|
+
* `SetFileTime` uses `0xFFFFFFFFFFFFFFFF` (`2^64 − 1`) as its "do not modify" marker.
|
|
10
|
+
* - To decode the raw unsigned count anyway, for example to inspect a marker, compute
|
|
11
|
+
* `fromNanoseconds((value - 116444736000000000n) * 100n)`.
|
|
12
|
+
* - Exact in this direction — 100 ns is coarser than the nanoseconds an ISO string carries,
|
|
13
|
+
* so nothing is rounded. The loss, if any, happened in `toFileTime`.
|
|
14
|
+
* - Returns "" on invalid input.
|
|
15
|
+
*
|
|
16
|
+
* @param value 100-nanosecond intervals since 1601-01-01 (bigint, 0n to 2^63 − 1)
|
|
17
|
+
* @returns ISO 8601 instant string (UTC), or "" on invalid input
|
|
18
|
+
*
|
|
19
|
+
* @example fromFileTime(0n) // "1601-01-01T00:00:00Z" — the FILETIME epoch
|
|
20
|
+
* @example fromFileTime(116444736000000000n) // "1970-01-01T00:00:00Z"
|
|
21
|
+
* @example fromFileTime(133545476967890000n) // "2024-03-10T12:34:56.789Z"
|
|
22
|
+
* @example fromFileTime(2650467743999999999n) // "9999-12-31T23:59:59.9999999Z" — .NET's DateTime maximum
|
|
23
|
+
* @example fromFileTime(9223372036854775807n) // "+030828-09-14T02:48:05.4775807Z" — 2^63 − 1, the largest accepted
|
|
24
|
+
* @example fromFileTime(9223372036854775808n) // "" — 2^63, which FileTimeToSystemTime rejects
|
|
25
|
+
* @example fromFileTime(18446744073709551615n) // "" — SetFileTime's do-not-modify marker
|
|
26
|
+
* @example fromNanoseconds((18446744073709551615n - 116444736000000000n) * 100n) // "+060056-05-28T05:36:10.9551615Z" — raw unsigned decode
|
|
27
|
+
* @example fromFileTime(-1n) // "" — FILETIME is unsigned
|
|
28
|
+
* @example fromFileTime(116444736000000000) // "" — number, not bigint
|
|
29
|
+
*/
|
|
30
|
+
export declare function fromFileTime(value: bigint): string;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { FILE_TIME_EPOCH_OFFSET_TICKS, MAX_FILE_TIME, MIN_FILE_TIME, NANOSECONDS_PER_TICK, } from "../../internal/index.js";
|
|
2
|
+
import { fromNanoseconds } from "./fromNanoseconds.js";
|
|
3
|
+
/**
|
|
4
|
+
* Convert a Windows `FILETIME` back to an ISO 8601 instant string.
|
|
5
|
+
*
|
|
6
|
+
* - `value` counts 100-nanosecond intervals since 1601-01-01T00:00:00Z.
|
|
7
|
+
* - The accepted range is `0n` to `2^63 − 1`, 1601-01-01 to
|
|
8
|
+
* `+030828-09-14T02:48:05.4775807Z`. `FILETIME` is a pair of `DWORD`s, so a negative value is
|
|
9
|
+
* rejected rather than read as a pre-1601 instant. Values from `2^63` up are rejected too:
|
|
10
|
+
* Microsoft's `FileTimeToSystemTime` requires a value "less than 0x8000000000000000", and
|
|
11
|
+
* `SetFileTime` uses `0xFFFFFFFFFFFFFFFF` (`2^64 − 1`) as its "do not modify" marker.
|
|
12
|
+
* - To decode the raw unsigned count anyway, for example to inspect a marker, compute
|
|
13
|
+
* `fromNanoseconds((value - 116444736000000000n) * 100n)`.
|
|
14
|
+
* - Exact in this direction — 100 ns is coarser than the nanoseconds an ISO string carries,
|
|
15
|
+
* so nothing is rounded. The loss, if any, happened in `toFileTime`.
|
|
16
|
+
* - Returns "" on invalid input.
|
|
17
|
+
*
|
|
18
|
+
* @param value 100-nanosecond intervals since 1601-01-01 (bigint, 0n to 2^63 − 1)
|
|
19
|
+
* @returns ISO 8601 instant string (UTC), or "" on invalid input
|
|
20
|
+
*
|
|
21
|
+
* @example fromFileTime(0n) // "1601-01-01T00:00:00Z" — the FILETIME epoch
|
|
22
|
+
* @example fromFileTime(116444736000000000n) // "1970-01-01T00:00:00Z"
|
|
23
|
+
* @example fromFileTime(133545476967890000n) // "2024-03-10T12:34:56.789Z"
|
|
24
|
+
* @example fromFileTime(2650467743999999999n) // "9999-12-31T23:59:59.9999999Z" — .NET's DateTime maximum
|
|
25
|
+
* @example fromFileTime(9223372036854775807n) // "+030828-09-14T02:48:05.4775807Z" — 2^63 − 1, the largest accepted
|
|
26
|
+
* @example fromFileTime(9223372036854775808n) // "" — 2^63, which FileTimeToSystemTime rejects
|
|
27
|
+
* @example fromFileTime(18446744073709551615n) // "" — SetFileTime's do-not-modify marker
|
|
28
|
+
* @example fromNanoseconds((18446744073709551615n - 116444736000000000n) * 100n) // "+060056-05-28T05:36:10.9551615Z" — raw unsigned decode
|
|
29
|
+
* @example fromFileTime(-1n) // "" — FILETIME is unsigned
|
|
30
|
+
* @example fromFileTime(116444736000000000) // "" — number, not bigint
|
|
31
|
+
*/
|
|
32
|
+
export function fromFileTime(value) {
|
|
33
|
+
if (typeof value !== "bigint" ||
|
|
34
|
+
value < MIN_FILE_TIME ||
|
|
35
|
+
value > MAX_FILE_TIME) {
|
|
36
|
+
return "";
|
|
37
|
+
}
|
|
38
|
+
return fromNanoseconds((value - FILE_TIME_EPOCH_OFFSET_TICKS) * NANOSECONDS_PER_TICK);
|
|
39
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert nanoseconds since the Unix epoch back to an ISO 8601 string.
|
|
3
|
+
*
|
|
4
|
+
* - Returns a UTC instant string when no time zone is given, and a zoned string
|
|
5
|
+
* (`"...[America/New_York]"`) when one is.
|
|
6
|
+
* - No disambiguation policy applies: an instant maps to exactly one wall time in a zone,
|
|
7
|
+
* so DST gaps and overlaps cannot arise on this direction of the conversion.
|
|
8
|
+
* - A time zone, when given, must be a valid IANA identifier. `undefined` is the same as omitting
|
|
9
|
+
* it (UTC), as TC39 treats an undefined argument as absent.
|
|
10
|
+
* - Rejects values outside the range `Temporal.Instant` can represent
|
|
11
|
+
* (±8_640_000_000_000_000_000_000n, i.e. ±10^8 days from the epoch).
|
|
12
|
+
* - **Storage round-trip:** most engines cannot hold nanoseconds — PostgreSQL `timestamptz`
|
|
13
|
+
* stores microseconds — so writing this value and reading it back breaks equality unless
|
|
14
|
+
* the caller applies `truncateNanoseconds` to the target precision first.
|
|
15
|
+
* - Returns "" on invalid input.
|
|
16
|
+
*
|
|
17
|
+
* @param nanoseconds nanoseconds since the Unix epoch (bigint)
|
|
18
|
+
* @param timeZone optional IANA timeZone identifier; omitted or `undefined` is UTC
|
|
19
|
+
* @returns ISO 8601 instant string (UTC), zoned ISO 8601 string when a timeZone is given, or "" on invalid input
|
|
20
|
+
*
|
|
21
|
+
* @example fromNanoseconds(0n) // "1970-01-01T00:00:00Z"
|
|
22
|
+
* @example fromNanoseconds(1710072000123456789n) // "2024-03-10T12:00:00.123456789Z"
|
|
23
|
+
* @example fromNanoseconds(1710072000123456789n, "America/New_York") // "2024-03-10T08:00:00.123456789-04:00[America/New_York]"
|
|
24
|
+
* @example fromNanoseconds(-1000000000n) // "1969-12-31T23:59:59Z"
|
|
25
|
+
* @example fromNanoseconds(0n, "Not/AZone") // ""
|
|
26
|
+
* @example fromNanoseconds(0n, undefined) // "1970-01-01T00:00:00Z" — undefined is the same as omitted
|
|
27
|
+
* @example fromNanoseconds(1710072000123456789) // "" — number, not bigint
|
|
28
|
+
*/
|
|
29
|
+
export declare function fromNanoseconds(nanoseconds: bigint, timeZone?: string): string;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
|
+
import { isValidEpochNanoseconds } from "../../internal/index.js";
|
|
3
|
+
import { isValidTimeZone } from "../../zoned/validate/index.js";
|
|
4
|
+
/**
|
|
5
|
+
* Convert nanoseconds since the Unix epoch back to an ISO 8601 string.
|
|
6
|
+
*
|
|
7
|
+
* - Returns a UTC instant string when no time zone is given, and a zoned string
|
|
8
|
+
* (`"...[America/New_York]"`) when one is.
|
|
9
|
+
* - No disambiguation policy applies: an instant maps to exactly one wall time in a zone,
|
|
10
|
+
* so DST gaps and overlaps cannot arise on this direction of the conversion.
|
|
11
|
+
* - A time zone, when given, must be a valid IANA identifier. `undefined` is the same as omitting
|
|
12
|
+
* it (UTC), as TC39 treats an undefined argument as absent.
|
|
13
|
+
* - Rejects values outside the range `Temporal.Instant` can represent
|
|
14
|
+
* (±8_640_000_000_000_000_000_000n, i.e. ±10^8 days from the epoch).
|
|
15
|
+
* - **Storage round-trip:** most engines cannot hold nanoseconds — PostgreSQL `timestamptz`
|
|
16
|
+
* stores microseconds — so writing this value and reading it back breaks equality unless
|
|
17
|
+
* the caller applies `truncateNanoseconds` to the target precision first.
|
|
18
|
+
* - Returns "" on invalid input.
|
|
19
|
+
*
|
|
20
|
+
* @param nanoseconds nanoseconds since the Unix epoch (bigint)
|
|
21
|
+
* @param timeZone optional IANA timeZone identifier; omitted or `undefined` is UTC
|
|
22
|
+
* @returns ISO 8601 instant string (UTC), zoned ISO 8601 string when a timeZone is given, or "" on invalid input
|
|
23
|
+
*
|
|
24
|
+
* @example fromNanoseconds(0n) // "1970-01-01T00:00:00Z"
|
|
25
|
+
* @example fromNanoseconds(1710072000123456789n) // "2024-03-10T12:00:00.123456789Z"
|
|
26
|
+
* @example fromNanoseconds(1710072000123456789n, "America/New_York") // "2024-03-10T08:00:00.123456789-04:00[America/New_York]"
|
|
27
|
+
* @example fromNanoseconds(-1000000000n) // "1969-12-31T23:59:59Z"
|
|
28
|
+
* @example fromNanoseconds(0n, "Not/AZone") // ""
|
|
29
|
+
* @example fromNanoseconds(0n, undefined) // "1970-01-01T00:00:00Z" — undefined is the same as omitted
|
|
30
|
+
* @example fromNanoseconds(1710072000123456789) // "" — number, not bigint
|
|
31
|
+
*/
|
|
32
|
+
export function fromNanoseconds(nanoseconds, timeZone) {
|
|
33
|
+
if (!isValidEpochNanoseconds(nanoseconds)) {
|
|
34
|
+
return "";
|
|
35
|
+
}
|
|
36
|
+
// An explicit `undefined` is the same as omitting the argument (TC39 optional parameters).
|
|
37
|
+
if (timeZone !== undefined &&
|
|
38
|
+
(typeof timeZone !== "string" || !isValidTimeZone(timeZone))) {
|
|
39
|
+
return "";
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
const instant = Temporal.Instant.fromEpochNanoseconds(nanoseconds);
|
|
43
|
+
return typeof timeZone === "string"
|
|
44
|
+
? instant.toZonedDateTimeISO(timeZone).toString()
|
|
45
|
+
: instant.toString();
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return "";
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert a 64-bit NTP timestamp (RFC 5905) back to an ISO 8601 instant string.
|
|
3
|
+
*
|
|
4
|
+
* - `value` is unsigned: the whole 64-bit timestamp, seconds since 1900-01-01 in the high
|
|
5
|
+
* 32 bits and 2^-32 s units in the low 32. Values outside `0n`–`2^64 − 1` are rejected.
|
|
6
|
+
* - **`era` is required information the value does not carry.** The seconds field wraps
|
|
7
|
+
* every 2^32 seconds (~136.19 years), so one timestamp names one instant per era: era 0
|
|
8
|
+
* is 1900-01-01 to 2036-02-07T06:28:15Z, era 1 starts at 2036-02-07T06:28:16Z, era -1
|
|
9
|
+
* starts at 1763-11-24T17:31:44Z. It defaults to 0; `undefined` is the same as
|
|
10
|
+
* omitting it, as TC39 treats an undefined argument as absent.
|
|
11
|
+
* - Rounds to the nearest nanosecond. One NTP unit is ~233 ps, finer than an ISO string can
|
|
12
|
+
* express, so rounding — not truncation — is what makes `fromNtpTimestamp(toNtpTimestamp(iso))`
|
|
13
|
+
* return `iso` exactly rather than one nanosecond early.
|
|
14
|
+
* - **The top two values of an era round onto the next era's first instant.** `2^64 − 1` and
|
|
15
|
+
* `2^64 − 2` in era 0 both render as `"2036-02-07T06:28:16Z"`, which is where era 1 starts:
|
|
16
|
+
* the last 0.47 ns of an era has no nanosecond of its own, and the nearest one is the era
|
|
17
|
+
* boundary. `toNtpTimestamp` cannot produce either value from a nanosecond-precision
|
|
18
|
+
* instant — its largest era-0 output is `18446744073709551611n` — so this does not affect
|
|
19
|
+
* the round trip.
|
|
20
|
+
* - **`0n` is two things on the wire.** RFC 5905 §6 defines the prime epoch as the instant
|
|
21
|
+
* "when all bits are zero", and also says "a value of zero is a special case representing
|
|
22
|
+
* unknown or unsynchronized time" — for example a reference timestamp sent before the first
|
|
23
|
+
* sync. This function decodes `0n` as the era's first instant; a caller reading packet
|
|
24
|
+
* fields should test for `0n` first when "unsynchronized" must not become a 1900 date.
|
|
25
|
+
* - Returns "" when the resulting instant is outside the range `Temporal.Instant` can
|
|
26
|
+
* represent, which a large `era` will reach.
|
|
27
|
+
* - Returns "" on invalid input.
|
|
28
|
+
*
|
|
29
|
+
* @param value 64-bit NTP timestamp (bigint, 0n to 2^64 − 1)
|
|
30
|
+
* @param eraArg optional 136-year era selector; omitted or `undefined` is era 0
|
|
31
|
+
* @returns ISO 8601 instant string (UTC), or "" on invalid input
|
|
32
|
+
*
|
|
33
|
+
* @example fromNtpTimestamp(0n) // "1900-01-01T00:00:00Z" — the NTP epoch, and also RFC 5905's unknown or unsynchronized marker
|
|
34
|
+
* @example fromNtpTimestamp(9487534653230284800n) // "1970-01-01T00:00:00Z"
|
|
35
|
+
* @example fromNtpTimestamp(16832246972675778412n) // "2024-03-10T12:34:56.789Z"
|
|
36
|
+
* @example fromNtpTimestamp(18446744069414584320n) // "2036-02-07T06:28:15Z" — the last second of era 0
|
|
37
|
+
* @example fromNtpTimestamp(0n, 1) // "2036-02-07T06:28:16Z" — the same value, one era on
|
|
38
|
+
* @example fromNtpTimestamp(0n, -1) // "1763-11-24T17:31:44Z"
|
|
39
|
+
* @example fromNtpTimestamp(-1n) // "" — the timestamp is unsigned
|
|
40
|
+
* @example fromNtpTimestamp(0n, undefined) // "1900-01-01T00:00:00Z" — undefined is era 0, as omitted
|
|
41
|
+
* @example fromNtpTimestamp(0n, 1.5) // "" — an era must be a safe integer
|
|
42
|
+
*/
|
|
43
|
+
export declare function fromNtpTimestamp(value: bigint, eraArg?: number): string;
|