@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,384 @@
1
+ /** What each half of a value of each kind is: a period of dates is two dates. */
2
+ const VALUE_KIND = {
3
+ date: "date",
4
+ time: "time",
5
+ dateTime: "dateTime",
6
+ offsetDateTime: "offsetDateTime",
7
+ datePeriod: "date",
8
+ dateTimePeriod: "dateTime",
9
+ dateRange: "date",
10
+ dateTimeRange: "dateTime",
11
+ };
12
+ /** Hour, 00–23. */
13
+ const HH = "([01][0-9]|2[0-3])";
14
+ /** Minute, 00–59. */
15
+ const MI = "([0-5][0-9])";
16
+ /** The regex source of each part: one capture group, the field's whole range of digits. */
17
+ const FRAGMENT = {
18
+ // Century and year: four digits.
19
+ CCYY: "(\\d{4})",
20
+ // Month, 01–12.
21
+ MM: "(0[1-9]|1[0-2])",
22
+ // Day of month, 01–31.
23
+ DD: "(0[1-9]|[12][0-9]|3[01])",
24
+ HH,
25
+ MI,
26
+ // Second, 00–59. `60` does not match: GMT rejects a leap second, which Temporal would read as 59.
27
+ SS: "([0-5][0-9])",
28
+ // Element 337: "D = tenths (0-9)". One digit.
29
+ SD: "(\\d)",
30
+ // Element 337: "DD = hundredths (00-99)". Two digits.
31
+ SDD: "(\\d{2})",
32
+ // 2379 codes 205 and 208: "Z is plus (+) or minus (-)", then hours and minutes.
33
+ ZS: "([+-])",
34
+ ZH: HH,
35
+ ZM: MI,
36
+ // 2379 codes 303 and 304: a signed hour `[+-]HH`, 00–23 (Rec 7 ¶12), or the literals `UTC` and
37
+ // `GMT`. Nothing else is read: no UN/EDIFACT text defines a zone abbreviation, and a sign or a
38
+ // digit outside a valid signed hour (`+24`, `000`) is a broken offset (GMT rule; see the file
39
+ // header).
40
+ ZZZ: "([+-](?:[01][0-9]|2[0-3])|UTC|GMT)",
41
+ };
42
+ /** The `ZHHMM` offset of 2379 codes 205 and 208: sign, hours, minutes. */
43
+ const ZHHMM = ["ZS", "ZH", "ZM"];
44
+ /** The parts' sources joined, anchored, flagless; a period's halves joined by `join`. */
45
+ function grammarOf(layout, join) {
46
+ const source = (parts) => parts.map((part) => FRAGMENT[part]).join("");
47
+ const end = layout.end === undefined ? "" : `${join}${source(layout.end)}`;
48
+ return new RegExp(`^${source(layout.start)}${end}$`);
49
+ }
50
+ /** A grammar table from a layout table, in the layout table's key order. */
51
+ function grammarsOf(layouts, join) {
52
+ const grammars = {};
53
+ for (const code of Object.keys(layouts)) {
54
+ grammars[code] = grammarOf(layouts[code], join);
55
+ }
56
+ return grammars;
57
+ }
58
+ /**
59
+ * The 11 UNTDID 2379 codes GMT reads, in directory order: a date (`102`), a date and time
60
+ * (`203`, `204`), a date and time with a `ZHHMM` offset (`205`, `208`), a date and time with
61
+ * three zone characters (`303`, `304`), a time (`401`, `402`) and a period (`718`, `719`).
62
+ *
63
+ * Every other 2379 code returns the sentinel; the file header lists the ones cut and why.
64
+ */
65
+ export const EDIFACT_DTM_FORMATS = [
66
+ "102",
67
+ "203",
68
+ "204",
69
+ "205",
70
+ "208",
71
+ "303",
72
+ "304",
73
+ "401",
74
+ "402",
75
+ "718",
76
+ "719",
77
+ ];
78
+ /**
79
+ * UNTDID 2379 code → its kind and its value's parts. Typed kind by kind from the public unions,
80
+ * so a missing code, and a code filed under a kind its union does not name, both fail typecheck.
81
+ */
82
+ const EDIFACT_DTM_LAYOUT = {
83
+ // 102 CCYYMMDD — "Calendar date: C = Century ; Y = Year ; M = Month ; D = Day."
84
+ "102": { kind: "date", start: ["CCYY", "MM", "DD"] },
85
+ // 203 CCYYMMDDHHMM — "Calendar date including time with minutes"
86
+ "203": { kind: "dateTime", start: ["CCYY", "MM", "DD", "HH", "MI"] },
87
+ // 204 CCYYMMDDHHMMSS — "Calendar date including time with seconds"
88
+ "204": { kind: "dateTime", start: ["CCYY", "MM", "DD", "HH", "MI", "SS"] },
89
+ // 205 CCYYMMDDHHMMZHHMM — "Calendar date including time and time zone expressed in hours and minutes."
90
+ "205": {
91
+ kind: "offsetDateTime",
92
+ start: ["CCYY", "MM", "DD", "HH", "MI", ...ZHHMM],
93
+ },
94
+ // 208 CCYYMMDDHHMMSSZHHMM — "Calendar date including time with seconds, with Time Zone: … Z = leading plus/minus sign, HHMM = difference to UTC in Hours and Minutes." (D.12A on)
95
+ "208": {
96
+ kind: "offsetDateTime",
97
+ start: ["CCYY", "MM", "DD", "HH", "MI", "SS", ...ZHHMM],
98
+ },
99
+ // 303 CCYYMMDDHHMMZZZ — "See 203 plus Z=Time zone."
100
+ "303": {
101
+ kind: "offsetDateTime",
102
+ start: ["CCYY", "MM", "DD", "HH", "MI", "ZZZ"],
103
+ },
104
+ // 304 CCYYMMDDHHMMSSZZZ — "See 204 plus Z=Time zone."
105
+ "304": {
106
+ kind: "offsetDateTime",
107
+ start: ["CCYY", "MM", "DD", "HH", "MI", "SS", "ZZZ"],
108
+ },
109
+ // 401 HHMM — "Time without seconds: H = Hour; m = Minute."
110
+ "401": { kind: "time", start: ["HH", "MI"] },
111
+ // 402 HHMMSS — "Time with seconds: H = Hour; m = Minute; s = Seconds."
112
+ "402": { kind: "time", start: ["HH", "MI", "SS"] },
113
+ // 718 CCYYMMDD-CCYYMMDD — "A period of time specified by giving the start date followed by the end date (both including century)."
114
+ "718": {
115
+ kind: "datePeriod",
116
+ start: ["CCYY", "MM", "DD"],
117
+ end: ["CCYY", "MM", "DD"],
118
+ },
119
+ // 719 CCYYMMDDHHMM-CCYYMMDDHHMM — "A period of time which includes the century, year, month, day, hour and minute."
120
+ "719": {
121
+ kind: "dateTimePeriod",
122
+ start: ["CCYY", "MM", "DD", "HH", "MI"],
123
+ end: ["CCYY", "MM", "DD", "HH", "MI"],
124
+ },
125
+ };
126
+ /**
127
+ * UNTDID 2379 code → the anchored, flagless grammar of its value. A period's halves are run
128
+ * together with nothing between them: every directory read gives a period "without hyphen" (the
129
+ * file header quotes each entry).
130
+ */
131
+ export const EDIFACT_DTM_GRAMMAR = grammarsOf(EDIFACT_DTM_LAYOUT, "");
132
+ /**
133
+ * The 10 X12 1250 codes GMT reads: a date (`D8`, `DB`), a date and time (`DT`, `RTS`), a time
134
+ * (`TM`, `TS`), a range of dates (`RD8`, `RD`) and a range of date-times (`RDT`, `DTS`).
135
+ *
136
+ * The other 32 of the 42 codes return the sentinel; the file header lists the ones cut and why.
137
+ * `TS` is also a code of data element 623, with an unrelated meaning there.
138
+ */
139
+ export const X12_DATE_TIME_PERIOD_FORMATS = ["D8", "DB", "DT", "RTS", "TM", "TS", "RD8", "RD", "RDT", "DTS"];
140
+ /**
141
+ * X12 1250 code → its kind and its value's parts. Typed kind by kind from the public unions, so
142
+ * a missing code, and a code filed under a kind its union does not name, both fail typecheck.
143
+ */
144
+ const X12_DATE_TIME_PERIOD_LAYOUT = {
145
+ // D8 CCYYMMDD — "Date Expressed in Format CCYYMMDD"
146
+ D8: { kind: "date", start: ["CCYY", "MM", "DD"] },
147
+ // DB MMDDCCYY — "Date Expressed in Format MMDDCCYY"
148
+ DB: { kind: "date", start: ["MM", "DD", "CCYY"] },
149
+ // DT CCYYMMDDHHMM — "Date and Time Expressed in Format CCYYMMDDHHMM"
150
+ DT: { kind: "dateTime", start: ["CCYY", "MM", "DD", "HH", "MI"] },
151
+ // RTS CCYYMMDDHHMMSS — "Date and Time Expressed in Format CCYYMMDDHHMMSS" (one date-time despite the R)
152
+ RTS: { kind: "dateTime", start: ["CCYY", "MM", "DD", "HH", "MI", "SS"] },
153
+ // TM HHMM — "Time Expressed in Format HHMM"
154
+ TM: { kind: "time", start: ["HH", "MI"] },
155
+ // TS HHMMSS — "Time Expressed in Format HHMMSS"
156
+ TS: { kind: "time", start: ["HH", "MI", "SS"] },
157
+ // RD8 CCYYMMDD-CCYYMMDD — "Range of Dates Expressed in Format CCYYMMDD-CCYYMMDD"
158
+ RD8: {
159
+ kind: "dateRange",
160
+ start: ["CCYY", "MM", "DD"],
161
+ end: ["CCYY", "MM", "DD"],
162
+ },
163
+ // RD MMDDCCYY-MMDDCCYY — "Range of Dates Expressed in Format MMDDCCYY-MMDDCCYY"
164
+ RD: {
165
+ kind: "dateRange",
166
+ start: ["MM", "DD", "CCYY"],
167
+ end: ["MM", "DD", "CCYY"],
168
+ },
169
+ // RDT CCYYMMDDHHMM-CCYYMMDDHHMM — "Range of Date and Time, Expressed in Format CCYYMMDDHHMM-CCYYMMDDHHMM"
170
+ RDT: {
171
+ kind: "dateTimeRange",
172
+ start: ["CCYY", "MM", "DD", "HH", "MI"],
173
+ end: ["CCYY", "MM", "DD", "HH", "MI"],
174
+ },
175
+ // DTS CCYYMMDDHHMMSS-CCYYMMDDHHMMSS — "Range of Date and Time Expressed in Format CCYYMMDDHHMMSS-CCYYMMDDHHMMSS" (a range despite having no R)
176
+ DTS: {
177
+ kind: "dateTimeRange",
178
+ start: ["CCYY", "MM", "DD", "HH", "MI", "SS"],
179
+ end: ["CCYY", "MM", "DD", "HH", "MI", "SS"],
180
+ },
181
+ };
182
+ /**
183
+ * X12 1250 code → the anchored, flagless grammar of its value. A range's halves are joined by
184
+ * exactly one hyphen, the one X12 transmits.
185
+ */
186
+ export const X12_DATE_TIME_PERIOD_GRAMMAR = grammarsOf(X12_DATE_TIME_PERIOD_LAYOUT, "-");
187
+ /**
188
+ * X12 data element 337 (Time), the time element of `AT7`, `G62` and `DTM-03`: "Time expressed in
189
+ * 24-hour clock time as follows: HHMM, or HHMMSS, or HHMMSSD, or HHMMSSDD, where H = hours
190
+ * (00-23), M = minutes (00-59), S = integer seconds (00-59) and DD = decimal seconds; decimal
191
+ * seconds are expressed as follows: D = tenths (0-9) and DD = hundredths (00-99)", length 4 to 8
192
+ * (release 005010, https://www.stedi.com/edi/x12-005010/element/337).
193
+ *
194
+ * Mask → its parts, keyed by the element's own four masks in the order the definition gives
195
+ * them. Not a 1250 table: the element has no format qualifier, its four- and six-digit forms
196
+ * coincide with `TM` and `TS`, and no 1250 code holds decimal seconds. Typed from the public
197
+ * union, so a missing form fails typecheck.
198
+ */
199
+ export const X12_TIME_ELEMENT_LAYOUT = {
200
+ // HHMM — "H = hours (00-23), M = minutes (00-59)"
201
+ HHMM: { kind: "time", start: ["HH", "MI"] },
202
+ // HHMMSS — "S = integer seconds (00-59)"
203
+ HHMMSS: { kind: "time", start: ["HH", "MI", "SS"] },
204
+ // HHMMSSD — "D = tenths (0-9)"
205
+ HHMMSSD: { kind: "time", start: ["HH", "MI", "SS", "SD"] },
206
+ // HHMMSSDD — "DD = hundredths (00-99)"
207
+ HHMMSSDD: { kind: "time", start: ["HH", "MI", "SS", "SDD"] },
208
+ };
209
+ /**
210
+ * The four forms of X12 data element 337, shortest first: the layout table's own keys, so the
211
+ * list cannot name a form the table lacks.
212
+ */
213
+ export const X12_TIME_ELEMENT_FORMS = Object.keys(X12_TIME_ELEMENT_LAYOUT);
214
+ /**
215
+ * Element 337 form → the anchored, flagless grammar of its value. The four masks have four
216
+ * lengths (4, 6, 7 and 8 digits), so a value fits one form or none, and the reader needs no
217
+ * qualifier to tell them apart.
218
+ */
219
+ export const X12_TIME_ELEMENT_GRAMMAR = grammarsOf(X12_TIME_ELEMENT_LAYOUT, "");
220
+ /**
221
+ * The milliseconds one unit of each decimal-seconds part is worth: a tenth of a second is 100
222
+ * and a hundredth is 10. The reader multiplies by it and the writer divides by it, so the two
223
+ * agree on what `D` and `DD` mean.
224
+ */
225
+ export const MILLISECONDS_PER_DECIMAL_SECOND = { SD: 100, SDD: 10 };
226
+ /**
227
+ * Look a form of X12 data element 337 up by its mask, for the writer
228
+ * (`writeX12TimeElement`), whose caller names the form. The reader (`readX12Time`) is given no
229
+ * form: it tries the grammar of each form in the same table.
230
+ *
231
+ * - Matching is exact and by own key, so `"__proto__"`, `" HHMM"` and `"hhmm"` are not forms.
232
+ * - Null for a data element 1250 code (`TM`, `TS`): a qualifier is not a mask.
233
+ * - Null for a non-string argument.
234
+ *
235
+ * @param form the element's mask: `HHMM`, `HHMMSS`, `HHMMSSD` or `HHMMSSDD`
236
+ * @returns the form's parts in mask order, as a single time, or null
237
+ *
238
+ * @example x12TimeElementLayoutOf("HHMMSSDD") // { kind: "time", start: ["HH", "MI", "SS", "SDD"] }
239
+ * @example x12TimeElementLayoutOf("TS") // null (a 1250 code, not a mask)
240
+ * @example x12TimeElementLayoutOf("__proto__") // null
241
+ */
242
+ export function x12TimeElementLayoutOf(form) {
243
+ return typeof form === "string" &&
244
+ Object.hasOwn(X12_TIME_ELEMENT_LAYOUT, form)
245
+ ? X12_TIME_ELEMENT_LAYOUT[form]
246
+ : null;
247
+ }
248
+ /**
249
+ * The 56 X12 623 codes, release 008010, in dictionary order: `01`–`12` (UTC+1 … UTC+12), `13`–`24`
250
+ * (UTC−12 … UTC−1, descending), `25`–`29` (the half-hour offsets, added in release 006010), then
251
+ * the 27 letter codes. Release 005010 has the 51 codes other than `25`–`29`. Membership is by
252
+ * this list, never by shape. `TS`, `TT`, `CD` and `MD` are also codes of data element 1250, with
253
+ * unrelated meanings there.
254
+ */
255
+ export const X12_TIME_CODES = [
256
+ // fallow-ignore-next-line code-duplication -- the 56 DE 623 codes as a runtime list; `X12TimeCode` in types/edi.ts is the same enumeration in type position
257
+ "01",
258
+ "02",
259
+ "03",
260
+ "04",
261
+ "05",
262
+ "06",
263
+ "07",
264
+ "08",
265
+ "09",
266
+ "10",
267
+ "11",
268
+ "12",
269
+ "13",
270
+ "14",
271
+ "15",
272
+ "16",
273
+ "17",
274
+ "18",
275
+ "19",
276
+ "20",
277
+ "21",
278
+ "22",
279
+ "23",
280
+ "24",
281
+ "25",
282
+ "26",
283
+ "27",
284
+ "28",
285
+ "29",
286
+ "AD",
287
+ "AS",
288
+ "AT",
289
+ "CD",
290
+ "CS",
291
+ "CT",
292
+ "ED",
293
+ "ES",
294
+ "ET",
295
+ "GM",
296
+ "HD",
297
+ "HS",
298
+ "HT",
299
+ "LT",
300
+ "MD",
301
+ "MS",
302
+ "MT",
303
+ "ND",
304
+ "NS",
305
+ "NT",
306
+ "PD",
307
+ "PS",
308
+ "PT",
309
+ "TD",
310
+ "TS",
311
+ "TT",
312
+ "UT",
313
+ ];
314
+ const EDI_CODE_TABLES = {
315
+ edifact: {
316
+ layouts: EDIFACT_DTM_LAYOUT,
317
+ grammars: EDIFACT_DTM_GRAMMAR,
318
+ // UNTDID 2379, every directory read (twelve, from D.93A to D.22B): a period is given
319
+ // "without hyphen".
320
+ rangeSeparator: "",
321
+ },
322
+ x12: {
323
+ layouts: X12_DATE_TIME_PERIOD_LAYOUT,
324
+ grammars: X12_DATE_TIME_PERIOD_GRAMMAR,
325
+ // X12 1250: each range definition gives the format with its hyphen.
326
+ rangeSeparator: "-",
327
+ },
328
+ };
329
+ /**
330
+ * Look a format code up in its standard's tables: the one lookup the classifier, the reader and
331
+ * the writer share.
332
+ *
333
+ * - Matching is exact and by own key, so `"__proto__"`, `" 102"` and `"d8"` are not codes.
334
+ * - Null for a code that is not read (`101`, `209`, `D6`, `UN`), like an unknown code.
335
+ * - Null for a standard that is not `"edifact"` or `"x12"`, and for a non-string argument.
336
+ *
337
+ * @param standard which element the code belongs to
338
+ * @param code the 2379 or 1250 format code
339
+ * @returns the code's kind, layout, grammar and range separator, or null
340
+ *
341
+ * @example ediCodeOf("edifact", "718") // { kind: "datePeriod", valueKind: "date", layout: { kind: "datePeriod", start: ["CCYY", "MM", "DD"], end: [...] }, grammar: /^…$/, rangeSeparator: "" }
342
+ * @example ediCodeOf("x12", "RD8") // { kind: "dateRange", valueKind: "date", layout: {...}, grammar: /^…$/, rangeSeparator: "-" }
343
+ * @example ediCodeOf("edifact", "101") // null (a two-digit year: not read)
344
+ * @example ediCodeOf("edifact", "D8") // null (an X12 code)
345
+ */
346
+ export function ediCodeOf(standard, code) {
347
+ if (typeof standard !== "string" || typeof code !== "string") {
348
+ return null;
349
+ }
350
+ if (!Object.hasOwn(EDI_CODE_TABLES, standard)) {
351
+ return null;
352
+ }
353
+ const table = EDI_CODE_TABLES[standard];
354
+ if (!Object.hasOwn(table.layouts, code)) {
355
+ return null;
356
+ }
357
+ const layout = table.layouts[code];
358
+ const grammar = table.grammars[code];
359
+ return {
360
+ kind: layout.kind,
361
+ valueKind: VALUE_KIND[layout.kind],
362
+ layout,
363
+ grammar,
364
+ rangeSeparator: table.rangeSeparator,
365
+ };
366
+ }
367
+ /**
368
+ * Look a format code up as a code of one kind: null unless the code is in its standard's tables
369
+ * under exactly that kind. Each public function names its own kind here, so a code of another
370
+ * kind (`203` given to a date function) is refused before any value is read.
371
+ *
372
+ * @param standard which element the code belongs to
373
+ * @param kind the kind of value the calling function reads or writes
374
+ * @param code the 2379 or 1250 format code
375
+ * @returns the code's entry, or null when the code is not one of that kind
376
+ *
377
+ * @example ediCodeOfKind("edifact", "date", "102") // { kind: "date", … }
378
+ * @example ediCodeOfKind("edifact", "date", "203") // null (a date-time code)
379
+ * @example ediCodeOfKind("x12", "dateRange", "RD8") // { kind: "dateRange", … }
380
+ */
381
+ export function ediCodeOfKind(standard, kind, code) {
382
+ const entry = ediCodeOf(standard, code);
383
+ return entry !== null && entry.kind === kind ? entry : null;
384
+ }
@@ -5,7 +5,9 @@ export declare const ENGLISH_MONTH_NAMES: readonly ["Jan", "Feb", "Mar", "Apr",
5
5
  * The `Mon, 15 Jul 2024 12:00:00` stem RFC 5322 date-time and RFC 9110 IMF-fixdate share: English
6
6
  * day and month names, zero-padded fields, read from the date-time's own wall clock.
7
7
  *
8
- * @param zdt the date-time; the caller has already rejected a year outside 0-9999
8
+ * @param zdt the date-time; the caller has already rejected a year its grammar cannot hold: a
9
+ * negative one for RFC 5322 (`year = 4*DIGIT`, so five digits are written in full), and any
10
+ * outside 0000–9999 for RFC 9110 (`year = 4DIGIT`)
9
11
  * @returns the stem, without a zone or `GMT` suffix
10
12
  * @example englishDateTimeStem(Temporal.ZonedDateTime.from("2024-07-15T12:00:05+00:00[UTC]")) // "Mon, 15 Jul 2024 12:00:05"
11
13
  * @example englishDateTimeStem(Temporal.ZonedDateTime.from("0099-01-03T04:05:06+00:00[UTC]")) // "Sat, 03 Jan 0099 04:05:06"
@@ -2,8 +2,7 @@
2
2
  // RFC 7231) mandate English weekday/month
3
3
  // abbreviations regardless of the caller's locale — these are fixed,
4
4
  // non-locale-adaptive grammars, not a display format, so hardcoding the
5
- // English names here is not the i18n bug it would be in a formatter (see
6
- // roadmap Decision 1 / J13's "Why this survives Decision 1").
5
+ // English names here is not the i18n bug it would be in a formatter.
7
6
  // Index 0 = Monday, aligned with Temporal's 1-7 `dayOfWeek` via `[dayOfWeek - 1]`.
8
7
  export const ENGLISH_WEEKDAY_NAMES = [
9
8
  "Mon",
@@ -33,7 +32,9 @@ export const ENGLISH_MONTH_NAMES = [
33
32
  * The `Mon, 15 Jul 2024 12:00:00` stem RFC 5322 date-time and RFC 9110 IMF-fixdate share: English
34
33
  * day and month names, zero-padded fields, read from the date-time's own wall clock.
35
34
  *
36
- * @param zdt the date-time; the caller has already rejected a year outside 0-9999
35
+ * @param zdt the date-time; the caller has already rejected a year its grammar cannot hold: a
36
+ * negative one for RFC 5322 (`year = 4*DIGIT`, so five digits are written in full), and any
37
+ * outside 0000–9999 for RFC 9110 (`year = 4DIGIT`)
37
38
  * @returns the stem, without a zone or `GMT` suffix
38
39
  * @example englishDateTimeStem(Temporal.ZonedDateTime.from("2024-07-15T12:00:05+00:00[UTC]")) // "Mon, 15 Jul 2024 12:00:05"
39
40
  * @example englishDateTimeStem(Temporal.ZonedDateTime.from("0099-01-03T04:05:06+00:00[UTC]")) // "Sat, 03 Jan 0099 04:05:06"
@@ -8,6 +8,8 @@ export declare const MIN_EPOCH_NANOSECONDS = -8640000000000000000000n;
8
8
  * +10^8 days from the Unix epoch, i.e. `+275760-09-13T00:00:00Z`.
9
9
  */
10
10
  export declare const MAX_EPOCH_NANOSECONDS = 8640000000000000000000n;
11
+ /** TC39 `CheckISODaysRange`: a date may sit at most 10^8 days from the Unix epoch. */
12
+ export declare const MAX_ISO_EPOCH_DAYS = 100000000;
11
13
  /**
12
14
  * Digits in `MAX_EPOCH_NANOSECONDS` (22) — the longest a decimal form of an in-range
13
15
  * epoch-nanosecond value can be, sign excluded.
@@ -8,6 +8,8 @@ export const MIN_EPOCH_NANOSECONDS = -8640000000000000000000n;
8
8
  * +10^8 days from the Unix epoch, i.e. `+275760-09-13T00:00:00Z`.
9
9
  */
10
10
  export const MAX_EPOCH_NANOSECONDS = 8640000000000000000000n;
11
+ /** TC39 `CheckISODaysRange`: a date may sit at most 10^8 days from the Unix epoch. */
12
+ export const MAX_ISO_EPOCH_DAYS = 100_000_000;
11
13
  /**
12
14
  * Digits in `MAX_EPOCH_NANOSECONDS` (22) — the longest a decimal form of an in-range
13
15
  * epoch-nanosecond value can be, sign excluded.
@@ -0,0 +1,37 @@
1
+ /**
2
+ * An ISO 8601 duration as exact elapsed nanoseconds, signed, or `null` when it is not one.
3
+ *
4
+ * The transport rule for a span of exact time (`transitTime`, `classifyPunctuality`,
5
+ * `nextDeparture`, …):
6
+ *
7
+ * - Hours, minutes, seconds and fractions are elapsed time, and a day is 24 hours exactly. That
8
+ * is how TC39 Temporal's `Duration.prototype.round` and `total` read a day when no
9
+ * `relativeTo` is given.
10
+ * - Years, months and weeks return `null`: `round` and `total` require a `relativeTo` for them,
11
+ * so they have no exact length on their own. A zero calendar component (`P0Y1D`) changes
12
+ * nothing. (`Temporal.Instant#add` accepts no date unit at all, days included; callers add the
13
+ * nanoseconds this returns instead.)
14
+ * - The result keeps the duration's sign, so a caller that needs a non-negative amount checks
15
+ * `< 0n` itself. `-PT0S` is `0n`.
16
+ * - Summed in bigint, so it stays exact past 2^53 ns and across the whole instant range.
17
+ *
18
+ * @param value candidate ISO 8601 duration string
19
+ * @returns the duration in nanoseconds, negative for a negative duration, or null on invalid input
20
+ *
21
+ * @example exactDurationNanoseconds("PT1H") // 3600000000000n
22
+ * @example exactDurationNanoseconds("-PT5M") // -300000000000n
23
+ * @example exactDurationNanoseconds("P1D") // 86400000000000n
24
+ * @example exactDurationNanoseconds("P1W") // null
25
+ */
26
+ export declare function exactDurationNanoseconds(value: unknown): bigint | null;
27
+ /**
28
+ * `exactDurationNanoseconds` for an amount that may not be negative — a tolerance, a minimum
29
+ * connection — or `null`. Zero is allowed, and `-PT0S` is zero.
30
+ *
31
+ * @param value candidate ISO 8601 duration string
32
+ * @returns the duration in nanoseconds, zero or more, or null on invalid input or a negative duration
33
+ *
34
+ * @example nonNegativeExactDurationNanoseconds("PT15M") // 900000000000n
35
+ * @example nonNegativeExactDurationNanoseconds("-PT15M") // null
36
+ */
37
+ export declare function nonNegativeExactDurationNanoseconds(value: unknown): bigint | null;
@@ -0,0 +1,64 @@
1
+ import { Temporal } from "@js-temporal/polyfill";
2
+ import { NANOSECONDS_PER_DAY, NANOSECONDS_PER_MICROSECOND, NANOSECONDS_PER_MILLISECOND, NANOSECONDS_PER_SECOND, } from "./foreignEpochs.js";
3
+ const NANOSECONDS_PER_HOUR = 3600000000000n;
4
+ const NANOSECONDS_PER_MINUTE = 60000000000n;
5
+ /**
6
+ * An ISO 8601 duration as exact elapsed nanoseconds, signed, or `null` when it is not one.
7
+ *
8
+ * The transport rule for a span of exact time (`transitTime`, `classifyPunctuality`,
9
+ * `nextDeparture`, …):
10
+ *
11
+ * - Hours, minutes, seconds and fractions are elapsed time, and a day is 24 hours exactly. That
12
+ * is how TC39 Temporal's `Duration.prototype.round` and `total` read a day when no
13
+ * `relativeTo` is given.
14
+ * - Years, months and weeks return `null`: `round` and `total` require a `relativeTo` for them,
15
+ * so they have no exact length on their own. A zero calendar component (`P0Y1D`) changes
16
+ * nothing. (`Temporal.Instant#add` accepts no date unit at all, days included; callers add the
17
+ * nanoseconds this returns instead.)
18
+ * - The result keeps the duration's sign, so a caller that needs a non-negative amount checks
19
+ * `< 0n` itself. `-PT0S` is `0n`.
20
+ * - Summed in bigint, so it stays exact past 2^53 ns and across the whole instant range.
21
+ *
22
+ * @param value candidate ISO 8601 duration string
23
+ * @returns the duration in nanoseconds, negative for a negative duration, or null on invalid input
24
+ *
25
+ * @example exactDurationNanoseconds("PT1H") // 3600000000000n
26
+ * @example exactDurationNanoseconds("-PT5M") // -300000000000n
27
+ * @example exactDurationNanoseconds("P1D") // 86400000000000n
28
+ * @example exactDurationNanoseconds("P1W") // null
29
+ */
30
+ export function exactDurationNanoseconds(value) {
31
+ if (typeof value !== "string") {
32
+ return null;
33
+ }
34
+ try {
35
+ const duration = Temporal.Duration.from(value);
36
+ if (duration.years !== 0 || duration.months !== 0 || duration.weeks !== 0) {
37
+ return null;
38
+ }
39
+ return (BigInt(duration.days) * NANOSECONDS_PER_DAY +
40
+ BigInt(duration.hours) * NANOSECONDS_PER_HOUR +
41
+ BigInt(duration.minutes) * NANOSECONDS_PER_MINUTE +
42
+ BigInt(duration.seconds) * NANOSECONDS_PER_SECOND +
43
+ BigInt(duration.milliseconds) * NANOSECONDS_PER_MILLISECOND +
44
+ BigInt(duration.microseconds) * NANOSECONDS_PER_MICROSECOND +
45
+ BigInt(duration.nanoseconds));
46
+ }
47
+ catch {
48
+ return null;
49
+ }
50
+ }
51
+ /**
52
+ * `exactDurationNanoseconds` for an amount that may not be negative — a tolerance, a minimum
53
+ * connection — or `null`. Zero is allowed, and `-PT0S` is zero.
54
+ *
55
+ * @param value candidate ISO 8601 duration string
56
+ * @returns the duration in nanoseconds, zero or more, or null on invalid input or a negative duration
57
+ *
58
+ * @example nonNegativeExactDurationNanoseconds("PT15M") // 900000000000n
59
+ * @example nonNegativeExactDurationNanoseconds("-PT15M") // null
60
+ */
61
+ export function nonNegativeExactDurationNanoseconds(value) {
62
+ const nanoseconds = exactDurationNanoseconds(value);
63
+ return nanoseconds === null || nanoseconds < 0n ? null : nanoseconds;
64
+ }
@@ -0,0 +1,72 @@
1
+ /**
2
+ * How an exact moment was written, so a result can be written the same way: in a named zone
3
+ * (the bracket), at a UTC offset (its text exactly as written), or as a `Z` instant.
4
+ */
5
+ export type MomentNotation = {
6
+ kind: "zone";
7
+ timeZone: string;
8
+ } | {
9
+ kind: "offset";
10
+ offset: string;
11
+ } | {
12
+ kind: "utc";
13
+ };
14
+ /** An exact moment: its epoch nanoseconds and how it was written. */
15
+ export type ExactMoment = {
16
+ nanoseconds: bigint;
17
+ notation: MomentNotation;
18
+ };
19
+ /**
20
+ * Read an exact moment the way `transitTime` reads a departure, or `null`.
21
+ *
22
+ * - A zoned string (`…-04:00[America/New_York]`) is read through its bracket, which must name a
23
+ * real zone that agrees with the offset, as `isValidZonedDateTime` requires. An offset written
24
+ * to the minute agrees when it is the zone's sub-minute offset rounded (TC39
25
+ * `ToTemporalZonedDateTime`, match-minutes), which is how `writeExactMoment` writes one.
26
+ * - A wall time with a bracket and no offset is read in that zone with the `"compatible"`
27
+ * disambiguation policy (`context/reference/LOCAL_TIME_RESOLUTION.md`): an **ambiguous** wall
28
+ * time, a fall-back hour the clock ran through twice, resolves to the **earlier** instant
29
+ * (`2024-11-03T01:30:00[America/New_York]` is `01:30-04:00`), and a **nonexistent** one, a
30
+ * spring-forward hour the clock skipped, to the **later** instant
31
+ * (`2024-03-10T02:30:00[America/New_York]` is `03:30-04:00`). A caller that must not guess
32
+ * refuses the offset-less form before calling, as `nextDeparture` does.
33
+ * - A string that names a zone the zoned read rejects is `null`; it never falls back to its
34
+ * offset. That includes a zoned string whose local date is −271821-04-19, which
35
+ * `Temporal.ZonedDateTime.from` refuses although its instant is in range.
36
+ * - Otherwise an instant (`Z` or an offset) as `parseInstantNanoseconds` reads it: calendar and
37
+ * elective annotations are ignored and a critical unknown one is rejected. Its offset text is
38
+ * kept exactly as written, sub-minute and `,` fractions included.
39
+ *
40
+ * @param value candidate zoned datetime or instant string
41
+ * @returns the moment's epoch nanoseconds and notation, or null on invalid input
42
+ *
43
+ * @example readExactMoment("2024-06-15T10:00:00+09:00") // { nanoseconds: 1718413200000000000n, notation: { kind: "offset", offset: "+09:00" } }
44
+ * @example readExactMoment("2024-06-15T10:00:00Z[Not/AZone]") // null
45
+ * @example readExactMoment("2024-03-10T02:30:00[America/New_York]") // { nanoseconds: 1710055800000000000n, notation: { kind: "zone", timeZone: "America/New_York" } } (nonexistent: the later instant, 03:30-04:00)
46
+ */
47
+ export declare function readExactMoment(value: unknown): ExactMoment | null;
48
+ /**
49
+ * Write epoch nanoseconds the way a moment was written: in its zone, at its offset text, or as a
50
+ * `Z` instant. `""` when the nanoseconds leave the instant range (±8.64e21 ns).
51
+ *
52
+ * - A zone notation is written as Temporal writes a `ZonedDateTime`: the offset in force at that
53
+ * instant, rounded to the minute (`-00:45` for Monrovia's −00:44:30), then the bracket.
54
+ * `readExactMoment` and `parseInstantNanoseconds` read that string back as the same instant,
55
+ * with two exceptions, both Temporal's own. A wall time repeated inside a sub-minute offset
56
+ * change reads as its first pass, in both readers (`parseInstantNanoseconds` states the
57
+ * rule). And `readExactMoment`, a zoned read, refuses a string whose local date is
58
+ * −271821-04-19 (`CheckISODaysRange` in `Temporal.ZonedDateTime.from`): the string written
59
+ * for the first hours of the instant range in a zone west of Greenwich reads as `null` there,
60
+ * and as its instant in `parseInstantNanoseconds`
61
+ * (`context/domination/js-temporal-polyfill-bugs.md` § J).
62
+ * - An offset notation keeps its text as written. The wall clock is shifted, never the instant
63
+ * (`wallClockAtOffset`), so the last hours of the range still write at a positive offset.
64
+ *
65
+ * @param nanoseconds epoch nanoseconds of the moment to write
66
+ * @param notation how to write it, from `readExactMoment`
67
+ * @returns the moment as a zoned, offset or `Z` string, or "" when it is out of range
68
+ *
69
+ * @example writeExactMoment(0n, { kind: "offset", offset: "+09:00" }) // "1970-01-01T09:00:00+09:00"
70
+ * @example writeExactMoment(0n, { kind: "zone", timeZone: "UTC" }) // "1970-01-01T00:00:00+00:00[UTC]"
71
+ */
72
+ export declare function writeExactMoment(nanoseconds: bigint, notation: MomentNotation): string;