@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,34 @@
1
+ import { parseDutyLog } from "../../internal/dutyLog.js";
2
+ /**
3
+ * Validate whether a value is a duty log every `duty/` function accepts.
4
+ *
5
+ * - True for an array of `{ status, start, end }` entries where `status` is a string and `start`
6
+ * and `end` are ISO 8601 instant strings (offset required, no leap second), `end` after `start`.
7
+ * - Entries must be ordered by `start` and must not overlap. One may start exactly where the
8
+ * previous one ends, since entries are half-open, or later, leaving a gap. Order is by instant,
9
+ * not text.
10
+ * - `[]` is a valid, empty log. Extra keys on an entry are ignored.
11
+ * - Every other `duty/` function returns its sentinel for a log this rejects.
12
+ * - Returns `false` for a non-array, an entry that is not an object, a non-string status, a bound
13
+ * that is not an instant, a zero-length or inverted entry, and entries out of order or
14
+ * overlapping.
15
+ *
16
+ * @param log candidate array of `{ status, start, end }` records
17
+ * @returns boolean indicating whether the log is valid
18
+ *
19
+ * @example isValidDutyLog([{ status: "off", start: "2024-01-01T00:00:00Z", end: "2024-01-01T10:00:00Z" }, { status: "driving", start: "2024-01-01T10:00:00Z", end: "2024-01-01T15:00:00Z" }]) // true
20
+ * @example isValidDutyLog([]) // true — an empty log
21
+ * @example isValidDutyLog([{ status: "on", start: "2024-01-01T02:00:00Z", end: "2024-01-01T01:00:00Z" }]) // false — inverted
22
+ * @example isValidDutyLog([{ status: "on", start: "2024-01-01T00:00:00Z", end: "2024-01-01T02:00:00Z" }, { status: "off", start: "2024-01-01T01:59:59Z", end: "2024-01-01T03:00:00Z" }]) // false — overlapping
23
+ * @example isValidDutyLog([{ status: "on", start: "2024-01-01T00:00:00", end: "2024-01-01T01:00:00Z" }]) // false — no offset
24
+ */
25
+ export function isValidDutyLog(log) {
26
+ try {
27
+ return parseDutyLog(log) !== null;
28
+ }
29
+ catch {
30
+ // Never throws (Core Rule 3): a hostile
31
+ // argument is invalid input, not an exception.
32
+ return false;
33
+ }
34
+ }
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from "@js-temporal/polyfill";
2
2
  export * from "./calendar/index.js";
3
3
  export * from "./duration/index.js";
4
+ export * from "./duty/index.js";
4
5
  export * from "./instant/index.js";
5
6
  export * from "./intermodal/index.js";
6
7
  export * from "./interval/index.js";
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from "@js-temporal/polyfill";
2
2
  export * from "./calendar/index.js";
3
3
  export * from "./duration/index.js";
4
+ export * from "./duty/index.js";
4
5
  export * from "./instant/index.js";
5
6
  export * from "./intermodal/index.js";
6
7
  export * from "./interval/index.js";
@@ -32,9 +32,12 @@ export type LocalTimeClassification = "unique" | "ambiguous" | "nonexistent";
32
32
  * annotations are read as `Temporal.PlainDateTime.from` reads them, so a time zone annotation
33
33
  * is ignored and `timeZone` alone is the zone.
34
34
  * - Returns null on invalid input — never `"unique"`, which would read as a verdict.
35
+ * - `timeZone` may be a UTC offset, including one `getTimeZoneOffset` returned with seconds. A
36
+ * fixed offset names one instant for every wall time, so the classification is always `"unique"`.
35
37
  *
36
38
  * @param localDateTime zoneless ISO 8601 local datetime string (e.g. "2024-11-03T01:30:00")
37
- * @param timeZone IANA timeZone identifier the wall time is read in
39
+ * @param timeZone IANA name or UTC offset the wall time is read in: a time zone identifier
40
+ * (`+05:30`, `+0530`, `-08`) or a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
38
41
  * @returns "unique" | "ambiguous" | "nonexistent", or null on invalid input
39
42
  *
40
43
  * @example classifyLocal("2024-07-15T12:00:00", "America/New_York") // "unique"
@@ -44,6 +47,7 @@ export type LocalTimeClassification = "unique" | "ambiguous" | "nonexistent";
44
47
  * @example classifyLocal("2024-09-29T03:15:00", "Pacific/Chatham") // "nonexistent" (a 45-minute-offset zone's gap)
45
48
  * @example classifyLocal("2011-12-30T12:00:00", "Pacific/Apia") // "nonexistent" (the day Samoa skipped crossing the date line)
46
49
  * @example classifyLocal("2024-11-03T01:30:00", "UTC") // "unique" (UTC has no transitions)
50
+ * @example classifyLocal("1970-01-01T12:00:00", "-00:44:30") // "unique" (a fixed offset has no transitions)
47
51
  * @example classifyLocal("2024-11-03T01:30:00-04:00", "America/New_York") // null (not a zoneless wall time)
48
52
  * @example classifyLocal("2024-11-03T01:30:00", "Invalid/Zone") // null
49
53
  */
@@ -1,7 +1,6 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { isValidDateTime } from "../../plain/validate/index.js";
3
- import { isValidTimeZone } from "../../zoned/validate/index.js";
4
- import { plainToZoned } from "../../internal/index.js";
3
+ import { instantOfWallClock, isoStringBody, plainToZoned, zoneFrame, } from "../../internal/index.js";
5
4
  /**
6
5
  * Report whether a zoneless local wall time is unique, ambiguous or nonexistent in a zone —
7
6
  * before any policy resolves it.
@@ -20,9 +19,12 @@ import { plainToZoned } from "../../internal/index.js";
20
19
  * annotations are read as `Temporal.PlainDateTime.from` reads them, so a time zone annotation
21
20
  * is ignored and `timeZone` alone is the zone.
22
21
  * - Returns null on invalid input — never `"unique"`, which would read as a verdict.
22
+ * - `timeZone` may be a UTC offset, including one `getTimeZoneOffset` returned with seconds. A
23
+ * fixed offset names one instant for every wall time, so the classification is always `"unique"`.
23
24
  *
24
25
  * @param localDateTime zoneless ISO 8601 local datetime string (e.g. "2024-11-03T01:30:00")
25
- * @param timeZone IANA timeZone identifier the wall time is read in
26
+ * @param timeZone IANA name or UTC offset the wall time is read in: a time zone identifier
27
+ * (`+05:30`, `+0530`, `-08`) or a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
26
28
  * @returns "unique" | "ambiguous" | "nonexistent", or null on invalid input
27
29
  *
28
30
  * @example classifyLocal("2024-07-15T12:00:00", "America/New_York") // "unique"
@@ -32,17 +34,25 @@ import { plainToZoned } from "../../internal/index.js";
32
34
  * @example classifyLocal("2024-09-29T03:15:00", "Pacific/Chatham") // "nonexistent" (a 45-minute-offset zone's gap)
33
35
  * @example classifyLocal("2011-12-30T12:00:00", "Pacific/Apia") // "nonexistent" (the day Samoa skipped crossing the date line)
34
36
  * @example classifyLocal("2024-11-03T01:30:00", "UTC") // "unique" (UTC has no transitions)
37
+ * @example classifyLocal("1970-01-01T12:00:00", "-00:44:30") // "unique" (a fixed offset has no transitions)
35
38
  * @example classifyLocal("2024-11-03T01:30:00-04:00", "America/New_York") // null (not a zoneless wall time)
36
39
  * @example classifyLocal("2024-11-03T01:30:00", "Invalid/Zone") // null
37
40
  */
38
41
  export function classifyLocal(localDateTime, timeZone) {
39
- if (!isValidDateTime(localDateTime) || !isValidTimeZone(timeZone)) {
42
+ const frame = zoneFrame(timeZone);
43
+ if (!isValidDateTime(localDateTime) || frame === null) {
40
44
  return null;
41
45
  }
42
46
  try {
47
+ // A fixed offset has no transition: a wall time it can place is one instant, and one it
48
+ // cannot (past the instant range) throws.
49
+ if (frame.shiftNanoseconds !== 0n) {
50
+ instantOfWallClock(isoStringBody(localDateTime), frame);
51
+ return "unique";
52
+ }
43
53
  const wallClock = Temporal.PlainDateTime.from(localDateTime);
44
- const earliest = plainToZoned(wallClock, timeZone, "earlier");
45
- const latest = plainToZoned(wallClock, timeZone, "later");
54
+ const earliest = plainToZoned(wallClock, frame.timeZone, "earlier");
55
+ const latest = plainToZoned(wallClock, frame.timeZone, "later");
46
56
  if (earliest.epochNanoseconds === latest.epochNanoseconds) {
47
57
  return "unique";
48
58
  }
@@ -24,9 +24,15 @@ import type { OffsetInstant } from "./toOffsetInstant.js";
24
24
  * - With a `timeZone`, a sub-minute offset is *written* rounded to the minute, because RFC
25
25
  * 9557 has no field for the seconds — `Africa/Monrovia`'s `-00:44:30` renders as `-00:45`.
26
26
  * The bracketed zone is what resolves it, so the instant stays exact and the round trip
27
- * returns `-00:44:30`. Without a `timeZone` there is no zone to resolve against, so the
27
+ * returns `-00:44:30`. Two exceptions, both Temporal's own: a wall time repeated inside
28
+ * a sub-minute offset change reads back as its first pass (see `isValidInstant`), and a
29
+ * string whose local date is −271821-04-19 is refused by `toOffsetInstant`. Without a `timeZone` there is no zone to resolve against, so the
28
30
  * full `±HH:MM:SS` is written instead; that is ISO 8601, not RFC 9557.
29
31
  * - Returns `""` on invalid input.
32
+ * - A `timeZone` that is an offset with seconds (`-00:44:30`) returns `""`, as any offset there
33
+ * does. A written zone cannot carry seconds (RFC 9557 §4.1), so the result could not name it.
34
+ * Pass the IANA name as `timeZone`, or leave `timeZone` out for the local time with its full
35
+ * offset and no bracket.
30
36
  *
31
37
  * @param value `{ instant, offset, timeZone? }` pair, as produced by `toOffsetInstant`
32
38
  * @returns local ISO 8601 string carrying the pair's own offset, or "" on invalid input
@@ -1,6 +1,7 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
2
  import { formatUtcOffset, parseInstantNanoseconds, parseUtcOffsetNanoseconds, wallClockAtOffset, } from "../../internal/index.js";
3
3
  import { utcOffset } from "../../regex/index.js";
4
+ import { isObject } from "../../internal/isObject.js";
4
5
  /**
5
6
  * Render an instant-plus-offset pair back to the local time it describes.
6
7
  *
@@ -26,9 +27,15 @@ import { utcOffset } from "../../regex/index.js";
26
27
  * - With a `timeZone`, a sub-minute offset is *written* rounded to the minute, because RFC
27
28
  * 9557 has no field for the seconds — `Africa/Monrovia`'s `-00:44:30` renders as `-00:45`.
28
29
  * The bracketed zone is what resolves it, so the instant stays exact and the round trip
29
- * returns `-00:44:30`. Without a `timeZone` there is no zone to resolve against, so the
30
+ * returns `-00:44:30`. Two exceptions, both Temporal's own: a wall time repeated inside
31
+ * a sub-minute offset change reads back as its first pass (see `isValidInstant`), and a
32
+ * string whose local date is −271821-04-19 is refused by `toOffsetInstant`. Without a `timeZone` there is no zone to resolve against, so the
30
33
  * full `±HH:MM:SS` is written instead; that is ISO 8601, not RFC 9557.
31
34
  * - Returns `""` on invalid input.
35
+ * - A `timeZone` that is an offset with seconds (`-00:44:30`) returns `""`, as any offset there
36
+ * does. A written zone cannot carry seconds (RFC 9557 §4.1), so the result could not name it.
37
+ * Pass the IANA name as `timeZone`, or leave `timeZone` out for the local time with its full
38
+ * offset and no bracket.
32
39
  *
33
40
  * @param value `{ instant, offset, timeZone? }` pair, as produced by `toOffsetInstant`
34
41
  * @returns local ISO 8601 string carrying the pair's own offset, or "" on invalid input
@@ -48,7 +55,7 @@ import { utcOffset } from "../../regex/index.js";
48
55
  */
49
56
  export function fromOffsetInstant(value) {
50
57
  try {
51
- if (typeof value !== "object" || value === null) {
58
+ if (!isObject(value)) {
52
59
  return "";
53
60
  }
54
61
  const epochNanoseconds = parseInstantNanoseconds(value.instant);
@@ -1,16 +1,13 @@
1
1
  import type { Disambiguation } from "../../types/index.js";
2
2
  /**
3
- * Resolve a zoneless local wall time against an IANA zone and return the instant it names.
3
+ * Resolve a zoneless local wall time in a time zone and return the instant it names.
4
4
  *
5
5
  * Feeds deliver wall times with no offset all the time — "gate-out 08:00" — and turning one
6
6
  * into an instant takes a zone the sender did not send plus a policy for the two days a year
7
7
  * the mapping is not one-to-one. This states both.
8
8
  *
9
- * - `disambiguation` decides what happens when the wall time is ambiguous (a fall-back hour
10
- * that happens twice) or nonexistent (a spring-forward hour that never happens):
11
- * `"compatible"` (the default, matching Temporal), `"earlier"`, `"later"`, or `"reject"`,
12
- * which returns `""` rather than resolving. Call `classifyLocal` first to find out which
13
- * case you are in before a policy is applied.
9
+ * - Call `classifyLocal` first to find out whether the wall time is ambiguous or nonexistent
10
+ * before a `disambiguation` policy is applied.
14
11
  * - Returns a UTC instant, exactly — no rounding, so a nanosecond wall time survives. Pass it
15
12
  * to `toOffsetInstant` for the offset pair, or reach for `convertPlainDateTimeToZoned` when
16
13
  * what you want is the bracketed zoned string (it defaults to millisecond precision).
@@ -19,10 +16,14 @@ import type { Disambiguation } from "../../types/index.js";
19
16
  * are read as `Temporal.PlainDateTime.from` reads them, so a time zone annotation
20
17
  * (`[America/New_York]`) is ignored and `timeZone` alone resolves the wall time.
21
18
  * - Returns `""` on invalid input.
19
+ * - `timeZone` may be a UTC offset, including one `getTimeZoneOffset` returned with seconds. A
20
+ * fixed offset names one instant for every wall time, so `disambiguation` has nothing to decide
21
+ * and `"reject"` does not reject.
22
22
  *
23
23
  * @param localDateTime zoneless ISO 8601 local datetime string (e.g. "2024-11-03T01:30:00")
24
- * @param timeZone IANA timeZone identifier the wall time is read in
25
- * @param optionsArg optional: disambiguation ("compatible" | "earlier" | "later" | "reject")
24
+ * @param timeZone IANA name or UTC offset the wall time is read in: a time zone identifier
25
+ * (`+05:30`, `+0530`, `-08`) or a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
26
+ * @param optionsArg How an ambiguous or nonexistent wall time is resolved
26
27
  * @returns UTC instant string ending in "Z", or "" on invalid input
27
28
  *
28
29
  * @example resolveLocal("2024-07-15T12:00:00", "America/New_York") // "2024-07-15T16:00:00Z"
@@ -32,9 +33,18 @@ import type { Disambiguation } from "../../types/index.js";
32
33
  * @example resolveLocal("2024-03-10T02:30:00", "America/New_York") // "2024-03-10T07:30:00Z" (nonexistent; "compatible" takes the later)
33
34
  * @example resolveLocal("2024-03-10T02:30:00", "America/New_York", { disambiguation: "earlier" }) // "2024-03-10T06:30:00Z"
34
35
  * @example resolveLocal("2024-07-15T12:00:00-04:00", "America/New_York") // "" (not a zoneless wall time)
36
+ * @example resolveLocal("1970-01-01T12:00:00", "-00:44:30") // "1970-01-01T12:44:30Z" (a stored offset with seconds, what `getTimeZoneOffset` returns for Africa/Monrovia then)
35
37
  * @example resolveLocal("2024-07-15T12:00:00[foo=bar]", "America/New_York") // "2024-07-15T16:00:00Z" (elective annotation ignored)
36
38
  * @example resolveLocal("2024-07-15T12:00:00", "Invalid/Zone") // ""
37
39
  */
38
40
  export declare function resolveLocal(localDateTime: string, timeZone: string, optionsArg?: {
41
+ /**
42
+ * What happens when the wall time is ambiguous (a fall-back hour that happens twice) or
43
+ * nonexistent (a spring-forward hour that never happens). `"compatible"` takes the earlier
44
+ * instant of an ambiguous time and the later one of a nonexistent time, `"earlier"` and
45
+ * `"later"` take that side in both cases, and `"reject"` returns `""` rather than resolving.
46
+ *
47
+ * @defaultValue `"compatible"`, Temporal's default.
48
+ */
39
49
  disambiguation?: Disambiguation;
40
50
  }): string;
@@ -1,7 +1,7 @@
1
1
  import { isValidDateTime } from "../../plain/validate/index.js";
2
- import { isValidTimeZone } from "../../zoned/validate/index.js";
3
- import { isoStringBody, zonedDateTimeFrom } from "../../internal/index.js";
2
+ import { instantOfWallClock, isoStringBody, zonedDateTimeFrom, zoneFrame, } from "../../internal/index.js";
4
3
  import { isOptionsArgument } from "../../internal/isObject.js";
4
+ import { optionOrDefault } from "../../internal/optionOrDefault.js";
5
5
  const DISAMBIGUATIONS = [
6
6
  "compatible",
7
7
  "earlier",
@@ -9,17 +9,14 @@ const DISAMBIGUATIONS = [
9
9
  "reject",
10
10
  ];
11
11
  /**
12
- * Resolve a zoneless local wall time against an IANA zone and return the instant it names.
12
+ * Resolve a zoneless local wall time in a time zone and return the instant it names.
13
13
  *
14
14
  * Feeds deliver wall times with no offset all the time — "gate-out 08:00" — and turning one
15
15
  * into an instant takes a zone the sender did not send plus a policy for the two days a year
16
16
  * the mapping is not one-to-one. This states both.
17
17
  *
18
- * - `disambiguation` decides what happens when the wall time is ambiguous (a fall-back hour
19
- * that happens twice) or nonexistent (a spring-forward hour that never happens):
20
- * `"compatible"` (the default, matching Temporal), `"earlier"`, `"later"`, or `"reject"`,
21
- * which returns `""` rather than resolving. Call `classifyLocal` first to find out which
22
- * case you are in before a policy is applied.
18
+ * - Call `classifyLocal` first to find out whether the wall time is ambiguous or nonexistent
19
+ * before a `disambiguation` policy is applied.
23
20
  * - Returns a UTC instant, exactly — no rounding, so a nanosecond wall time survives. Pass it
24
21
  * to `toOffsetInstant` for the offset pair, or reach for `convertPlainDateTimeToZoned` when
25
22
  * what you want is the bracketed zoned string (it defaults to millisecond precision).
@@ -28,10 +25,14 @@ const DISAMBIGUATIONS = [
28
25
  * are read as `Temporal.PlainDateTime.from` reads them, so a time zone annotation
29
26
  * (`[America/New_York]`) is ignored and `timeZone` alone resolves the wall time.
30
27
  * - Returns `""` on invalid input.
28
+ * - `timeZone` may be a UTC offset, including one `getTimeZoneOffset` returned with seconds. A
29
+ * fixed offset names one instant for every wall time, so `disambiguation` has nothing to decide
30
+ * and `"reject"` does not reject.
31
31
  *
32
32
  * @param localDateTime zoneless ISO 8601 local datetime string (e.g. "2024-11-03T01:30:00")
33
- * @param timeZone IANA timeZone identifier the wall time is read in
34
- * @param optionsArg optional: disambiguation ("compatible" | "earlier" | "later" | "reject")
33
+ * @param timeZone IANA name or UTC offset the wall time is read in: a time zone identifier
34
+ * (`+05:30`, `+0530`, `-08`) or a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
35
+ * @param optionsArg How an ambiguous or nonexistent wall time is resolved
35
36
  * @returns UTC instant string ending in "Z", or "" on invalid input
36
37
  *
37
38
  * @example resolveLocal("2024-07-15T12:00:00", "America/New_York") // "2024-07-15T16:00:00Z"
@@ -41,6 +42,7 @@ const DISAMBIGUATIONS = [
41
42
  * @example resolveLocal("2024-03-10T02:30:00", "America/New_York") // "2024-03-10T07:30:00Z" (nonexistent; "compatible" takes the later)
42
43
  * @example resolveLocal("2024-03-10T02:30:00", "America/New_York", { disambiguation: "earlier" }) // "2024-03-10T06:30:00Z"
43
44
  * @example resolveLocal("2024-07-15T12:00:00-04:00", "America/New_York") // "" (not a zoneless wall time)
45
+ * @example resolveLocal("1970-01-01T12:00:00", "-00:44:30") // "1970-01-01T12:44:30Z" (a stored offset with seconds, what `getTimeZoneOffset` returns for Africa/Monrovia then)
44
46
  * @example resolveLocal("2024-07-15T12:00:00[foo=bar]", "America/New_York") // "2024-07-15T16:00:00Z" (elective annotation ignored)
45
47
  * @example resolveLocal("2024-07-15T12:00:00", "Invalid/Zone") // ""
46
48
  */
@@ -49,18 +51,20 @@ export function resolveLocal(localDateTime, timeZone, optionsArg) {
49
51
  if (!isOptionsArgument(optionsArg)) {
50
52
  return "";
51
53
  }
52
- const disambiguation = optionsArg?.disambiguation === undefined
53
- ? "compatible"
54
- : optionsArg.disambiguation;
54
+ const disambiguation = optionOrDefault(optionsArg?.disambiguation, "compatible");
55
+ const frame = zoneFrame(timeZone);
55
56
  if (!isValidDateTime(localDateTime) ||
56
- !isValidTimeZone(timeZone) ||
57
+ frame === null ||
57
58
  !DISAMBIGUATIONS.includes(disambiguation)) {
58
59
  return "";
59
60
  }
60
61
  try {
61
- return zonedDateTimeFrom(`${isoStringBody(localDateTime)}[${timeZone}]`, {
62
- disambiguation,
63
- })
62
+ // An offset with seconds is no time zone identifier, so it cannot go in a bracket. It needs
63
+ // none: the wall time at a fixed offset is one instant, whatever `disambiguation` says.
64
+ if (frame.shiftNanoseconds !== 0n) {
65
+ return instantOfWallClock(isoStringBody(localDateTime), frame).toString();
66
+ }
67
+ return zonedDateTimeFrom(`${isoStringBody(localDateTime)}[${frame.timeZone}]`, { disambiguation })
64
68
  .toInstant()
65
69
  .toString();
66
70
  }
@@ -1,17 +1,10 @@
1
1
  /**
2
2
  * An absolute instant paired with the local UTC offset in force where the event happened.
3
3
  *
4
- * @remarks Members:
5
- *
6
- * | Member | Type | Description |
7
- * | --- | --- | --- |
8
- * | `instant` | `string` | UTC instant, ISO 8601 ending in `Z` (e.g. `2024-07-15T16:00:00Z`). Orders events globally. |
9
- * | `offset` | `string` | UTC offset in force where the event happened, `±HH:MM` (or `±HH:MM:SS` for a pre-1972 zone that did not run on a whole minute). Renders the event as the human on the ground saw it. |
10
- * | `timeZone` | `string \| undefined` | IANA zone identifier, when one is known. Absent from most feeds, so absent from most pairs. |
11
- *
12
4
  * Neither `instant` nor `offset` derives from the other, which is why both are stored. It is
13
5
  * the shape GS1 EPCIS 2.0 (`eventTime` + a required `eventTimeZoneOffset`), UN/EDIFACT DTM
14
- * (qualifier `303`/`304`) and DICOM (`DT` + `&ZZXX`) all exchange.
6
+ * (format codes `205` and `208`, a date and time with a `±HHMM` offset) and DICOM (`DT` +
7
+ * `&ZZXX`) all exchange.
15
8
  *
16
9
  * @example
17
10
  * import { OffsetInstant } from "@northguild/gmt/instant";
@@ -22,8 +15,22 @@
22
15
  * };
23
16
  */
24
17
  export interface OffsetInstant {
18
+ /**
19
+ * The UTC instant, ISO 8601 ending in `Z` (e.g. `2024-07-15T16:00:00Z`). Orders events globally.
20
+ */
25
21
  instant: string;
22
+ /**
23
+ * The UTC offset in force where the event happened, `±HH:MM` (or `±HH:MM:SS` for a pre-1972
24
+ * zone that did not run on a whole minute). Renders the event as the human on the ground saw it.
25
+ */
26
26
  offset: string;
27
+ /**
28
+ * The IANA name of the zone, when one is known. Most feeds send none, so `toOffsetInstant` leaves
29
+ * it out unless the string or its `timeZone` argument names a zone.
30
+ *
31
+ * @defaultValue None. The pair names no zone, and `offset` alone places the instant on a local
32
+ * clock.
33
+ */
27
34
  timeZone?: string;
28
35
  }
29
36
  /**
@@ -46,12 +53,13 @@ export interface OffsetInstant {
46
53
  * event happened when all it has is the offset it already stores. Every other bracketed
47
54
  * identifier Temporal accepts is kept, including the single-component IANA names (`EST5EDT`,
48
55
  * `Zulu`), in its IANA casing.
49
- * - `timeZone` names the zone the offset is read in, and is how a UTC-only feed gets a pair
50
- * with a local offset. It also overrides a zone bracketed in the string — the instant is
51
- * unchanged either way, only the local rendering differs. It is validated with
52
- * `isValidTimeZone`, so any IANA Zone or Link name is accepted, single-component ones
53
- * (`Japan`, `Zulu`, `EST5EDT`) included. An offset identifier (`"-05:00"`) sets the offset
54
- * and, like a bracketed offset zone, yields no `timeZone` field.
56
+ * - `timeZone` names the zone the offset is read in, and is how a UTC-only feed gets a pair with a
57
+ * local offset. It also overrides a zone bracketed in the string — the instant is unchanged
58
+ * either way, only the local rendering differs. Any IANA Zone or Link name is accepted,
59
+ * single-component ones (`Japan`, `Zulu`, `EST5EDT`) included, and so is a UTC offset: a time
60
+ * zone identifier (`+05:30`, `+0530`, `-08`) or a stored offset (`±HH:MM[:SS]`, what
61
+ * `getTimeZoneOffset` returns). An offset (`"-05:00"`, `"-00:44:30"`) sets the pair's offset and,
62
+ * like a bracketed offset zone, yields no `timeZone` field.
55
63
  * - The returned `timeZone` is the identifier in its IANA casing on every path —
56
64
  * `"america/new_york"` comes back as `"America/New_York"` — because identifiers match
57
65
  * case-insensitively (ECMA-402). That is what the bracket path and `fromOffsetInstant` return,
@@ -68,10 +76,16 @@ export interface OffsetInstant {
68
76
  * rounding it would put the pair 30 seconds from the event it describes. Such a zone's
69
77
  * *string* still carries the rounded `-00:45`, because RFC 9557 caps a written offset at
70
78
  * minutes; the bracketed zone is what resolves it, so the instant stays exact.
79
+ * - A bracketed zone is checked as `Temporal.ZonedDateTime.from` checks it, which also rejects
80
+ * a local date of −271821-04-19. A zone west of Greenwich shows that date for the first hours
81
+ * of the instant range, so a zoned string written there
82
+ * (`-271821-04-19T23:59:00-00:01[Europe/London]`) returns null, although `isValidInstant`
83
+ * accepts it. Pass the instant in `Z` form with `timeZone` instead.
71
84
  * - Returns null on invalid input, not a zero-offset pair — `+00:00` is a real offset.
72
85
  *
73
86
  * @param value ISO 8601 instant string, with an offset designator and optionally a bracketed zone
74
- * @param timeZone optional IANA zone identifier to read the offset in
87
+ * @param timeZone optional IANA name or UTC offset to read the offset in: a time zone identifier
88
+ * (`+05:30`, `+0530`, `-08`) or a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
75
89
  * @returns `{ instant, offset, timeZone? }`, or null on invalid input
76
90
  *
77
91
  * @example toOffsetInstant("2024-07-15T12:00:00-04:00[America/New_York]") // { instant: "2024-07-15T16:00:00Z", offset: "-04:00", timeZone: "America/New_York" }
@@ -80,9 +94,12 @@ export interface OffsetInstant {
80
94
  * @example toOffsetInstant("2024-07-15T16:00:00Z", "America/New_York") // { instant: "2024-07-15T16:00:00Z", offset: "-04:00", timeZone: "America/New_York" }
81
95
  * @example toOffsetInstant("2024-01-15T17:00:00Z", "America/New_York") // { instant: "2024-01-15T17:00:00Z", offset: "-05:00", timeZone: "America/New_York" } — same wall time, different offset, six months apart
82
96
  * @example toOffsetInstant("1970-01-01T00:00:00Z", "Africa/Monrovia") // { instant: "1970-01-01T00:00:00Z", offset: "-00:44:30", timeZone: "Africa/Monrovia" }
97
+ * @example toOffsetInstant("1970-01-01T12:44:30Z", "-00:44:30") // { instant: "1970-01-01T12:44:30Z", offset: "-00:44:30" } — a stored offset with seconds, and no timeZone field
83
98
  * @example toOffsetInstant("1969-12-31T23:15:30-00:45[Africa/Monrovia]") // { instant: "1970-01-01T00:00:00Z", offset: "-00:44:30", timeZone: "Africa/Monrovia" } — the zone, not the rounded offset, fixes the instant
84
99
  * @example toOffsetInstant("2024-07-15T12:00:00-04:00[-04:00]") // { instant: "2024-07-15T16:00:00Z", offset: "-04:00" } — a bracketed offset is not a zone, so no timeZone field
85
100
  * @example toOffsetInstant("2024-07-15T12:00:00-05:00[America/New_York]") // null (offset contradicts the bracketed zone)
101
+ * @example toOffsetInstant("-271821-04-19T23:59:00-00:01[Europe/London]") // null (a bracketed zone on a local date before Temporal's date range)
102
+ * @example toOffsetInstant("-271821-04-20T00:00:15Z", "Europe/London") // { instant: "-271821-04-20T00:00:15Z", offset: "-00:01:15", timeZone: "Europe/London" }
86
103
  * @example toOffsetInstant("2024-07-15T12:00:00-04:00[foo=bar]") // { instant: "2024-07-15T16:00:00Z", offset: "-04:00" } — an elective annotation is ignored
87
104
  * @example toOffsetInstant("2024-07-15T12:00:00-04:00[!foo=bar]") // null (an unknown critical annotation)
88
105
  * @example toOffsetInstant("2024-07-15T12:00:00") // null (no offset designator)
@@ -1,7 +1,6 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
- import { formatUtcOffset, isoStringBody, parseInstantNanoseconds, TIME_ZONE_ANNOTATION, zonedDateTimeFrom, } from "../../internal/index.js";
2
+ import { formatUtcOffset, frameOffset, isoStringBody, parseInstantNanoseconds, TIME_ZONE_ANNOTATION, zonedDateTimeFrom, zoneFrame, } from "../../internal/index.js";
3
3
  import { utcOffset } from "../../regex/index.js";
4
- import { isValidTimeZone } from "../../zoned/validate/index.js";
5
4
  /** A leading RFC 9557 time zone annotation: `[zone]` or `[!zone]`, with no `=`. */
6
5
  const timeZoneAnnotation = new RegExp(`^${TIME_ZONE_ANNOTATION}`);
7
6
  /**
@@ -24,12 +23,13 @@ const timeZoneAnnotation = new RegExp(`^${TIME_ZONE_ANNOTATION}`);
24
23
  * event happened when all it has is the offset it already stores. Every other bracketed
25
24
  * identifier Temporal accepts is kept, including the single-component IANA names (`EST5EDT`,
26
25
  * `Zulu`), in its IANA casing.
27
- * - `timeZone` names the zone the offset is read in, and is how a UTC-only feed gets a pair
28
- * with a local offset. It also overrides a zone bracketed in the string — the instant is
29
- * unchanged either way, only the local rendering differs. It is validated with
30
- * `isValidTimeZone`, so any IANA Zone or Link name is accepted, single-component ones
31
- * (`Japan`, `Zulu`, `EST5EDT`) included. An offset identifier (`"-05:00"`) sets the offset
32
- * and, like a bracketed offset zone, yields no `timeZone` field.
26
+ * - `timeZone` names the zone the offset is read in, and is how a UTC-only feed gets a pair with a
27
+ * local offset. It also overrides a zone bracketed in the string — the instant is unchanged
28
+ * either way, only the local rendering differs. Any IANA Zone or Link name is accepted,
29
+ * single-component ones (`Japan`, `Zulu`, `EST5EDT`) included, and so is a UTC offset: a time
30
+ * zone identifier (`+05:30`, `+0530`, `-08`) or a stored offset (`±HH:MM[:SS]`, what
31
+ * `getTimeZoneOffset` returns). An offset (`"-05:00"`, `"-00:44:30"`) sets the pair's offset and,
32
+ * like a bracketed offset zone, yields no `timeZone` field.
33
33
  * - The returned `timeZone` is the identifier in its IANA casing on every path —
34
34
  * `"america/new_york"` comes back as `"America/New_York"` — because identifiers match
35
35
  * case-insensitively (ECMA-402). That is what the bracket path and `fromOffsetInstant` return,
@@ -46,10 +46,16 @@ const timeZoneAnnotation = new RegExp(`^${TIME_ZONE_ANNOTATION}`);
46
46
  * rounding it would put the pair 30 seconds from the event it describes. Such a zone's
47
47
  * *string* still carries the rounded `-00:45`, because RFC 9557 caps a written offset at
48
48
  * minutes; the bracketed zone is what resolves it, so the instant stays exact.
49
+ * - A bracketed zone is checked as `Temporal.ZonedDateTime.from` checks it, which also rejects
50
+ * a local date of −271821-04-19. A zone west of Greenwich shows that date for the first hours
51
+ * of the instant range, so a zoned string written there
52
+ * (`-271821-04-19T23:59:00-00:01[Europe/London]`) returns null, although `isValidInstant`
53
+ * accepts it. Pass the instant in `Z` form with `timeZone` instead.
49
54
  * - Returns null on invalid input, not a zero-offset pair — `+00:00` is a real offset.
50
55
  *
51
56
  * @param value ISO 8601 instant string, with an offset designator and optionally a bracketed zone
52
- * @param timeZone optional IANA zone identifier to read the offset in
57
+ * @param timeZone optional IANA name or UTC offset to read the offset in: a time zone identifier
58
+ * (`+05:30`, `+0530`, `-08`) or a stored offset (`±HH:MM[:SS]`, what `getTimeZoneOffset` returns)
53
59
  * @returns `{ instant, offset, timeZone? }`, or null on invalid input
54
60
  *
55
61
  * @example toOffsetInstant("2024-07-15T12:00:00-04:00[America/New_York]") // { instant: "2024-07-15T16:00:00Z", offset: "-04:00", timeZone: "America/New_York" }
@@ -58,9 +64,12 @@ const timeZoneAnnotation = new RegExp(`^${TIME_ZONE_ANNOTATION}`);
58
64
  * @example toOffsetInstant("2024-07-15T16:00:00Z", "America/New_York") // { instant: "2024-07-15T16:00:00Z", offset: "-04:00", timeZone: "America/New_York" }
59
65
  * @example toOffsetInstant("2024-01-15T17:00:00Z", "America/New_York") // { instant: "2024-01-15T17:00:00Z", offset: "-05:00", timeZone: "America/New_York" } — same wall time, different offset, six months apart
60
66
  * @example toOffsetInstant("1970-01-01T00:00:00Z", "Africa/Monrovia") // { instant: "1970-01-01T00:00:00Z", offset: "-00:44:30", timeZone: "Africa/Monrovia" }
67
+ * @example toOffsetInstant("1970-01-01T12:44:30Z", "-00:44:30") // { instant: "1970-01-01T12:44:30Z", offset: "-00:44:30" } — a stored offset with seconds, and no timeZone field
61
68
  * @example toOffsetInstant("1969-12-31T23:15:30-00:45[Africa/Monrovia]") // { instant: "1970-01-01T00:00:00Z", offset: "-00:44:30", timeZone: "Africa/Monrovia" } — the zone, not the rounded offset, fixes the instant
62
69
  * @example toOffsetInstant("2024-07-15T12:00:00-04:00[-04:00]") // { instant: "2024-07-15T16:00:00Z", offset: "-04:00" } — a bracketed offset is not a zone, so no timeZone field
63
70
  * @example toOffsetInstant("2024-07-15T12:00:00-05:00[America/New_York]") // null (offset contradicts the bracketed zone)
71
+ * @example toOffsetInstant("-271821-04-19T23:59:00-00:01[Europe/London]") // null (a bracketed zone on a local date before Temporal's date range)
72
+ * @example toOffsetInstant("-271821-04-20T00:00:15Z", "Europe/London") // { instant: "-271821-04-20T00:00:15Z", offset: "-00:01:15", timeZone: "Europe/London" }
64
73
  * @example toOffsetInstant("2024-07-15T12:00:00-04:00[foo=bar]") // { instant: "2024-07-15T16:00:00Z", offset: "-04:00" } — an elective annotation is ignored
65
74
  * @example toOffsetInstant("2024-07-15T12:00:00-04:00[!foo=bar]") // null (an unknown critical annotation)
66
75
  * @example toOffsetInstant("2024-07-15T12:00:00") // null (no offset designator)
@@ -76,12 +85,13 @@ export function toOffsetInstant(value, timeZone) {
76
85
  if (epochNanoseconds === null) {
77
86
  return null;
78
87
  }
79
- if (timeZone !== undefined && !isValidTimeZone(timeZone)) {
88
+ const frame = timeZone === undefined ? undefined : zoneFrame(timeZone);
89
+ if (frame === null) {
80
90
  return null;
81
91
  }
82
92
  try {
83
- // `parseInstantNanoseconds` reads the offset and ignores the bracket, so a self-
84
- // contradictory string parses fine as an instant. `ZonedDateTime.from` is what checks
93
+ // `parseInstantNanoseconds` does not validate the bracket, so a self-contradictory string
94
+ // parses fine as an instant. `ZonedDateTime.from` is what checks
85
95
  // the two agree, and it runs even when `timeZone` overrides the bracketed zone.
86
96
  // Only a time zone annotation makes the string zoned: it is the first annotation, and the
87
97
  // only kind with no `=` (RFC 9557 §4.1). A calendar or elective annotation alone leaves an
@@ -109,7 +119,12 @@ export function toOffsetInstant(value, timeZone) {
109
119
  const instant = bracketed !== null
110
120
  ? bracketed.toInstant()
111
121
  : Temporal.Instant.fromEpochNanoseconds(epochNanoseconds);
112
- const resolvedZone = timeZone ?? bracketedZone;
122
+ // A stored offset with seconds is the pair's offset as it stands. Like an offset identifier it
123
+ // names no place, so it fills no `timeZone` field.
124
+ if (frame !== undefined && frame.shiftNanoseconds !== 0n) {
125
+ return { instant: instant.toString(), offset: frameOffset(frame) };
126
+ }
127
+ const resolvedZone = frame?.timeZone ?? bracketedZone;
113
128
  if (resolvedZone !== undefined) {
114
129
  return offsetInstantInZone(instant, resolvedZone);
115
130
  }
@@ -1,2 +1,3 @@
1
1
  export * from "@js-temporal/polyfill";
2
2
  export * from "./convert/index.js";
3
+ export * from "./validate/index.js";
@@ -1,3 +1,4 @@
1
1
  // Re-export the Temporal polyfill (`Temporal`, `Intl`, `toTemporalInstant`) so every namespace subpath offers it
2
2
  export * from "@js-temporal/polyfill";
3
3
  export * from "./convert/index.js";
4
+ export * from "./validate/index.js";
@@ -0,0 +1 @@
1
+ export * from "./isValidUtcOffset.js";
@@ -0,0 +1 @@
1
+ export * from "./isValidUtcOffset.js";
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Return true when `value` is a UTC offset in the form the offset-instant pair stores: ISO 8601
3
+ * extended `±HH:MM`, optionally `±HH:MM:SS`.
4
+ *
5
+ * - This is the offset `toOffsetInstant` returns and `fromOffsetInstant` takes, and the one
6
+ * `getTimeZoneOffset` and `getZonedOffset` return.
7
+ * - **The `utcOffset` pattern is the whole check.** Every string it matches is in range (hour
8
+ * `00`–`23`, minute and second `00`–`59`), so this validator is the pattern test plus the
9
+ * answer false for a non-string.
10
+ * - `Z` is false: it is a designator meaning "this string is already UTC", and for an event at
11
+ * UTC the pair's offset is `+00:00`.
12
+ * - Seconds are allowed because some zones did not run on a whole minute: `Africa/Monrovia` was
13
+ * `-00:44:30` until 1972. A fraction of a second is false.
14
+ * - Basic format (`-0400`) and an hour alone (`-04`) are false.
15
+ * - `-00:00` is true, and the functions that take an offset read it as `+00:00`.
16
+ * - A function whose result has no zone in it takes this offset in its time zone position too. A
17
+ * function that returns a zoned string, or formats with `Intl`, takes a time zone identifier
18
+ * only: check that with `isValidTimeZone`, which accepts `+0530` and `-08` and rejects an offset
19
+ * with seconds.
20
+ *
21
+ * @param value candidate UTC offset string
22
+ * @returns boolean indicating validity
23
+ *
24
+ * @example isValidUtcOffset("-04:00") // true
25
+ * @example isValidUtcOffset("+05:45") // true
26
+ * @example isValidUtcOffset("-00:44:30") // true (Africa/Monrovia before 1972)
27
+ * @example isValidUtcOffset("Z") // false (a designator, not an offset)
28
+ * @example isValidUtcOffset("-0400") // false (basic format)
29
+ * @example isValidUtcOffset("+24:00") // false (out of range)
30
+ * @example isValidUtcOffset("America/New_York") // false (a zone, not an offset)
31
+ */
32
+ export declare function isValidUtcOffset(value: string): boolean;
@@ -0,0 +1,35 @@
1
+ import { utcOffset } from "../../regex/index.js";
2
+ /**
3
+ * Return true when `value` is a UTC offset in the form the offset-instant pair stores: ISO 8601
4
+ * extended `±HH:MM`, optionally `±HH:MM:SS`.
5
+ *
6
+ * - This is the offset `toOffsetInstant` returns and `fromOffsetInstant` takes, and the one
7
+ * `getTimeZoneOffset` and `getZonedOffset` return.
8
+ * - **The `utcOffset` pattern is the whole check.** Every string it matches is in range (hour
9
+ * `00`–`23`, minute and second `00`–`59`), so this validator is the pattern test plus the
10
+ * answer false for a non-string.
11
+ * - `Z` is false: it is a designator meaning "this string is already UTC", and for an event at
12
+ * UTC the pair's offset is `+00:00`.
13
+ * - Seconds are allowed because some zones did not run on a whole minute: `Africa/Monrovia` was
14
+ * `-00:44:30` until 1972. A fraction of a second is false.
15
+ * - Basic format (`-0400`) and an hour alone (`-04`) are false.
16
+ * - `-00:00` is true, and the functions that take an offset read it as `+00:00`.
17
+ * - A function whose result has no zone in it takes this offset in its time zone position too. A
18
+ * function that returns a zoned string, or formats with `Intl`, takes a time zone identifier
19
+ * only: check that with `isValidTimeZone`, which accepts `+0530` and `-08` and rejects an offset
20
+ * with seconds.
21
+ *
22
+ * @param value candidate UTC offset string
23
+ * @returns boolean indicating validity
24
+ *
25
+ * @example isValidUtcOffset("-04:00") // true
26
+ * @example isValidUtcOffset("+05:45") // true
27
+ * @example isValidUtcOffset("-00:44:30") // true (Africa/Monrovia before 1972)
28
+ * @example isValidUtcOffset("Z") // false (a designator, not an offset)
29
+ * @example isValidUtcOffset("-0400") // false (basic format)
30
+ * @example isValidUtcOffset("+24:00") // false (out of range)
31
+ * @example isValidUtcOffset("America/New_York") // false (a zone, not an offset)
32
+ */
33
+ export function isValidUtcOffset(value) {
34
+ return typeof value === "string" && utcOffset.test(value);
35
+ }