@northguild/gmt 1.17.0 → 1.19.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.
Files changed (992) hide show
  1. package/README.md +55 -2480
  2. package/dist/calendar/calculate/bucketRange.d.ts +12 -4
  3. package/dist/calendar/calculate/bucketRange.js +20 -63
  4. package/dist/calendar/calculate/floorToZone.d.ts +14 -4
  5. package/dist/calendar/calculate/floorToZone.js +18 -9
  6. package/dist/calendar/calculate/getFiscalPeriod.d.ts +21 -8
  7. package/dist/calendar/calculate/getFiscalPeriod.js +9 -8
  8. package/dist/calendar/calculate/getIsoWeekDate.d.ts +10 -5
  9. package/dist/calendar/calculate/getIsoWeekDate.js +1 -5
  10. package/dist/calendar/calculate/getOrdinalDate.d.ts +10 -3
  11. package/dist/calendar/calculate/getOrdinalDate.js +2 -3
  12. package/dist/calendar/calculate/getQuarter.d.ts +21 -9
  13. package/dist/calendar/calculate/getQuarter.js +8 -12
  14. package/dist/calendar/hours/addOperatingTime.d.ts +59 -0
  15. package/dist/calendar/hours/addOperatingTime.js +65 -0
  16. package/dist/calendar/hours/index.d.ts +7 -0
  17. package/dist/calendar/hours/index.js +7 -0
  18. package/dist/calendar/hours/isOpenAt.d.ts +45 -0
  19. package/dist/calendar/hours/isOpenAt.js +50 -0
  20. package/dist/calendar/hours/nextCloseAt.d.ts +55 -0
  21. package/dist/calendar/hours/nextCloseAt.js +57 -0
  22. package/dist/calendar/hours/nextOpenAt.d.ts +51 -0
  23. package/dist/calendar/hours/nextOpenAt.js +53 -0
  24. package/dist/calendar/hours/operatingIntervals.d.ts +48 -0
  25. package/dist/calendar/hours/operatingIntervals.js +57 -0
  26. package/dist/calendar/hours/operatingTimeBetween.d.ts +45 -0
  27. package/dist/calendar/hours/operatingTimeBetween.js +54 -0
  28. package/dist/calendar/hours/recurringWindows.d.ts +68 -0
  29. package/dist/calendar/hours/recurringWindows.js +88 -0
  30. package/dist/calendar/index.d.ts +1 -0
  31. package/dist/calendar/index.js +1 -0
  32. package/dist/duration/calculate/durationFromUnits.d.ts +47 -0
  33. package/dist/duration/calculate/durationFromUnits.js +67 -0
  34. package/dist/duration/calculate/getDurationUnit.d.ts +2 -2
  35. package/dist/duration/calculate/getDurationUnit.js +2 -2
  36. package/dist/duration/calculate/index.d.ts +3 -1
  37. package/dist/duration/calculate/index.js +3 -1
  38. package/dist/duration/calculate/negateDuration.d.ts +1 -1
  39. package/dist/duration/calculate/negateDuration.js +1 -1
  40. package/dist/duration/calculate/totalDuration.d.ts +73 -0
  41. package/dist/duration/calculate/{durationAs.js → totalDuration.js} +29 -27
  42. package/dist/duration/calculate/totalUnits.d.ts +49 -0
  43. package/dist/duration/calculate/totalUnits.js +73 -0
  44. package/dist/duration/compare/compareDurations.d.ts +13 -7
  45. package/dist/duration/compare/compareDurations.js +4 -7
  46. package/dist/duration/format/formatDuration.d.ts +16 -4
  47. package/dist/duration/format/formatDuration.js +4 -5
  48. package/dist/duration/normalize/normalizeDuration.d.ts +39 -14
  49. package/dist/duration/normalize/normalizeDuration.js +6 -15
  50. package/dist/duration/parse/parseDuration.d.ts +21 -3
  51. package/dist/duration/parse/parseDuration.js +1 -3
  52. package/dist/duty/calculate/dutyDayFor.d.ts +38 -0
  53. package/dist/duty/calculate/dutyDayFor.js +71 -0
  54. package/dist/duty/calculate/dutyTotals.d.ts +24 -0
  55. package/dist/duty/calculate/dutyTotals.js +41 -0
  56. package/dist/duty/calculate/dutyViolations.d.ts +74 -0
  57. package/dist/duty/calculate/dutyViolations.js +65 -0
  58. package/dist/duty/calculate/evaluateDutyLog.d.ts +77 -0
  59. package/dist/duty/calculate/evaluateDutyLog.js +75 -0
  60. package/dist/duty/calculate/index.d.ts +7 -0
  61. package/dist/duty/calculate/index.js +7 -0
  62. package/dist/duty/calculate/longestRun.d.ts +28 -0
  63. package/dist/duty/calculate/longestRun.js +54 -0
  64. package/dist/duty/calculate/qualifyingRestPairs.d.ts +37 -0
  65. package/dist/duty/calculate/qualifyingRestPairs.js +58 -0
  66. package/dist/duty/calculate/qualifyingRests.d.ts +27 -0
  67. package/dist/duty/calculate/qualifyingRests.js +49 -0
  68. package/dist/duty/index.d.ts +3 -0
  69. package/dist/duty/index.js +4 -0
  70. package/dist/duty/validate/index.d.ts +1 -0
  71. package/dist/duty/validate/index.js +1 -0
  72. package/dist/duty/validate/isValidDutyLog.d.ts +24 -0
  73. package/dist/duty/validate/isValidDutyLog.js +34 -0
  74. package/dist/index.d.ts +1 -0
  75. package/dist/index.js +1 -0
  76. package/dist/instant/convert/classifyLocal.d.ts +5 -1
  77. package/dist/instant/convert/classifyLocal.js +16 -6
  78. package/dist/instant/convert/fromOffsetInstant.d.ts +7 -1
  79. package/dist/instant/convert/fromOffsetInstant.js +9 -2
  80. package/dist/instant/convert/resolveLocal.d.ts +18 -8
  81. package/dist/instant/convert/resolveLocal.js +21 -17
  82. package/dist/instant/convert/toOffsetInstant.d.ts +33 -16
  83. package/dist/instant/convert/toOffsetInstant.js +28 -13
  84. package/dist/instant/index.d.ts +1 -0
  85. package/dist/instant/index.js +1 -0
  86. package/dist/instant/validate/index.d.ts +1 -0
  87. package/dist/instant/validate/index.js +1 -0
  88. package/dist/instant/validate/isValidUtcOffset.d.ts +32 -0
  89. package/dist/instant/validate/isValidUtcOffset.js +35 -0
  90. package/dist/intermodal/calculate/billingTimeline.d.ts +31 -11
  91. package/dist/intermodal/calculate/billingTimeline.js +2 -2
  92. package/dist/intermodal/calculate/chargeableDays.d.ts +19 -11
  93. package/dist/intermodal/calculate/chargeableDays.js +13 -10
  94. package/dist/intermodal/calculate/demurrageClock.d.ts +16 -7
  95. package/dist/intermodal/calculate/demurrageClock.js +7 -7
  96. package/dist/intermodal/calculate/freeTimeExpiry.d.ts +12 -4
  97. package/dist/intermodal/calculate/freeTimeExpiry.js +19 -8
  98. package/dist/intermodal/calculate/index.d.ts +1 -0
  99. package/dist/intermodal/calculate/index.js +1 -0
  100. package/dist/intermodal/calculate/multimodalETA.d.ts +76 -0
  101. package/dist/intermodal/calculate/multimodalETA.js +145 -0
  102. package/dist/intermodal/format/bolTimestamp.d.ts +76 -0
  103. package/dist/intermodal/format/bolTimestamp.js +78 -0
  104. package/dist/intermodal/format/formatEdifactDate.d.ts +34 -0
  105. package/dist/intermodal/format/formatEdifactDate.js +42 -0
  106. package/dist/intermodal/format/formatEdifactDatePeriod.d.ts +35 -0
  107. package/dist/intermodal/format/formatEdifactDatePeriod.js +43 -0
  108. package/dist/intermodal/format/formatEdifactDateTime.d.ts +37 -0
  109. package/dist/intermodal/format/formatEdifactDateTime.js +45 -0
  110. package/dist/intermodal/format/formatEdifactDateTimePeriod.d.ts +40 -0
  111. package/dist/intermodal/format/formatEdifactDateTimePeriod.js +48 -0
  112. package/dist/intermodal/format/formatEdifactOffsetDateTime.d.ts +62 -0
  113. package/dist/intermodal/format/formatEdifactOffsetDateTime.js +70 -0
  114. package/dist/intermodal/format/formatEdifactTime.d.ts +35 -0
  115. package/dist/intermodal/format/formatEdifactTime.js +43 -0
  116. package/dist/intermodal/format/formatEpcisEvent.d.ts +47 -0
  117. package/dist/intermodal/format/formatEpcisEvent.js +79 -0
  118. package/dist/intermodal/format/formatX12Date.d.ts +35 -0
  119. package/dist/intermodal/format/formatX12Date.js +43 -0
  120. package/dist/intermodal/format/formatX12DateRange.d.ts +37 -0
  121. package/dist/intermodal/format/formatX12DateRange.js +45 -0
  122. package/dist/intermodal/format/formatX12DateTime.d.ts +39 -0
  123. package/dist/intermodal/format/formatX12DateTime.js +47 -0
  124. package/dist/intermodal/format/formatX12DateTimeRange.d.ts +40 -0
  125. package/dist/intermodal/format/formatX12DateTimeRange.js +48 -0
  126. package/dist/intermodal/format/formatX12Time.d.ts +42 -0
  127. package/dist/intermodal/format/formatX12Time.js +50 -0
  128. package/dist/intermodal/format/formatX12TimeElement.d.ts +46 -0
  129. package/dist/intermodal/format/formatX12TimeElement.js +54 -0
  130. package/dist/intermodal/format/index.d.ts +14 -0
  131. package/dist/intermodal/format/index.js +14 -0
  132. package/dist/intermodal/index.d.ts +3 -0
  133. package/dist/intermodal/index.js +3 -0
  134. package/dist/intermodal/parse/classifyEdifactDtmFormat.d.ts +48 -0
  135. package/dist/intermodal/parse/classifyEdifactDtmFormat.js +55 -0
  136. package/dist/intermodal/parse/classifyX12DateTimePeriodFormat.d.ts +50 -0
  137. package/dist/intermodal/parse/classifyX12DateTimePeriodFormat.js +57 -0
  138. package/dist/intermodal/parse/classifyX12TimeCode.d.ts +46 -0
  139. package/dist/intermodal/parse/classifyX12TimeCode.js +57 -0
  140. package/dist/intermodal/parse/index.d.ts +18 -0
  141. package/dist/intermodal/parse/index.js +18 -0
  142. package/dist/intermodal/parse/parseEdifactDate.d.ts +37 -0
  143. package/dist/intermodal/parse/parseEdifactDate.js +45 -0
  144. package/dist/intermodal/parse/parseEdifactDatePeriod.d.ts +43 -0
  145. package/dist/intermodal/parse/parseEdifactDatePeriod.js +51 -0
  146. package/dist/intermodal/parse/parseEdifactDateTime.d.ts +43 -0
  147. package/dist/intermodal/parse/parseEdifactDateTime.js +51 -0
  148. package/dist/intermodal/parse/parseEdifactDateTimePeriod.d.ts +45 -0
  149. package/dist/intermodal/parse/parseEdifactDateTimePeriod.js +53 -0
  150. package/dist/intermodal/parse/parseEdifactOffsetDateTime.d.ts +60 -0
  151. package/dist/intermodal/parse/parseEdifactOffsetDateTime.js +68 -0
  152. package/dist/intermodal/parse/parseEdifactTime.d.ts +37 -0
  153. package/dist/intermodal/parse/parseEdifactTime.js +45 -0
  154. package/dist/intermodal/parse/parseEpcisEvent.d.ts +95 -0
  155. package/dist/intermodal/parse/parseEpcisEvent.js +102 -0
  156. package/dist/intermodal/parse/parseX12Date.d.ts +39 -0
  157. package/dist/intermodal/parse/parseX12Date.js +47 -0
  158. package/dist/intermodal/parse/parseX12DateAndTime.d.ts +52 -0
  159. package/dist/intermodal/parse/parseX12DateAndTime.js +61 -0
  160. package/dist/intermodal/parse/parseX12DateRange.d.ts +44 -0
  161. package/dist/intermodal/parse/parseX12DateRange.js +52 -0
  162. package/dist/intermodal/parse/parseX12DateTime.d.ts +45 -0
  163. package/dist/intermodal/parse/parseX12DateTime.js +53 -0
  164. package/dist/intermodal/parse/parseX12DateTimeRange.d.ts +46 -0
  165. package/dist/intermodal/parse/parseX12DateTimeRange.js +54 -0
  166. package/dist/intermodal/parse/parseX12Time.d.ts +65 -0
  167. package/dist/intermodal/parse/parseX12Time.js +77 -0
  168. package/dist/intermodal/parse/x12TimeCodeOffset.d.ts +57 -0
  169. package/dist/intermodal/parse/x12TimeCodeOffset.js +110 -0
  170. package/dist/intermodal/parse/x12TimeCodeZone.d.ts +57 -0
  171. package/dist/intermodal/parse/x12TimeCodeZone.js +105 -0
  172. package/dist/intermodal/validate/index.d.ts +18 -0
  173. package/dist/intermodal/validate/index.js +18 -0
  174. package/dist/intermodal/validate/isValidEdifactDate.d.ts +26 -0
  175. package/dist/intermodal/validate/isValidEdifactDate.js +28 -0
  176. package/dist/intermodal/validate/isValidEdifactDatePeriod.d.ts +28 -0
  177. package/dist/intermodal/validate/isValidEdifactDatePeriod.js +30 -0
  178. package/dist/intermodal/validate/isValidEdifactDateTime.d.ts +30 -0
  179. package/dist/intermodal/validate/isValidEdifactDateTime.js +32 -0
  180. package/dist/intermodal/validate/isValidEdifactDateTimePeriod.d.ts +28 -0
  181. package/dist/intermodal/validate/isValidEdifactDateTimePeriod.js +30 -0
  182. package/dist/intermodal/validate/isValidEdifactDtmFormat.d.ts +39 -0
  183. package/dist/intermodal/validate/isValidEdifactDtmFormat.js +42 -0
  184. package/dist/intermodal/validate/isValidEdifactOffsetDateTime.d.ts +36 -0
  185. package/dist/intermodal/validate/isValidEdifactOffsetDateTime.js +38 -0
  186. package/dist/intermodal/validate/isValidEdifactTime.d.ts +28 -0
  187. package/dist/intermodal/validate/isValidEdifactTime.js +30 -0
  188. package/dist/intermodal/validate/isValidEpcisEvent.d.ts +41 -0
  189. package/dist/intermodal/validate/isValidEpcisEvent.js +58 -0
  190. package/dist/intermodal/validate/isValidEpcisEventTime.d.ts +33 -0
  191. package/dist/intermodal/validate/isValidEpcisEventTime.js +48 -0
  192. package/dist/intermodal/validate/isValidEpcisTimeZoneOffset.d.ts +30 -0
  193. package/dist/intermodal/validate/isValidEpcisTimeZoneOffset.js +38 -0
  194. package/dist/intermodal/validate/isValidX12Date.d.ts +28 -0
  195. package/dist/intermodal/validate/isValidX12Date.js +30 -0
  196. package/dist/intermodal/validate/isValidX12DateAndTime.d.ts +32 -0
  197. package/dist/intermodal/validate/isValidX12DateAndTime.js +35 -0
  198. package/dist/intermodal/validate/isValidX12DateRange.d.ts +29 -0
  199. package/dist/intermodal/validate/isValidX12DateRange.js +31 -0
  200. package/dist/intermodal/validate/isValidX12DateTime.d.ts +30 -0
  201. package/dist/intermodal/validate/isValidX12DateTime.js +32 -0
  202. package/dist/intermodal/validate/isValidX12DateTimePeriodFormat.d.ts +43 -0
  203. package/dist/intermodal/validate/isValidX12DateTimePeriodFormat.js +46 -0
  204. package/dist/intermodal/validate/isValidX12DateTimeRange.d.ts +31 -0
  205. package/dist/intermodal/validate/isValidX12DateTimeRange.js +33 -0
  206. package/dist/intermodal/validate/isValidX12Time.d.ts +38 -0
  207. package/dist/intermodal/validate/isValidX12Time.js +40 -0
  208. package/dist/intermodal/validate/isValidX12TimeCode.d.ts +38 -0
  209. package/dist/intermodal/validate/isValidX12TimeCode.js +41 -0
  210. package/dist/internal/businessCalendar.d.ts +5 -0
  211. package/dist/internal/businessCalendar.js +9 -10
  212. package/dist/internal/cycleFieldValue.d.ts +6 -4
  213. package/dist/internal/cycleFieldValue.js +6 -4
  214. package/dist/internal/daylightTime.d.ts +33 -0
  215. package/dist/internal/daylightTime.js +164 -0
  216. package/dist/internal/durationUntilString.js +4 -3
  217. package/dist/internal/dutyEngine.d.ts +125 -0
  218. package/dist/internal/dutyEngine.js +1746 -0
  219. package/dist/internal/dutyLog.d.ts +27 -0
  220. package/dist/internal/dutyLog.js +47 -0
  221. package/dist/internal/dutyPeriods.d.ts +135 -0
  222. package/dist/internal/dutyPeriods.js +369 -0
  223. package/dist/internal/dutyRules.d.ts +197 -0
  224. package/dist/internal/dutyRules.js +484 -0
  225. package/dist/internal/ediDateTimeFields.d.ts +97 -0
  226. package/dist/internal/ediDateTimeFields.js +288 -0
  227. package/dist/internal/ediDateTimeWriter.d.ts +92 -0
  228. package/dist/internal/ediDateTimeWriter.js +298 -0
  229. package/dist/internal/ediGrammar.d.ts +158 -0
  230. package/dist/internal/ediGrammar.js +384 -0
  231. package/dist/internal/englishCalendarNames.d.ts +3 -1
  232. package/dist/internal/englishCalendarNames.js +4 -3
  233. package/dist/internal/epochNanoseconds.d.ts +2 -0
  234. package/dist/internal/epochNanoseconds.js +2 -0
  235. package/dist/internal/exactDuration.d.ts +37 -0
  236. package/dist/internal/exactDuration.js +64 -0
  237. package/dist/internal/exactMoment.d.ts +72 -0
  238. package/dist/internal/exactMoment.js +114 -0
  239. package/dist/internal/fiscalCalendar.d.ts +4 -3
  240. package/dist/internal/fiscalCalendar.js +4 -3
  241. package/dist/internal/formatCalendarDays.d.ts +2 -2
  242. package/dist/internal/formatRelativeDuration.d.ts +21 -1
  243. package/dist/internal/formatRelativeDuration.js +47 -7
  244. package/dist/internal/freeTimeLedger.d.ts +5 -0
  245. package/dist/internal/freeTimeLedger.js +11 -2
  246. package/dist/internal/index.d.ts +12 -4
  247. package/dist/internal/index.js +16 -4
  248. package/dist/internal/instantFormatOptions.js +2 -1
  249. package/dist/internal/instantNanoseconds.d.ts +75 -9
  250. package/dist/internal/instantNanoseconds.js +192 -11
  251. package/dist/internal/intervalNanoseconds.js +2 -1
  252. package/dist/internal/isObject.d.ts +13 -6
  253. package/dist/internal/isObject.js +14 -7
  254. package/dist/internal/isoYearString.d.ts +21 -0
  255. package/dist/internal/isoYearString.js +27 -0
  256. package/dist/internal/joinDateTimeConnector.d.ts +1 -1
  257. package/dist/internal/maxPieces.js +2 -1
  258. package/dist/internal/monthGridWeekRow.d.ts +2 -1
  259. package/dist/internal/monthGridWeekRow.js +2 -1
  260. package/dist/internal/normalizeTimeZone.d.ts +5 -2
  261. package/dist/internal/normalizeTimeZone.js +5 -2
  262. package/dist/internal/operatingSchedule.d.ts +138 -0
  263. package/dist/internal/operatingSchedule.js +756 -0
  264. package/dist/internal/optionOrDefault.d.ts +18 -0
  265. package/dist/internal/optionOrDefault.js +20 -0
  266. package/dist/internal/patternToken.d.ts +12 -5
  267. package/dist/internal/patternToken.js +59 -25
  268. package/dist/internal/plainDateUntil.js +10 -6
  269. package/dist/internal/punctuality.d.ts +38 -0
  270. package/dist/internal/punctuality.js +59 -0
  271. package/dist/internal/readDateTimeFormatOptions.d.ts +30 -0
  272. package/dist/internal/readDateTimeFormatOptions.js +93 -0
  273. package/dist/internal/readDurationUnits.d.ts +34 -0
  274. package/dist/internal/readDurationUnits.js +78 -0
  275. package/dist/internal/readSetFields.d.ts +50 -0
  276. package/dist/internal/readSetFields.js +179 -0
  277. package/dist/internal/resolveDurationRelativeTo.d.ts +4 -0
  278. package/dist/internal/resolveDurationRelativeTo.js +11 -1
  279. package/dist/internal/resolveRelativeRounding.d.ts +17 -6
  280. package/dist/internal/resolveRelativeRounding.js +27 -7
  281. package/dist/internal/resolveRelativeUnit.d.ts +30 -0
  282. package/dist/internal/resolveRelativeUnit.js +40 -0
  283. package/dist/internal/resolveUnixIntervalPair.d.ts +8 -2
  284. package/dist/internal/resolveUnixIntervalPair.js +11 -7
  285. package/dist/internal/splitStep.d.ts +24 -1
  286. package/dist/internal/splitStep.js +34 -2
  287. package/dist/internal/startOrEndOfUnix.d.ts +2 -1
  288. package/dist/internal/startOrEndOfUnix.js +9 -6
  289. package/dist/internal/startOrEndOfZoned.js +2 -3
  290. package/dist/internal/temporalCompat/capabilities.d.ts +26 -0
  291. package/dist/internal/temporalCompat/capabilities.js +35 -3
  292. package/dist/internal/temporalCompat/fieldSearch.js +1 -1
  293. package/dist/internal/temporalCompat/index.d.ts +1 -1
  294. package/dist/internal/temporalCompat/index.js +1 -1
  295. package/dist/internal/temporalCompat/repros.d.ts +1 -1
  296. package/dist/internal/temporalCompat/repros.js +157 -0
  297. package/dist/internal/timestampEvents.d.ts +32 -0
  298. package/dist/internal/timestampEvents.js +76 -0
  299. package/dist/internal/twoDigitYear.d.ts +19 -0
  300. package/dist/internal/twoDigitYear.js +22 -0
  301. package/dist/internal/unixEpochValue.js +3 -2
  302. package/dist/internal/unixWallClock.d.ts +24 -0
  303. package/dist/internal/unixWallClock.js +35 -0
  304. package/dist/internal/utcWallClock.d.ts +20 -0
  305. package/dist/internal/utcWallClock.js +32 -0
  306. package/dist/internal/yearWindowStart.d.ts +28 -0
  307. package/dist/internal/yearWindowStart.js +52 -0
  308. package/dist/internal/zoneBucketCap.d.ts +18 -0
  309. package/dist/internal/zoneBucketCap.js +64 -0
  310. package/dist/internal/zoneFrame.d.ts +180 -0
  311. package/dist/internal/zoneFrame.js +221 -0
  312. package/dist/internal/zonedBucket.js +8 -6
  313. package/dist/internal/zonedLocalDates.js +1 -1
  314. package/dist/internal/zonedNowUnitValue.d.ts +7 -4
  315. package/dist/internal/zonedNowUnitValue.js +8 -4
  316. package/dist/internal/zonedTransitionSearch.d.ts +27 -0
  317. package/dist/internal/zonedTransitionSearch.js +218 -0
  318. package/dist/internal/zonedWallClock.d.ts +21 -7
  319. package/dist/internal/zonedWallClock.js +87 -18
  320. package/dist/internal/zonedWallClockDifference.js +4 -4
  321. package/dist/internal/zonedWallClockOperations.d.ts +31 -15
  322. package/dist/internal/zonedWallClockOperations.js +93 -43
  323. package/dist/interval/validate/isValidInterval.d.ts +6 -3
  324. package/dist/interval/validate/isValidInterval.js +6 -3
  325. package/dist/plain/calculate/addDate.d.ts +11 -8
  326. package/dist/plain/calculate/addDate.js +9 -15
  327. package/dist/plain/calculate/addDateTime.d.ts +7 -4
  328. package/dist/plain/calculate/addDateTime.js +5 -11
  329. package/dist/plain/calculate/addTime.js +4 -7
  330. package/dist/plain/calculate/cycleDate.d.ts +16 -7
  331. package/dist/plain/calculate/cycleDate.js +3 -7
  332. package/dist/plain/calculate/cycleDateTime.d.ts +14 -4
  333. package/dist/plain/calculate/cycleDateTime.js +1 -4
  334. package/dist/plain/calculate/cycleTime.d.ts +10 -5
  335. package/dist/plain/calculate/cycleTime.js +3 -5
  336. package/dist/plain/calculate/diffDate.d.ts +1 -1
  337. package/dist/plain/calculate/diffDate.js +1 -1
  338. package/dist/plain/calculate/diffDateAsDuration.d.ts +1 -1
  339. package/dist/plain/calculate/diffDateAsDuration.js +1 -1
  340. package/dist/plain/calculate/diffDateTime.d.ts +1 -1
  341. package/dist/plain/calculate/diffDateTime.js +1 -1
  342. package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +1 -1
  343. package/dist/plain/calculate/diffDateTimeAsDuration.js +1 -1
  344. package/dist/plain/calculate/diffTime.d.ts +1 -1
  345. package/dist/plain/calculate/diffTime.js +1 -1
  346. package/dist/plain/calculate/endOfDate.d.ts +8 -3
  347. package/dist/plain/calculate/endOfDate.js +1 -3
  348. package/dist/plain/calculate/endOfDateTime.d.ts +15 -5
  349. package/dist/plain/calculate/endOfDateTime.js +1 -5
  350. package/dist/plain/calculate/endOfTime.d.ts +9 -3
  351. package/dist/plain/calculate/endOfTime.js +1 -2
  352. package/dist/plain/calculate/getLocaleWeekYear.d.ts +16 -9
  353. package/dist/plain/calculate/getLocaleWeekYear.js +9 -9
  354. package/dist/plain/calculate/getWeekOfMonth.d.ts +7 -4
  355. package/dist/plain/calculate/getWeekOfMonth.js +7 -4
  356. package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +13 -6
  357. package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +6 -6
  358. package/dist/plain/calculate/getWeeksInMonth.d.ts +5 -2
  359. package/dist/plain/calculate/getWeeksInMonth.js +5 -2
  360. package/dist/plain/calculate/nextWeekday.d.ts +7 -3
  361. package/dist/plain/calculate/nextWeekday.js +1 -3
  362. package/dist/plain/calculate/previousWeekday.d.ts +7 -3
  363. package/dist/plain/calculate/previousWeekday.js +1 -3
  364. package/dist/plain/calculate/roundDate.d.ts +20 -7
  365. package/dist/plain/calculate/roundDate.js +3 -10
  366. package/dist/plain/calculate/roundDateTime.d.ts +22 -8
  367. package/dist/plain/calculate/roundDateTime.js +3 -11
  368. package/dist/plain/calculate/roundTime.d.ts +20 -4
  369. package/dist/plain/calculate/roundTime.js +3 -7
  370. package/dist/plain/calculate/setDate.d.ts +27 -8
  371. package/dist/plain/calculate/setDate.js +28 -12
  372. package/dist/plain/calculate/setDateTime.d.ts +23 -8
  373. package/dist/plain/calculate/setDateTime.js +23 -12
  374. package/dist/plain/calculate/setTime.d.ts +23 -7
  375. package/dist/plain/calculate/setTime.js +25 -12
  376. package/dist/plain/calculate/startOfDate.d.ts +8 -2
  377. package/dist/plain/calculate/startOfDate.js +1 -2
  378. package/dist/plain/calculate/startOfDateTime.d.ts +15 -2
  379. package/dist/plain/calculate/startOfDateTime.js +1 -2
  380. package/dist/plain/calculate/startOfTime.d.ts +9 -2
  381. package/dist/plain/calculate/startOfTime.js +1 -1
  382. package/dist/plain/calculate/subtractDate.d.ts +7 -4
  383. package/dist/plain/calculate/subtractDate.js +5 -11
  384. package/dist/plain/calculate/subtractDateTime.d.ts +7 -4
  385. package/dist/plain/calculate/subtractDateTime.js +5 -11
  386. package/dist/plain/calculate/subtractTime.js +4 -7
  387. package/dist/plain/compare/areDateTimesEqualBy.d.ts +13 -5
  388. package/dist/plain/compare/areDateTimesEqualBy.js +6 -5
  389. package/dist/plain/compare/areDatesEqualBy.d.ts +15 -6
  390. package/dist/plain/compare/areDatesEqualBy.js +8 -6
  391. package/dist/plain/compare/isBetweenDate.d.ts +13 -2
  392. package/dist/plain/compare/isBetweenDate.js +4 -4
  393. package/dist/plain/compare/isBetweenDateTime.d.ts +13 -2
  394. package/dist/plain/compare/isBetweenDateTime.js +4 -4
  395. package/dist/plain/compare/isBetweenTime.d.ts +13 -2
  396. package/dist/plain/compare/isBetweenTime.js +4 -4
  397. package/dist/plain/compare/isRelativeDay.d.ts +1 -1
  398. package/dist/plain/compare/isRelativeDay.js +1 -1
  399. package/dist/plain/compare/isThisUnit.d.ts +1 -1
  400. package/dist/plain/compare/isThisUnit.js +1 -1
  401. package/dist/plain/format/formatCalendar.d.ts +21 -14
  402. package/dist/plain/format/formatCalendar.js +23 -17
  403. package/dist/plain/format/formatDate.js +5 -3
  404. package/dist/plain/format/formatDateRange.js +4 -2
  405. package/dist/plain/format/formatDateTime.js +4 -2
  406. package/dist/plain/format/formatDateTimeRange.js +4 -2
  407. package/dist/plain/format/formatDateTimeToParts.d.ts +15 -4
  408. package/dist/plain/format/formatDateTimeToParts.js +10 -6
  409. package/dist/plain/format/formatDateToParts.d.ts +13 -2
  410. package/dist/plain/format/formatDateToParts.js +8 -4
  411. package/dist/plain/format/formatRelativeDate.d.ts +16 -3
  412. package/dist/plain/format/formatRelativeDate.js +28 -16
  413. package/dist/plain/format/formatRelativeDateTime.d.ts +16 -3
  414. package/dist/plain/format/formatRelativeDateTime.js +10 -6
  415. package/dist/plain/format/formatRelativeTime.d.ts +16 -3
  416. package/dist/plain/format/formatRelativeTime.js +23 -14
  417. package/dist/plain/format/{formatSql.d.ts → formatSqlDateTime.d.ts} +7 -7
  418. package/dist/plain/format/{formatSql.js → formatSqlDateTime.js} +7 -7
  419. package/dist/plain/format/formatTime.js +4 -2
  420. package/dist/plain/format/index.d.ts +1 -1
  421. package/dist/plain/format/index.js +1 -1
  422. package/dist/plain/get/getNowUnit.d.ts +2 -0
  423. package/dist/plain/get/getNowUnit.js +2 -0
  424. package/dist/plain/get/getYear.d.ts +2 -0
  425. package/dist/plain/get/getYear.js +4 -3
  426. package/dist/plain/interval/intervalDifferenceDate.d.ts +9 -0
  427. package/dist/plain/interval/intervalDifferenceDateTime.d.ts +9 -0
  428. package/dist/plain/interval/intervalDifferenceTime.d.ts +9 -0
  429. package/dist/plain/interval/intervalDivideEquallyDate.d.ts +19 -4
  430. package/dist/plain/interval/intervalDivideEquallyDate.js +3 -4
  431. package/dist/plain/interval/intervalDivideEquallyDateTime.d.ts +19 -4
  432. package/dist/plain/interval/intervalDivideEquallyDateTime.js +3 -4
  433. package/dist/plain/interval/intervalDivideEquallyTime.d.ts +19 -4
  434. package/dist/plain/interval/intervalDivideEquallyTime.js +3 -4
  435. package/dist/plain/interval/intervalFromDurationDate.d.ts +16 -3
  436. package/dist/plain/interval/intervalFromDurationDate.js +1 -3
  437. package/dist/plain/interval/intervalFromDurationDateTime.d.ts +16 -3
  438. package/dist/plain/interval/intervalFromDurationDateTime.js +1 -3
  439. package/dist/plain/interval/intervalFromDurationTime.d.ts +9 -0
  440. package/dist/plain/interval/intervalIntersectionDate.d.ts +9 -0
  441. package/dist/plain/interval/intervalIntersectionDateTime.d.ts +9 -0
  442. package/dist/plain/interval/intervalIntersectionTime.d.ts +9 -0
  443. package/dist/plain/interval/intervalSplitAtDate.d.ts +11 -0
  444. package/dist/plain/interval/intervalSplitAtDate.js +2 -0
  445. package/dist/plain/interval/intervalSplitAtDateTime.d.ts +11 -0
  446. package/dist/plain/interval/intervalSplitAtDateTime.js +2 -0
  447. package/dist/plain/interval/intervalSplitAtTime.d.ts +11 -0
  448. package/dist/plain/interval/intervalSplitAtTime.js +2 -0
  449. package/dist/plain/interval/intervalUnionDate.d.ts +9 -0
  450. package/dist/plain/interval/intervalUnionDateTime.d.ts +9 -0
  451. package/dist/plain/interval/intervalUnionTime.d.ts +9 -0
  452. package/dist/plain/interval/intervalXorAllDate.d.ts +9 -0
  453. package/dist/plain/interval/intervalXorAllDate.js +2 -2
  454. package/dist/plain/interval/intervalXorAllDateTime.d.ts +9 -0
  455. package/dist/plain/interval/intervalXorAllDateTime.js +2 -2
  456. package/dist/plain/interval/intervalXorAllTime.d.ts +9 -0
  457. package/dist/plain/interval/intervalXorAllTime.js +2 -2
  458. package/dist/plain/interval/intervalXorDate.d.ts +9 -0
  459. package/dist/plain/interval/intervalXorDateTime.d.ts +9 -0
  460. package/dist/plain/interval/intervalXorTime.d.ts +9 -0
  461. package/dist/plain/interval/mergeIntervalsDate.d.ts +9 -0
  462. package/dist/plain/interval/mergeIntervalsDate.js +2 -2
  463. package/dist/plain/interval/mergeIntervalsDateTime.d.ts +9 -0
  464. package/dist/plain/interval/mergeIntervalsDateTime.js +2 -2
  465. package/dist/plain/interval/mergeIntervalsTime.d.ts +9 -0
  466. package/dist/plain/interval/mergeIntervalsTime.js +2 -2
  467. package/dist/plain/interval/splitIntervalByUnitDate.d.ts +23 -7
  468. package/dist/plain/interval/splitIntervalByUnitDate.js +7 -7
  469. package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +22 -6
  470. package/dist/plain/interval/splitIntervalByUnitDateTime.js +6 -6
  471. package/dist/plain/interval/splitIntervalByUnitTime.d.ts +17 -4
  472. package/dist/plain/interval/splitIntervalByUnitTime.js +1 -4
  473. package/dist/plain/map/mapDatesInRange.d.ts +8 -4
  474. package/dist/plain/map/mapDatesInRange.js +1 -4
  475. package/dist/plain/parse/index.d.ts +1 -1
  476. package/dist/plain/parse/index.js +1 -1
  477. package/dist/plain/parse/parseDateTimeWithPattern.d.ts +25 -9
  478. package/dist/plain/parse/parseDateTimeWithPattern.js +29 -11
  479. package/dist/plain/parse/parseDateWithPattern.d.ts +26 -9
  480. package/dist/plain/parse/parseDateWithPattern.js +30 -11
  481. package/dist/plain/parse/{parseSql.d.ts → parseSqlDateTime.d.ts} +8 -8
  482. package/dist/plain/parse/{parseSql.js → parseSqlDateTime.js} +8 -8
  483. package/dist/plain/parse/parseTimeWithPattern.d.ts +10 -7
  484. package/dist/plain/parse/parseTimeWithPattern.js +11 -7
  485. package/dist/plain/parse/parseUnitFromDate.d.ts +14 -3
  486. package/dist/plain/parse/parseUnitFromDate.js +8 -4
  487. package/dist/plain/parse/parseUnitFromDateTime.d.ts +14 -3
  488. package/dist/plain/parse/parseUnitFromDateTime.js +8 -4
  489. package/dist/plain/parse/parseWeekFromDate.d.ts +10 -6
  490. package/dist/plain/parse/parseWeekFromDate.js +2 -6
  491. package/dist/plain/parse/parseWeekFromDateTime.d.ts +10 -6
  492. package/dist/plain/parse/parseWeekFromDateTime.js +2 -6
  493. package/dist/plain/parse/parseYearFromDate.d.ts +5 -2
  494. package/dist/plain/parse/parseYearFromDate.js +7 -3
  495. package/dist/plain/parse/parseYearFromDateTime.d.ts +4 -2
  496. package/dist/plain/parse/parseYearFromDateTime.js +6 -3
  497. package/dist/plain/validate/index.d.ts +1 -0
  498. package/dist/plain/validate/index.js +1 -0
  499. package/dist/plain/validate/isValidDateRange.d.ts +19 -4
  500. package/dist/plain/validate/isValidDateRange.js +1 -4
  501. package/dist/plain/validate/isValidDateTimeRange.d.ts +20 -5
  502. package/dist/plain/validate/isValidDateTimeRange.js +2 -5
  503. package/dist/plain/validate/isValidSqlDateTime.d.ts +33 -0
  504. package/dist/plain/validate/isValidSqlDateTime.js +36 -0
  505. package/dist/plain/validate/isValidTimeRange.d.ts +20 -5
  506. package/dist/plain/validate/isValidTimeRange.js +2 -5
  507. package/dist/precision/convert/fromExcelSerial.d.ts +10 -4
  508. package/dist/precision/convert/fromExcelSerial.js +4 -5
  509. package/dist/precision/convert/fromNanoseconds.d.ts +9 -3
  510. package/dist/precision/convert/fromNanoseconds.js +9 -3
  511. package/dist/precision/convert/toExcelSerial.d.ts +9 -3
  512. package/dist/precision/convert/toExcelSerial.js +3 -4
  513. package/dist/precision/convert/toNanoseconds.d.ts +11 -6
  514. package/dist/precision/convert/toNanoseconds.js +11 -6
  515. package/dist/precision/validate/isValidInstant.d.ts +12 -3
  516. package/dist/precision/validate/isValidInstant.js +12 -3
  517. package/dist/regex/epcis.d.ts +60 -0
  518. package/dist/regex/epcis.js +60 -0
  519. package/dist/regex/http-date.d.ts +6 -4
  520. package/dist/regex/http-date.js +6 -4
  521. package/dist/regex/index.d.ts +1 -0
  522. package/dist/regex/index.js +1 -0
  523. package/dist/regex/rfc-2822.d.ts +2 -0
  524. package/dist/regex/rfc-2822.js +2 -0
  525. package/dist/regex/rfc-3339.d.ts +3 -1
  526. package/dist/regex/rfc-3339.js +3 -1
  527. package/dist/regex/sql-date-time.d.ts +2 -1
  528. package/dist/regex/sql-date-time.js +2 -1
  529. package/dist/regex/time-zone-like.d.ts +3 -2
  530. package/dist/regex/time-zone-like.js +3 -2
  531. package/dist/regex/utc-offset.d.ts +2 -1
  532. package/dist/regex/utc-offset.js +2 -1
  533. package/dist/span/calculate/spanMs.d.ts +10 -4
  534. package/dist/span/calculate/spanMs.js +10 -4
  535. package/dist/span/calculate/spanNs.d.ts +10 -4
  536. package/dist/span/calculate/spanNs.js +10 -4
  537. package/dist/span/validate/isValidSpan.d.ts +8 -3
  538. package/dist/span/validate/isValidSpan.js +8 -3
  539. package/dist/transport/calculate/bestAvailable.d.ts +47 -0
  540. package/dist/transport/calculate/bestAvailable.js +76 -0
  541. package/dist/transport/calculate/crossingTime.d.ts +63 -0
  542. package/dist/transport/calculate/crossingTime.js +81 -0
  543. package/dist/transport/calculate/cutoffAt.d.ts +95 -0
  544. package/dist/transport/calculate/cutoffAt.js +211 -0
  545. package/dist/transport/calculate/cutoffSchedule.d.ts +75 -0
  546. package/dist/transport/calculate/cutoffSchedule.js +73 -0
  547. package/dist/transport/calculate/dwellTime.d.ts +22 -8
  548. package/dist/transport/calculate/dwellTime.js +18 -9
  549. package/dist/transport/calculate/estimateDrift.d.ts +65 -0
  550. package/dist/transport/calculate/estimateDrift.js +75 -0
  551. package/dist/transport/calculate/index.d.ts +8 -0
  552. package/dist/transport/calculate/index.js +8 -0
  553. package/dist/transport/calculate/nextDeparture.d.ts +78 -0
  554. package/dist/transport/calculate/nextDeparture.js +131 -0
  555. package/dist/transport/calculate/punctualityRate.d.ts +42 -0
  556. package/dist/transport/calculate/punctualityRate.js +59 -0
  557. package/dist/transport/calculate/scheduleDelivery.d.ts +158 -0
  558. package/dist/transport/calculate/scheduleDelivery.js +305 -0
  559. package/dist/transport/calculate/transitTime.d.ts +21 -3
  560. package/dist/transport/calculate/transitTime.js +29 -46
  561. package/dist/transport/compare/classifyPunctuality.d.ts +46 -0
  562. package/dist/transport/compare/classifyPunctuality.js +64 -0
  563. package/dist/transport/compare/index.d.ts +4 -0
  564. package/dist/transport/compare/index.js +4 -0
  565. package/dist/transport/compare/isPastCutoff.d.ts +33 -0
  566. package/dist/transport/compare/isPastCutoff.js +48 -0
  567. package/dist/transport/compare/scheduleDeviation.d.ts +37 -0
  568. package/dist/transport/compare/scheduleDeviation.js +53 -0
  569. package/dist/transport/compare/timeToCutoff.d.ts +31 -0
  570. package/dist/transport/compare/timeToCutoff.js +47 -0
  571. package/dist/transport/convert/etaAtZone.d.ts +13 -1
  572. package/dist/transport/convert/etaAtZone.js +15 -5
  573. package/dist/transport/index.d.ts +1 -0
  574. package/dist/transport/index.js +1 -0
  575. package/dist/types/business-calendar.d.ts +20 -14
  576. package/dist/types/calendar-options.d.ts +15 -3
  577. package/dist/types/date-cycle-field.d.ts +5 -0
  578. package/dist/types/date-duration-unit.d.ts +4 -0
  579. package/dist/types/date-time-cycle-field.d.ts +4 -0
  580. package/dist/types/date-time-duration-units.d.ts +4 -0
  581. package/dist/types/date-time-unit.d.ts +4 -0
  582. package/dist/types/date-unit.d.ts +4 -0
  583. package/dist/types/disambiguation.d.ts +8 -0
  584. package/dist/types/duration-relative-to.d.ts +8 -0
  585. package/dist/types/duration-string-options.d.ts +28 -0
  586. package/dist/types/duty.d.ts +777 -0
  587. package/dist/types/edi.d.ts +407 -0
  588. package/dist/types/edi.js +0 -0
  589. package/dist/types/epcis.d.ts +25 -0
  590. package/dist/types/epcis.js +0 -0
  591. package/dist/types/exact-duration-unit.d.ts +8 -0
  592. package/dist/types/exact-duration-unit.js +0 -0
  593. package/dist/types/fiscal-calendar.d.ts +1 -1
  594. package/dist/types/fractional-digit.d.ts +5 -0
  595. package/dist/types/free-time-options.d.ts +22 -11
  596. package/dist/types/index.d.ts +7 -1
  597. package/dist/types/index.js +7 -1
  598. package/dist/types/interval.d.ts +8 -1
  599. package/dist/types/offset.d.ts +9 -0
  600. package/dist/types/operating-schedule.d.ts +72 -0
  601. package/dist/types/operating-schedule.js +0 -0
  602. package/dist/types/overflow.d.ts +6 -0
  603. package/dist/types/relative-rounding-method.d.ts +6 -0
  604. package/dist/types/relative-time-options.d.ts +33 -5
  605. package/dist/types/rounding-options.d.ts +27 -0
  606. package/dist/types/time-cycle-field.d.ts +4 -0
  607. package/dist/types/time-duration-unit.d.ts +4 -0
  608. package/dist/types/time-unit.d.ts +4 -0
  609. package/dist/types/transport-timestamps.d.ts +54 -0
  610. package/dist/types/transport-timestamps.js +0 -0
  611. package/dist/types/two-digit-year.d.ts +23 -0
  612. package/dist/types/two-digit-year.js +0 -0
  613. package/dist/types/zone-bucket-unit.d.ts +1 -1
  614. package/dist/unix/calculate/addUnix.d.ts +28 -5
  615. package/dist/unix/calculate/addUnix.js +15 -16
  616. package/dist/unix/calculate/diffUnix.d.ts +21 -3
  617. package/dist/unix/calculate/diffUnix.js +12 -9
  618. package/dist/unix/calculate/diffUnixAsDuration.d.ts +21 -3
  619. package/dist/unix/calculate/diffUnixAsDuration.js +11 -8
  620. package/dist/unix/calculate/endOfQuarterForUnix.d.ts +21 -3
  621. package/dist/unix/calculate/endOfQuarterForUnix.js +7 -3
  622. package/dist/unix/calculate/endOfUnix.d.ts +29 -4
  623. package/dist/unix/calculate/endOfUnix.js +8 -4
  624. package/dist/unix/calculate/isBetweenUnix.d.ts +27 -4
  625. package/dist/unix/calculate/isBetweenUnix.js +7 -9
  626. package/dist/unix/calculate/roundUnix.d.ts +39 -3
  627. package/dist/unix/calculate/roundUnix.js +16 -12
  628. package/dist/unix/calculate/setUnix.d.ts +58 -12
  629. package/dist/unix/calculate/setUnix.js +37 -25
  630. package/dist/unix/calculate/startOfQuarterForUnix.d.ts +21 -3
  631. package/dist/unix/calculate/startOfQuarterForUnix.js +7 -3
  632. package/dist/unix/calculate/startOfUnix.d.ts +29 -4
  633. package/dist/unix/calculate/startOfUnix.js +8 -4
  634. package/dist/unix/calculate/subtractUnix.d.ts +27 -5
  635. package/dist/unix/calculate/subtractUnix.js +14 -16
  636. package/dist/unix/compare/areUnixEqual.d.ts +7 -1
  637. package/dist/unix/compare/areUnixEqual.js +1 -1
  638. package/dist/unix/compare/areUnixEqualBy.d.ts +33 -7
  639. package/dist/unix/compare/areUnixEqualBy.js +20 -9
  640. package/dist/unix/compare/isAfterUnix.d.ts +7 -1
  641. package/dist/unix/compare/isAfterUnix.js +1 -1
  642. package/dist/unix/compare/isBeforeUnix.d.ts +7 -1
  643. package/dist/unix/compare/isBeforeUnix.js +1 -1
  644. package/dist/unix/convert/convertUnixToPlainDate.d.ts +17 -4
  645. package/dist/unix/convert/convertUnixToPlainDate.js +7 -8
  646. package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +17 -4
  647. package/dist/unix/convert/convertUnixToPlainDateTime.js +7 -8
  648. package/dist/unix/convert/convertUnixToPlainTime.d.ts +17 -4
  649. package/dist/unix/convert/convertUnixToPlainTime.js +7 -8
  650. package/dist/unix/convert/convertUnixToUtc.d.ts +9 -4
  651. package/dist/unix/convert/convertUnixToUtc.js +3 -4
  652. package/dist/unix/convert/convertUnixToZoned.d.ts +14 -5
  653. package/dist/unix/convert/convertUnixToZoned.js +8 -5
  654. package/dist/unix/format/formatCalendarUnix.d.ts +31 -19
  655. package/dist/unix/format/formatCalendarUnix.js +10 -6
  656. package/dist/unix/format/formatRelativeUnix.d.ts +62 -5
  657. package/dist/unix/format/formatRelativeUnix.js +16 -10
  658. package/dist/unix/format/formatUnix.d.ts +29 -6
  659. package/dist/unix/format/formatUnix.js +12 -7
  660. package/dist/unix/get/getUnixDay.d.ts +1 -3
  661. package/dist/unix/get/getUnixDay.js +5 -12
  662. package/dist/unix/get/getUnixHour.d.ts +1 -3
  663. package/dist/unix/get/getUnixHour.js +5 -12
  664. package/dist/unix/get/getUnixMicrosecond.d.ts +1 -3
  665. package/dist/unix/get/getUnixMicrosecond.js +4 -11
  666. package/dist/unix/get/getUnixMillisecond.d.ts +1 -3
  667. package/dist/unix/get/getUnixMillisecond.js +5 -12
  668. package/dist/unix/get/getUnixMinute.d.ts +1 -3
  669. package/dist/unix/get/getUnixMinute.js +5 -12
  670. package/dist/unix/get/getUnixMonth.d.ts +1 -3
  671. package/dist/unix/get/getUnixMonth.js +5 -12
  672. package/dist/unix/get/getUnixNanosecond.d.ts +1 -3
  673. package/dist/unix/get/getUnixNanosecond.js +4 -11
  674. package/dist/unix/get/getUnixNow.d.ts +8 -3
  675. package/dist/unix/get/getUnixNow.js +1 -3
  676. package/dist/unix/get/getUnixNowUnit.d.ts +2 -0
  677. package/dist/unix/get/getUnixNowUnit.js +2 -0
  678. package/dist/unix/get/getUnixSecond.d.ts +1 -3
  679. package/dist/unix/get/getUnixSecond.js +5 -12
  680. package/dist/unix/get/getUnixYear.d.ts +3 -3
  681. package/dist/unix/get/getUnixYear.js +5 -12
  682. package/dist/unix/interval/intervalCountUnix.d.ts +23 -5
  683. package/dist/unix/interval/intervalCountUnix.js +9 -5
  684. package/dist/unix/interval/intervalDifferenceUnix.d.ts +6 -0
  685. package/dist/unix/interval/intervalDivideEquallyUnix.d.ts +18 -4
  686. package/dist/unix/interval/intervalDivideEquallyUnix.js +5 -4
  687. package/dist/unix/interval/intervalFromDurationUnix.d.ts +41 -5
  688. package/dist/unix/interval/intervalFromDurationUnix.js +18 -12
  689. package/dist/unix/interval/intervalIntersectionUnix.d.ts +6 -0
  690. package/dist/unix/interval/intervalLengthUnix.d.ts +24 -6
  691. package/dist/unix/interval/intervalLengthUnix.js +10 -6
  692. package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +21 -3
  693. package/dist/unix/interval/intervalOverlappingDaysUnix.js +11 -8
  694. package/dist/unix/interval/intervalSplitAtUnix.d.ts +8 -0
  695. package/dist/unix/interval/intervalSplitAtUnix.js +2 -0
  696. package/dist/unix/interval/intervalUnionUnix.d.ts +6 -0
  697. package/dist/unix/interval/intervalXorAllUnix.d.ts +6 -0
  698. package/dist/unix/interval/intervalXorUnix.d.ts +6 -0
  699. package/dist/unix/interval/mergeIntervalsUnix.d.ts +6 -0
  700. package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +50 -11
  701. package/dist/unix/interval/splitIntervalByUnitUnix.js +33 -22
  702. package/dist/unix/parse/parseDateFromUnix.d.ts +15 -2
  703. package/dist/unix/parse/parseDateFromUnix.js +4 -5
  704. package/dist/unix/parse/parseDayFromUnix.d.ts +16 -2
  705. package/dist/unix/parse/parseDayFromUnix.js +2 -2
  706. package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +15 -1
  707. package/dist/unix/parse/parseDayOfWeekFromUnix.js +3 -3
  708. package/dist/unix/parse/parseHourFromUnix.d.ts +16 -2
  709. package/dist/unix/parse/parseHourFromUnix.js +2 -2
  710. package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +16 -2
  711. package/dist/unix/parse/parseMicrosecondFromUnix.js +2 -2
  712. package/dist/unix/parse/parseMillisecondFromUnix.d.ts +16 -2
  713. package/dist/unix/parse/parseMillisecondFromUnix.js +2 -2
  714. package/dist/unix/parse/parseMinuteFromUnix.d.ts +16 -2
  715. package/dist/unix/parse/parseMinuteFromUnix.js +2 -2
  716. package/dist/unix/parse/parseMonthFromUnix.d.ts +16 -2
  717. package/dist/unix/parse/parseMonthFromUnix.js +2 -2
  718. package/dist/unix/parse/parseNanosecondFromUnix.d.ts +16 -2
  719. package/dist/unix/parse/parseNanosecondFromUnix.js +2 -2
  720. package/dist/unix/parse/parseSecondFromUnix.d.ts +16 -2
  721. package/dist/unix/parse/parseSecondFromUnix.js +2 -2
  722. package/dist/unix/parse/parseTimeFromUnix.d.ts +16 -2
  723. package/dist/unix/parse/parseTimeFromUnix.js +5 -5
  724. package/dist/unix/parse/parseUnitFromUnix.d.ts +29 -4
  725. package/dist/unix/parse/parseUnitFromUnix.js +23 -17
  726. package/dist/unix/parse/parseWeekFromUnix.d.ts +24 -7
  727. package/dist/unix/parse/parseWeekFromUnix.js +7 -11
  728. package/dist/unix/parse/parseYearFromUnix.d.ts +20 -3
  729. package/dist/unix/parse/parseYearFromUnix.js +6 -3
  730. package/dist/unix/validate/isValidUnixRange.d.ts +20 -4
  731. package/dist/unix/validate/isValidUnixRange.js +1 -4
  732. package/dist/unix/validate/isValidUnixUnit.d.ts +1 -1
  733. package/dist/utc/calculate/addUtc.d.ts +7 -4
  734. package/dist/utc/calculate/addUtc.js +5 -11
  735. package/dist/utc/calculate/diffUtc.d.ts +1 -1
  736. package/dist/utc/calculate/diffUtc.js +1 -1
  737. package/dist/utc/calculate/diffUtcAsDuration.d.ts +1 -1
  738. package/dist/utc/calculate/diffUtcAsDuration.js +1 -1
  739. package/dist/utc/calculate/endOfUtc.d.ts +16 -3
  740. package/dist/utc/calculate/endOfUtc.js +2 -3
  741. package/dist/utc/calculate/isBetweenUtc.d.ts +13 -2
  742. package/dist/utc/calculate/isBetweenUtc.js +4 -4
  743. package/dist/utc/calculate/roundUtc.d.ts +26 -9
  744. package/dist/utc/calculate/roundUtc.js +3 -12
  745. package/dist/utc/calculate/setUtc.d.ts +23 -7
  746. package/dist/utc/calculate/setUtc.js +23 -12
  747. package/dist/utc/calculate/startOfUtc.d.ts +15 -2
  748. package/dist/utc/calculate/startOfUtc.js +1 -2
  749. package/dist/utc/calculate/subtractUtc.d.ts +7 -4
  750. package/dist/utc/calculate/subtractUtc.js +5 -11
  751. package/dist/utc/compare/areUtcEqualBy.d.ts +9 -3
  752. package/dist/utc/compare/areUtcEqualBy.js +2 -3
  753. package/dist/utc/convert/convertUtcToPlainDate.d.ts +14 -3
  754. package/dist/utc/convert/convertUtcToPlainDate.js +12 -10
  755. package/dist/utc/convert/convertUtcToPlainDateTime.d.ts +15 -3
  756. package/dist/utc/convert/convertUtcToPlainDateTime.js +14 -16
  757. package/dist/utc/convert/convertUtcToPlainTime.d.ts +11 -3
  758. package/dist/utc/convert/convertUtcToPlainTime.js +9 -9
  759. package/dist/utc/convert/convertUtcToUnix.d.ts +9 -4
  760. package/dist/utc/convert/convertUtcToUnix.js +3 -4
  761. package/dist/utc/convert/convertUtcToZoned.d.ts +5 -1
  762. package/dist/utc/convert/convertUtcToZoned.js +5 -1
  763. package/dist/utc/format/formatCalendarUtc.d.ts +23 -8
  764. package/dist/utc/format/formatCalendarUtc.js +14 -7
  765. package/dist/utc/format/{formatHttp.d.ts → formatHttpDate.d.ts} +8 -8
  766. package/dist/utc/format/{formatHttp.js → formatHttpDate.js} +8 -8
  767. package/dist/utc/format/formatRelativeUtc.d.ts +38 -10
  768. package/dist/utc/format/formatRelativeUtc.js +22 -16
  769. package/dist/utc/format/formatUtc.d.ts +22 -15
  770. package/dist/utc/format/formatUtc.js +12 -8
  771. package/dist/utc/format/index.d.ts +1 -1
  772. package/dist/utc/format/index.js +1 -1
  773. package/dist/utc/get/getUtcDay.d.ts +1 -3
  774. package/dist/utc/get/getUtcDay.js +5 -12
  775. package/dist/utc/get/getUtcHour.d.ts +1 -3
  776. package/dist/utc/get/getUtcHour.js +5 -12
  777. package/dist/utc/get/getUtcMicrosecond.d.ts +1 -3
  778. package/dist/utc/get/getUtcMicrosecond.js +4 -11
  779. package/dist/utc/get/getUtcMillisecond.d.ts +1 -3
  780. package/dist/utc/get/getUtcMillisecond.js +5 -12
  781. package/dist/utc/get/getUtcMinute.d.ts +1 -3
  782. package/dist/utc/get/getUtcMinute.js +5 -12
  783. package/dist/utc/get/getUtcMonth.d.ts +1 -3
  784. package/dist/utc/get/getUtcMonth.js +5 -12
  785. package/dist/utc/get/getUtcNanosecond.d.ts +1 -3
  786. package/dist/utc/get/getUtcNanosecond.js +4 -11
  787. package/dist/utc/get/getUtcNow.d.ts +1 -3
  788. package/dist/utc/get/getUtcNow.js +2 -9
  789. package/dist/utc/get/getUtcNowUnit.d.ts +2 -0
  790. package/dist/utc/get/getUtcNowUnit.js +2 -0
  791. package/dist/utc/get/getUtcSecond.d.ts +1 -3
  792. package/dist/utc/get/getUtcSecond.js +5 -12
  793. package/dist/utc/get/getUtcYear.d.ts +3 -3
  794. package/dist/utc/get/getUtcYear.js +5 -12
  795. package/dist/utc/interval/intervalDifferenceUtc.d.ts +6 -0
  796. package/dist/utc/interval/intervalDivideEquallyUtc.d.ts +18 -4
  797. package/dist/utc/interval/intervalDivideEquallyUtc.js +5 -4
  798. package/dist/utc/interval/intervalFromDurationUtc.d.ts +13 -3
  799. package/dist/utc/interval/intervalFromDurationUtc.js +1 -3
  800. package/dist/utc/interval/intervalIntersectionUtc.d.ts +6 -0
  801. package/dist/utc/interval/intervalSplitAtUtc.d.ts +8 -0
  802. package/dist/utc/interval/intervalSplitAtUtc.js +2 -0
  803. package/dist/utc/interval/intervalUnionUtc.d.ts +6 -0
  804. package/dist/utc/interval/intervalXorAllUtc.d.ts +6 -0
  805. package/dist/utc/interval/intervalXorAllUtc.js +2 -2
  806. package/dist/utc/interval/intervalXorUtc.d.ts +6 -0
  807. package/dist/utc/interval/mergeIntervalsUtc.d.ts +6 -0
  808. package/dist/utc/interval/mergeIntervalsUtc.js +2 -2
  809. package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +19 -6
  810. package/dist/utc/interval/splitIntervalByUnitUtc.js +6 -6
  811. package/dist/utc/parse/index.d.ts +1 -1
  812. package/dist/utc/parse/index.js +1 -1
  813. package/dist/utc/parse/parseDateFromUtc.d.ts +9 -3
  814. package/dist/utc/parse/parseDateFromUtc.js +3 -5
  815. package/dist/utc/parse/parseDayFromUtc.d.ts +9 -3
  816. package/dist/utc/parse/parseDayFromUtc.js +3 -5
  817. package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +9 -3
  818. package/dist/utc/parse/parseDayOfWeekFromUtc.js +5 -7
  819. package/dist/utc/parse/parseHourFromUtc.d.ts +9 -3
  820. package/dist/utc/parse/parseHourFromUtc.js +3 -5
  821. package/dist/utc/parse/{parseHttp.d.ts → parseHttpDate.d.ts} +12 -12
  822. package/dist/utc/parse/{parseHttp.js → parseHttpDate.js} +12 -12
  823. package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +9 -3
  824. package/dist/utc/parse/parseMicrosecondFromUtc.js +3 -5
  825. package/dist/utc/parse/parseMillisecondFromUtc.d.ts +9 -3
  826. package/dist/utc/parse/parseMillisecondFromUtc.js +3 -5
  827. package/dist/utc/parse/parseMinuteFromUtc.d.ts +9 -3
  828. package/dist/utc/parse/parseMinuteFromUtc.js +3 -5
  829. package/dist/utc/parse/parseMonthFromUtc.d.ts +9 -3
  830. package/dist/utc/parse/parseMonthFromUtc.js +3 -5
  831. package/dist/utc/parse/parseNanosecondFromUtc.d.ts +9 -3
  832. package/dist/utc/parse/parseNanosecondFromUtc.js +3 -5
  833. package/dist/utc/parse/parseSecondFromUtc.d.ts +9 -3
  834. package/dist/utc/parse/parseSecondFromUtc.js +3 -5
  835. package/dist/utc/parse/parseTimeFromUtc.d.ts +11 -3
  836. package/dist/utc/parse/parseTimeFromUtc.js +7 -7
  837. package/dist/utc/parse/parseUnitFromUtc.d.ts +25 -6
  838. package/dist/utc/parse/parseUnitFromUtc.js +14 -10
  839. package/dist/utc/parse/parseWeekFromUtc.d.ts +20 -10
  840. package/dist/utc/parse/parseWeekFromUtc.js +8 -14
  841. package/dist/utc/parse/parseYearFromUtc.d.ts +13 -5
  842. package/dist/utc/parse/parseYearFromUtc.js +9 -8
  843. package/dist/utc/validate/index.d.ts +2 -0
  844. package/dist/utc/validate/index.js +2 -0
  845. package/dist/utc/validate/isValidHttpDate.d.ts +35 -0
  846. package/dist/utc/validate/isValidHttpDate.js +38 -0
  847. package/dist/utc/validate/isValidUtc.d.ts +4 -0
  848. package/dist/utc/validate/isValidUtc.js +4 -0
  849. package/dist/utc/validate/isValidUtcRange.d.ts +16 -5
  850. package/dist/utc/validate/isValidUtcRange.js +2 -5
  851. package/dist/utc/validate/isValidUtcTimestamp.d.ts +43 -0
  852. package/dist/utc/validate/isValidUtcTimestamp.js +48 -0
  853. package/dist/zoned/calculate/addZoned.d.ts +20 -10
  854. package/dist/zoned/calculate/addZoned.js +10 -20
  855. package/dist/zoned/calculate/cycleZoned.d.ts +33 -8
  856. package/dist/zoned/calculate/cycleZoned.js +1 -8
  857. package/dist/zoned/calculate/diffZoned.d.ts +1 -1
  858. package/dist/zoned/calculate/diffZoned.js +1 -1
  859. package/dist/zoned/calculate/diffZonedAsDuration.d.ts +1 -1
  860. package/dist/zoned/calculate/diffZonedAsDuration.js +1 -1
  861. package/dist/zoned/calculate/endOfQuarterForZoned.d.ts +9 -2
  862. package/dist/zoned/calculate/endOfQuarterForZoned.js +4 -5
  863. package/dist/zoned/calculate/endOfZoned.d.ts +16 -3
  864. package/dist/zoned/calculate/endOfZoned.js +2 -3
  865. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +10 -3
  866. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +5 -6
  867. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +7 -1
  868. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +3 -4
  869. package/dist/zoned/calculate/roundZoned.d.ts +21 -4
  870. package/dist/zoned/calculate/roundZoned.js +3 -7
  871. package/dist/zoned/calculate/setZoned.d.ts +44 -13
  872. package/dist/zoned/calculate/setZoned.js +30 -21
  873. package/dist/zoned/calculate/startOfQuarterForZoned.d.ts +7 -2
  874. package/dist/zoned/calculate/startOfQuarterForZoned.js +3 -5
  875. package/dist/zoned/calculate/startOfZoned.d.ts +15 -3
  876. package/dist/zoned/calculate/startOfZoned.js +1 -3
  877. package/dist/zoned/calculate/subtractZoned.d.ts +20 -10
  878. package/dist/zoned/calculate/subtractZoned.js +10 -20
  879. package/dist/zoned/compare/areZonedEqualBy.d.ts +14 -5
  880. package/dist/zoned/compare/areZonedEqualBy.js +7 -5
  881. package/dist/zoned/compare/isBetweenZoned.d.ts +13 -1
  882. package/dist/zoned/compare/isBetweenZoned.js +4 -3
  883. package/dist/zoned/compare/isInDaylightSaving.d.ts +38 -11
  884. package/dist/zoned/compare/isInDaylightSaving.js +40 -44
  885. package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +21 -5
  886. package/dist/zoned/convert/convertPlainDateTimeToZoned.js +9 -11
  887. package/dist/zoned/convert/convertZonedToUnix.d.ts +9 -4
  888. package/dist/zoned/convert/convertZonedToUnix.js +2 -4
  889. package/dist/zoned/convert/convertZonedToZoned.d.ts +5 -1
  890. package/dist/zoned/convert/convertZonedToZoned.js +5 -1
  891. package/dist/zoned/format/formatCalendarZoned.d.ts +18 -12
  892. package/dist/zoned/format/formatCalendarZoned.js +15 -10
  893. package/dist/zoned/format/formatRelativeZoned.d.ts +41 -12
  894. package/dist/zoned/format/formatRelativeZoned.js +9 -5
  895. package/dist/zoned/format/formatRfc2822.d.ts +2 -2
  896. package/dist/zoned/format/formatRfc2822.js +2 -2
  897. package/dist/zoned/format/formatRfc3339.d.ts +2 -3
  898. package/dist/zoned/format/formatRfc3339.js +2 -3
  899. package/dist/zoned/format/formatTimeZoneName.d.ts +16 -3
  900. package/dist/zoned/format/formatTimeZoneName.js +9 -4
  901. package/dist/zoned/format/formatZonedDateTime.js +2 -1
  902. package/dist/zoned/format/formatZonedRange.js +2 -1
  903. package/dist/zoned/format/formatZonedToParts.d.ts +15 -4
  904. package/dist/zoned/format/formatZonedToParts.js +8 -5
  905. package/dist/zoned/get/getDstTransitions.d.ts +11 -10
  906. package/dist/zoned/get/getDstTransitions.js +21 -7
  907. package/dist/zoned/get/getSystemTimeZone.d.ts +3 -1
  908. package/dist/zoned/get/getSystemTimeZone.js +5 -2
  909. package/dist/zoned/get/getTimeZoneOffset.d.ts +13 -2
  910. package/dist/zoned/get/getTimeZoneOffset.js +22 -6
  911. package/dist/zoned/get/getZonedDay.d.ts +2 -1
  912. package/dist/zoned/get/getZonedDay.js +6 -7
  913. package/dist/zoned/get/getZonedDayOfWeek.d.ts +2 -1
  914. package/dist/zoned/get/getZonedDayOfWeek.js +6 -5
  915. package/dist/zoned/get/getZonedHour.d.ts +2 -1
  916. package/dist/zoned/get/getZonedHour.js +6 -7
  917. package/dist/zoned/get/getZonedMicrosecond.d.ts +2 -1
  918. package/dist/zoned/get/getZonedMicrosecond.js +6 -5
  919. package/dist/zoned/get/getZonedMillisecond.d.ts +2 -1
  920. package/dist/zoned/get/getZonedMillisecond.js +6 -7
  921. package/dist/zoned/get/getZonedMinute.d.ts +2 -1
  922. package/dist/zoned/get/getZonedMinute.js +6 -7
  923. package/dist/zoned/get/getZonedMonth.d.ts +2 -1
  924. package/dist/zoned/get/getZonedMonth.js +6 -7
  925. package/dist/zoned/get/getZonedNanosecond.d.ts +2 -1
  926. package/dist/zoned/get/getZonedNanosecond.js +6 -5
  927. package/dist/zoned/get/getZonedNow.d.ts +18 -2
  928. package/dist/zoned/get/getZonedNow.js +17 -4
  929. package/dist/zoned/get/getZonedNowUnit.d.ts +6 -3
  930. package/dist/zoned/get/getZonedNowUnit.js +10 -7
  931. package/dist/zoned/get/getZonedSecond.d.ts +2 -1
  932. package/dist/zoned/get/getZonedSecond.js +6 -7
  933. package/dist/zoned/get/getZonedToday.d.ts +2 -1
  934. package/dist/zoned/get/getZonedToday.js +6 -5
  935. package/dist/zoned/get/getZonedWeekOfYear.d.ts +2 -1
  936. package/dist/zoned/get/getZonedWeekOfYear.js +6 -5
  937. package/dist/zoned/get/getZonedYear.d.ts +4 -1
  938. package/dist/zoned/get/getZonedYear.js +9 -7
  939. package/dist/zoned/interval/intervalDifferenceZoned.d.ts +9 -0
  940. package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +22 -4
  941. package/dist/zoned/interval/intervalDivideEquallyZoned.js +6 -4
  942. package/dist/zoned/interval/intervalFromDurationZoned.d.ts +29 -10
  943. package/dist/zoned/interval/intervalFromDurationZoned.js +6 -13
  944. package/dist/zoned/interval/intervalIntersectionZoned.d.ts +9 -0
  945. package/dist/zoned/interval/intervalSplitAtZoned.d.ts +11 -0
  946. package/dist/zoned/interval/intervalSplitAtZoned.js +2 -0
  947. package/dist/zoned/interval/intervalUnionZoned.d.ts +9 -0
  948. package/dist/zoned/interval/intervalXorAllZoned.d.ts +9 -0
  949. package/dist/zoned/interval/intervalXorAllZoned.js +2 -2
  950. package/dist/zoned/interval/intervalXorZoned.d.ts +9 -0
  951. package/dist/zoned/interval/mergeIntervalsZoned.d.ts +9 -0
  952. package/dist/zoned/interval/mergeIntervalsZoned.js +2 -2
  953. package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +27 -6
  954. package/dist/zoned/interval/splitIntervalByUnitZoned.js +11 -6
  955. package/dist/zoned/map/mapZonedDatesInRange.d.ts +9 -4
  956. package/dist/zoned/map/mapZonedDatesInRange.js +2 -4
  957. package/dist/zoned/parse/parseRfc2822.d.ts +1 -1
  958. package/dist/zoned/parse/parseRfc2822.js +1 -1
  959. package/dist/zoned/parse/parseUnitFromZoned.d.ts +13 -4
  960. package/dist/zoned/parse/parseUnitFromZoned.js +6 -4
  961. package/dist/zoned/parse/parseWeekFromZoned.d.ts +10 -3
  962. package/dist/zoned/parse/parseWeekFromZoned.js +2 -3
  963. package/dist/zoned/parse/parseYearFromZoned.d.ts +4 -2
  964. package/dist/zoned/parse/parseYearFromZoned.js +6 -3
  965. package/dist/zoned/validate/hasDaylightSaving.d.ts +45 -12
  966. package/dist/zoned/validate/hasDaylightSaving.js +54 -32
  967. package/dist/zoned/validate/index.d.ts +2 -0
  968. package/dist/zoned/validate/index.js +2 -0
  969. package/dist/zoned/validate/isValidRfc2822DateTime.d.ts +32 -0
  970. package/dist/zoned/validate/isValidRfc2822DateTime.js +35 -0
  971. package/dist/zoned/validate/isValidRfc3339DateTime.d.ts +31 -0
  972. package/dist/zoned/validate/isValidRfc3339DateTime.js +34 -0
  973. package/dist/zoned/validate/isValidTimeZone.d.ts +5 -1
  974. package/dist/zoned/validate/isValidTimeZone.js +6 -2
  975. package/dist/zoned/validate/isValidZonedDateTime.d.ts +13 -0
  976. package/dist/zoned/validate/isValidZonedDateTime.js +14 -1
  977. package/dist/zoned/validate/isValidZonedRange.d.ts +15 -4
  978. package/dist/zoned/validate/isValidZonedRange.js +1 -4
  979. package/package.json +67 -5
  980. package/skills/gmt-arithmetic/SKILL.md +99 -12
  981. package/skills/gmt-basics/SKILL.md +64 -13
  982. package/skills/gmt-integration/SKILL.md +33 -13
  983. package/skills/gmt-timezone/SKILL.md +265 -31
  984. package/dist/duration/calculate/durationAs.d.ts +0 -62
  985. package/dist/internal/resolveReadingTimeZone.d.ts +0 -11
  986. package/dist/internal/resolveReadingTimeZone.js +0 -18
  987. package/dist/internal/unixZonedDateTime.d.ts +0 -22
  988. package/dist/internal/unixZonedDateTime.js +0 -32
  989. package/dist/internal/utcZonedDateTime.d.ts +0 -16
  990. package/dist/internal/utcZonedDateTime.js +0 -28
  991. package/dist/types/duration-unit.d.ts +0 -5
  992. /package/dist/types/{duration-unit.js → duty.js} +0 -0
@@ -0,0 +1,179 @@
1
+ import { Temporal } from "@js-temporal/polyfill";
2
+ import { isObject } from "./isObject.js";
3
+ /** The date fields `setDate` takes. */
4
+ export const DATE_FIELDS = ["year", "month", "monthCode", "day"];
5
+ /** The time fields `setTime` takes. */
6
+ export const TIME_FIELDS = [
7
+ "hour",
8
+ "minute",
9
+ "second",
10
+ "millisecond",
11
+ "microsecond",
12
+ "nanosecond",
13
+ ];
14
+ /** The fields `setDateTime`, `setUtc`, `setUnix` and `setZoned` take. */
15
+ export const DATE_TIME_FIELDS = [...DATE_FIELDS, ...TIME_FIELDS];
16
+ /**
17
+ * Every property TC39 Temporal's `with` methods read from their argument, in the order they read
18
+ * them: `calendar` and `timeZone` first, which IsPartialTemporalObject (13.24) refuses, then the
19
+ * date and time fields and the `offset` that `ZonedDateTime.prototype.with` reads, in code-unit
20
+ * order. PrepareCalendarFields (12.3.3) sorts them so for every `with` that takes a date, and
21
+ * ToTemporalTimeRecord (4.5.12), which `PlainTime.prototype.with` uses, reads its six fields in
22
+ * the same order. The list adds the era fields,
23
+ * which `with` never reads for the ISO 8601 calendar (CalendarExtraFields returns none) and which
24
+ * GMT reads only to refuse them.
25
+ */
26
+ const WITH_PROPERTY_NAMES = [
27
+ "calendar",
28
+ "timeZone",
29
+ "day",
30
+ "era",
31
+ "eraYear",
32
+ "hour",
33
+ "microsecond",
34
+ "millisecond",
35
+ "minute",
36
+ "month",
37
+ "monthCode",
38
+ "nanosecond",
39
+ "offset",
40
+ "second",
41
+ "year",
42
+ ];
43
+ /** The one field whose value is a string; every other field a `set*` function takes is a number. */
44
+ const STRING_FIELD = "monthCode";
45
+ /**
46
+ * For each Temporal class whose objects hold a date or a time (the internal slots TC39
47
+ * IsPartialTemporalObject tests), a getter that throws for any receiver without that slot.
48
+ */
49
+ const BRANDED_GETTERS = [
50
+ ["PlainDate", "calendarId"],
51
+ ["PlainDateTime", "calendarId"],
52
+ ["PlainMonthDay", "calendarId"],
53
+ ["PlainYearMonth", "calendarId"],
54
+ ["ZonedDateTime", "calendarId"],
55
+ ["PlainTime", "hour"],
56
+ ];
57
+ /** Whether `value` holds the internal slot of one class of `namespace`. */
58
+ function isObjectOf(namespace, value) {
59
+ return BRANDED_GETTERS.some(([name, key]) => {
60
+ const prototype = namespace[name]?.prototype;
61
+ const getter = isObject(prototype)
62
+ ? Object.getOwnPropertyDescriptor(prototype, key)?.get
63
+ : undefined;
64
+ if (typeof getter !== "function") {
65
+ return false;
66
+ }
67
+ try {
68
+ getter.call(value);
69
+ return true;
70
+ }
71
+ catch {
72
+ return false;
73
+ }
74
+ });
75
+ }
76
+ /**
77
+ * Whether `value` is an object of the Temporal the host provides on `globalThis`, if any. A
78
+ * malformed host Temporal recognises nothing, so it never changes the result for a field object.
79
+ */
80
+ function isHostTemporalObject(value) {
81
+ try {
82
+ const host = globalThis.Temporal;
83
+ return (isObject(host) &&
84
+ host !== Temporal &&
85
+ isObjectOf(host, value));
86
+ }
87
+ catch {
88
+ return false;
89
+ }
90
+ }
91
+ /**
92
+ * Whether `value` is a Temporal object that holds a date or a time, from the polyfill GMT uses or
93
+ * from a Temporal the host provides. The test is the one a class's own getter makes: it reads the
94
+ * internal slot, so neither the prototype chain nor any property of `value` decides it.
95
+ *
96
+ * The check calls up to six getters, twelve with a host Temporal, and a throwing getter is slow, so
97
+ * it is skipped when the prototype is `Object.prototype`, `null` or `Function.prototype`: a plain
98
+ * object, an `Object.create(null)` object or a function, which no Temporal class makes.
99
+ *
100
+ * Limits:
101
+ * - An object from a second copy of the polyfill that is not on `globalThis` is not detected and
102
+ * is read as a field bag, which is also what TC39 IsPartialTemporalObject (13.24) does with an
103
+ * object that lacks this polyfill's internal slots.
104
+ * - A Temporal object whose prototype was swapped to one of the three above is not detected
105
+ * either. Its getters are then out of reach, so it reads as setting nothing and the function
106
+ * returns its value unchanged (accepted by owner decision for the speed of the plain case).
107
+ */
108
+ function isTemporalDateOrTimeObject(value) {
109
+ const prototype = Object.getPrototypeOf(value);
110
+ if (prototype === Object.prototype ||
111
+ prototype === null ||
112
+ prototype === Function.prototype) {
113
+ return false;
114
+ }
115
+ return (isObjectOf(Temporal, value) ||
116
+ isHostTemporalObject(value));
117
+ }
118
+ /** Whether `value` is one Temporal reads for `name` without converting it. */
119
+ function isFieldValue(name, value) {
120
+ return name === STRING_FIELD
121
+ ? typeof value === "string"
122
+ : typeof value === "number" && Number.isInteger(value);
123
+ }
124
+ /**
125
+ * Read the `fields` argument of a `set*` function the way Temporal's `with` reads it, and return
126
+ * the values as a fresh plain object that holds only the fields the function takes.
127
+ *
128
+ * The check and the read are one pass, so nothing reaches Temporal that was not checked:
129
+ *
130
+ * - `fields` must be an Object (`isObject`), a function included, and not a Temporal object that
131
+ * holds a date or a time (TC39 IsPartialTemporalObject).
132
+ * - An own enumerable string key outside `allowedFields` returns `null`, whatever its value: the guard
133
+ * against a misspelt key. A symbol key is ignored.
134
+ * - Each property `with` reads is read once with an ordinary property get, in the order `with`
135
+ * reads them, so an inherited, non-enumerable or getter field applies. `undefined` means absent.
136
+ * A defined property outside `allowedFields` (another type's field, an era, an offset, a
137
+ * `calendar` or a `timeZone`) returns `null`.
138
+ * - A value is not converted: `monthCode` must be a string, and every other field a number that is
139
+ * an integer. `null`, a numeric string, a boolean and a fraction return `null`, where Temporal
140
+ * would convert or truncate them. A bigint, `NaN` and an infinity return `null` too; Temporal
141
+ * throws for them (ToIntegerWithTruncation).
142
+ *
143
+ * Range and overflow are left to Temporal. An empty result means nothing is set: the function
144
+ * returns its value unchanged, where Temporal's `with` would throw. A getter that throws is not
145
+ * caught here, nor is a Proxy's `getPrototypeOf` trap that throws; the calling function's own catch
146
+ * returns its sentinel.
147
+ *
148
+ * @param fields the caller's `fields` argument
149
+ * @param allowedFields the fields the calling function takes
150
+ * @returns a new plain object of the fields set, empty when none is, or null on invalid input
151
+ *
152
+ * @example readSetFields({ year: 2025 }, DATE_FIELDS) // { year: 2025 }
153
+ * @example readSetFields({}, DATE_FIELDS) // {} (nothing set)
154
+ * @example readSetFields({ year: "2025" }, DATE_FIELDS) // null (not converted)
155
+ * @example readSetFields({ year: 2025, yaer: 1 }, DATE_FIELDS) // null (misspelt key)
156
+ * @example readSetFields({ year: 2025, hour: 5 }, DATE_FIELDS) // null (a field setDate does not take)
157
+ */
158
+ export function readSetFields(fields, allowedFields) {
159
+ const allowed = allowedFields;
160
+ if (!isObject(fields) || isTemporalDateOrTimeObject(fields)) {
161
+ return null;
162
+ }
163
+ if (!Object.keys(fields).every((key) => allowed.includes(key))) {
164
+ return null;
165
+ }
166
+ const record = fields;
167
+ const read = {};
168
+ for (const name of WITH_PROPERTY_NAMES) {
169
+ const value = record[name];
170
+ if (value === undefined) {
171
+ continue;
172
+ }
173
+ if (!allowed.includes(name) || !isFieldValue(name, value)) {
174
+ return null;
175
+ }
176
+ read[name] = value;
177
+ }
178
+ return read;
179
+ }
@@ -18,6 +18,10 @@ import type { DurationRelativeTo } from "../types/index.js";
18
18
  * calendar must be a `CalendarSystem`, and `"ethiopic"`/`"coptic"` compute in `"ethioaa"`,
19
19
  * which polyfill 0.5.1 can read. The digits are ISO, so this is the date Temporal itself would
20
20
  * read.
21
+ * - A zoned string without a calendar annotation is read with `zonedDateTimeFrom`, so its offset
22
+ * is matched against the zone as TC39 `ToRelativeTemporalObject` matches it: an offset written
23
+ * to the minute may be the zone's sub-minute offset rounded, and one written with seconds must
24
+ * be the zone's offset exactly (`"1970-01-01T00:00:00-00:45:00[Africa/Monrovia]"` throws).
21
25
  * - A leap second (second `60`) throws, in every spelling Temporal's grammar accepts — `T`, `t`
22
26
  * or space separator, extended or basic digits, with or without a designator. Temporal's
23
27
  * ParseISODateTime would otherwise clamp it to `:59`.
@@ -3,6 +3,7 @@ import { plainDateTime } from "../regex/date-time.js";
3
3
  import { parseCalendarDateValue, temporalStringLeapSecond, } from "./calendarDateString.js";
4
4
  import { parseCalendarZonedValue } from "./calendarZonedString.js";
5
5
  import { hasZonedDateTimeShape, isoStringBody } from "./isoStringBody.js";
6
+ import { zonedDateTimeFrom } from "./zonedWallClock.js";
6
7
  /**
7
8
  * A calendar annotation in any spelling: critical flag or not, any letter case. An upper-case key
8
9
  * is not Temporal syntax, so it is parsed here and throws rather than reaching Temporal later.
@@ -45,6 +46,10 @@ function hasRelativeToShape(value) {
45
46
  * calendar must be a `CalendarSystem`, and `"ethiopic"`/`"coptic"` compute in `"ethioaa"`,
46
47
  * which polyfill 0.5.1 can read. The digits are ISO, so this is the date Temporal itself would
47
48
  * read.
49
+ * - A zoned string without a calendar annotation is read with `zonedDateTimeFrom`, so its offset
50
+ * is matched against the zone as TC39 `ToRelativeTemporalObject` matches it: an offset written
51
+ * to the minute may be the zone's sub-minute offset rounded, and one written with seconds must
52
+ * be the zone's offset exactly (`"1970-01-01T00:00:00-00:45:00[Africa/Monrovia]"` throws).
48
53
  * - A leap second (second `60`) throws, in every spelling Temporal's grammar accepts — `T`, `t`
49
54
  * or space separator, extended or basic digits, with or without a designator. Temporal's
50
55
  * ParseISODateTime would otherwise clamp it to `:59`.
@@ -70,7 +75,12 @@ export function resolveDurationRelativeTo(relativeTo) {
70
75
  throw new RangeError(`Not an extended ISO 8601 date, date-time or zoned date-time: ${relativeTo}`);
71
76
  }
72
77
  if (!anyCalendarAnnotation.test(relativeTo)) {
73
- return relativeTo;
78
+ // A zoned string is read here, not handed on as text: `zonedDateTimeFrom` matches an offset
79
+ // written with seconds exactly, as TC39 `ToRelativeTemporalObject` requires and polyfill
80
+ // 0.5.1 does not (temporalCompat D12).
81
+ return timeZoneAnnotation.test(relativeTo)
82
+ ? zonedDateTimeFrom(relativeTo)
83
+ : relativeTo;
74
84
  }
75
85
  if (timeZoneAnnotation.test(relativeTo)) {
76
86
  return parseCalendarZonedValue(relativeTo);
@@ -3,17 +3,28 @@ import type { RelativeRoundingMethod } from "../types/index.js";
3
3
  * Round a relative-time distance to an integer using the given method, defaulting to "round".
4
4
  *
5
5
  * Applied directly to the signed fractional value (not its absolute value), so floor/ceil
6
- * respect whether the distance is past (negative) or future (positive) — matches date-fns's
7
- * `formatDistanceStrict` `roundingMethod` semantics. A rounded `-0` is preserved rather than
8
- * normalized to `0`: `Intl.RelativeTimeFormat` treats the sign of zero as meaningful (with
9
- * `numeric: "always"`, `-0` renders as "0 <unit> ago" and `0` as "in 0 <unit>"), so collapsing
10
- * it here would change existing `formatRelative*` output for near-zero distances.
6
+ * respect whether the distance is past (negative) or future (positive): "floor" rounds toward
7
+ * negative infinity and "ceil" toward positive infinity, as ECMA-262 `Math.floor` / `Math.ceil`
8
+ * and Temporal's rounding modes of the same names do. "round" is ECMA-262 `Math.round`, a half
9
+ * going toward positive infinity. Comparison: date-fns's `formatDistanceStrict` `roundingMethod`
10
+ * rounds the unsigned distance, so its floor and ceil differ for a past value.
11
+ *
12
+ * A rounded `-0` is preserved rather than normalized to `0`: `Intl.RelativeTimeFormat` treats the
13
+ * sign of zero as meaningful (with `numeric: "always"`, `-0` renders as "0 <unit> ago" and `0` as
14
+ * "in 0 <unit>"), so collapsing it here would change existing `formatRelative*` output for
15
+ * near-zero distances.
16
+ *
17
+ * The method is matched against the three names `RelativeRoundingMethod` lists, never looked up on
18
+ * `Math`: `Math.abs`, `Math.trunc`, `Math.random` and the keys `Math` inherits from
19
+ * `Object.prototype` are not rounding methods. An `undefined` method is the omitted option
20
+ * (ECMA-402 `GetOption`, which the Temporal specification also defines) and takes the default.
11
21
  *
12
22
  * @param value the fractional distance in the target display unit
13
23
  * @param method optional: "floor" | "ceil" | "round" (default "round")
14
- * @returns the rounded amount
24
+ * @returns the rounded amount; throws RangeError for any other method, for the caller's sentinel
15
25
  * @example resolveRelativeRounding(2.7) // 3
16
26
  * @example resolveRelativeRounding(2.7, "floor") // 2
17
27
  * @example resolveRelativeRounding(-2.7, "ceil") // -2
28
+ * @example resolveRelativeRounding(-2.7, "abs" as never) // throws RangeError
18
29
  */
19
30
  export declare function resolveRelativeRounding(value: number, method?: RelativeRoundingMethod): number;
@@ -2,19 +2,39 @@
2
2
  * Round a relative-time distance to an integer using the given method, defaulting to "round".
3
3
  *
4
4
  * Applied directly to the signed fractional value (not its absolute value), so floor/ceil
5
- * respect whether the distance is past (negative) or future (positive) — matches date-fns's
6
- * `formatDistanceStrict` `roundingMethod` semantics. A rounded `-0` is preserved rather than
7
- * normalized to `0`: `Intl.RelativeTimeFormat` treats the sign of zero as meaningful (with
8
- * `numeric: "always"`, `-0` renders as "0 <unit> ago" and `0` as "in 0 <unit>"), so collapsing
9
- * it here would change existing `formatRelative*` output for near-zero distances.
5
+ * respect whether the distance is past (negative) or future (positive): "floor" rounds toward
6
+ * negative infinity and "ceil" toward positive infinity, as ECMA-262 `Math.floor` / `Math.ceil`
7
+ * and Temporal's rounding modes of the same names do. "round" is ECMA-262 `Math.round`, a half
8
+ * going toward positive infinity. Comparison: date-fns's `formatDistanceStrict` `roundingMethod`
9
+ * rounds the unsigned distance, so its floor and ceil differ for a past value.
10
+ *
11
+ * A rounded `-0` is preserved rather than normalized to `0`: `Intl.RelativeTimeFormat` treats the
12
+ * sign of zero as meaningful (with `numeric: "always"`, `-0` renders as "0 <unit> ago" and `0` as
13
+ * "in 0 <unit>"), so collapsing it here would change existing `formatRelative*` output for
14
+ * near-zero distances.
15
+ *
16
+ * The method is matched against the three names `RelativeRoundingMethod` lists, never looked up on
17
+ * `Math`: `Math.abs`, `Math.trunc`, `Math.random` and the keys `Math` inherits from
18
+ * `Object.prototype` are not rounding methods. An `undefined` method is the omitted option
19
+ * (ECMA-402 `GetOption`, which the Temporal specification also defines) and takes the default.
10
20
  *
11
21
  * @param value the fractional distance in the target display unit
12
22
  * @param method optional: "floor" | "ceil" | "round" (default "round")
13
- * @returns the rounded amount
23
+ * @returns the rounded amount; throws RangeError for any other method, for the caller's sentinel
14
24
  * @example resolveRelativeRounding(2.7) // 3
15
25
  * @example resolveRelativeRounding(2.7, "floor") // 2
16
26
  * @example resolveRelativeRounding(-2.7, "ceil") // -2
27
+ * @example resolveRelativeRounding(-2.7, "abs" as never) // throws RangeError
17
28
  */
18
29
  export function resolveRelativeRounding(value, method = "round") {
19
- return Math[method](value);
30
+ switch (method) {
31
+ case "floor":
32
+ return Math.floor(value);
33
+ case "ceil":
34
+ return Math.ceil(value);
35
+ case "round":
36
+ return Math.round(value);
37
+ default:
38
+ throw new RangeError(`Invalid roundingMethod: ${String(method)}`);
39
+ }
20
40
  }
@@ -0,0 +1,30 @@
1
+ import type { RelativeUnit } from "../types/index.js";
2
+ /**
3
+ * Resolve the `largestUnit` option of a `formatRelative*` function to one of the units the
4
+ * function allows, in its singular form.
5
+ *
6
+ * - Temporal reads a unit option with GetTemporalUnitValuedOption, which takes a plural name as
7
+ * its singular, then checks it with ValidateTemporalUnitValue against the unit group of the
8
+ * type — date, time or datetime — and throws RangeError for a unit outside the group:
9
+ * `Temporal.PlainDate.prototype.until` rejects `"hour"`, `Temporal.PlainTime.prototype.until`
10
+ * rejects `"day"`. `allowed` is that group for the calling function.
11
+ * - `undefined` is the omitted option (GetOption), so the caller picks the unit from the distance.
12
+ * - Unit names are lower case, as in Temporal.
13
+ * - The set of units is Temporal's. Rejecting a value that is not a string is GMT's own rule, and
14
+ * stricter than Temporal: GetOption converts any value with ToString, so Temporal accepts
15
+ * `["day"]` and an object whose `toString` returns `"day"` (test262
16
+ * `largestunit-wrong-type.js`). GMT takes string inputs, and its other unit readers
17
+ * (`roundDate`, `roundDateTime`, `roundUtc`, `roundZoned`, `startOfDate`, `totalDuration`,
18
+ * `areDatesEqualBy`) reject a non-string the same way, so this one does not convert either.
19
+ *
20
+ * @param largestUnit the option as read from the caller's object, `undefined` when absent
21
+ * @param allowed the singular units the calling function lists in its type
22
+ * @returns the singular unit, or `undefined` when the option is absent; throws RangeError for any
23
+ * other value, for the caller's sentinel
24
+ *
25
+ * @example resolveRelativeUnit("hours", ["hour", "minute", "second"]) // "hour"
26
+ * @example resolveRelativeUnit(undefined, ["hour", "minute", "second"]) // undefined
27
+ * @example resolveRelativeUnit("day", ["hour", "minute", "second"]) // throws RangeError
28
+ * @example resolveRelativeUnit(["hour"], ["hour", "minute", "second"]) // throws RangeError (GMT's rule; Temporal converts it to "hour")
29
+ */
30
+ export declare function resolveRelativeUnit<Unit extends RelativeUnit>(largestUnit: unknown, allowed: readonly Unit[]): Unit | undefined;
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Resolve the `largestUnit` option of a `formatRelative*` function to one of the units the
3
+ * function allows, in its singular form.
4
+ *
5
+ * - Temporal reads a unit option with GetTemporalUnitValuedOption, which takes a plural name as
6
+ * its singular, then checks it with ValidateTemporalUnitValue against the unit group of the
7
+ * type — date, time or datetime — and throws RangeError for a unit outside the group:
8
+ * `Temporal.PlainDate.prototype.until` rejects `"hour"`, `Temporal.PlainTime.prototype.until`
9
+ * rejects `"day"`. `allowed` is that group for the calling function.
10
+ * - `undefined` is the omitted option (GetOption), so the caller picks the unit from the distance.
11
+ * - Unit names are lower case, as in Temporal.
12
+ * - The set of units is Temporal's. Rejecting a value that is not a string is GMT's own rule, and
13
+ * stricter than Temporal: GetOption converts any value with ToString, so Temporal accepts
14
+ * `["day"]` and an object whose `toString` returns `"day"` (test262
15
+ * `largestunit-wrong-type.js`). GMT takes string inputs, and its other unit readers
16
+ * (`roundDate`, `roundDateTime`, `roundUtc`, `roundZoned`, `startOfDate`, `totalDuration`,
17
+ * `areDatesEqualBy`) reject a non-string the same way, so this one does not convert either.
18
+ *
19
+ * @param largestUnit the option as read from the caller's object, `undefined` when absent
20
+ * @param allowed the singular units the calling function lists in its type
21
+ * @returns the singular unit, or `undefined` when the option is absent; throws RangeError for any
22
+ * other value, for the caller's sentinel
23
+ *
24
+ * @example resolveRelativeUnit("hours", ["hour", "minute", "second"]) // "hour"
25
+ * @example resolveRelativeUnit(undefined, ["hour", "minute", "second"]) // undefined
26
+ * @example resolveRelativeUnit("day", ["hour", "minute", "second"]) // throws RangeError
27
+ * @example resolveRelativeUnit(["hour"], ["hour", "minute", "second"]) // throws RangeError (GMT's rule; Temporal converts it to "hour")
28
+ */
29
+ export function resolveRelativeUnit(largestUnit, allowed) {
30
+ if (largestUnit === undefined) {
31
+ return undefined;
32
+ }
33
+ const unit = typeof largestUnit === "string"
34
+ ? allowed.find((name) => name === largestUnit || `${name}s` === largestUnit)
35
+ : undefined;
36
+ if (unit === undefined) {
37
+ throw new RangeError(`Invalid largestUnit: ${String(largestUnit)}`);
38
+ }
39
+ return unit;
40
+ }
@@ -1,10 +1,13 @@
1
1
  import type { Temporal } from "@js-temporal/polyfill";
2
2
  import { type UnixEpochUnit } from "./unixEpochValue.js";
3
+ import { type ZoneFrame } from "./zoneFrame.js";
3
4
  export interface ResolvedUnixInterval {
4
5
  startVal: Temporal.ZonedDateTime;
5
6
  endVal: Temporal.ZonedDateTime;
6
7
  resolvedUnit: Temporal.DateTimeUnit;
7
8
  epochUnit: UnixEpochUnit;
9
+ /** The frame both ends were placed on; `frameInstant` turns a result back into an instant. */
10
+ frame: ZoneFrame;
8
11
  }
9
12
  /**
10
13
  * Resolve the shared arguments of `intervalLengthUnix`, `intervalCountUnix` and
@@ -13,13 +16,16 @@ export interface ResolvedUnixInterval {
13
16
  *
14
17
  * - Epochs follow the one `unix/` grammar (`parseUnixEpochValue`) and must name Temporal instants.
15
18
  * - `epochUnit` defaults to `"milliseconds"`; `timeZone` defaults to `"UTC"` (`"local"` is the
16
- * system zone, an unknown zone is invalid).
19
+ * system zone; a time zone identifier or a stored UTC offset `±HH:MM[:SS]` is read as written;
20
+ * anything else is invalid).
21
+ * - The ends are placed with `frameZoned`: for a seconds offset they sit in the offset's
22
+ * whole-minute zone, moved by its seconds, to compute with and never to write.
17
23
  *
18
24
  * @param start interval start epoch
19
25
  * @param end interval end epoch
20
26
  * @param unit unit name, singular or plural
21
27
  * @param options optional `{ epochUnit, timeZone }`
22
- * @returns the zoned ends, singular unit and epoch unit, or null on invalid input
28
+ * @returns the zoned ends, singular unit, epoch unit and frame, or null on invalid input
23
29
  *
24
30
  * @example resolveUnixIntervalPair(0, 86400, "days", { epochUnit: "seconds" })?.resolvedUnit // "day"
25
31
  * @example resolveUnixIntervalPair(10, 0, "day") // null (reversed)
@@ -1,7 +1,7 @@
1
- import { normalizeTimeZone } from "./normalizeTimeZone.js";
2
1
  import { resolveDateTimeUnit } from "./resolveDateTimeUnit.js";
3
2
  import { parseUnixEpochInterval, resolveUnixEpochUnit, unixEpochToInstant, } from "./unixEpochValue.js";
4
3
  import { isValidDateTimeUnit } from "../plain/validate/index.js";
4
+ import { frameZoned, normalizeZoneFrame } from "./zoneFrame.js";
5
5
  /**
6
6
  * Resolve the shared arguments of `intervalLengthUnix`, `intervalCountUnix` and
7
7
  * `splitIntervalByUnitUnix`: a non-reversed epoch pair in `epochUnit`, a singular-or-plural
@@ -9,13 +9,16 @@ import { isValidDateTimeUnit } from "../plain/validate/index.js";
9
9
  *
10
10
  * - Epochs follow the one `unix/` grammar (`parseUnixEpochValue`) and must name Temporal instants.
11
11
  * - `epochUnit` defaults to `"milliseconds"`; `timeZone` defaults to `"UTC"` (`"local"` is the
12
- * system zone, an unknown zone is invalid).
12
+ * system zone; a time zone identifier or a stored UTC offset `±HH:MM[:SS]` is read as written;
13
+ * anything else is invalid).
14
+ * - The ends are placed with `frameZoned`: for a seconds offset they sit in the offset's
15
+ * whole-minute zone, moved by its seconds, to compute with and never to write.
13
16
  *
14
17
  * @param start interval start epoch
15
18
  * @param end interval end epoch
16
19
  * @param unit unit name, singular or plural
17
20
  * @param options optional `{ epochUnit, timeZone }`
18
- * @returns the zoned ends, singular unit and epoch unit, or null on invalid input
21
+ * @returns the zoned ends, singular unit, epoch unit and frame, or null on invalid input
19
22
  *
20
23
  * @example resolveUnixIntervalPair(0, 86400, "days", { epochUnit: "seconds" })?.resolvedUnit // "day"
21
24
  * @example resolveUnixIntervalPair(10, 0, "day") // null (reversed)
@@ -23,10 +26,10 @@ import { isValidDateTimeUnit } from "../plain/validate/index.js";
23
26
  export function resolveUnixIntervalPair(start, end, unit, options) {
24
27
  const interval = parseUnixEpochInterval(start, end);
25
28
  const epochUnit = resolveUnixEpochUnit(options?.epochUnit);
26
- const timeZone = normalizeTimeZone(options?.timeZone);
29
+ const frame = normalizeZoneFrame(options?.timeZone);
27
30
  if (interval === null ||
28
31
  epochUnit === null ||
29
- !timeZone ||
32
+ frame === null ||
30
33
  typeof unit !== "string") {
31
34
  return null;
32
35
  }
@@ -41,10 +44,11 @@ export function resolveUnixIntervalPair(start, end, unit, options) {
41
44
  }
42
45
  try {
43
46
  return {
44
- startVal: startInstant.toZonedDateTimeISO(timeZone),
45
- endVal: endInstant.toZonedDateTimeISO(timeZone),
47
+ startVal: frameZoned(startInstant, frame),
48
+ endVal: frameZoned(endInstant, frame),
46
49
  resolvedUnit,
47
50
  epochUnit,
51
+ frame,
48
52
  };
49
53
  }
50
54
  catch {
@@ -33,7 +33,8 @@ export declare function isExactDurationUnit(unit: string): boolean;
33
33
  * - A step that goes backwards returns `null`.
34
34
  * - More than `maxSlices` slices returns `null` as soon as the next one is due, so the work stays
35
35
  * bounded by the limit (owner decision A2, CORE-8).
36
- * - The last slice's end is trimmed to `end`. Callers handle `start >= end` before calling.
36
+ * - The last slice's end is `end` itself, whether the last step passes `end` (trimmed) or lands on
37
+ * it. Callers handle `start >= end` before calling.
37
38
  * - A step that throws a RangeError (it lands past Temporal's last representable value, so after
38
39
  * `end`) closes the split with a last slice ending at `end`.
39
40
  *
@@ -57,6 +58,28 @@ export declare function isExactDurationUnit(unit: string): boolean;
57
58
  export declare function tileByUnit<T extends {
58
59
  add(duration: Temporal.DurationLike): T;
59
60
  }>(start: T, end: T, compare: (a: T, b: T) => number, unit: string, amount: number, maxSlices: number, add?: (value: T, duration: Temporal.DurationLike) => T): Array<[T, T]> | null;
61
+ /**
62
+ * The step a split takes when its boundaries are then floored to whole `floorUnit`s.
63
+ *
64
+ * - An exact step shorter than one `floorUnit` moves each boundary by less than one unit, so the
65
+ * floored boundaries are every whole unit from the start to the end, each one repeated once per
66
+ * step that falls inside it. Stepping by one `floorUnit` gives those boundaries once each: no
67
+ * empty piece, and no work spent on steps the result cannot show.
68
+ * - Any other step is returned unchanged: a step of one `floorUnit` or more never floors two
69
+ * boundaries to the same value, a calendar step is never shorter than a second, and a
70
+ * fractional `amount` is left for Temporal to reject.
71
+ * - The split's start must itself be a whole `floorUnit`, as a Unix epoch is.
72
+ *
73
+ * @param unit plural duration unit, as returned by `resolveDurationUnit`
74
+ * @param amount positive number of units per step
75
+ * @param floorUnit plural exact unit the boundaries are floored to
76
+ * @returns the `[unit, amount]` to step by
77
+ *
78
+ * @example stepNoFinerThan("milliseconds", 500, "seconds") // ["seconds", 1]
79
+ * @example stepNoFinerThan("milliseconds", 1500, "seconds") // ["milliseconds", 1500]
80
+ * @example stepNoFinerThan("days", 1, "seconds") // ["days", 1]
81
+ */
82
+ export declare function stepNoFinerThan(unit: string, amount: number, floorUnit: string): [unit: string, amount: number];
60
83
  /**
61
84
  * A lower bound on the number of slices `tileByUnit` returns for a span, without stepping.
62
85
  *
@@ -68,7 +68,8 @@ function closedAtRangeLimit(slices, current, end, maxSlices) {
68
68
  * - A step that goes backwards returns `null`.
69
69
  * - More than `maxSlices` slices returns `null` as soon as the next one is due, so the work stays
70
70
  * bounded by the limit (owner decision A2, CORE-8).
71
- * - The last slice's end is trimmed to `end`. Callers handle `start >= end` before calling.
71
+ * - The last slice's end is `end` itself, whether the last step passes `end` (trimmed) or lands on
72
+ * it. Callers handle `start >= end` before calling.
72
73
  * - A step that throws a RangeError (it lands past Temporal's last representable value, so after
73
74
  * `end`) closes the split with a last slice ending at `end`.
74
75
  *
@@ -111,7 +112,9 @@ export function tileByUnit(start, end, compare, unit, amount, maxSlices, add = (
111
112
  return null;
112
113
  }
113
114
  stalled = 0;
114
- slices.push([current, compare(next, end) > 0 ? end : next]);
115
+ // A step that lands on `end` closes with `end` itself, as a trimmed one does: the two compare
116
+ // equal but may be written differently (a zoned `end` in another zone than `start`).
117
+ slices.push([current, compare(next, end) >= 0 ? end : next]);
115
118
  current = next;
116
119
  }
117
120
  return slices;
@@ -135,6 +138,35 @@ const LONGEST_UNIT_NANOSECONDS = {
135
138
  months: 31 * NANOSECONDS_PER_DAY,
136
139
  years: 385 * NANOSECONDS_PER_DAY,
137
140
  };
141
+ /**
142
+ * The step a split takes when its boundaries are then floored to whole `floorUnit`s.
143
+ *
144
+ * - An exact step shorter than one `floorUnit` moves each boundary by less than one unit, so the
145
+ * floored boundaries are every whole unit from the start to the end, each one repeated once per
146
+ * step that falls inside it. Stepping by one `floorUnit` gives those boundaries once each: no
147
+ * empty piece, and no work spent on steps the result cannot show.
148
+ * - Any other step is returned unchanged: a step of one `floorUnit` or more never floors two
149
+ * boundaries to the same value, a calendar step is never shorter than a second, and a
150
+ * fractional `amount` is left for Temporal to reject.
151
+ * - The split's start must itself be a whole `floorUnit`, as a Unix epoch is.
152
+ *
153
+ * @param unit plural duration unit, as returned by `resolveDurationUnit`
154
+ * @param amount positive number of units per step
155
+ * @param floorUnit plural exact unit the boundaries are floored to
156
+ * @returns the `[unit, amount]` to step by
157
+ *
158
+ * @example stepNoFinerThan("milliseconds", 500, "seconds") // ["seconds", 1]
159
+ * @example stepNoFinerThan("milliseconds", 1500, "seconds") // ["milliseconds", 1500]
160
+ * @example stepNoFinerThan("days", 1, "seconds") // ["days", 1]
161
+ */
162
+ export function stepNoFinerThan(unit, amount, floorUnit) {
163
+ const isFiner = isExactDurationUnit(unit) &&
164
+ isExactDurationUnit(floorUnit) &&
165
+ Number.isInteger(amount) &&
166
+ LONGEST_UNIT_NANOSECONDS[unit] * amount <
167
+ LONGEST_UNIT_NANOSECONDS[floorUnit];
168
+ return isFiner ? [floorUnit, 1] : [unit, amount];
169
+ }
138
170
  /**
139
171
  * A zoned boundary can sit this far from its wall-clock distance: a UTC offset lies strictly
140
172
  * within ±24 hours (Temporal IsOffsetTimeZoneIdentifier / ECMA-262 time zone offset range), so
@@ -8,7 +8,8 @@ import type { Temporal } from "@js-temporal/polyfill";
8
8
  * or `"quarter"` from `startOfQuarterForUnix` / `endOfQuarterForUnix` only.
9
9
  * - `value` follows the one epoch grammar (`parseUnixEpochValue`); `epochUnit` accepts singular
10
10
  * and plural names and defaults to `"milliseconds"`.
11
- * - `timeZone` defaults to `"UTC"`; `"local"` is the system zone; an unknown zone returns null.
11
+ * - `timeZone` defaults to `"UTC"`; `"local"` is the system zone; a time zone identifier or a
12
+ * stored UTC offset (`±HH:MM[:SS]`) is read as written; anything else returns null.
12
13
  * - `weekStartsOn` other than `"monday"` or `"sunday"` returns null.
13
14
  * - The boundary is always the real local bucket from `internal/zonedBucket.ts` — a start never
14
15
  * after `value`, an end never before it.
@@ -1,7 +1,7 @@
1
- import { normalizeTimeZone } from "./normalizeTimeZone.js";
2
1
  import { resolveWeekStartsOn } from "./resolveWeekStartsOn.js";
3
2
  import { resolveUnixEpochUnit, toUnixEpoch, unixEpochToInstant, } from "./unixEpochValue.js";
4
3
  import { zonedUnitEnd, zonedUnitStart } from "./zonedBucket.js";
4
+ import { frameInstant, frameZoned, normalizeZoneFrame } from "./zoneFrame.js";
5
5
  /**
6
6
  * Internal shared implementation for `startOfUnix` / `endOfUnix` and the quarter functions.
7
7
  *
@@ -11,7 +11,8 @@ import { zonedUnitEnd, zonedUnitStart } from "./zonedBucket.js";
11
11
  * or `"quarter"` from `startOfQuarterForUnix` / `endOfQuarterForUnix` only.
12
12
  * - `value` follows the one epoch grammar (`parseUnixEpochValue`); `epochUnit` accepts singular
13
13
  * and plural names and defaults to `"milliseconds"`.
14
- * - `timeZone` defaults to `"UTC"`; `"local"` is the system zone; an unknown zone returns null.
14
+ * - `timeZone` defaults to `"UTC"`; `"local"` is the system zone; a time zone identifier or a
15
+ * stored UTC offset (`±HH:MM[:SS]`) is read as written; anything else returns null.
15
16
  * - `weekStartsOn` other than `"monday"` or `"sunday"` returns null.
16
17
  * - The boundary is always the real local bucket from `internal/zonedBucket.ts` — a start never
17
18
  * after `value`, an end never before it.
@@ -24,9 +25,9 @@ import { zonedUnitEnd, zonedUnitStart } from "./zonedBucket.js";
24
25
  */
25
26
  export function startOrEndOfUnix(value, unit, options, isEnd) {
26
27
  const epochUnit = resolveUnixEpochUnit(options.epochUnit);
27
- const timeZone = normalizeTimeZone(options.timeZone);
28
+ const frame = normalizeZoneFrame(options.timeZone);
28
29
  const weekStartsOn = resolveWeekStartsOn(options.weekStartsOn);
29
- if (!timeZone || epochUnit === null || weekStartsOn === null) {
30
+ if (frame === null || epochUnit === null || weekStartsOn === null) {
30
31
  return null;
31
32
  }
32
33
  const instant = unixEpochToInstant(value, epochUnit);
@@ -35,11 +36,13 @@ export function startOrEndOfUnix(value, unit, options, isEnd) {
35
36
  }
36
37
  const weekStartDay = weekStartsOn === "monday" ? 1 : 7;
37
38
  try {
38
- const source = instant.toZonedDateTimeISO(timeZone);
39
+ const source = frameZoned(instant, frame);
39
40
  const boundary = isEnd
40
41
  ? zonedUnitEnd(source, unit, weekStartDay)
41
42
  : zonedUnitStart(source, unit, weekStartDay);
42
- return boundary ? toUnixEpoch(boundary, epochUnit) : null;
43
+ return boundary
44
+ ? toUnixEpoch(frameInstant(boundary, frame), epochUnit)
45
+ : null;
43
46
  }
44
47
  catch {
45
48
  return null;
@@ -5,6 +5,7 @@ import { resolveDateTimeUnit } from "./resolveDateTimeUnit.js";
5
5
  import { resolveWeekStartsOn } from "./resolveWeekStartsOn.js";
6
6
  import { isValidDateTimeUnit } from "../plain/validate/index.js";
7
7
  import { isValidZonedDateTime } from "../zoned/validate/index.js";
8
+ import { optionOrDefault } from "./optionOrDefault.js";
8
9
  /**
9
10
  * Internal shared implementation for `startOfZoned` / `endOfZoned`.
10
11
  *
@@ -32,9 +33,7 @@ export function startOrEndOfZoned(value, unit, options, isEnd) {
32
33
  // An end is next start − 1 ns, so it defaults to nanosecond precision: fewer digits would
33
34
  // print an earlier instant than the end (Calendar & zone semantics §3).
34
35
  const fractionalSecondDigits = isEnd
35
- ? options.fractionalSecondDigits === undefined
36
- ? 9
37
- : options.fractionalSecondDigits
36
+ ? optionOrDefault(options.fractionalSecondDigits, 9)
38
37
  : defaultFractionalDigits(resolvedUnit, options.fractionalSecondDigits);
39
38
  try {
40
39
  const source = zonedDateTimeFrom(value);