@northguild/gmt 1.15.0 → 1.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1133 -272
- package/dist/calendar/business/businessDaysBetween.d.ts +37 -0
- package/dist/calendar/business/businessDaysBetween.js +89 -0
- package/dist/calendar/business/index.d.ts +7 -0
- package/dist/calendar/business/index.js +10 -0
- package/dist/calendar/business/mergeCalendars.d.ts +33 -0
- package/dist/calendar/business/mergeCalendars.js +68 -0
- package/dist/calendar/business/nextBusinessDay.d.ts +30 -0
- package/dist/calendar/business/nextBusinessDay.js +39 -0
- package/dist/calendar/business/previousBusinessDay.d.ts +30 -0
- package/dist/calendar/business/previousBusinessDay.js +39 -0
- package/dist/calendar/business/rollDate.d.ts +59 -0
- package/dist/calendar/business/rollDate.js +116 -0
- package/dist/calendar/calculate/bucketRange.d.ts +49 -0
- package/dist/calendar/calculate/bucketRange.js +169 -0
- package/dist/calendar/calculate/floorToZone.d.ts +42 -0
- package/dist/calendar/calculate/floorToZone.js +62 -0
- package/dist/calendar/calculate/getFiscalPeriod.d.ts +64 -0
- package/dist/calendar/calculate/getFiscalPeriod.js +96 -0
- package/dist/calendar/calculate/getIsoWeekDate.d.ts +35 -0
- package/dist/calendar/calculate/getIsoWeekDate.js +41 -0
- package/dist/calendar/calculate/getOrdinalDate.d.ts +25 -0
- package/dist/calendar/calculate/getOrdinalDate.js +28 -0
- package/dist/calendar/calculate/getQuarter.d.ts +36 -0
- package/dist/calendar/calculate/getQuarter.js +64 -0
- package/dist/calendar/calculate/index.d.ts +6 -0
- package/dist/calendar/calculate/index.js +6 -0
- package/dist/calendar/index.d.ts +4 -0
- package/dist/calendar/index.js +5 -0
- package/dist/calendar/validate/index.d.ts +4 -0
- package/dist/calendar/validate/index.js +4 -0
- package/dist/calendar/validate/isValidBusinessCalendar.d.ts +31 -0
- package/dist/calendar/validate/isValidBusinessCalendar.js +40 -0
- package/dist/calendar/validate/isValidFiscalPattern.d.ts +25 -0
- package/dist/calendar/validate/isValidFiscalPattern.js +29 -0
- package/dist/calendar/validate/isValidRollConvention.d.ts +28 -0
- package/dist/calendar/validate/isValidRollConvention.js +38 -0
- package/dist/calendar/validate/isValidZoneBucketUnit.d.ts +31 -0
- package/dist/calendar/validate/isValidZoneBucketUnit.js +39 -0
- package/dist/duration/calculate/durationAs.d.ts +27 -3
- package/dist/duration/calculate/durationAs.js +34 -8
- package/dist/duration/calculate/getDurationUnit.d.ts +5 -2
- package/dist/duration/calculate/getDurationUnit.js +7 -3
- package/dist/duration/compare/compareDurations.d.ts +25 -2
- package/dist/duration/compare/compareDurations.js +31 -7
- package/dist/duration/format/formatDuration.d.ts +14 -5
- package/dist/duration/format/formatDuration.js +47 -11
- package/dist/duration/index.d.ts +1 -0
- package/dist/duration/index.js +2 -0
- package/dist/duration/normalize/normalizeDuration.d.ts +33 -6
- package/dist/duration/normalize/normalizeDuration.js +41 -12
- package/dist/duration/parse/parseDuration.js +4 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +7 -0
- package/dist/instant/convert/classifyLocal.d.ts +50 -0
- package/dist/instant/convert/classifyLocal.js +60 -0
- package/dist/instant/convert/fromOffsetInstant.d.ts +47 -0
- package/dist/instant/convert/fromOffsetInstant.js +91 -0
- package/dist/instant/convert/index.d.ts +4 -0
- package/dist/instant/convert/index.js +4 -0
- package/dist/instant/convert/resolveLocal.d.ts +40 -0
- package/dist/instant/convert/resolveLocal.js +76 -0
- package/dist/instant/convert/toOffsetInstant.d.ts +96 -0
- package/dist/instant/convert/toOffsetInstant.js +162 -0
- package/dist/instant/index.d.ts +2 -0
- package/dist/instant/index.js +3 -0
- package/dist/intermodal/calculate/billingTimeline.d.ts +94 -0
- package/dist/intermodal/calculate/billingTimeline.js +168 -0
- package/dist/intermodal/calculate/chargeableDays.d.ts +98 -0
- package/dist/intermodal/calculate/chargeableDays.js +101 -0
- package/dist/intermodal/calculate/demurrageClock.d.ts +93 -0
- package/dist/intermodal/calculate/demurrageClock.js +140 -0
- package/dist/intermodal/calculate/freeTimeExpiry.d.ts +66 -0
- package/dist/intermodal/calculate/freeTimeExpiry.js +82 -0
- package/dist/intermodal/calculate/index.d.ts +4 -0
- package/dist/intermodal/calculate/index.js +4 -0
- package/dist/intermodal/index.d.ts +2 -0
- package/dist/intermodal/index.js +3 -0
- package/dist/internal/adjustZonedBusinessDays.js +9 -7
- package/dist/internal/businessCalendar.d.ts +46 -0
- package/dist/internal/businessCalendar.js +230 -0
- package/dist/internal/businessDayValues.d.ts +20 -0
- package/dist/internal/businessDayValues.js +54 -0
- package/dist/internal/calendarDatePairPolicy.d.ts +10 -12
- package/dist/internal/calendarDatePairPolicy.js +13 -19
- package/dist/internal/calendarDateString.d.ts +32 -58
- package/dist/internal/calendarDateString.js +51 -93
- package/dist/internal/calendarSystemIds.d.ts +26 -2
- package/dist/internal/calendarSystemIds.js +57 -51
- package/dist/internal/calendarValueOfDate.d.ts +10 -12
- package/dist/internal/calendarValueOfDate.js +22 -20
- package/dist/internal/calendarValueOfZoned.d.ts +14 -17
- package/dist/internal/calendarValueOfZoned.js +25 -25
- package/dist/internal/calendarZonedPairPolicy.d.ts +11 -18
- package/dist/internal/calendarZonedPairPolicy.js +14 -25
- package/dist/internal/calendarZonedString.d.ts +41 -65
- package/dist/internal/calendarZonedString.js +52 -101
- package/dist/internal/compareUnixEpochs.d.ts +14 -0
- package/dist/internal/compareUnixEpochs.js +25 -0
- package/dist/internal/dateTimeUnitHelpers.d.ts +18 -0
- package/dist/internal/dateTimeUnitHelpers.js +27 -0
- package/dist/internal/dateUnitHelpers.d.ts +39 -1
- package/dist/internal/dateUnitHelpers.js +73 -11
- package/dist/internal/defaultFractionalDigits.d.ts +14 -0
- package/dist/internal/defaultFractionalDigits.js +23 -0
- package/dist/internal/differenceRecord.d.ts +32 -0
- package/dist/internal/differenceRecord.js +79 -0
- package/dist/internal/divisionBoundary.d.ts +19 -0
- package/dist/internal/divisionBoundary.js +23 -0
- package/dist/internal/durationUntilString.d.ts +1 -1
- package/dist/internal/durationUntilString.js +10 -2
- package/dist/internal/englishCalendarNames.d.ts +11 -0
- package/dist/internal/englishCalendarNames.js +21 -1
- package/dist/internal/epochNanoseconds.d.ts +27 -0
- package/dist/internal/epochNanoseconds.js +31 -0
- package/dist/internal/fiscalCalendar.d.ts +36 -0
- package/dist/internal/fiscalCalendar.js +86 -0
- package/dist/internal/floorDivide.d.ts +15 -0
- package/dist/internal/floorDivide.js +18 -0
- package/dist/internal/foreignEpochs.d.ts +134 -0
- package/dist/internal/foreignEpochs.js +139 -0
- package/dist/internal/formatCalendarDays.d.ts +28 -0
- package/dist/internal/formatCalendarDays.js +49 -0
- package/dist/internal/formatDateInCalendar.d.ts +14 -39
- package/dist/internal/formatDateInCalendar.js +16 -47
- package/dist/internal/formatRelativeDuration.d.ts +27 -0
- package/dist/internal/formatRelativeDuration.js +45 -0
- package/dist/internal/freeTimeLedger.d.ts +93 -0
- package/dist/internal/freeTimeLedger.js +262 -0
- package/dist/internal/getLocaleFirstDayOfWeek.d.ts +9 -6
- package/dist/internal/getLocaleFirstDayOfWeek.js +9 -10
- package/dist/internal/getLocaleWeekYearBounds.d.ts +17 -9
- package/dist/internal/getLocaleWeekYearBounds.js +45 -26
- package/dist/internal/getLocaleWeekendDays.d.ts +9 -18
- package/dist/internal/getLocaleWeekendDays.js +9 -5
- package/dist/internal/halfOpenIntervals.d.ts +102 -0
- package/dist/internal/halfOpenIntervals.js +180 -0
- package/dist/internal/hasCalendarAnnotation.d.ts +20 -20
- package/dist/internal/hasCalendarAnnotation.js +23 -21
- package/dist/internal/hourDurationString.d.ts +16 -0
- package/dist/internal/hourDurationString.js +47 -0
- package/dist/internal/httpDateFields.d.ts +24 -0
- package/dist/internal/httpDateFields.js +86 -0
- package/dist/internal/index.d.ts +30 -9
- package/dist/internal/index.js +30 -9
- package/dist/internal/instantFormatOptions.d.ts +43 -0
- package/dist/internal/instantFormatOptions.js +99 -0
- package/dist/internal/instantIntervalText.d.ts +20 -0
- package/dist/internal/instantIntervalText.js +25 -0
- package/dist/internal/instantNanoseconds.d.ts +25 -0
- package/dist/internal/instantNanoseconds.js +41 -0
- package/dist/internal/intervalCountHelpers.d.ts +16 -10
- package/dist/internal/intervalCountHelpers.js +1 -31
- package/dist/internal/intervalNanoseconds.d.ts +47 -0
- package/dist/internal/intervalNanoseconds.js +86 -0
- package/dist/internal/isObject.d.ts +26 -0
- package/dist/internal/isObject.js +30 -0
- package/dist/internal/isoStringBody.d.ts +66 -0
- package/dist/internal/isoStringBody.js +105 -0
- package/dist/internal/joinDateTimeConnector.d.ts +1 -1
- package/dist/internal/localeWeekInfo.d.ts +34 -0
- package/dist/internal/localeWeekInfo.js +27 -0
- package/dist/internal/maxPieces.d.ts +41 -0
- package/dist/internal/maxPieces.js +53 -0
- package/dist/internal/measureNearRangeEnd.d.ts +26 -0
- package/dist/internal/measureNearRangeEnd.js +47 -0
- package/dist/internal/monthGridWeekRow.d.ts +4 -1
- package/dist/internal/monthGridWeekRow.js +3 -0
- package/dist/internal/normalizeTimeZone.d.ts +17 -10
- package/dist/internal/normalizeTimeZone.js +25 -15
- package/dist/internal/patternToken.d.ts +2 -1
- package/dist/internal/patternToken.js +10 -4
- package/dist/internal/plainDateAdd.d.ts +20 -0
- package/dist/internal/plainDateAdd.js +42 -0
- package/dist/internal/plainDateUntil.d.ts +21 -0
- package/dist/internal/plainDateUntil.js +48 -0
- package/dist/internal/plainFormatOptions.d.ts +59 -0
- package/dist/internal/plainFormatOptions.js +165 -0
- package/dist/internal/resolveDateTimeUnit.d.ts +4 -1
- package/dist/internal/resolveDateTimeUnit.js +2 -12
- package/dist/internal/resolveDurationRelativeTo.d.ts +28 -22
- package/dist/internal/resolveDurationRelativeTo.js +69 -25
- package/dist/internal/resolveDurationUnit.d.ts +4 -1
- package/dist/internal/resolveDurationUnit.js +2 -11
- package/dist/internal/resolveLocale.d.ts +37 -0
- package/dist/internal/resolveLocale.js +59 -0
- package/dist/internal/resolveManualRoundingOptions.d.ts +23 -0
- package/dist/internal/resolveManualRoundingOptions.js +39 -0
- package/dist/internal/resolveMinimalDaysInFirstWeek.d.ts +19 -0
- package/dist/internal/resolveMinimalDaysInFirstWeek.js +28 -0
- package/dist/internal/resolveOverflow.d.ts +6 -0
- package/dist/internal/resolveOverflow.js +7 -1
- package/dist/internal/resolveReadingTimeZone.d.ts +11 -0
- package/dist/internal/resolveReadingTimeZone.js +18 -0
- package/dist/internal/resolveUnixIntervalPair.d.ts +30 -0
- package/dist/internal/resolveUnixIntervalPair.js +53 -0
- package/dist/internal/resolveWeekStartsOn.d.ts +12 -0
- package/dist/internal/resolveWeekStartsOn.js +18 -0
- package/dist/internal/rfc5322DateTime.d.ts +26 -0
- package/dist/internal/rfc5322DateTime.js +176 -0
- package/dist/internal/splitStep.d.ts +81 -0
- package/dist/internal/splitStep.js +182 -0
- package/dist/internal/startOrEndOfUnix.d.ts +26 -0
- package/dist/internal/startOrEndOfUnix.js +47 -0
- package/dist/{utc/calculate → internal}/startOrEndOfUtc.d.ts +8 -4
- package/dist/{utc/calculate → internal}/startOrEndOfUtc.js +30 -26
- package/dist/internal/startOrEndOfZoned.d.ts +22 -0
- package/dist/internal/startOrEndOfZoned.js +49 -0
- package/dist/internal/temporalCompat/calendarDateArithmetic.d.ts +33 -0
- package/dist/internal/temporalCompat/calendarDateArithmetic.js +199 -0
- package/dist/internal/temporalCompat/calendarDateFromFields.d.ts +36 -0
- package/dist/internal/temporalCompat/calendarDateFromFields.js +120 -0
- package/dist/internal/temporalCompat/calendarFields.d.ts +25 -0
- package/dist/internal/temporalCompat/calendarFields.js +131 -0
- package/dist/internal/temporalCompat/capabilities.d.ts +28 -0
- package/dist/internal/temporalCompat/capabilities.js +74 -0
- package/dist/internal/temporalCompat/fieldSearch.d.ts +21 -0
- package/dist/internal/temporalCompat/fieldSearch.js +83 -0
- package/dist/internal/temporalCompat/fixedDay.d.ts +25 -0
- package/dist/internal/temporalCompat/fixedDay.js +45 -0
- package/dist/internal/temporalCompat/hebrewArithmetic.d.ts +19 -0
- package/dist/internal/temporalCompat/hebrewArithmetic.js +150 -0
- package/dist/internal/temporalCompat/index.d.ts +4 -0
- package/dist/internal/temporalCompat/index.js +5 -0
- package/dist/internal/temporalCompat/indianArithmetic.d.ts +16 -0
- package/dist/internal/temporalCompat/indianArithmetic.js +87 -0
- package/dist/internal/temporalCompat/largeMonthSpan.d.ts +19 -0
- package/dist/internal/temporalCompat/largeMonthSpan.js +199 -0
- package/dist/internal/temporalCompat/nonIsoArithmetic.d.ts +59 -0
- package/dist/internal/temporalCompat/nonIsoArithmetic.js +220 -0
- package/dist/internal/temporalCompat/readArithmeticModel.d.ts +3 -0
- package/dist/internal/temporalCompat/readArithmeticModel.js +284 -0
- package/dist/internal/temporalCompat/repros.d.ts +31 -0
- package/dist/internal/temporalCompat/repros.js +556 -0
- package/dist/internal/toInstantFromUtc.d.ts +10 -0
- package/dist/internal/toInstantFromUtc.js +19 -0
- package/dist/internal/unixEpochValue.d.ts +166 -0
- package/dist/internal/unixEpochValue.js +245 -0
- package/dist/internal/unixFormatReference.d.ts +18 -0
- package/dist/internal/unixFormatReference.js +44 -0
- package/dist/internal/unixZonedDateTime.d.ts +22 -0
- package/dist/internal/unixZonedDateTime.js +32 -0
- package/dist/internal/utcOffsetString.d.ts +39 -0
- package/dist/internal/utcOffsetString.js +75 -0
- package/dist/internal/utcZonedDateTime.d.ts +16 -0
- package/dist/internal/utcZonedDateTime.js +28 -0
- package/dist/internal/wallClockAtOffset.d.ts +22 -0
- package/dist/internal/wallClockAtOffset.js +26 -0
- package/dist/internal/zonedBucket.d.ts +91 -0
- package/dist/internal/zonedBucket.js +441 -0
- package/dist/internal/zonedFormatReference.d.ts +15 -0
- package/dist/internal/zonedFormatReference.js +24 -0
- package/dist/internal/zonedLocalDates.d.ts +15 -0
- package/dist/internal/zonedLocalDates.js +58 -0
- package/dist/internal/zonedNowUnitValue.d.ts +24 -0
- package/dist/internal/zonedNowUnitValue.js +58 -0
- package/dist/internal/zonedWallClock.d.ts +84 -0
- package/dist/internal/zonedWallClock.js +427 -0
- package/dist/internal/zonedWallClockDifference.d.ts +92 -0
- package/dist/internal/zonedWallClockDifference.js +1174 -0
- package/dist/internal/zonedWallClockOperations.d.ts +132 -0
- package/dist/internal/zonedWallClockOperations.js +553 -0
- package/dist/internal/zonelessCalendarDate.d.ts +12 -0
- package/dist/internal/zonelessCalendarDate.js +22 -0
- package/dist/interval/calculate/clampInterval.d.ts +22 -0
- package/dist/interval/calculate/clampInterval.js +31 -0
- package/dist/interval/calculate/index.d.ts +6 -0
- package/dist/interval/calculate/index.js +6 -0
- package/dist/interval/calculate/intersectIntervals.d.ts +23 -0
- package/dist/interval/calculate/intersectIntervals.js +43 -0
- package/dist/interval/calculate/mergeIntervals.d.ts +28 -0
- package/dist/interval/calculate/mergeIntervals.js +44 -0
- package/dist/interval/calculate/splitIntervalAt.d.ts +28 -0
- package/dist/interval/calculate/splitIntervalAt.js +63 -0
- package/dist/interval/calculate/subtractIntervals.d.ts +31 -0
- package/dist/interval/calculate/subtractIntervals.js +64 -0
- package/dist/interval/calculate/sumIntervals.d.ts +26 -0
- package/dist/interval/calculate/sumIntervals.js +40 -0
- package/dist/interval/compare/index.d.ts +2 -0
- package/dist/interval/compare/index.js +2 -0
- package/dist/interval/compare/intervalContains.d.ts +25 -0
- package/dist/interval/compare/intervalContains.js +39 -0
- package/dist/interval/compare/intervalsOverlap.d.ts +28 -0
- package/dist/interval/compare/intervalsOverlap.js +42 -0
- package/dist/interval/index.d.ts +4 -0
- package/dist/interval/index.js +5 -0
- package/dist/interval/validate/index.d.ts +1 -0
- package/dist/interval/validate/index.js +1 -0
- package/dist/interval/validate/isValidInterval.d.ts +29 -0
- package/dist/interval/validate/isValidInterval.js +38 -0
- package/dist/plain/calculate/addBusinessDays.d.ts +26 -9
- package/dist/plain/calculate/addBusinessDays.js +29 -21
- package/dist/plain/calculate/addDate.d.ts +9 -8
- package/dist/plain/calculate/addDate.js +35 -22
- package/dist/plain/calculate/addDateTime.js +24 -10
- package/dist/plain/calculate/addTime.d.ts +5 -8
- package/dist/plain/calculate/addTime.js +23 -16
- package/dist/plain/calculate/clampDate.js +3 -3
- package/dist/plain/calculate/closestDateTo.d.ts +11 -7
- package/dist/plain/calculate/closestDateTo.js +36 -24
- package/dist/plain/calculate/cycleDate.d.ts +1 -1
- package/dist/plain/calculate/cycleDate.js +10 -3
- package/dist/plain/calculate/cycleDateTime.d.ts +1 -1
- package/dist/plain/calculate/cycleDateTime.js +10 -3
- package/dist/plain/calculate/cycleTime.d.ts +6 -8
- package/dist/plain/calculate/cycleTime.js +15 -9
- package/dist/plain/calculate/diffDate.d.ts +31 -14
- package/dist/plain/calculate/diffDate.js +73 -38
- package/dist/plain/calculate/diffDateAsDuration.d.ts +13 -8
- package/dist/plain/calculate/diffDateAsDuration.js +22 -9
- package/dist/plain/calculate/diffDateTime.d.ts +17 -5
- package/dist/plain/calculate/diffDateTime.js +67 -28
- package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +2 -2
- package/dist/plain/calculate/diffDateTimeAsDuration.js +10 -3
- package/dist/plain/calculate/diffTime.d.ts +18 -5
- package/dist/plain/calculate/diffTime.js +68 -27
- package/dist/plain/calculate/endOfDate.d.ts +10 -2
- package/dist/plain/calculate/endOfDate.js +52 -27
- package/dist/plain/calculate/endOfDateTime.d.ts +17 -2
- package/dist/plain/calculate/endOfDateTime.js +126 -103
- package/dist/plain/calculate/endOfTime.d.ts +16 -2
- package/dist/plain/calculate/endOfTime.js +77 -59
- package/dist/plain/calculate/getLargestDateDurationUnit.d.ts +13 -5
- package/dist/plain/calculate/getLargestDateDurationUnit.js +26 -10
- package/dist/plain/calculate/getLargestDateTimeDurationUnit.d.ts +13 -6
- package/dist/plain/calculate/getLargestDateTimeDurationUnit.js +37 -22
- package/dist/plain/calculate/getLargestTimeDurationUnit.d.ts +13 -6
- package/dist/plain/calculate/getLargestTimeDurationUnit.js +33 -18
- package/dist/plain/calculate/getLocaleDayOfWeek.d.ts +8 -4
- package/dist/plain/calculate/getLocaleDayOfWeek.js +8 -3
- package/dist/plain/calculate/getLocaleEndOfWeek.d.ts +8 -4
- package/dist/plain/calculate/getLocaleEndOfWeek.js +8 -3
- package/dist/plain/calculate/getLocaleStartOfWeek.d.ts +8 -4
- package/dist/plain/calculate/getLocaleStartOfWeek.js +8 -3
- package/dist/plain/calculate/getLocaleWeekYear.d.ts +29 -19
- package/dist/plain/calculate/getLocaleWeekYear.js +48 -28
- package/dist/plain/calculate/getWeekNumber.d.ts +21 -2
- package/dist/plain/calculate/getWeekNumber.js +33 -12
- package/dist/plain/calculate/getWeekOfMonth.d.ts +4 -2
- package/dist/plain/calculate/getWeekOfMonth.js +8 -3
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +25 -14
- package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +45 -25
- package/dist/plain/calculate/getWeeksInMonth.d.ts +4 -2
- package/dist/plain/calculate/getWeeksInMonth.js +8 -3
- package/dist/plain/calculate/getWeeksInYear.d.ts +5 -4
- package/dist/plain/calculate/getWeeksInYear.js +9 -14
- package/dist/plain/calculate/maxDate.js +19 -12
- package/dist/plain/calculate/maxDateTime.js +19 -12
- package/dist/plain/calculate/maxTime.js +19 -12
- package/dist/plain/calculate/minDate.js +19 -12
- package/dist/plain/calculate/minDateTime.js +19 -12
- package/dist/plain/calculate/minTime.js +19 -12
- package/dist/plain/calculate/nextWeekday.js +5 -0
- package/dist/plain/calculate/previousWeekday.js +5 -0
- package/dist/plain/calculate/roundDate.d.ts +23 -5
- package/dist/plain/calculate/roundDate.js +88 -46
- package/dist/plain/calculate/roundDateTime.d.ts +27 -3
- package/dist/plain/calculate/roundDateTime.js +128 -69
- package/dist/plain/calculate/roundTime.d.ts +8 -1
- package/dist/plain/calculate/roundTime.js +32 -17
- package/dist/plain/calculate/setDate.js +4 -0
- package/dist/plain/calculate/setDateTime.js +4 -0
- package/dist/plain/calculate/setTime.d.ts +1 -1
- package/dist/plain/calculate/setTime.js +5 -1
- package/dist/plain/calculate/sortDateTimes.js +17 -10
- package/dist/plain/calculate/sortDates.js +17 -10
- package/dist/plain/calculate/sortTimes.js +17 -10
- package/dist/plain/calculate/startOfDate.d.ts +7 -2
- package/dist/plain/calculate/startOfDate.js +52 -27
- package/dist/plain/calculate/startOfDateTime.d.ts +5 -2
- package/dist/plain/calculate/startOfDateTime.js +81 -62
- package/dist/plain/calculate/startOfQuarterForDateTime.d.ts +2 -0
- package/dist/plain/calculate/startOfQuarterForDateTime.js +12 -1
- package/dist/plain/calculate/startOfTime.d.ts +15 -2
- package/dist/plain/calculate/startOfTime.js +33 -37
- package/dist/plain/calculate/subtractBusinessDays.d.ts +25 -10
- package/dist/plain/calculate/subtractBusinessDays.js +28 -22
- package/dist/plain/calculate/subtractDate.d.ts +8 -7
- package/dist/plain/calculate/subtractDate.js +35 -21
- package/dist/plain/calculate/subtractDateTime.js +24 -10
- package/dist/plain/calculate/subtractTime.d.ts +5 -8
- package/dist/plain/calculate/subtractTime.js +23 -16
- package/dist/plain/chop/index.d.ts +0 -1
- package/dist/plain/chop/index.js +0 -1
- package/dist/plain/compare/areDateTimesEqualBy.d.ts +10 -5
- package/dist/plain/compare/areDateTimesEqualBy.js +35 -10
- package/dist/plain/compare/areDatesEqualBy.d.ts +10 -3
- package/dist/plain/compare/areDatesEqualBy.js +41 -14
- package/dist/plain/compare/isBetweenDate.js +32 -16
- package/dist/plain/compare/isBetweenDateTime.js +34 -18
- package/dist/plain/compare/isBetweenTime.js +32 -16
- package/dist/plain/compare/isBusinessDay.d.ts +25 -11
- package/dist/plain/compare/isBusinessDay.js +36 -15
- package/dist/plain/compare/isThisUnit.d.ts +13 -4
- package/dist/plain/compare/isThisUnit.js +33 -13
- package/dist/plain/compare/isWeekend.d.ts +8 -4
- package/dist/plain/compare/isWeekend.js +7 -3
- package/dist/plain/convert/convertDateToCalendar.d.ts +34 -33
- package/dist/plain/convert/convertDateToCalendar.js +41 -40
- package/dist/plain/format/formatCalendar.d.ts +12 -6
- package/dist/plain/format/formatCalendar.js +47 -25
- package/dist/plain/format/formatDate.d.ts +21 -4
- package/dist/plain/format/formatDate.js +37 -5
- package/dist/plain/format/formatDateRange.d.ts +17 -4
- package/dist/plain/format/formatDateRange.js +29 -5
- package/dist/plain/format/formatDateTime.d.ts +22 -4
- package/dist/plain/format/formatDateTime.js +31 -5
- package/dist/plain/format/formatDateTimeRange.d.ts +20 -4
- package/dist/plain/format/formatDateTimeRange.js +29 -5
- package/dist/plain/format/formatDateTimeToParts.d.ts +32 -6
- package/dist/plain/format/formatDateTimeToParts.js +40 -14
- package/dist/plain/format/formatDateToParts.d.ts +24 -3
- package/dist/plain/format/formatDateToParts.js +36 -11
- package/dist/plain/format/formatRelativeDate.d.ts +7 -3
- package/dist/plain/format/formatRelativeDate.js +39 -24
- package/dist/plain/format/formatRelativeDateTime.d.ts +15 -6
- package/dist/plain/format/formatRelativeDateTime.js +35 -33
- package/dist/plain/format/formatRelativeTime.d.ts +8 -4
- package/dist/plain/format/formatRelativeTime.js +36 -21
- package/dist/plain/format/formatSql.d.ts +15 -10
- package/dist/plain/format/formatSql.js +20 -11
- package/dist/plain/format/formatTime.d.ts +18 -4
- package/dist/plain/format/formatTime.js +32 -5
- package/dist/plain/get/getNowUnit.d.ts +3 -0
- package/dist/plain/get/getNowUnit.js +14 -29
- package/dist/plain/index.js +1 -1
- package/dist/plain/interval/intervalAbutsDate.d.ts +12 -7
- package/dist/plain/interval/intervalAbutsDate.js +15 -19
- package/dist/plain/interval/intervalAbutsDateTime.d.ts +9 -7
- package/dist/plain/interval/intervalAbutsDateTime.js +17 -23
- package/dist/plain/interval/intervalAbutsTime.d.ts +11 -5
- package/dist/plain/interval/intervalAbutsTime.js +19 -21
- package/dist/plain/interval/intervalContainsDate.d.ts +17 -10
- package/dist/plain/interval/intervalContainsDate.js +20 -15
- package/dist/plain/interval/intervalContainsDateTime.d.ts +16 -11
- package/dist/plain/interval/intervalContainsDateTime.js +24 -20
- package/dist/plain/interval/intervalContainsTime.d.ts +20 -10
- package/dist/plain/interval/intervalContainsTime.js +28 -19
- package/dist/plain/interval/intervalCountDate.d.ts +13 -8
- package/dist/plain/interval/intervalCountDate.js +46 -14
- package/dist/plain/interval/intervalCountDateTime.d.ts +6 -4
- package/dist/plain/interval/intervalCountDateTime.js +63 -18
- package/dist/plain/interval/intervalCountTime.d.ts +3 -4
- package/dist/plain/interval/intervalCountTime.js +9 -9
- package/dist/plain/interval/intervalDifferenceDate.d.ts +13 -6
- package/dist/plain/interval/intervalDifferenceDate.js +19 -32
- package/dist/plain/interval/intervalDifferenceDateTime.d.ts +10 -4
- package/dist/plain/interval/intervalDifferenceDateTime.js +21 -27
- package/dist/plain/interval/intervalDifferenceTime.d.ts +11 -4
- package/dist/plain/interval/intervalDifferenceTime.js +22 -27
- package/dist/plain/interval/intervalDivideEquallyDate.d.ts +16 -4
- package/dist/plain/interval/intervalDivideEquallyDate.js +57 -33
- package/dist/plain/interval/intervalDivideEquallyDateTime.d.ts +16 -4
- package/dist/plain/interval/intervalDivideEquallyDateTime.js +67 -31
- package/dist/plain/interval/intervalDivideEquallyTime.d.ts +16 -4
- package/dist/plain/interval/intervalDivideEquallyTime.js +58 -31
- package/dist/plain/interval/intervalEngulfsDate.d.ts +16 -9
- package/dist/plain/interval/intervalEngulfsDate.js +19 -12
- package/dist/plain/interval/intervalEngulfsDateTime.d.ts +16 -11
- package/dist/plain/interval/intervalEngulfsDateTime.js +24 -18
- package/dist/plain/interval/intervalEngulfsTime.d.ts +18 -8
- package/dist/plain/interval/intervalEngulfsTime.js +26 -15
- package/dist/plain/interval/intervalFromDurationDate.d.ts +5 -4
- package/dist/plain/interval/intervalFromDurationDate.js +11 -8
- package/dist/plain/interval/intervalFromDurationDateTime.js +4 -0
- package/dist/plain/interval/intervalFromDurationTime.d.ts +10 -12
- package/dist/plain/interval/intervalFromDurationTime.js +28 -17
- package/dist/plain/interval/intervalIntersectionDate.d.ts +9 -4
- package/dist/plain/interval/intervalIntersectionDate.js +14 -9
- package/dist/plain/interval/intervalIntersectionDateTime.d.ts +9 -4
- package/dist/plain/interval/intervalIntersectionDateTime.js +19 -13
- package/dist/plain/interval/intervalIntersectionTime.d.ts +7 -3
- package/dist/plain/interval/intervalIntersectionTime.js +17 -12
- package/dist/plain/interval/intervalLengthDate.d.ts +9 -6
- package/dist/plain/interval/intervalLengthDate.js +40 -8
- package/dist/plain/interval/intervalLengthDateTime.js +2 -2
- package/dist/plain/interval/intervalOverlappingDaysDate.d.ts +16 -17
- package/dist/plain/interval/intervalOverlappingDaysDate.js +30 -30
- package/dist/plain/interval/intervalOverlappingDaysDateTime.d.ts +7 -12
- package/dist/plain/interval/intervalOverlappingDaysDateTime.js +24 -24
- package/dist/plain/interval/intervalSplitAtDate.d.ts +10 -5
- package/dist/plain/interval/intervalSplitAtDate.js +48 -36
- package/dist/plain/interval/intervalSplitAtDateTime.d.ts +9 -4
- package/dist/plain/interval/intervalSplitAtDateTime.js +44 -32
- package/dist/plain/interval/intervalSplitAtTime.d.ts +9 -4
- package/dist/plain/interval/intervalSplitAtTime.js +44 -32
- package/dist/plain/interval/intervalUnionDate.d.ts +14 -6
- package/dist/plain/interval/intervalUnionDate.js +19 -11
- package/dist/plain/interval/intervalUnionDateTime.d.ts +12 -5
- package/dist/plain/interval/intervalUnionDateTime.js +22 -14
- package/dist/plain/interval/intervalUnionTime.d.ts +10 -3
- package/dist/plain/interval/intervalUnionTime.js +20 -12
- package/dist/plain/interval/intervalXorAllDate.d.ts +11 -10
- package/dist/plain/interval/intervalXorAllDate.js +37 -59
- package/dist/plain/interval/intervalXorAllDateTime.d.ts +7 -5
- package/dist/plain/interval/intervalXorAllDateTime.js +28 -48
- package/dist/plain/interval/intervalXorAllTime.d.ts +8 -4
- package/dist/plain/interval/intervalXorAllTime.js +29 -47
- package/dist/plain/interval/intervalXorDate.d.ts +10 -9
- package/dist/plain/interval/intervalXorDate.js +19 -54
- package/dist/plain/interval/intervalXorDateTime.d.ts +9 -7
- package/dist/plain/interval/intervalXorDateTime.js +23 -50
- package/dist/plain/interval/intervalXorTime.d.ts +8 -7
- package/dist/plain/interval/intervalXorTime.js +22 -50
- package/dist/plain/interval/intervalsOverlapDate.d.ts +14 -7
- package/dist/plain/interval/intervalsOverlapDate.js +17 -10
- package/dist/plain/interval/intervalsOverlapDateTime.d.ts +12 -7
- package/dist/plain/interval/intervalsOverlapDateTime.js +20 -14
- package/dist/plain/interval/intervalsOverlapTime.d.ts +10 -5
- package/dist/plain/interval/intervalsOverlapTime.js +18 -12
- package/dist/plain/interval/mergeIntervalsDate.d.ts +9 -5
- package/dist/plain/interval/mergeIntervalsDate.js +37 -38
- package/dist/plain/interval/mergeIntervalsDateTime.d.ts +7 -3
- package/dist/plain/interval/mergeIntervalsDateTime.js +31 -32
- package/dist/plain/interval/mergeIntervalsTime.d.ts +7 -3
- package/dist/plain/interval/mergeIntervalsTime.js +31 -31
- package/dist/plain/interval/splitIntervalByUnitDate.d.ts +26 -6
- package/dist/plain/interval/splitIntervalByUnitDate.js +76 -43
- package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +22 -2
- package/dist/plain/interval/splitIntervalByUnitDateTime.js +65 -39
- package/dist/plain/interval/splitIntervalByUnitTime.d.ts +18 -2
- package/dist/plain/interval/splitIntervalByUnitTime.js +76 -39
- package/dist/plain/interval/validate/isValidDateInterval.d.ts +4 -2
- package/dist/plain/interval/validate/isValidDateInterval.js +4 -2
- package/dist/plain/interval/validate/isValidDateTimeInterval.d.ts +5 -0
- package/dist/plain/interval/validate/isValidDateTimeInterval.js +7 -2
- package/dist/plain/interval/validate/isValidTimeInterval.d.ts +5 -0
- package/dist/plain/interval/validate/isValidTimeInterval.js +8 -18
- package/dist/plain/locale/getLocaleEraNames.d.ts +14 -4
- package/dist/plain/locale/getLocaleEraNames.js +56 -41
- package/dist/plain/locale/getLocaleMeridiems.d.ts +7 -4
- package/dist/plain/locale/getLocaleMeridiems.js +28 -22
- package/dist/plain/locale/getLocaleMonthNames.d.ts +14 -4
- package/dist/plain/locale/getLocaleMonthNames.js +34 -19
- package/dist/plain/locale/getLocaleWeekdayNames.d.ts +14 -7
- package/dist/plain/locale/getLocaleWeekdayNames.js +40 -22
- package/dist/plain/map/mapDatesInRange.d.ts +18 -1
- package/dist/plain/map/mapDatesInRange.js +53 -17
- package/dist/plain/parse/parseDateTimeWithPattern.d.ts +3 -2
- package/dist/plain/parse/parseDateTimeWithPattern.js +30 -24
- package/dist/plain/parse/parseDateWithPattern.d.ts +3 -2
- package/dist/plain/parse/parseDateWithPattern.js +22 -16
- package/dist/plain/parse/parseMicrosecondFromDateTime.d.ts +2 -1
- package/dist/plain/parse/parseMicrosecondFromDateTime.js +2 -1
- package/dist/plain/parse/parseMicrosecondFromTime.d.ts +2 -1
- package/dist/plain/parse/parseMicrosecondFromTime.js +2 -1
- package/dist/plain/parse/parseNanosecondFromDateTime.d.ts +2 -1
- package/dist/plain/parse/parseNanosecondFromDateTime.js +2 -1
- package/dist/plain/parse/parseNanosecondFromTime.d.ts +2 -1
- package/dist/plain/parse/parseNanosecondFromTime.js +2 -1
- package/dist/plain/parse/parseSql.d.ts +15 -12
- package/dist/plain/parse/parseSql.js +16 -13
- package/dist/plain/parse/parseTimeWithPattern.d.ts +3 -2
- package/dist/plain/parse/parseTimeWithPattern.js +27 -21
- package/dist/plain/parse/parseUnitFromDate.d.ts +9 -2
- package/dist/plain/parse/parseUnitFromDate.js +39 -19
- package/dist/plain/parse/parseUnitFromDateTime.d.ts +11 -3
- package/dist/plain/parse/parseUnitFromDateTime.js +54 -28
- package/dist/plain/parse/parseUnitFromTime.d.ts +9 -3
- package/dist/plain/parse/parseUnitFromTime.js +13 -3
- package/dist/plain/parse/parseWeekFromDate.d.ts +5 -0
- package/dist/plain/parse/parseWeekFromDate.js +24 -5
- package/dist/plain/parse/parseWeekFromDateTime.d.ts +5 -0
- package/dist/plain/parse/parseWeekFromDateTime.js +26 -5
- package/dist/plain/validate/isLeapSecond.d.ts +27 -9
- package/dist/plain/validate/isLeapSecond.js +30 -9
- package/dist/plain/validate/isLeapYear.d.ts +7 -1
- package/dist/plain/validate/isLeapYear.js +10 -1
- package/dist/plain/validate/isValidCalendarDate.d.ts +37 -6
- package/dist/plain/validate/isValidCalendarDate.js +37 -6
- package/dist/plain/validate/isValidDate.d.ts +9 -1
- package/dist/plain/validate/isValidDate.js +14 -5
- package/dist/plain/validate/isValidDateRange.d.ts +11 -4
- package/dist/plain/validate/isValidDateRange.js +32 -22
- package/dist/plain/validate/isValidDateTime.d.ts +7 -1
- package/dist/plain/validate/isValidDateTime.js +12 -5
- package/dist/plain/validate/isValidDateTimeRange.d.ts +3 -2
- package/dist/plain/validate/isValidDateTimeRange.js +30 -15
- package/dist/plain/validate/isValidIsoDateLike.d.ts +6 -1
- package/dist/plain/validate/isValidIsoDateLike.js +13 -8
- package/dist/plain/validate/isValidTime.d.ts +6 -1
- package/dist/plain/validate/isValidTime.js +10 -3
- package/dist/plain/validate/isValidTimeRange.d.ts +4 -2
- package/dist/plain/validate/isValidTimeRange.js +31 -27
- package/dist/precision/calculate/index.d.ts +1 -0
- package/dist/precision/calculate/index.js +1 -0
- package/dist/precision/calculate/truncateNanoseconds.d.ts +37 -0
- package/dist/precision/calculate/truncateNanoseconds.js +41 -0
- package/dist/precision/convert/fromDotNetTicks.d.ts +30 -0
- package/dist/precision/convert/fromDotNetTicks.js +39 -0
- package/dist/precision/convert/fromExcelSerial.d.ts +38 -0
- package/dist/precision/convert/fromExcelSerial.js +81 -0
- package/dist/precision/convert/fromFileTime.d.ts +30 -0
- package/dist/precision/convert/fromFileTime.js +39 -0
- package/dist/precision/convert/fromNanoseconds.d.ts +29 -0
- package/dist/precision/convert/fromNanoseconds.js +50 -0
- package/dist/precision/convert/fromNtpTimestamp.d.ts +43 -0
- package/dist/precision/convert/fromNtpTimestamp.js +57 -0
- package/dist/precision/convert/fromPgMicroseconds.d.ts +26 -0
- package/dist/precision/convert/fromPgMicroseconds.js +33 -0
- package/dist/precision/convert/index.d.ts +12 -0
- package/dist/precision/convert/index.js +12 -0
- package/dist/precision/convert/toDotNetTicks.d.ts +29 -0
- package/dist/precision/convert/toDotNetTicks.js +40 -0
- package/dist/precision/convert/toExcelSerial.d.ts +56 -0
- package/dist/precision/convert/toExcelSerial.js +85 -0
- package/dist/precision/convert/toFileTime.d.ts +31 -0
- package/dist/precision/convert/toFileTime.js +43 -0
- package/dist/precision/convert/toNanoseconds.d.ts +37 -0
- package/dist/precision/convert/toNanoseconds.js +40 -0
- package/dist/precision/convert/toNtpTimestamp.d.ts +30 -0
- package/dist/precision/convert/toNtpTimestamp.js +38 -0
- package/dist/precision/convert/toPgMicroseconds.d.ts +29 -0
- package/dist/precision/convert/toPgMicroseconds.js +42 -0
- package/dist/precision/format/formatNanoseconds.d.ts +26 -0
- package/dist/precision/format/formatNanoseconds.js +32 -0
- package/dist/precision/format/index.d.ts +1 -0
- package/dist/precision/format/index.js +1 -0
- package/dist/precision/index.d.ts +6 -0
- package/dist/precision/index.js +7 -0
- package/dist/precision/parse/index.d.ts +1 -0
- package/dist/precision/parse/index.js +1 -0
- package/dist/precision/parse/parseNanoseconds.d.ts +27 -0
- package/dist/precision/parse/parseNanoseconds.js +32 -0
- package/dist/precision/validate/index.d.ts +3 -0
- package/dist/precision/validate/index.js +3 -0
- package/dist/precision/validate/isValidInstant.d.ts +37 -0
- package/dist/precision/validate/isValidInstant.js +40 -0
- package/dist/precision/validate/isValidNanoPattern.d.ts +27 -0
- package/dist/precision/validate/isValidNanoPattern.js +40 -0
- package/dist/precision/validate/isValidNanoseconds.d.ts +25 -0
- package/dist/precision/validate/isValidNanoseconds.js +28 -0
- package/dist/regex/calendar-date.d.ts +25 -14
- package/dist/regex/calendar-date.js +26 -15
- package/dist/regex/calendar-zoned-date-time.d.ts +22 -38
- package/dist/regex/calendar-zoned-date-time.js +23 -39
- package/dist/regex/date-time.d.ts +14 -4
- package/dist/regex/date-time.js +15 -5
- package/dist/regex/date.d.ts +45 -3
- package/dist/regex/date.js +47 -5
- package/dist/regex/http-date.d.ts +10 -6
- package/dist/regex/http-date.js +10 -6
- package/dist/regex/index.d.ts +3 -0
- package/dist/regex/index.js +4 -0
- package/dist/regex/leap-second.d.ts +41 -8
- package/dist/regex/leap-second.js +42 -9
- package/dist/regex/nanoseconds.d.ts +20 -0
- package/dist/regex/nanoseconds.js +20 -0
- package/dist/regex/rfc-2822.d.ts +15 -7
- package/dist/regex/rfc-2822.js +15 -7
- package/dist/regex/rfc-3339.d.ts +8 -1
- package/dist/regex/rfc-3339.js +9 -2
- package/dist/regex/sql-date-time.d.ts +27 -8
- package/dist/regex/sql-date-time.js +28 -9
- package/dist/regex/time-zone-like.d.ts +24 -15
- package/dist/regex/time-zone-like.js +25 -16
- package/dist/regex/time.d.ts +20 -6
- package/dist/regex/time.js +20 -6
- package/dist/regex/unix.d.ts +13 -5
- package/dist/regex/unix.js +13 -5
- package/dist/regex/utc-date-time.d.ts +19 -9
- package/dist/regex/utc-date-time.js +20 -10
- package/dist/regex/utc-offset.d.ts +24 -0
- package/dist/regex/utc-offset.js +24 -0
- package/dist/span/calculate/index.d.ts +3 -0
- package/dist/span/calculate/index.js +3 -0
- package/dist/span/calculate/spanMs.d.ts +52 -0
- package/dist/span/calculate/spanMs.js +80 -0
- package/dist/span/calculate/spanNs.d.ts +43 -0
- package/dist/span/calculate/spanNs.js +51 -0
- package/dist/span/calculate/spanWallClock.d.ts +60 -0
- package/dist/span/calculate/spanWallClock.js +80 -0
- package/dist/span/index.d.ts +3 -0
- package/dist/span/index.js +4 -0
- package/dist/span/validate/index.d.ts +1 -0
- package/dist/span/validate/index.js +1 -0
- package/dist/span/validate/isValidSpan.d.ts +37 -0
- package/dist/span/validate/isValidSpan.js +41 -0
- package/dist/transport/calculate/dwellTime.d.ts +72 -0
- package/dist/transport/calculate/dwellTime.js +126 -0
- package/dist/transport/calculate/index.d.ts +2 -0
- package/dist/transport/calculate/index.js +2 -0
- package/dist/transport/calculate/transitTime.d.ts +53 -0
- package/dist/transport/calculate/transitTime.js +118 -0
- package/dist/transport/convert/etaAtZone.d.ts +36 -0
- package/dist/transport/convert/etaAtZone.js +53 -0
- package/dist/transport/convert/index.d.ts +1 -0
- package/dist/transport/convert/index.js +1 -0
- package/dist/transport/index.d.ts +3 -0
- package/dist/transport/index.js +4 -0
- package/dist/types/business-calendar.d.ts +27 -0
- package/dist/types/business-calendar.js +0 -0
- package/dist/types/calendar-system.d.ts +9 -1
- package/dist/types/fiscal-calendar.d.ts +22 -0
- package/dist/types/fiscal-calendar.js +0 -0
- package/dist/types/free-time-options.d.ts +34 -0
- package/dist/types/free-time-options.js +0 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.js +6 -0
- package/dist/types/interval.d.ts +18 -0
- package/dist/types/interval.js +0 -0
- package/dist/types/now-unit.d.ts +1 -1
- package/dist/types/roll-convention.d.ts +32 -0
- package/dist/types/roll-convention.js +0 -0
- package/dist/types/utc-now-unit.d.ts +1 -1
- package/dist/types/zone-bucket-unit.d.ts +11 -0
- package/dist/types/zone-bucket-unit.js +0 -0
- package/dist/unix/calculate/addUnix.d.ts +10 -4
- package/dist/unix/calculate/addUnix.js +39 -26
- package/dist/unix/calculate/diffUnix.d.ts +38 -11
- package/dist/unix/calculate/diffUnix.js +84 -40
- package/dist/unix/calculate/diffUnixAsDuration.d.ts +17 -7
- package/dist/unix/calculate/diffUnixAsDuration.js +42 -23
- package/dist/unix/calculate/endOfQuarterForUnix.d.ts +15 -11
- package/dist/unix/calculate/endOfQuarterForUnix.js +20 -39
- package/dist/unix/calculate/endOfUnix.d.ts +23 -18
- package/dist/unix/calculate/endOfUnix.js +37 -15
- package/dist/unix/calculate/isBetweenUnix.d.ts +12 -6
- package/dist/unix/calculate/isBetweenUnix.js +34 -23
- package/dist/unix/calculate/maxUnix.d.ts +6 -3
- package/dist/unix/calculate/maxUnix.js +17 -8
- package/dist/unix/calculate/minUnix.d.ts +6 -3
- package/dist/unix/calculate/minUnix.js +17 -8
- package/dist/unix/calculate/roundUnix.d.ts +24 -10
- package/dist/unix/calculate/roundUnix.js +67 -42
- package/dist/unix/calculate/setUnix.d.ts +14 -5
- package/dist/unix/calculate/setUnix.js +48 -29
- package/dist/unix/calculate/sortUnix.d.ts +6 -3
- package/dist/unix/calculate/sortUnix.js +19 -11
- package/dist/unix/calculate/startOfQuarterForUnix.d.ts +17 -12
- package/dist/unix/calculate/startOfQuarterForUnix.js +22 -30
- package/dist/unix/calculate/startOfUnix.d.ts +23 -18
- package/dist/unix/calculate/startOfUnix.js +37 -15
- package/dist/unix/calculate/subtractUnix.d.ts +10 -4
- package/dist/unix/calculate/subtractUnix.js +39 -26
- package/dist/unix/compare/areUnixEqual.d.ts +9 -5
- package/dist/unix/compare/areUnixEqual.js +17 -13
- package/dist/unix/compare/areUnixEqualBy.d.ts +14 -7
- package/dist/unix/compare/areUnixEqualBy.js +14 -7
- package/dist/unix/compare/isAfterUnix.d.ts +8 -4
- package/dist/unix/compare/isAfterUnix.js +16 -12
- package/dist/unix/compare/isBeforeUnix.d.ts +7 -4
- package/dist/unix/compare/isBeforeUnix.js +15 -12
- package/dist/unix/convert/convertUnixToPlainDate.d.ts +17 -9
- package/dist/unix/convert/convertUnixToPlainDate.js +34 -21
- package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +15 -9
- package/dist/unix/convert/convertUnixToPlainDateTime.js +32 -21
- package/dist/unix/convert/convertUnixToPlainTime.d.ts +15 -9
- package/dist/unix/convert/convertUnixToPlainTime.js +32 -21
- package/dist/unix/convert/convertUnixToUtc.d.ts +15 -7
- package/dist/unix/convert/convertUnixToUtc.js +20 -15
- package/dist/unix/convert/convertUnixToZoned.d.ts +17 -10
- package/dist/unix/convert/convertUnixToZoned.js +31 -20
- package/dist/unix/format/formatCalendarUnix.d.ts +22 -19
- package/dist/unix/format/formatCalendarUnix.js +35 -81
- package/dist/unix/format/formatRelativeUnix.d.ts +25 -8
- package/dist/unix/format/formatRelativeUnix.js +46 -93
- package/dist/unix/format/formatUnix.d.ts +26 -4
- package/dist/unix/format/formatUnix.js +48 -34
- package/dist/unix/get/getUnixNow.d.ts +13 -7
- package/dist/unix/get/getUnixNow.js +27 -17
- package/dist/unix/get/getUnixNowUnit.d.ts +5 -2
- package/dist/unix/get/getUnixNowUnit.js +9 -35
- package/dist/unix/index.d.ts +1 -0
- package/dist/unix/index.js +2 -0
- package/dist/unix/interval/intervalAbutsUnix.d.ts +17 -12
- package/dist/unix/interval/intervalAbutsUnix.js +23 -41
- package/dist/unix/interval/intervalContainsUnix.d.ts +17 -7
- package/dist/unix/interval/intervalContainsUnix.js +25 -37
- package/dist/unix/interval/intervalCountUnix.d.ts +30 -13
- package/dist/unix/interval/intervalCountUnix.js +49 -23
- package/dist/unix/interval/intervalDifferenceUnix.d.ts +19 -10
- package/dist/unix/interval/intervalDifferenceUnix.js +25 -43
- package/dist/unix/interval/intervalDivideEquallyUnix.d.ts +24 -10
- package/dist/unix/interval/intervalDivideEquallyUnix.js +57 -36
- package/dist/unix/interval/intervalEngulfsUnix.d.ts +13 -7
- package/dist/unix/interval/intervalEngulfsUnix.js +18 -30
- package/dist/unix/interval/intervalFromDurationUnix.d.ts +10 -6
- package/dist/unix/interval/intervalFromDurationUnix.js +51 -39
- package/dist/unix/interval/intervalIntersectionUnix.d.ts +18 -11
- package/dist/unix/interval/intervalIntersectionUnix.js +25 -46
- package/dist/unix/interval/intervalLengthUnix.d.ts +21 -9
- package/dist/unix/interval/intervalLengthUnix.js +41 -18
- package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +26 -12
- package/dist/unix/interval/intervalOverlappingDaysUnix.js +67 -63
- package/dist/unix/interval/intervalSplitAtUnix.d.ts +11 -6
- package/dist/unix/interval/intervalSplitAtUnix.js +41 -34
- package/dist/unix/interval/intervalUnionUnix.d.ts +15 -9
- package/dist/unix/interval/intervalUnionUnix.js +20 -42
- package/dist/unix/interval/intervalXorAllUnix.d.ts +8 -6
- package/dist/unix/interval/intervalXorAllUnix.js +21 -56
- package/dist/unix/interval/intervalXorUnix.d.ts +22 -11
- package/dist/unix/interval/intervalXorUnix.js +28 -56
- package/dist/unix/interval/intervalsOverlapUnix.d.ts +16 -10
- package/dist/unix/interval/intervalsOverlapUnix.js +21 -37
- package/dist/unix/interval/mergeIntervalsUnix.d.ts +10 -4
- package/dist/unix/interval/mergeIntervalsUnix.js +25 -36
- package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +38 -8
- package/dist/unix/interval/splitIntervalByUnitUnix.js +72 -56
- package/dist/unix/interval/validate/isValidUnixInterval.d.ts +12 -6
- package/dist/unix/interval/validate/isValidUnixInterval.js +17 -16
- package/dist/unix/parse/index.d.ts +2 -0
- package/dist/unix/parse/index.js +2 -0
- package/dist/unix/parse/parseDateFromUnix.d.ts +10 -8
- package/dist/unix/parse/parseDateFromUnix.js +17 -29
- package/dist/unix/parse/parseDayFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseDayFromUnix.js +18 -5
- package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +8 -5
- package/dist/unix/parse/parseDayOfWeekFromUnix.js +15 -28
- package/dist/unix/parse/parseHourFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseHourFromUnix.js +18 -5
- package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMicrosecondFromUnix.js +16 -3
- package/dist/unix/parse/parseMillisecondFromUnix.d.ts +4 -2
- package/dist/unix/parse/parseMillisecondFromUnix.js +16 -3
- package/dist/unix/parse/parseMinuteFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseMinuteFromUnix.js +18 -5
- package/dist/unix/parse/parseMonthFromUnix.d.ts +6 -4
- package/dist/unix/parse/parseMonthFromUnix.js +18 -5
- package/dist/unix/parse/parseNanosecondFromUnix.d.ts +8 -5
- package/dist/unix/parse/parseNanosecondFromUnix.js +20 -6
- package/dist/unix/parse/parseSecondFromUnix.d.ts +5 -3
- package/dist/unix/parse/parseSecondFromUnix.js +17 -4
- package/dist/unix/parse/parseTimeFromUnix.d.ts +10 -8
- package/dist/unix/parse/parseTimeFromUnix.js +17 -29
- package/dist/unix/parse/parseUnitFromUnix.d.ts +18 -11
- package/dist/unix/parse/parseUnitFromUnix.js +57 -55
- package/dist/unix/parse/parseWeekFromUnix.d.ts +15 -7
- package/dist/unix/parse/parseWeekFromUnix.js +32 -30
- package/dist/unix/parse/parseYearFromUnix.d.ts +5 -3
- package/dist/unix/parse/parseYearFromUnix.js +17 -4
- package/dist/unix/validate/isValidUnixMilliseconds.d.ts +8 -5
- package/dist/unix/validate/isValidUnixMilliseconds.js +10 -9
- package/dist/unix/validate/isValidUnixRange.d.ts +13 -7
- package/dist/unix/validate/isValidUnixRange.js +29 -19
- package/dist/unix/validate/isValidUnixSeconds.d.ts +8 -5
- package/dist/unix/validate/isValidUnixSeconds.js +10 -9
- package/dist/unix/validate/isValidUnixUnit.d.ts +9 -7
- package/dist/unix/validate/isValidUnixUnit.js +6 -8
- package/dist/utc/calculate/addUtc.js +26 -12
- package/dist/utc/calculate/diffUtc.d.ts +22 -7
- package/dist/utc/calculate/diffUtc.js +75 -31
- package/dist/utc/calculate/diffUtcAsDuration.d.ts +2 -2
- package/dist/utc/calculate/diffUtcAsDuration.js +10 -3
- package/dist/utc/calculate/endOfQuarterForUtc.d.ts +1 -1
- package/dist/utc/calculate/endOfQuarterForUtc.js +1 -1
- package/dist/utc/calculate/endOfUtc.d.ts +11 -4
- package/dist/utc/calculate/endOfUtc.js +22 -5
- package/dist/utc/calculate/isBetweenUtc.js +40 -24
- package/dist/utc/calculate/maxUtc.js +19 -12
- package/dist/utc/calculate/minUtc.js +19 -12
- package/dist/utc/calculate/roundUtc.d.ts +16 -2
- package/dist/utc/calculate/roundUtc.js +42 -31
- package/dist/utc/calculate/setUtc.d.ts +4 -8
- package/dist/utc/calculate/setUtc.js +25 -18
- package/dist/utc/calculate/sortUtc.js +17 -10
- package/dist/utc/calculate/startOfQuarterForUtc.d.ts +2 -0
- package/dist/utc/calculate/startOfQuarterForUtc.js +12 -1
- package/dist/utc/calculate/startOfUtc.d.ts +6 -4
- package/dist/utc/calculate/startOfUtc.js +17 -5
- package/dist/utc/calculate/subtractUtc.js +26 -12
- package/dist/utc/chop/chopUtc.d.ts +5 -2
- package/dist/utc/chop/chopUtc.js +8 -4
- package/dist/utc/compare/areUtcEqualBy.d.ts +10 -5
- package/dist/utc/compare/areUtcEqualBy.js +34 -11
- package/dist/utc/convert/convertUtcToPlainDate.js +22 -10
- package/dist/utc/convert/convertUtcToPlainDateTime.js +28 -16
- package/dist/utc/convert/convertUtcToPlainTime.js +22 -10
- package/dist/utc/convert/convertUtcToUnix.d.ts +12 -5
- package/dist/utc/convert/convertUtcToUnix.js +22 -13
- package/dist/utc/format/formatCalendarUtc.d.ts +11 -6
- package/dist/utc/format/formatCalendarUtc.js +32 -41
- package/dist/utc/format/formatHttp.d.ts +9 -3
- package/dist/utc/format/formatHttp.js +14 -12
- package/dist/utc/format/formatRelativeUtc.d.ts +18 -6
- package/dist/utc/format/formatRelativeUtc.js +43 -51
- package/dist/utc/format/formatUtc.d.ts +20 -3
- package/dist/utc/format/formatUtc.js +41 -12
- package/dist/utc/get/getUtcNowUnit.d.ts +3 -0
- package/dist/utc/get/getUtcNowUnit.js +11 -33
- package/dist/utc/index.d.ts +1 -0
- package/dist/utc/index.js +2 -0
- package/dist/utc/interval/intervalAbutsUtc.d.ts +10 -7
- package/dist/utc/interval/intervalAbutsUtc.js +18 -30
- package/dist/utc/interval/intervalContainsUtc.d.ts +19 -11
- package/dist/utc/interval/intervalContainsUtc.js +33 -34
- package/dist/utc/interval/intervalCountUtc.d.ts +3 -4
- package/dist/utc/interval/intervalCountUtc.js +12 -18
- package/dist/utc/interval/intervalDifferenceUtc.d.ts +13 -5
- package/dist/utc/interval/intervalDifferenceUtc.js +25 -51
- package/dist/utc/interval/intervalDivideEquallyUtc.d.ts +16 -3
- package/dist/utc/interval/intervalDivideEquallyUtc.js +54 -34
- package/dist/utc/interval/intervalEngulfsUtc.d.ts +17 -12
- package/dist/utc/interval/intervalEngulfsUtc.js +25 -26
- package/dist/utc/interval/intervalFromDurationUtc.js +5 -0
- package/dist/utc/interval/intervalIntersectionUtc.d.ts +12 -6
- package/dist/utc/interval/intervalIntersectionUtc.js +24 -41
- package/dist/utc/interval/intervalLengthUtc.js +5 -7
- package/dist/utc/interval/intervalOverlappingDaysUtc.d.ts +7 -13
- package/dist/utc/interval/intervalOverlappingDaysUtc.js +25 -36
- package/dist/utc/interval/intervalSplitAtUtc.d.ts +7 -2
- package/dist/utc/interval/intervalSplitAtUtc.js +39 -33
- package/dist/utc/interval/intervalUnionUtc.d.ts +15 -7
- package/dist/utc/interval/intervalUnionUtc.js +31 -42
- package/dist/utc/interval/intervalXorAllUtc.d.ts +7 -4
- package/dist/utc/interval/intervalXorAllUtc.js +30 -52
- package/dist/utc/interval/intervalXorUtc.d.ts +8 -6
- package/dist/utc/interval/intervalXorUtc.js +22 -56
- package/dist/utc/interval/intervalsOverlapUtc.d.ts +15 -9
- package/dist/utc/interval/intervalsOverlapUtc.js +23 -39
- package/dist/utc/interval/mergeIntervalsUtc.d.ts +9 -2
- package/dist/utc/interval/mergeIntervalsUtc.js +23 -36
- package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +23 -2
- package/dist/utc/interval/splitIntervalByUnitUtc.js +65 -44
- package/dist/utc/interval/validate/isValidUtcInterval.d.ts +5 -0
- package/dist/utc/interval/validate/isValidUtcInterval.js +7 -6
- package/dist/utc/parse/parseDateFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseDateFromUtc.js +14 -9
- package/dist/utc/parse/parseDayFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseDayFromUtc.js +14 -8
- package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseDayOfWeekFromUtc.js +24 -6
- package/dist/utc/parse/parseHourFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseHourFromUtc.js +14 -8
- package/dist/utc/parse/parseHttp.d.ts +39 -14
- package/dist/utc/parse/parseHttp.js +69 -28
- package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +9 -2
- package/dist/utc/parse/parseMicrosecondFromUtc.js +18 -9
- package/dist/utc/parse/parseMillisecondFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseMillisecondFromUtc.js +16 -8
- package/dist/utc/parse/parseMinuteFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseMinuteFromUtc.js +14 -8
- package/dist/utc/parse/parseMonthFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseMonthFromUtc.js +14 -8
- package/dist/utc/parse/parseNanosecondFromUtc.d.ts +9 -2
- package/dist/utc/parse/parseNanosecondFromUtc.js +18 -9
- package/dist/utc/parse/parseSecondFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseSecondFromUtc.js +14 -8
- package/dist/utc/parse/parseTimeFromUtc.js +21 -10
- package/dist/utc/parse/parseUnitFromUtc.d.ts +18 -7
- package/dist/utc/parse/parseUnitFromUtc.js +58 -31
- package/dist/utc/parse/parseWeekFromUtc.d.ts +16 -3
- package/dist/utc/parse/parseWeekFromUtc.js +38 -10
- package/dist/utc/parse/parseYearFromUtc.d.ts +7 -1
- package/dist/utc/parse/parseYearFromUtc.js +14 -8
- package/dist/utc/validate/isValidUtc.d.ts +8 -1
- package/dist/utc/validate/isValidUtc.js +12 -3
- package/dist/utc/validate/isValidUtcRange.d.ts +3 -2
- package/dist/utc/validate/isValidUtcRange.js +30 -19
- package/dist/zoned/calculate/addZoned.d.ts +40 -27
- package/dist/zoned/calculate/addZoned.js +71 -56
- package/dist/zoned/calculate/addZonedBusinessDays.d.ts +2 -0
- package/dist/zoned/calculate/addZonedBusinessDays.js +5 -2
- package/dist/zoned/calculate/clampZoned.js +4 -3
- package/dist/zoned/calculate/closestZonedTo.d.ts +6 -6
- package/dist/zoned/calculate/closestZonedTo.js +35 -26
- package/dist/zoned/calculate/cycleZoned.d.ts +10 -7
- package/dist/zoned/calculate/cycleZoned.js +19 -11
- package/dist/zoned/calculate/diffZoned.d.ts +39 -17
- package/dist/zoned/calculate/diffZoned.js +90 -45
- package/dist/zoned/calculate/diffZonedAsDuration.d.ts +19 -9
- package/dist/zoned/calculate/diffZonedAsDuration.js +32 -15
- package/dist/zoned/calculate/endOfQuarterForZoned.d.ts +11 -11
- package/dist/zoned/calculate/endOfQuarterForZoned.js +32 -31
- package/dist/zoned/calculate/endOfZoned.d.ts +21 -14
- package/dist/zoned/calculate/endOfZoned.js +25 -111
- package/dist/zoned/calculate/getHoursInZonedDay.d.ts +8 -1
- package/dist/zoned/calculate/getHoursInZonedDay.js +10 -14
- package/dist/zoned/calculate/getLocaleZonedDayOfWeek.d.ts +8 -4
- package/dist/zoned/calculate/getLocaleZonedDayOfWeek.js +9 -6
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +20 -26
- package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +40 -44
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +16 -24
- package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +36 -42
- package/dist/zoned/calculate/getQuarterForZoned.js +2 -2
- package/dist/zoned/calculate/maxZoned.js +20 -12
- package/dist/zoned/calculate/minZoned.d.ts +1 -1
- package/dist/zoned/calculate/minZoned.js +21 -13
- package/dist/zoned/calculate/roundZoned.d.ts +18 -4
- package/dist/zoned/calculate/roundZoned.js +58 -33
- package/dist/zoned/calculate/setZoned.d.ts +9 -3
- package/dist/zoned/calculate/setZoned.js +39 -18
- package/dist/zoned/calculate/sortZoned.js +18 -10
- package/dist/zoned/calculate/startOfQuarterForZoned.d.ts +4 -7
- package/dist/zoned/calculate/startOfQuarterForZoned.js +23 -17
- package/dist/zoned/calculate/startOfZoned.d.ts +17 -13
- package/dist/zoned/calculate/startOfZoned.js +21 -103
- package/dist/zoned/calculate/subtractZoned.d.ts +36 -24
- package/dist/zoned/calculate/subtractZoned.js +66 -50
- package/dist/zoned/calculate/subtractZonedBusinessDays.d.ts +2 -0
- package/dist/zoned/calculate/subtractZonedBusinessDays.js +5 -2
- package/dist/zoned/chop/chopZonedDate.js +2 -2
- package/dist/zoned/chop/chopZonedDateTime.js +2 -2
- package/dist/zoned/chop/chopZonedMilliseconds.js +2 -2
- package/dist/zoned/chop/chopZonedSeconds.js +2 -2
- package/dist/zoned/chop/chopZonedTime.js +2 -2
- package/dist/zoned/chop/chopZonedTimezone.js +2 -2
- package/dist/zoned/compare/areZonedEqual.js +3 -2
- package/dist/zoned/compare/areZonedEqualBy.d.ts +15 -2
- package/dist/zoned/compare/areZonedEqualBy.js +45 -12
- package/dist/zoned/compare/isAfterZoned.js +3 -2
- package/dist/zoned/compare/isBeforeZoned.d.ts +1 -1
- package/dist/zoned/compare/isBeforeZoned.js +4 -3
- package/dist/zoned/compare/isBetweenZoned.js +46 -29
- package/dist/zoned/compare/isInDaylightSaving.js +4 -4
- package/dist/zoned/compare/isZonedBusinessDay.d.ts +7 -4
- package/dist/zoned/compare/isZonedBusinessDay.js +9 -6
- package/dist/zoned/compare/isZonedFuture.js +2 -1
- package/dist/zoned/compare/isZonedPast.js +2 -1
- package/dist/zoned/compare/isZonedRelativeDay.js +2 -1
- package/dist/zoned/compare/isZonedThisUnit.d.ts +12 -4
- package/dist/zoned/compare/isZonedThisUnit.js +37 -16
- package/dist/zoned/compare/isZonedWeekend.d.ts +8 -4
- package/dist/zoned/compare/isZonedWeekend.js +9 -6
- package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +10 -5
- package/dist/zoned/convert/convertPlainDateTimeToZoned.js +34 -16
- package/dist/zoned/convert/convertZonedToCalendar.d.ts +26 -38
- package/dist/zoned/convert/convertZonedToCalendar.js +33 -48
- package/dist/zoned/convert/convertZonedToPlainDateTime.d.ts +6 -0
- package/dist/zoned/convert/convertZonedToPlainDateTime.js +8 -2
- package/dist/zoned/convert/convertZonedToUnix.d.ts +12 -6
- package/dist/zoned/convert/convertZonedToUnix.js +23 -16
- package/dist/zoned/convert/convertZonedToUtc.js +2 -2
- package/dist/zoned/convert/convertZonedToZoned.js +2 -2
- package/dist/zoned/format/formatCalendarZoned.d.ts +7 -3
- package/dist/zoned/format/formatCalendarZoned.js +37 -39
- package/dist/zoned/format/formatRelativeZoned.d.ts +15 -6
- package/dist/zoned/format/formatRelativeZoned.js +54 -54
- package/dist/zoned/format/formatRfc2822.d.ts +14 -1
- package/dist/zoned/format/formatRfc2822.js +27 -13
- package/dist/zoned/format/formatRfc3339.d.ts +14 -1
- package/dist/zoned/format/formatRfc3339.js +29 -3
- package/dist/zoned/format/formatTimeZoneName.d.ts +3 -2
- package/dist/zoned/format/formatTimeZoneName.js +28 -18
- package/dist/zoned/format/formatZonedDateTime.d.ts +25 -5
- package/dist/zoned/format/formatZonedDateTime.js +40 -9
- package/dist/zoned/format/formatZonedRange.d.ts +24 -6
- package/dist/zoned/format/formatZonedRange.js +61 -28
- package/dist/zoned/format/formatZonedToParts.d.ts +29 -6
- package/dist/zoned/format/formatZonedToParts.js +42 -13
- package/dist/zoned/get/getDstTransitions.d.ts +6 -1
- package/dist/zoned/get/getDstTransitions.js +17 -15
- package/dist/zoned/get/getTimeZoneOffset.d.ts +11 -1
- package/dist/zoned/get/getTimeZoneOffset.js +19 -2
- package/dist/zoned/get/getZonedNow.js +20 -9
- package/dist/zoned/get/getZonedNowUnit.d.ts +8 -4
- package/dist/zoned/get/getZonedNowUnit.js +15 -31
- package/dist/zoned/index.js +1 -1
- package/dist/zoned/interval/intervalAbutsZoned.d.ts +18 -11
- package/dist/zoned/interval/intervalAbutsZoned.js +24 -25
- package/dist/zoned/interval/intervalContainsZoned.d.ts +16 -7
- package/dist/zoned/interval/intervalContainsZoned.js +22 -14
- package/dist/zoned/interval/intervalCountZoned.d.ts +19 -11
- package/dist/zoned/interval/intervalCountZoned.js +32 -27
- package/dist/zoned/interval/intervalDifferenceZoned.d.ts +13 -7
- package/dist/zoned/interval/intervalDifferenceZoned.js +24 -36
- package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +18 -9
- package/dist/zoned/interval/intervalDivideEquallyZoned.js +67 -46
- package/dist/zoned/interval/intervalEngulfsZoned.d.ts +10 -5
- package/dist/zoned/interval/intervalEngulfsZoned.js +16 -10
- package/dist/zoned/interval/intervalFromDurationZoned.d.ts +25 -11
- package/dist/zoned/interval/intervalFromDurationZoned.js +61 -44
- package/dist/zoned/interval/intervalIntersectionZoned.d.ts +12 -6
- package/dist/zoned/interval/intervalIntersectionZoned.js +24 -18
- package/dist/zoned/interval/intervalLengthZoned.d.ts +15 -6
- package/dist/zoned/interval/intervalLengthZoned.js +23 -9
- package/dist/zoned/interval/intervalOverlappingDaysZoned.d.ts +28 -17
- package/dist/zoned/interval/intervalOverlappingDaysZoned.js +46 -34
- package/dist/zoned/interval/intervalSplitAtZoned.d.ts +6 -3
- package/dist/zoned/interval/intervalSplitAtZoned.js +52 -42
- package/dist/zoned/interval/intervalUnionZoned.d.ts +14 -8
- package/dist/zoned/interval/intervalUnionZoned.js +25 -20
- package/dist/zoned/interval/intervalXorAllZoned.d.ts +9 -7
- package/dist/zoned/interval/intervalXorAllZoned.js +42 -73
- package/dist/zoned/interval/intervalXorZoned.d.ts +20 -12
- package/dist/zoned/interval/intervalXorZoned.js +34 -64
- package/dist/zoned/interval/intervalsOverlapZoned.d.ts +15 -7
- package/dist/zoned/interval/intervalsOverlapZoned.js +21 -12
- package/dist/zoned/interval/mergeIntervalsZoned.d.ts +10 -3
- package/dist/zoned/interval/mergeIntervalsZoned.js +44 -41
- package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +28 -5
- package/dist/zoned/interval/splitIntervalByUnitZoned.js +72 -39
- package/dist/zoned/interval/validate/isValidCalendarZonedInterval.d.ts +13 -10
- package/dist/zoned/interval/validate/isValidCalendarZonedInterval.js +13 -10
- package/dist/zoned/interval/validate/isValidZonedInterval.d.ts +7 -5
- package/dist/zoned/interval/validate/isValidZonedInterval.js +12 -16
- package/dist/zoned/map/mapZonedDatesInRange.d.ts +17 -1
- package/dist/zoned/map/mapZonedDatesInRange.js +62 -26
- package/dist/zoned/map/mapZonedHoursInDay.d.ts +10 -13
- package/dist/zoned/map/mapZonedHoursInDay.js +13 -21
- package/dist/zoned/parse/getZonedOffset.js +2 -2
- package/dist/zoned/parse/getZonedOffsetAs.d.ts +4 -2
- package/dist/zoned/parse/getZonedOffsetAs.js +10 -5
- package/dist/zoned/parse/parseDateFromZoned.js +2 -2
- package/dist/zoned/parse/parseDateTimeFromZoned.js +2 -2
- package/dist/zoned/parse/parseDayFromZoned.js +2 -2
- package/dist/zoned/parse/parseDayOfWeekFromZoned.js +2 -2
- package/dist/zoned/parse/parseHourFromZoned.js +2 -2
- package/dist/zoned/parse/parseMicrosecondFromZoned.d.ts +2 -1
- package/dist/zoned/parse/parseMicrosecondFromZoned.js +4 -3
- package/dist/zoned/parse/parseMillisecondFromZoned.js +2 -2
- package/dist/zoned/parse/parseMinuteFromZoned.js +2 -2
- package/dist/zoned/parse/parseMonthFromZoned.js +2 -2
- package/dist/zoned/parse/parseNanosecondFromZoned.d.ts +2 -1
- package/dist/zoned/parse/parseNanosecondFromZoned.js +4 -3
- package/dist/zoned/parse/parseRfc2822.d.ts +32 -12
- package/dist/zoned/parse/parseRfc2822.js +47 -45
- package/dist/zoned/parse/parseRfc3339.d.ts +6 -0
- package/dist/zoned/parse/parseRfc3339.js +6 -0
- package/dist/zoned/parse/parseSecondFromZoned.js +2 -2
- package/dist/zoned/parse/parseTimeFromZoned.js +2 -2
- package/dist/zoned/parse/parseTimeZoneFromZoned.js +2 -2
- package/dist/zoned/parse/parseUnitFromZoned.d.ts +14 -5
- package/dist/zoned/parse/parseUnitFromZoned.js +59 -33
- package/dist/zoned/parse/parseWeekFromZoned.d.ts +13 -3
- package/dist/zoned/parse/parseWeekFromZoned.js +34 -10
- package/dist/zoned/parse/parseYearFromZoned.js +2 -2
- package/dist/zoned/validate/hasDaylightSaving.js +3 -3
- package/dist/zoned/validate/isValidCalendarZonedDateTime.d.ts +31 -16
- package/dist/zoned/validate/isValidCalendarZonedDateTime.js +31 -16
- package/dist/zoned/validate/isValidTimeZone.d.ts +15 -2
- package/dist/zoned/validate/isValidTimeZone.js +17 -4
- package/dist/zoned/validate/isValidZonedDateTime.d.ts +14 -7
- package/dist/zoned/validate/isValidZonedDateTime.js +20 -12
- package/dist/zoned/validate/isValidZonedRange.d.ts +9 -2
- package/dist/zoned/validate/isValidZonedRange.js +44 -16
- package/package.json +510 -34
- package/skills/gmt-arithmetic/SKILL.md +197 -16
- package/skills/gmt-basics/SKILL.md +61 -14
- package/skills/gmt-integration/SKILL.md +54 -8
- package/skills/gmt-timezone/SKILL.md +208 -24
- package/dist/internal/advanceBusinessDays.d.ts +0 -2
- package/dist/internal/advanceBusinessDays.js +0 -15
- package/dist/internal/ethiopicFamilyCalendar.d.ts +0 -47
- package/dist/internal/ethiopicFamilyCalendar.js +0 -136
- package/dist/internal/getLocaleMinimalDaysInFirstWeek.d.ts +0 -20
- package/dist/internal/getLocaleMinimalDaysInFirstWeek.js +0 -31
- package/dist/internal/resolveUnixTimeZone.d.ts +0 -20
- package/dist/internal/resolveUnixTimeZone.js +0 -30
- package/dist/unix/calculate/startOrEndOfUnix.d.ts +0 -27
- package/dist/unix/calculate/startOrEndOfUnix.js +0 -140
- package/dist/unix/interval/resolveUnixIntervalPair.d.ts +0 -7
- package/dist/unix/interval/resolveUnixIntervalPair.js +0 -36
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert PostgreSQL's internal `timestamptz` value back to an ISO 8601 instant string.
|
|
3
|
+
*
|
|
4
|
+
* - `value` is a signed count of microseconds since 2000-01-01T00:00:00Z, the number
|
|
5
|
+
* PostgreSQL stores and the binary wire format carries. It is not a Unix timestamp.
|
|
6
|
+
* - Accepted range is the narrower of PostgreSQL's and `Temporal.Instant`'s, one binding at
|
|
7
|
+
* each end: `-211813488000000000n` (`MIN_TIMESTAMP`, `-004713-11-24T00:00:00Z` — the
|
|
8
|
+
* manual's "4713 BC", counted in the Julian calendar) up to `8639053315200000000n`
|
|
9
|
+
* (`+275760-09-13`, where `Temporal` stops, well before PostgreSQL's 294276 AD).
|
|
10
|
+
* Anything outside returns "".
|
|
11
|
+
* - Exact in this direction — a microsecond is coarser than the nanoseconds an ISO string
|
|
12
|
+
* carries, so nothing is rounded. The loss, if any, happened in `toPgMicroseconds`.
|
|
13
|
+
* - Returns "" on invalid input.
|
|
14
|
+
*
|
|
15
|
+
* @param value microseconds since 2000-01-01 (bigint)
|
|
16
|
+
* @returns ISO 8601 instant string (UTC), or "" on invalid input
|
|
17
|
+
*
|
|
18
|
+
* @example fromPgMicroseconds(0n) // "2000-01-01T00:00:00Z" — the PostgreSQL epoch
|
|
19
|
+
* @example fromPgMicroseconds(-946684800000000n) // "1970-01-01T00:00:00Z"
|
|
20
|
+
* @example fromPgMicroseconds(763389296789000n) // "2024-03-10T12:34:56.789Z"
|
|
21
|
+
* @example fromPgMicroseconds(763387200123456n) // "2024-03-10T12:00:00.123456Z"
|
|
22
|
+
* @example fromPgMicroseconds(-211813488000000001n) // "" — one microsecond before PostgreSQL's minimum
|
|
23
|
+
* @example fromPgMicroseconds(9223372036854775807n) // "" — int64 maximum, still past Temporal's range
|
|
24
|
+
* @example fromPgMicroseconds(763387200123456) // "" — number, not bigint
|
|
25
|
+
*/
|
|
26
|
+
export declare function fromPgMicroseconds(value: bigint): string;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { MIN_PG_MICROSECONDS, NANOSECONDS_PER_MICROSECOND, PG_EPOCH_OFFSET_MICROSECONDS, } from "../../internal/index.js";
|
|
2
|
+
import { fromNanoseconds } from "./fromNanoseconds.js";
|
|
3
|
+
/**
|
|
4
|
+
* Convert PostgreSQL's internal `timestamptz` value back to an ISO 8601 instant string.
|
|
5
|
+
*
|
|
6
|
+
* - `value` is a signed count of microseconds since 2000-01-01T00:00:00Z, the number
|
|
7
|
+
* PostgreSQL stores and the binary wire format carries. It is not a Unix timestamp.
|
|
8
|
+
* - Accepted range is the narrower of PostgreSQL's and `Temporal.Instant`'s, one binding at
|
|
9
|
+
* each end: `-211813488000000000n` (`MIN_TIMESTAMP`, `-004713-11-24T00:00:00Z` — the
|
|
10
|
+
* manual's "4713 BC", counted in the Julian calendar) up to `8639053315200000000n`
|
|
11
|
+
* (`+275760-09-13`, where `Temporal` stops, well before PostgreSQL's 294276 AD).
|
|
12
|
+
* Anything outside returns "".
|
|
13
|
+
* - Exact in this direction — a microsecond is coarser than the nanoseconds an ISO string
|
|
14
|
+
* carries, so nothing is rounded. The loss, if any, happened in `toPgMicroseconds`.
|
|
15
|
+
* - Returns "" on invalid input.
|
|
16
|
+
*
|
|
17
|
+
* @param value microseconds since 2000-01-01 (bigint)
|
|
18
|
+
* @returns ISO 8601 instant string (UTC), or "" on invalid input
|
|
19
|
+
*
|
|
20
|
+
* @example fromPgMicroseconds(0n) // "2000-01-01T00:00:00Z" — the PostgreSQL epoch
|
|
21
|
+
* @example fromPgMicroseconds(-946684800000000n) // "1970-01-01T00:00:00Z"
|
|
22
|
+
* @example fromPgMicroseconds(763389296789000n) // "2024-03-10T12:34:56.789Z"
|
|
23
|
+
* @example fromPgMicroseconds(763387200123456n) // "2024-03-10T12:00:00.123456Z"
|
|
24
|
+
* @example fromPgMicroseconds(-211813488000000001n) // "" — one microsecond before PostgreSQL's minimum
|
|
25
|
+
* @example fromPgMicroseconds(9223372036854775807n) // "" — int64 maximum, still past Temporal's range
|
|
26
|
+
* @example fromPgMicroseconds(763387200123456) // "" — number, not bigint
|
|
27
|
+
*/
|
|
28
|
+
export function fromPgMicroseconds(value) {
|
|
29
|
+
if (typeof value !== "bigint" || value < MIN_PG_MICROSECONDS) {
|
|
30
|
+
return "";
|
|
31
|
+
}
|
|
32
|
+
return fromNanoseconds((value + PG_EPOCH_OFFSET_MICROSECONDS) * NANOSECONDS_PER_MICROSECOND);
|
|
33
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from "./fromDotNetTicks.js";
|
|
2
|
+
export * from "./fromExcelSerial.js";
|
|
3
|
+
export * from "./fromFileTime.js";
|
|
4
|
+
export * from "./fromNanoseconds.js";
|
|
5
|
+
export * from "./fromNtpTimestamp.js";
|
|
6
|
+
export * from "./fromPgMicroseconds.js";
|
|
7
|
+
export * from "./toDotNetTicks.js";
|
|
8
|
+
export * from "./toExcelSerial.js";
|
|
9
|
+
export * from "./toFileTime.js";
|
|
10
|
+
export * from "./toNanoseconds.js";
|
|
11
|
+
export * from "./toNtpTimestamp.js";
|
|
12
|
+
export * from "./toPgMicroseconds.js";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from "./fromDotNetTicks.js";
|
|
2
|
+
export * from "./fromExcelSerial.js";
|
|
3
|
+
export * from "./fromFileTime.js";
|
|
4
|
+
export * from "./fromNanoseconds.js";
|
|
5
|
+
export * from "./fromNtpTimestamp.js";
|
|
6
|
+
export * from "./fromPgMicroseconds.js";
|
|
7
|
+
export * from "./toDotNetTicks.js";
|
|
8
|
+
export * from "./toExcelSerial.js";
|
|
9
|
+
export * from "./toFileTime.js";
|
|
10
|
+
export * from "./toNanoseconds.js";
|
|
11
|
+
export * from "./toNtpTimestamp.js";
|
|
12
|
+
export * from "./toPgMicroseconds.js";
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert an ISO 8601 instant string to .NET `DateTime.Ticks`.
|
|
3
|
+
*
|
|
4
|
+
* - Ticks count 100-nanosecond intervals since 0001-01-01T00:00:00 in the proleptic
|
|
5
|
+
* Gregorian calendar — the same unit as `FILETIME`, a different origin. The two differ by
|
|
6
|
+
* `504911232000000000n`, the tick count at 1601-01-01.
|
|
7
|
+
* - Sub-100 ns digits floor away, toward negative infinity, so the tick grid stays uniform
|
|
8
|
+
* either side of the epoch. Reach for `truncateNanoseconds` first if the caller needs to
|
|
9
|
+
* see the loss.
|
|
10
|
+
* - **The range is `DateTime`'s own, and instants outside it are invalid input, not a
|
|
11
|
+
* negative tick count:** `DateTime.MinValue` (`0n`, 0001-01-01) to `DateTime.MaxValue`
|
|
12
|
+
* (`3155378975999999999n`, 9999-12-31T23:59:59.9999999).
|
|
13
|
+
* - The result is a bare tick count, with no `DateTimeKind`. .NET stores the kind in the top
|
|
14
|
+
* two bits of `DateTime`'s backing field, not in `Ticks`; treat the value as UTC.
|
|
15
|
+
* - Returns `0n` on invalid input. `0n` is also `DateTime.MinValue` itself (0001-01-01) —
|
|
16
|
+
* validate the string first with `isValidInstant` when the two must be told apart.
|
|
17
|
+
*
|
|
18
|
+
* @param isoString ISO 8601 instant string (e.g. "2024-03-10T12:00:00Z")
|
|
19
|
+
* @returns 100-nanosecond intervals since 0001-01-01 as a bigint, or 0n on invalid input
|
|
20
|
+
*
|
|
21
|
+
* @example toDotNetTicks("0001-01-01T00:00:00Z") // 0n — DateTime.MinValue
|
|
22
|
+
* @example toDotNetTicks("1970-01-01T00:00:00Z") // 621355968000000000n
|
|
23
|
+
* @example toDotNetTicks("2024-03-10T12:34:56.789Z") // 638456708967890000n
|
|
24
|
+
* @example toDotNetTicks("2024-03-10T12:00:00.123456789Z") // 638456688001234567n — floors to 100 ns
|
|
25
|
+
* @example toDotNetTicks("9999-12-31T23:59:59.9999999Z") // 3155378975999999999n — DateTime.MaxValue
|
|
26
|
+
* @example toDotNetTicks("+010000-01-01T00:00:00Z") // 0n — past DateTime.MaxValue
|
|
27
|
+
* @example toDotNetTicks("invalid") // 0n
|
|
28
|
+
*/
|
|
29
|
+
export declare function toDotNetTicks(isoString: string): bigint;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { DOT_NET_TICKS_EPOCH_OFFSET, floorDivide, MAX_DOT_NET_TICKS, MIN_DOT_NET_TICKS, NANOSECONDS_PER_TICK, parseInstantNanoseconds, } from "../../internal/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Convert an ISO 8601 instant string to .NET `DateTime.Ticks`.
|
|
4
|
+
*
|
|
5
|
+
* - Ticks count 100-nanosecond intervals since 0001-01-01T00:00:00 in the proleptic
|
|
6
|
+
* Gregorian calendar — the same unit as `FILETIME`, a different origin. The two differ by
|
|
7
|
+
* `504911232000000000n`, the tick count at 1601-01-01.
|
|
8
|
+
* - Sub-100 ns digits floor away, toward negative infinity, so the tick grid stays uniform
|
|
9
|
+
* either side of the epoch. Reach for `truncateNanoseconds` first if the caller needs to
|
|
10
|
+
* see the loss.
|
|
11
|
+
* - **The range is `DateTime`'s own, and instants outside it are invalid input, not a
|
|
12
|
+
* negative tick count:** `DateTime.MinValue` (`0n`, 0001-01-01) to `DateTime.MaxValue`
|
|
13
|
+
* (`3155378975999999999n`, 9999-12-31T23:59:59.9999999).
|
|
14
|
+
* - The result is a bare tick count, with no `DateTimeKind`. .NET stores the kind in the top
|
|
15
|
+
* two bits of `DateTime`'s backing field, not in `Ticks`; treat the value as UTC.
|
|
16
|
+
* - Returns `0n` on invalid input. `0n` is also `DateTime.MinValue` itself (0001-01-01) —
|
|
17
|
+
* validate the string first with `isValidInstant` when the two must be told apart.
|
|
18
|
+
*
|
|
19
|
+
* @param isoString ISO 8601 instant string (e.g. "2024-03-10T12:00:00Z")
|
|
20
|
+
* @returns 100-nanosecond intervals since 0001-01-01 as a bigint, or 0n on invalid input
|
|
21
|
+
*
|
|
22
|
+
* @example toDotNetTicks("0001-01-01T00:00:00Z") // 0n — DateTime.MinValue
|
|
23
|
+
* @example toDotNetTicks("1970-01-01T00:00:00Z") // 621355968000000000n
|
|
24
|
+
* @example toDotNetTicks("2024-03-10T12:34:56.789Z") // 638456708967890000n
|
|
25
|
+
* @example toDotNetTicks("2024-03-10T12:00:00.123456789Z") // 638456688001234567n — floors to 100 ns
|
|
26
|
+
* @example toDotNetTicks("9999-12-31T23:59:59.9999999Z") // 3155378975999999999n — DateTime.MaxValue
|
|
27
|
+
* @example toDotNetTicks("+010000-01-01T00:00:00Z") // 0n — past DateTime.MaxValue
|
|
28
|
+
* @example toDotNetTicks("invalid") // 0n
|
|
29
|
+
*/
|
|
30
|
+
export function toDotNetTicks(isoString) {
|
|
31
|
+
const nanoseconds = parseInstantNanoseconds(isoString);
|
|
32
|
+
if (nanoseconds === null) {
|
|
33
|
+
return 0n;
|
|
34
|
+
}
|
|
35
|
+
const ticks = floorDivide(nanoseconds, NANOSECONDS_PER_TICK) + DOT_NET_TICKS_EPOCH_OFFSET;
|
|
36
|
+
if (ticks < MIN_DOT_NET_TICKS || ticks > MAX_DOT_NET_TICKS) {
|
|
37
|
+
return 0n;
|
|
38
|
+
}
|
|
39
|
+
return ticks;
|
|
40
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which Excel date system a serial belongs to.
|
|
3
|
+
*
|
|
4
|
+
* @remarks Members:
|
|
5
|
+
*
|
|
6
|
+
* | Member | Description |
|
|
7
|
+
* | --- | --- |
|
|
8
|
+
* | `"1900"` | The default, on every platform since Excel 2011 for Mac. Serial 1 is 1900-01-01, and serial 60 is the phantom 1900-02-29. |
|
|
9
|
+
* | `"1904"` | The legacy Mac system, still found in workbooks authored on Excel 2008 for Mac and earlier. Serial 0 is 1904-01-01, and there is no phantom day. |
|
|
10
|
+
*/
|
|
11
|
+
export type ExcelDateSystem = "1900" | "1904";
|
|
12
|
+
/**
|
|
13
|
+
* Convert an ISO 8601 instant string to an Excel day serial.
|
|
14
|
+
*
|
|
15
|
+
* - The serial is days, with the time of day as the fraction: 45361.5 is midday on
|
|
16
|
+
* 2024-03-10. The date is the UTC wall clock — a zoned input is converted to UTC first,
|
|
17
|
+
* so `"2024-03-10T12:00:00-05:00"` is serial 45361.708…, the 17:00 UTC it names.
|
|
18
|
+
* - **The 1900 system's serial 60 is the phantom 29 February 1900**, a date that never
|
|
19
|
+
* existed — 1900 was not a leap year. Lotus 1-2-3 got it wrong and Excel keeps the bug for
|
|
20
|
+
* compatibility. No instant maps to serial 60: 1900-02-28 is 59 and 1900-03-01 is 61.
|
|
21
|
+
* Silently "fixing" this would put GMT one day out from Excel for every date before March
|
|
22
|
+
* 1900.
|
|
23
|
+
* - `{ system: "1904" }` selects the legacy Mac system, whose serial 0 is 1904-01-01. The
|
|
24
|
+
* same instant is exactly 1462 lower there than in the 1900 system.
|
|
25
|
+
* - **Instants outside Excel's own serial range are invalid input**, not an out-of-range
|
|
26
|
+
* number: the 1900 system runs from serial 1 (1900-01-01) to 2958465 (9999-12-31), the
|
|
27
|
+
* 1904 system from serial 0 (1904-01-01) to 2957003. Serial 0 in the 1900 system is
|
|
28
|
+
* Excel's "January 0, 1900" placeholder, not a date, so it is rejected too.
|
|
29
|
+
* - The serial is a `double`, as it is in a workbook. The whole-day part is exact; the
|
|
30
|
+
* intra-day fraction is not, so precision below roughly a microsecond is not
|
|
31
|
+
* representable, and it degrades toward year 9999. Round-tripping through
|
|
32
|
+
* `fromExcelSerial` is exact to the millisecond, which is as fine as Excel itself goes.
|
|
33
|
+
* - **The last ~20 µs of 9999-12-31 returns null**, from
|
|
34
|
+
* `"9999-12-31T23:59:59.999979884Z"` on. A `double` near serial 2958465 resolves to about
|
|
35
|
+
* 40 µs, so those instants round to exactly 2958466 — one past Excel's last serial. The
|
|
36
|
+
* range check is deliberately made on the rounded serial rather than the exact instant, so
|
|
37
|
+
* a returned number is always one Excel accepts; the alternative is handing back a 2958466
|
|
38
|
+
* that Excel rejects on the way in.
|
|
39
|
+
*
|
|
40
|
+
* @param isoString ISO 8601 instant string (e.g. "2024-03-10T12:00:00Z")
|
|
41
|
+
* @param options optional: system ("1900" (default) | "1904")
|
|
42
|
+
* @returns Excel day serial as a number, or null on invalid input
|
|
43
|
+
*
|
|
44
|
+
* @example toExcelSerial("1900-01-01T00:00:00Z") // 1 — Excel's first serial
|
|
45
|
+
* @example toExcelSerial("1970-01-01T00:00:00Z") // 25569
|
|
46
|
+
* @example toExcelSerial("2024-03-10T12:00:00Z") // 45361.5
|
|
47
|
+
* @example toExcelSerial("1900-02-28T00:00:00Z") // 59 — the next day is 61, not 60
|
|
48
|
+
* @example toExcelSerial("1900-03-01T00:00:00Z") // 61 — serial 60 is the phantom 1900-02-29
|
|
49
|
+
* @example toExcelSerial("2024-03-10T12:00:00Z", { system: "1904" }) // 43899.5 — exactly 1462 lower
|
|
50
|
+
* @example toExcelSerial("1899-12-31T00:00:00Z") // null — Excel's "January 0", not a date
|
|
51
|
+
* @example toExcelSerial("9999-12-31T23:59:59.99998Z") // null — rounds to 2958466, one past Excel's last serial
|
|
52
|
+
* @example toExcelSerial("invalid") // null
|
|
53
|
+
*/
|
|
54
|
+
export declare function toExcelSerial(isoString: string, options?: {
|
|
55
|
+
system?: ExcelDateSystem;
|
|
56
|
+
}): number | null;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { EXCEL_1900_EPOCH_NANOSECONDS, EXCEL_1900_PHANTOM_END_NANOSECONDS, EXCEL_1900_PRE_PHANTOM_EPOCH_NANOSECONDS, EXCEL_1904_EPOCH_NANOSECONDS, floorDivide, MAX_EXCEL_1900_SERIAL_EXCLUSIVE, MAX_EXCEL_1904_SERIAL_EXCLUSIVE, MIN_EXCEL_1900_SERIAL, MIN_EXCEL_1904_SERIAL, NANOSECONDS_PER_DAY, NANOSECONDS_PER_DAY_NUMBER, parseInstantNanoseconds, } from "../../internal/index.js";
|
|
2
|
+
import { isOptionsArgument } from "../../internal/isObject.js";
|
|
3
|
+
/**
|
|
4
|
+
* Convert an ISO 8601 instant string to an Excel day serial.
|
|
5
|
+
*
|
|
6
|
+
* - The serial is days, with the time of day as the fraction: 45361.5 is midday on
|
|
7
|
+
* 2024-03-10. The date is the UTC wall clock — a zoned input is converted to UTC first,
|
|
8
|
+
* so `"2024-03-10T12:00:00-05:00"` is serial 45361.708…, the 17:00 UTC it names.
|
|
9
|
+
* - **The 1900 system's serial 60 is the phantom 29 February 1900**, a date that never
|
|
10
|
+
* existed — 1900 was not a leap year. Lotus 1-2-3 got it wrong and Excel keeps the bug for
|
|
11
|
+
* compatibility. No instant maps to serial 60: 1900-02-28 is 59 and 1900-03-01 is 61.
|
|
12
|
+
* Silently "fixing" this would put GMT one day out from Excel for every date before March
|
|
13
|
+
* 1900.
|
|
14
|
+
* - `{ system: "1904" }` selects the legacy Mac system, whose serial 0 is 1904-01-01. The
|
|
15
|
+
* same instant is exactly 1462 lower there than in the 1900 system.
|
|
16
|
+
* - **Instants outside Excel's own serial range are invalid input**, not an out-of-range
|
|
17
|
+
* number: the 1900 system runs from serial 1 (1900-01-01) to 2958465 (9999-12-31), the
|
|
18
|
+
* 1904 system from serial 0 (1904-01-01) to 2957003. Serial 0 in the 1900 system is
|
|
19
|
+
* Excel's "January 0, 1900" placeholder, not a date, so it is rejected too.
|
|
20
|
+
* - The serial is a `double`, as it is in a workbook. The whole-day part is exact; the
|
|
21
|
+
* intra-day fraction is not, so precision below roughly a microsecond is not
|
|
22
|
+
* representable, and it degrades toward year 9999. Round-tripping through
|
|
23
|
+
* `fromExcelSerial` is exact to the millisecond, which is as fine as Excel itself goes.
|
|
24
|
+
* - **The last ~20 µs of 9999-12-31 returns null**, from
|
|
25
|
+
* `"9999-12-31T23:59:59.999979884Z"` on. A `double` near serial 2958465 resolves to about
|
|
26
|
+
* 40 µs, so those instants round to exactly 2958466 — one past Excel's last serial. The
|
|
27
|
+
* range check is deliberately made on the rounded serial rather than the exact instant, so
|
|
28
|
+
* a returned number is always one Excel accepts; the alternative is handing back a 2958466
|
|
29
|
+
* that Excel rejects on the way in.
|
|
30
|
+
*
|
|
31
|
+
* @param isoString ISO 8601 instant string (e.g. "2024-03-10T12:00:00Z")
|
|
32
|
+
* @param options optional: system ("1900" (default) | "1904")
|
|
33
|
+
* @returns Excel day serial as a number, or null on invalid input
|
|
34
|
+
*
|
|
35
|
+
* @example toExcelSerial("1900-01-01T00:00:00Z") // 1 — Excel's first serial
|
|
36
|
+
* @example toExcelSerial("1970-01-01T00:00:00Z") // 25569
|
|
37
|
+
* @example toExcelSerial("2024-03-10T12:00:00Z") // 45361.5
|
|
38
|
+
* @example toExcelSerial("1900-02-28T00:00:00Z") // 59 — the next day is 61, not 60
|
|
39
|
+
* @example toExcelSerial("1900-03-01T00:00:00Z") // 61 — serial 60 is the phantom 1900-02-29
|
|
40
|
+
* @example toExcelSerial("2024-03-10T12:00:00Z", { system: "1904" }) // 43899.5 — exactly 1462 lower
|
|
41
|
+
* @example toExcelSerial("1899-12-31T00:00:00Z") // null — Excel's "January 0", not a date
|
|
42
|
+
* @example toExcelSerial("9999-12-31T23:59:59.99998Z") // null — rounds to 2958466, one past Excel's last serial
|
|
43
|
+
* @example toExcelSerial("invalid") // null
|
|
44
|
+
*/
|
|
45
|
+
export function toExcelSerial(isoString, options) {
|
|
46
|
+
try {
|
|
47
|
+
if (!isOptionsArgument(options)) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
const system = options?.system === undefined ? "1900" : options.system;
|
|
51
|
+
if (system !== "1900" && system !== "1904") {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
const nanoseconds = parseInstantNanoseconds(isoString);
|
|
55
|
+
if (nanoseconds === null) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
const epochNanoseconds = system === "1904"
|
|
59
|
+
? EXCEL_1904_EPOCH_NANOSECONDS
|
|
60
|
+
: nanoseconds >= EXCEL_1900_PHANTOM_END_NANOSECONDS
|
|
61
|
+
? EXCEL_1900_EPOCH_NANOSECONDS
|
|
62
|
+
: EXCEL_1900_PRE_PHANTOM_EPOCH_NANOSECONDS;
|
|
63
|
+
// Split the day count from the intra-day remainder so the whole-day part stays exact:
|
|
64
|
+
// a single `Number(...) / 86400e9` would round the day count through the same double as
|
|
65
|
+
// the fraction, and the serials Excel actually stores are mostly whole days.
|
|
66
|
+
const sinceEpoch = nanoseconds - epochNanoseconds;
|
|
67
|
+
const days = floorDivide(sinceEpoch, NANOSECONDS_PER_DAY);
|
|
68
|
+
const serial = Number(days) +
|
|
69
|
+
Number(sinceEpoch - days * NANOSECONDS_PER_DAY) /
|
|
70
|
+
NANOSECONDS_PER_DAY_NUMBER;
|
|
71
|
+
const minimum = system === "1904" ? MIN_EXCEL_1904_SERIAL : MIN_EXCEL_1900_SERIAL;
|
|
72
|
+
const maximumExclusive = system === "1904"
|
|
73
|
+
? MAX_EXCEL_1904_SERIAL_EXCLUSIVE
|
|
74
|
+
: MAX_EXCEL_1900_SERIAL_EXCLUSIVE;
|
|
75
|
+
if (serial < minimum || serial >= maximumExclusive) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
return serial;
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// Never throws (Core Rule 3): a hostile
|
|
82
|
+
// argument is invalid input, not an exception.
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert an ISO 8601 instant string to a Windows `FILETIME`.
|
|
3
|
+
*
|
|
4
|
+
* - A `FILETIME` counts 100-nanosecond intervals since 1601-01-01T00:00:00Z. The Unix delta
|
|
5
|
+
* is 11 644 473 600 seconds, i.e. `116444736000000000n` ticks.
|
|
6
|
+
* - Sub-100 ns digits floor away, toward negative infinity, so the tick grid stays uniform
|
|
7
|
+
* either side of the epoch. Reach for `truncateNanoseconds` first if the caller needs to
|
|
8
|
+
* see the loss.
|
|
9
|
+
* - **The range is the format's own, and instants outside it are invalid input, not a
|
|
10
|
+
* negative tick count.** The range is `0n` to `2^63 − 1` — 1601-01-01 to
|
|
11
|
+
* `+030828-09-14T02:48:05.4775807Z`. The struct's two `DWORD`s could hold more, but
|
|
12
|
+
* Microsoft's `FileTimeToSystemTime` requires a value "less than 0x8000000000000000", and
|
|
13
|
+
* `SetFileTime` reserves `2^64 − 1` as a "do not modify" marker. Consumers commonly narrow
|
|
14
|
+
* this further: .NET's `DateTime.FromFileTimeUtc` stops at 9999-12-31.
|
|
15
|
+
* - Returns `0n` on invalid input. `0n` is also the FILETIME epoch itself (1601-01-01) —
|
|
16
|
+
* validate the string first with `isValidInstant` when the two must be told apart.
|
|
17
|
+
*
|
|
18
|
+
* @param isoString ISO 8601 instant string (e.g. "2024-03-10T12:00:00Z")
|
|
19
|
+
* @returns 100-nanosecond intervals since 1601-01-01 as a bigint, or 0n on invalid input
|
|
20
|
+
*
|
|
21
|
+
* @example toFileTime("1601-01-01T00:00:00Z") // 0n — the FILETIME epoch
|
|
22
|
+
* @example toFileTime("1970-01-01T00:00:00Z") // 116444736000000000n
|
|
23
|
+
* @example toFileTime("2024-03-10T12:34:56.789Z") // 133545476967890000n
|
|
24
|
+
* @example toFileTime("2024-03-10T12:00:00.123456789Z") // 133545456001234567n — floors to 100 ns
|
|
25
|
+
* @example toFileTime("1600-12-31T23:59:59Z") // 0n — before the FILETIME epoch
|
|
26
|
+
* @example toFileTime("+030828-09-14T02:48:05.4775807Z") // 9223372036854775807n — 2^63 − 1, the largest FILETIME
|
|
27
|
+
* @example toFileTime("+030828-09-14T02:48:05.4775808Z") // 0n — 2^63, which FileTimeToSystemTime rejects
|
|
28
|
+
* @example toFileTime("2024-03-10T12:00:00") // 0n — no offset designator
|
|
29
|
+
* @example toFileTime("invalid") // 0n
|
|
30
|
+
*/
|
|
31
|
+
export declare function toFileTime(isoString: string): bigint;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { FILE_TIME_EPOCH_OFFSET_TICKS, floorDivide, MAX_FILE_TIME, MIN_FILE_TIME, NANOSECONDS_PER_TICK, parseInstantNanoseconds, } from "../../internal/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Convert an ISO 8601 instant string to a Windows `FILETIME`.
|
|
4
|
+
*
|
|
5
|
+
* - A `FILETIME` counts 100-nanosecond intervals since 1601-01-01T00:00:00Z. The Unix delta
|
|
6
|
+
* is 11 644 473 600 seconds, i.e. `116444736000000000n` ticks.
|
|
7
|
+
* - Sub-100 ns digits floor away, toward negative infinity, so the tick grid stays uniform
|
|
8
|
+
* either side of the epoch. Reach for `truncateNanoseconds` first if the caller needs to
|
|
9
|
+
* see the loss.
|
|
10
|
+
* - **The range is the format's own, and instants outside it are invalid input, not a
|
|
11
|
+
* negative tick count.** The range is `0n` to `2^63 − 1` — 1601-01-01 to
|
|
12
|
+
* `+030828-09-14T02:48:05.4775807Z`. The struct's two `DWORD`s could hold more, but
|
|
13
|
+
* Microsoft's `FileTimeToSystemTime` requires a value "less than 0x8000000000000000", and
|
|
14
|
+
* `SetFileTime` reserves `2^64 − 1` as a "do not modify" marker. Consumers commonly narrow
|
|
15
|
+
* this further: .NET's `DateTime.FromFileTimeUtc` stops at 9999-12-31.
|
|
16
|
+
* - Returns `0n` on invalid input. `0n` is also the FILETIME epoch itself (1601-01-01) —
|
|
17
|
+
* validate the string first with `isValidInstant` when the two must be told apart.
|
|
18
|
+
*
|
|
19
|
+
* @param isoString ISO 8601 instant string (e.g. "2024-03-10T12:00:00Z")
|
|
20
|
+
* @returns 100-nanosecond intervals since 1601-01-01 as a bigint, or 0n on invalid input
|
|
21
|
+
*
|
|
22
|
+
* @example toFileTime("1601-01-01T00:00:00Z") // 0n — the FILETIME epoch
|
|
23
|
+
* @example toFileTime("1970-01-01T00:00:00Z") // 116444736000000000n
|
|
24
|
+
* @example toFileTime("2024-03-10T12:34:56.789Z") // 133545476967890000n
|
|
25
|
+
* @example toFileTime("2024-03-10T12:00:00.123456789Z") // 133545456001234567n — floors to 100 ns
|
|
26
|
+
* @example toFileTime("1600-12-31T23:59:59Z") // 0n — before the FILETIME epoch
|
|
27
|
+
* @example toFileTime("+030828-09-14T02:48:05.4775807Z") // 9223372036854775807n — 2^63 − 1, the largest FILETIME
|
|
28
|
+
* @example toFileTime("+030828-09-14T02:48:05.4775808Z") // 0n — 2^63, which FileTimeToSystemTime rejects
|
|
29
|
+
* @example toFileTime("2024-03-10T12:00:00") // 0n — no offset designator
|
|
30
|
+
* @example toFileTime("invalid") // 0n
|
|
31
|
+
*/
|
|
32
|
+
export function toFileTime(isoString) {
|
|
33
|
+
const nanoseconds = parseInstantNanoseconds(isoString);
|
|
34
|
+
if (nanoseconds === null) {
|
|
35
|
+
return 0n;
|
|
36
|
+
}
|
|
37
|
+
const ticks = floorDivide(nanoseconds, NANOSECONDS_PER_TICK) +
|
|
38
|
+
FILE_TIME_EPOCH_OFFSET_TICKS;
|
|
39
|
+
if (ticks < MIN_FILE_TIME || ticks > MAX_FILE_TIME) {
|
|
40
|
+
return 0n;
|
|
41
|
+
}
|
|
42
|
+
return ticks;
|
|
43
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert an ISO 8601 instant string to nanoseconds since the Unix epoch.
|
|
3
|
+
*
|
|
4
|
+
* - Requires an offset designator (`Z`, `±HH:MM`), as `Temporal.Instant` does — date-only
|
|
5
|
+
* and offset-less strings are rejected.
|
|
6
|
+
* - Accepts a bracketed IANA time zone annotation and a `[u-ca=...]` calendar annotation, both
|
|
7
|
+
* ignored as `Temporal.Instant.from` ignores them (an instant has no calendar).
|
|
8
|
+
* - **A bracketed zone annotation is syntactic only.** As in `Temporal.Instant.from`, it is
|
|
9
|
+
* ignored: the offset alone fixes the instant, and a zone that does not exist or disagrees
|
|
10
|
+
* with the offset is not checked.
|
|
11
|
+
* - ISO 8601 extended format before any annotation: `<date>T<time>`, then
|
|
12
|
+
* `Z` or `±HH:MM[:SS[.fraction]]`. Basic format, a space or lower-case `t` separator, a
|
|
13
|
+
* lower-case `z` and an hour-only time or offset return `0n`, although
|
|
14
|
+
* `Temporal.Instant.from` reads them. The offsets make this wider than `isValidUtc`, which
|
|
15
|
+
* requires `Z`.
|
|
16
|
+
* - Rejects leap seconds (`"2016-12-31T23:59:60Z"`), which Temporal would silently clamp —
|
|
17
|
+
* in every separator and format variant it accepts, `"20161231 235960Z"` included.
|
|
18
|
+
* - Returns `bigint`, not `number`: nanoseconds since the epoch passed
|
|
19
|
+
* `Number.MAX_SAFE_INTEGER` in April 1970, so a `number` cannot hold them.
|
|
20
|
+
* - Returns `0n` on invalid input. `0n` is also the epoch itself — use `isValidInstant`,
|
|
21
|
+
* which accepts exactly this grammar, when the two must be told apart. **Not
|
|
22
|
+
* `isValidUtc`**: it gates on GMT's stricter `<date>T<time>Z` shape and returns `false`
|
|
23
|
+
* for the offsets and bracketed zones this function accepts, so validating with it discards valid input.
|
|
24
|
+
*
|
|
25
|
+
* @param isoString ISO 8601 instant string (e.g. "2024-03-10T12:00:00.123456789Z")
|
|
26
|
+
* @returns nanoseconds since the Unix epoch as a bigint, or 0n on invalid input
|
|
27
|
+
*
|
|
28
|
+
* @example toNanoseconds("1970-01-01T00:00:00Z") // 0n
|
|
29
|
+
* @example toNanoseconds("2024-03-10T12:00:00.123456789Z") // 1710072000123456789n
|
|
30
|
+
* @example toNanoseconds("1969-12-31T23:59:59Z") // -1000000000n
|
|
31
|
+
* @example toNanoseconds("2024-03-10T12:00:00-05:00[America/New_York]") // 1710090000000000000n
|
|
32
|
+
* @example toNanoseconds("2024-03-10T12:00:00+05:00[America/New_York]") // 1710054000000000000n — the offset decides, the zone is ignored
|
|
33
|
+
* @example toNanoseconds("2024-03-10T12:00:00") // 0n — no offset designator
|
|
34
|
+
* @example toNanoseconds("20240310T120000Z") // 0n — basic format
|
|
35
|
+
* @example toNanoseconds("invalid") // 0n
|
|
36
|
+
*/
|
|
37
|
+
export declare function toNanoseconds(isoString: string): bigint;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { parseInstantNanoseconds } from "../../internal/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Convert an ISO 8601 instant string to nanoseconds since the Unix epoch.
|
|
4
|
+
*
|
|
5
|
+
* - Requires an offset designator (`Z`, `±HH:MM`), as `Temporal.Instant` does — date-only
|
|
6
|
+
* and offset-less strings are rejected.
|
|
7
|
+
* - Accepts a bracketed IANA time zone annotation and a `[u-ca=...]` calendar annotation, both
|
|
8
|
+
* ignored as `Temporal.Instant.from` ignores them (an instant has no calendar).
|
|
9
|
+
* - **A bracketed zone annotation is syntactic only.** As in `Temporal.Instant.from`, it is
|
|
10
|
+
* ignored: the offset alone fixes the instant, and a zone that does not exist or disagrees
|
|
11
|
+
* with the offset is not checked.
|
|
12
|
+
* - ISO 8601 extended format before any annotation: `<date>T<time>`, then
|
|
13
|
+
* `Z` or `±HH:MM[:SS[.fraction]]`. Basic format, a space or lower-case `t` separator, a
|
|
14
|
+
* lower-case `z` and an hour-only time or offset return `0n`, although
|
|
15
|
+
* `Temporal.Instant.from` reads them. The offsets make this wider than `isValidUtc`, which
|
|
16
|
+
* requires `Z`.
|
|
17
|
+
* - Rejects leap seconds (`"2016-12-31T23:59:60Z"`), which Temporal would silently clamp —
|
|
18
|
+
* in every separator and format variant it accepts, `"20161231 235960Z"` included.
|
|
19
|
+
* - Returns `bigint`, not `number`: nanoseconds since the epoch passed
|
|
20
|
+
* `Number.MAX_SAFE_INTEGER` in April 1970, so a `number` cannot hold them.
|
|
21
|
+
* - Returns `0n` on invalid input. `0n` is also the epoch itself — use `isValidInstant`,
|
|
22
|
+
* which accepts exactly this grammar, when the two must be told apart. **Not
|
|
23
|
+
* `isValidUtc`**: it gates on GMT's stricter `<date>T<time>Z` shape and returns `false`
|
|
24
|
+
* for the offsets and bracketed zones this function accepts, so validating with it discards valid input.
|
|
25
|
+
*
|
|
26
|
+
* @param isoString ISO 8601 instant string (e.g. "2024-03-10T12:00:00.123456789Z")
|
|
27
|
+
* @returns nanoseconds since the Unix epoch as a bigint, or 0n on invalid input
|
|
28
|
+
*
|
|
29
|
+
* @example toNanoseconds("1970-01-01T00:00:00Z") // 0n
|
|
30
|
+
* @example toNanoseconds("2024-03-10T12:00:00.123456789Z") // 1710072000123456789n
|
|
31
|
+
* @example toNanoseconds("1969-12-31T23:59:59Z") // -1000000000n
|
|
32
|
+
* @example toNanoseconds("2024-03-10T12:00:00-05:00[America/New_York]") // 1710090000000000000n
|
|
33
|
+
* @example toNanoseconds("2024-03-10T12:00:00+05:00[America/New_York]") // 1710054000000000000n — the offset decides, the zone is ignored
|
|
34
|
+
* @example toNanoseconds("2024-03-10T12:00:00") // 0n — no offset designator
|
|
35
|
+
* @example toNanoseconds("20240310T120000Z") // 0n — basic format
|
|
36
|
+
* @example toNanoseconds("invalid") // 0n
|
|
37
|
+
*/
|
|
38
|
+
export function toNanoseconds(isoString) {
|
|
39
|
+
return parseInstantNanoseconds(isoString) ?? 0n;
|
|
40
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert an ISO 8601 instant string to a 64-bit NTP timestamp (RFC 5905).
|
|
3
|
+
*
|
|
4
|
+
* - The result packs an unsigned 32-bit count of seconds since 1900-01-01 in the high bits
|
|
5
|
+
* and a 32-bit fraction in the low bits, where one fractional unit is 2^-32 s (~233 ps).
|
|
6
|
+
* - **The seconds field wraps.** It is unsigned 32-bit, so the timestamp rolls into a new
|
|
7
|
+
* era every 2^32 seconds (~136.19 years). Era 0 runs from 1900-01-01 to
|
|
8
|
+
* 2036-02-07T06:28:15Z; the next second is `0n` again. The era is not part of the value
|
|
9
|
+
* and is not recoverable from it — `fromNtpTimestamp` takes it as an explicit argument.
|
|
10
|
+
* This is the wire format's own ambiguity, not a GMT limitation, so instants outside era 0
|
|
11
|
+
* wrap here rather than being rejected.
|
|
12
|
+
* - Sub-nanosecond precision is not invented: nanoseconds floor onto the 2^-32 s grid, so a
|
|
13
|
+
* round trip through `fromNtpTimestamp` is exact for any nanosecond-precision instant.
|
|
14
|
+
* - Returns `0n` on invalid input. `0n` is also the NTP epoch itself (1900-01-01, era 0) and
|
|
15
|
+
* every era boundary after it — validate the string first with `isValidInstant` when the two
|
|
16
|
+
* must be told apart. RFC 5905 §6 also makes a zero timestamp "a special case representing
|
|
17
|
+
* unknown or unsynchronized time", so the sentinel reads as unsynchronized to an NTP peer.
|
|
18
|
+
*
|
|
19
|
+
* @param isoString ISO 8601 instant string (e.g. "2024-03-10T12:00:00Z")
|
|
20
|
+
* @returns 64-bit NTP timestamp as a bigint, or 0n on invalid input
|
|
21
|
+
*
|
|
22
|
+
* @example toNtpTimestamp("1900-01-01T00:00:00Z") // 0n — the NTP epoch
|
|
23
|
+
* @example toNtpTimestamp("1970-01-01T00:00:00Z") // 9487534653230284800n
|
|
24
|
+
* @example toNtpTimestamp("2024-03-10T12:00:00Z") // 16832237967035596800n
|
|
25
|
+
* @example toNtpTimestamp("2036-02-07T06:28:15Z") // 18446744069414584320n — the last second of era 0
|
|
26
|
+
* @example toNtpTimestamp("2036-02-07T06:28:16Z") // 0n — era 1 begins, and the seconds field wraps
|
|
27
|
+
* @example toNtpTimestamp("2024-03-10T12:00:00") // 0n — no offset designator
|
|
28
|
+
* @example toNtpTimestamp("invalid") // 0n
|
|
29
|
+
*/
|
|
30
|
+
export declare function toNtpTimestamp(isoString: string): bigint;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { floorDivide, NANOSECONDS_PER_SECOND, NTP_EPOCH_OFFSET_NANOSECONDS, NTP_ERA_UNITS, NTP_UNITS_PER_SECOND, parseInstantNanoseconds, } from "../../internal/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Convert an ISO 8601 instant string to a 64-bit NTP timestamp (RFC 5905).
|
|
4
|
+
*
|
|
5
|
+
* - The result packs an unsigned 32-bit count of seconds since 1900-01-01 in the high bits
|
|
6
|
+
* and a 32-bit fraction in the low bits, where one fractional unit is 2^-32 s (~233 ps).
|
|
7
|
+
* - **The seconds field wraps.** It is unsigned 32-bit, so the timestamp rolls into a new
|
|
8
|
+
* era every 2^32 seconds (~136.19 years). Era 0 runs from 1900-01-01 to
|
|
9
|
+
* 2036-02-07T06:28:15Z; the next second is `0n` again. The era is not part of the value
|
|
10
|
+
* and is not recoverable from it — `fromNtpTimestamp` takes it as an explicit argument.
|
|
11
|
+
* This is the wire format's own ambiguity, not a GMT limitation, so instants outside era 0
|
|
12
|
+
* wrap here rather than being rejected.
|
|
13
|
+
* - Sub-nanosecond precision is not invented: nanoseconds floor onto the 2^-32 s grid, so a
|
|
14
|
+
* round trip through `fromNtpTimestamp` is exact for any nanosecond-precision instant.
|
|
15
|
+
* - Returns `0n` on invalid input. `0n` is also the NTP epoch itself (1900-01-01, era 0) and
|
|
16
|
+
* every era boundary after it — validate the string first with `isValidInstant` when the two
|
|
17
|
+
* must be told apart. RFC 5905 §6 also makes a zero timestamp "a special case representing
|
|
18
|
+
* unknown or unsynchronized time", so the sentinel reads as unsynchronized to an NTP peer.
|
|
19
|
+
*
|
|
20
|
+
* @param isoString ISO 8601 instant string (e.g. "2024-03-10T12:00:00Z")
|
|
21
|
+
* @returns 64-bit NTP timestamp as a bigint, or 0n on invalid input
|
|
22
|
+
*
|
|
23
|
+
* @example toNtpTimestamp("1900-01-01T00:00:00Z") // 0n — the NTP epoch
|
|
24
|
+
* @example toNtpTimestamp("1970-01-01T00:00:00Z") // 9487534653230284800n
|
|
25
|
+
* @example toNtpTimestamp("2024-03-10T12:00:00Z") // 16832237967035596800n
|
|
26
|
+
* @example toNtpTimestamp("2036-02-07T06:28:15Z") // 18446744069414584320n — the last second of era 0
|
|
27
|
+
* @example toNtpTimestamp("2036-02-07T06:28:16Z") // 0n — era 1 begins, and the seconds field wraps
|
|
28
|
+
* @example toNtpTimestamp("2024-03-10T12:00:00") // 0n — no offset designator
|
|
29
|
+
* @example toNtpTimestamp("invalid") // 0n
|
|
30
|
+
*/
|
|
31
|
+
export function toNtpTimestamp(isoString) {
|
|
32
|
+
const nanoseconds = parseInstantNanoseconds(isoString);
|
|
33
|
+
if (nanoseconds === null) {
|
|
34
|
+
return 0n;
|
|
35
|
+
}
|
|
36
|
+
const units = floorDivide((nanoseconds + NTP_EPOCH_OFFSET_NANOSECONDS) * NTP_UNITS_PER_SECOND, NANOSECONDS_PER_SECOND);
|
|
37
|
+
return ((units % NTP_ERA_UNITS) + NTP_ERA_UNITS) % NTP_ERA_UNITS;
|
|
38
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert an ISO 8601 instant string to PostgreSQL's internal `timestamptz` value.
|
|
3
|
+
*
|
|
4
|
+
* - PostgreSQL stores a `timestamp`/`timestamptz` as a signed 64-bit count of microseconds
|
|
5
|
+
* since 2000-01-01T00:00:00Z — not since the Unix epoch. The wire protocol's binary format
|
|
6
|
+
* carries this same value; only the text format and the client libraries convert to 1970.
|
|
7
|
+
* - Sub-microsecond digits floor away, via `truncateNanoseconds(..., "us")`, so the grid stays
|
|
8
|
+
* uniform either side of the epoch. `timestamptz` has no finer resolution to write them to.
|
|
9
|
+
* - **Instants outside PostgreSQL's own timestamp range are invalid input.** It starts at
|
|
10
|
+
* `-004713-11-24T00:00:00Z` (Julian Day 0 — the manual's "4713 BC", counted in the Julian
|
|
11
|
+
* calendar), which is 40× later than the earliest instant `Temporal` can represent, so an
|
|
12
|
+
* in-range `Temporal` instant is not automatically an in-range PostgreSQL one. The upper
|
|
13
|
+
* end is the other way round: PostgreSQL stops at 294276 AD, past what `Temporal` holds,
|
|
14
|
+
* so the instant range binds there first.
|
|
15
|
+
* - Returns `0n` on invalid input. `0n` is also the PostgreSQL epoch itself (2000-01-01) —
|
|
16
|
+
* validate the string first with `isValidInstant` when the two must be told apart.
|
|
17
|
+
*
|
|
18
|
+
* @param isoString ISO 8601 instant string (e.g. "2024-03-10T12:00:00Z")
|
|
19
|
+
* @returns microseconds since 2000-01-01 as a bigint, or 0n on invalid input
|
|
20
|
+
*
|
|
21
|
+
* @example toPgMicroseconds("2000-01-01T00:00:00Z") // 0n — the PostgreSQL epoch
|
|
22
|
+
* @example toPgMicroseconds("1970-01-01T00:00:00Z") // -946684800000000n
|
|
23
|
+
* @example toPgMicroseconds("2024-03-10T12:34:56.789Z") // 763389296789000n
|
|
24
|
+
* @example toPgMicroseconds("2024-03-10T12:00:00.123456789Z") // 763387200123456n — floors to microseconds
|
|
25
|
+
* @example toPgMicroseconds("-005000-01-01T00:00:00Z") // 0n — before PostgreSQL's 4713 BC minimum
|
|
26
|
+
* @example toPgMicroseconds("2024-03-10T12:00:00") // 0n — no offset designator
|
|
27
|
+
* @example toPgMicroseconds("invalid") // 0n
|
|
28
|
+
*/
|
|
29
|
+
export declare function toPgMicroseconds(isoString: string): bigint;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { MIN_PG_MICROSECONDS, NANOSECONDS_PER_MICROSECOND, parseInstantNanoseconds, PG_EPOCH_OFFSET_MICROSECONDS, } from "../../internal/index.js";
|
|
2
|
+
import { truncateNanoseconds } from "../calculate/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* Convert an ISO 8601 instant string to PostgreSQL's internal `timestamptz` value.
|
|
5
|
+
*
|
|
6
|
+
* - PostgreSQL stores a `timestamp`/`timestamptz` as a signed 64-bit count of microseconds
|
|
7
|
+
* since 2000-01-01T00:00:00Z — not since the Unix epoch. The wire protocol's binary format
|
|
8
|
+
* carries this same value; only the text format and the client libraries convert to 1970.
|
|
9
|
+
* - Sub-microsecond digits floor away, via `truncateNanoseconds(..., "us")`, so the grid stays
|
|
10
|
+
* uniform either side of the epoch. `timestamptz` has no finer resolution to write them to.
|
|
11
|
+
* - **Instants outside PostgreSQL's own timestamp range are invalid input.** It starts at
|
|
12
|
+
* `-004713-11-24T00:00:00Z` (Julian Day 0 — the manual's "4713 BC", counted in the Julian
|
|
13
|
+
* calendar), which is 40× later than the earliest instant `Temporal` can represent, so an
|
|
14
|
+
* in-range `Temporal` instant is not automatically an in-range PostgreSQL one. The upper
|
|
15
|
+
* end is the other way round: PostgreSQL stops at 294276 AD, past what `Temporal` holds,
|
|
16
|
+
* so the instant range binds there first.
|
|
17
|
+
* - Returns `0n` on invalid input. `0n` is also the PostgreSQL epoch itself (2000-01-01) —
|
|
18
|
+
* validate the string first with `isValidInstant` when the two must be told apart.
|
|
19
|
+
*
|
|
20
|
+
* @param isoString ISO 8601 instant string (e.g. "2024-03-10T12:00:00Z")
|
|
21
|
+
* @returns microseconds since 2000-01-01 as a bigint, or 0n on invalid input
|
|
22
|
+
*
|
|
23
|
+
* @example toPgMicroseconds("2000-01-01T00:00:00Z") // 0n — the PostgreSQL epoch
|
|
24
|
+
* @example toPgMicroseconds("1970-01-01T00:00:00Z") // -946684800000000n
|
|
25
|
+
* @example toPgMicroseconds("2024-03-10T12:34:56.789Z") // 763389296789000n
|
|
26
|
+
* @example toPgMicroseconds("2024-03-10T12:00:00.123456789Z") // 763387200123456n — floors to microseconds
|
|
27
|
+
* @example toPgMicroseconds("-005000-01-01T00:00:00Z") // 0n — before PostgreSQL's 4713 BC minimum
|
|
28
|
+
* @example toPgMicroseconds("2024-03-10T12:00:00") // 0n — no offset designator
|
|
29
|
+
* @example toPgMicroseconds("invalid") // 0n
|
|
30
|
+
*/
|
|
31
|
+
export function toPgMicroseconds(isoString) {
|
|
32
|
+
const nanoseconds = parseInstantNanoseconds(isoString);
|
|
33
|
+
if (nanoseconds === null) {
|
|
34
|
+
return 0n;
|
|
35
|
+
}
|
|
36
|
+
const microseconds = truncateNanoseconds(nanoseconds, "us") / NANOSECONDS_PER_MICROSECOND -
|
|
37
|
+
PG_EPOCH_OFFSET_MICROSECONDS;
|
|
38
|
+
if (microseconds < MIN_PG_MICROSECONDS) {
|
|
39
|
+
return 0n;
|
|
40
|
+
}
|
|
41
|
+
return microseconds;
|
|
42
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format nanoseconds since the Unix epoch as a decimal string, for JSON and other
|
|
3
|
+
* text transports.
|
|
4
|
+
*
|
|
5
|
+
* - `JSON.stringify` throws a `TypeError` on a `bigint`, so a nanosecond timestamp cannot
|
|
6
|
+
* go into a JSON payload as-is. This is the bridge every consumer needs; do not hand-roll it.
|
|
7
|
+
* - The output is a canonical decimal integer: an optional `-`, then digits, no leading zeros,
|
|
8
|
+
* no exponent, no separators. `parseNanoseconds` is its exact inverse.
|
|
9
|
+
* - **Put the result in JSON as a string, not a number.** It is itself only the value —
|
|
10
|
+
* `{ observedAt: formatNanoseconds(n) }` serialises to `{"observedAt":"1710072000123456789"}`.
|
|
11
|
+
* Emitted unquoted it is a JSON number, and `JSON.parse` rounds it back through a double
|
|
12
|
+
* to `1710072000123456800` — the exact loss this namespace exists to prevent.
|
|
13
|
+
* - Rejects values outside the range `Temporal.Instant` can represent
|
|
14
|
+
* (±8_640_000_000_000_000_000_000n), so anything formatted here can be read back and rendered.
|
|
15
|
+
* - Returns "" on invalid input.
|
|
16
|
+
*
|
|
17
|
+
* @param nanoseconds nanoseconds since the Unix epoch (bigint)
|
|
18
|
+
* @returns decimal string form of the value, or "" on invalid input
|
|
19
|
+
*
|
|
20
|
+
* @example formatNanoseconds(1710072000123456789n) // "1710072000123456789"
|
|
21
|
+
* @example formatNanoseconds(0n) // "0"
|
|
22
|
+
* @example formatNanoseconds(-1000000000n) // "-1000000000"
|
|
23
|
+
* @example formatNanoseconds(1710072000123456789) // "" — number, not bigint
|
|
24
|
+
* @example formatNanoseconds(8640000000000000000001n) // "" — outside the instant range
|
|
25
|
+
*/
|
|
26
|
+
export declare function formatNanoseconds(nanoseconds: bigint): string;
|