@northguild/gmt 1.18.0 → 1.20.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 (1283) hide show
  1. package/README.md +55 -2920
  2. package/dist/calendar/business/businessDaysBetween.d.ts +2 -2
  3. package/dist/calendar/business/businessDaysBetween.js +11 -35
  4. package/dist/calendar/business/mergeCalendars.d.ts +1 -1
  5. package/dist/calendar/business/mergeCalendars.js +8 -9
  6. package/dist/calendar/business/nextBusinessDay.d.ts +2 -2
  7. package/dist/calendar/business/nextBusinessDay.js +2 -2
  8. package/dist/calendar/business/previousBusinessDay.d.ts +2 -2
  9. package/dist/calendar/business/previousBusinessDay.js +2 -2
  10. package/dist/calendar/business/rollDate.d.ts +3 -3
  11. package/dist/calendar/business/rollDate.js +10 -43
  12. package/dist/calendar/calculate/bucketRange.d.ts +19 -11
  13. package/dist/calendar/calculate/bucketRange.js +27 -70
  14. package/dist/calendar/calculate/floorToZone.d.ts +12 -4
  15. package/dist/calendar/calculate/floorToZone.js +16 -8
  16. package/dist/calendar/calculate/getFiscalPeriod.d.ts +50 -40
  17. package/dist/calendar/calculate/getFiscalPeriod.js +78 -57
  18. package/dist/calendar/calculate/getQuarter.d.ts +26 -21
  19. package/dist/calendar/calculate/getQuarter.js +48 -19
  20. package/dist/calendar/hours/addOperatingTime.d.ts +9 -3
  21. package/dist/calendar/hours/addOperatingTime.js +10 -4
  22. package/dist/calendar/hours/isOpenAt.d.ts +9 -3
  23. package/dist/calendar/hours/isOpenAt.js +9 -3
  24. package/dist/calendar/hours/nextCloseAt.d.ts +8 -2
  25. package/dist/calendar/hours/nextCloseAt.js +9 -3
  26. package/dist/calendar/hours/nextOpenAt.d.ts +9 -3
  27. package/dist/calendar/hours/nextOpenAt.js +10 -4
  28. package/dist/calendar/hours/operatingIntervals.d.ts +7 -2
  29. package/dist/calendar/hours/operatingIntervals.js +9 -6
  30. package/dist/calendar/hours/operatingTimeBetween.d.ts +8 -3
  31. package/dist/calendar/hours/operatingTimeBetween.js +11 -8
  32. package/dist/calendar/hours/recurringWindows.d.ts +13 -6
  33. package/dist/calendar/hours/recurringWindows.js +21 -14
  34. package/dist/calendar/index.d.ts +1 -1
  35. package/dist/calendar/index.js +2 -2
  36. package/dist/calendar/validate/index.d.ts +3 -0
  37. package/dist/calendar/validate/index.js +3 -0
  38. package/dist/calendar/validate/isValidFiscalCalendar.d.ts +23 -0
  39. package/dist/calendar/validate/isValidFiscalCalendar.js +44 -0
  40. package/dist/calendar/validate/isValidFiscalExtraWeek.d.ts +19 -0
  41. package/dist/calendar/validate/isValidFiscalExtraWeek.js +23 -0
  42. package/dist/calendar/validate/isValidFiscalPattern.d.ts +7 -7
  43. package/dist/calendar/validate/isValidFiscalPattern.js +7 -7
  44. package/dist/calendar/validate/isValidFiscalYearLabel.d.ts +20 -0
  45. package/dist/calendar/validate/isValidFiscalYearLabel.js +24 -0
  46. package/dist/calendar/validate/isValidRollConvention.js +2 -10
  47. package/dist/calendar/validate/isValidZoneBucketUnit.d.ts +1 -1
  48. package/dist/duration/calculate/absDuration.js +1 -1
  49. package/dist/duration/calculate/addDuration.js +1 -1
  50. package/dist/duration/calculate/durationFromUnits.d.ts +47 -0
  51. package/dist/duration/calculate/durationFromUnits.js +67 -0
  52. package/dist/duration/calculate/getDurationSign.js +1 -1
  53. package/dist/duration/calculate/getDurationUnit.d.ts +3 -3
  54. package/dist/duration/calculate/getDurationUnit.js +3 -3
  55. package/dist/duration/calculate/index.d.ts +3 -1
  56. package/dist/duration/calculate/index.js +3 -1
  57. package/dist/duration/calculate/negateDuration.d.ts +1 -1
  58. package/dist/duration/calculate/negateDuration.js +2 -2
  59. package/dist/duration/calculate/subtractDuration.js +1 -1
  60. package/dist/duration/calculate/{durationAs.d.ts → totalDuration.d.ts} +27 -21
  61. package/dist/duration/calculate/{durationAs.js → totalDuration.js} +27 -21
  62. package/dist/duration/calculate/totalUnits.d.ts +49 -0
  63. package/dist/duration/calculate/totalUnits.js +73 -0
  64. package/dist/duration/compare/compareDurations.d.ts +4 -4
  65. package/dist/duration/compare/compareDurations.js +4 -4
  66. package/dist/duration/format/formatDuration.d.ts +9 -9
  67. package/dist/duration/format/formatDuration.js +14 -13
  68. package/dist/duration/index.d.ts +1 -1
  69. package/dist/duration/index.js +2 -2
  70. package/dist/duration/normalize/normalizeDuration.d.ts +3 -3
  71. package/dist/duration/normalize/normalizeDuration.js +3 -3
  72. package/dist/duration/parse/parseDuration.d.ts +1 -1
  73. package/dist/duration/parse/parseDuration.js +1 -1
  74. package/dist/duration/validate/isValidDuration.js +2 -11
  75. package/dist/gnss/convert/gnssToUtc.d.ts +24 -0
  76. package/dist/gnss/convert/gnssToUtc.js +39 -0
  77. package/dist/gnss/convert/gnssWeekToUtc.d.ts +53 -0
  78. package/dist/gnss/convert/gnssWeekToUtc.js +80 -0
  79. package/dist/gnss/convert/index.d.ts +6 -0
  80. package/dist/gnss/convert/index.js +6 -0
  81. package/dist/gnss/convert/rinexWeekToUtc.d.ts +34 -0
  82. package/dist/gnss/convert/rinexWeekToUtc.js +57 -0
  83. package/dist/gnss/convert/utcToGnss.d.ts +38 -0
  84. package/dist/gnss/convert/utcToGnss.js +53 -0
  85. package/dist/gnss/convert/utcToGnssWeek.d.ts +24 -0
  86. package/dist/gnss/convert/utcToGnssWeek.js +40 -0
  87. package/dist/gnss/convert/utcToRinexWeek.d.ts +19 -0
  88. package/dist/gnss/convert/utcToRinexWeek.js +45 -0
  89. package/dist/gnss/index.d.ts +2 -0
  90. package/dist/gnss/index.js +3 -0
  91. package/dist/index.d.ts +4 -1
  92. package/dist/index.js +4 -1
  93. package/dist/instant/convert/classifyLocal.d.ts +9 -5
  94. package/dist/instant/convert/classifyLocal.js +19 -20
  95. package/dist/instant/convert/fromOffsetInstant.d.ts +8 -4
  96. package/dist/instant/convert/fromOffsetInstant.js +11 -6
  97. package/dist/instant/convert/resolveLocal.d.ts +16 -11
  98. package/dist/instant/convert/resolveLocal.js +25 -17
  99. package/dist/instant/convert/toOffsetInstant.d.ts +23 -19
  100. package/dist/instant/convert/toOffsetInstant.js +29 -38
  101. package/dist/instant/index.d.ts +2 -1
  102. package/dist/instant/index.js +3 -2
  103. package/dist/instant/validate/index.d.ts +1 -0
  104. package/dist/instant/validate/index.js +1 -0
  105. package/dist/instant/validate/isValidUtcOffset.d.ts +32 -0
  106. package/dist/instant/validate/isValidUtcOffset.js +35 -0
  107. package/dist/intermodal/calculate/billingTimeline.js +1 -1
  108. package/dist/intermodal/calculate/chargeableDays.d.ts +18 -12
  109. package/dist/intermodal/calculate/chargeableDays.js +27 -18
  110. package/dist/intermodal/calculate/demurrageClock.d.ts +1 -1
  111. package/dist/intermodal/calculate/demurrageClock.js +2 -2
  112. package/dist/intermodal/calculate/freeTimeExpiry.d.ts +17 -10
  113. package/dist/intermodal/calculate/freeTimeExpiry.js +32 -17
  114. package/dist/intermodal/calculate/index.d.ts +1 -0
  115. package/dist/intermodal/calculate/index.js +1 -0
  116. package/dist/intermodal/calculate/multimodalETA.d.ts +76 -0
  117. package/dist/intermodal/calculate/multimodalETA.js +145 -0
  118. package/dist/intermodal/format/bolTimestamp.d.ts +76 -0
  119. package/dist/intermodal/format/bolTimestamp.js +78 -0
  120. package/dist/intermodal/format/formatEdifactDate.d.ts +34 -0
  121. package/dist/intermodal/format/formatEdifactDate.js +42 -0
  122. package/dist/intermodal/format/formatEdifactDatePeriod.d.ts +35 -0
  123. package/dist/intermodal/format/formatEdifactDatePeriod.js +43 -0
  124. package/dist/intermodal/format/formatEdifactDateTime.d.ts +37 -0
  125. package/dist/intermodal/format/formatEdifactDateTime.js +45 -0
  126. package/dist/intermodal/format/formatEdifactDateTimePeriod.d.ts +40 -0
  127. package/dist/intermodal/format/formatEdifactDateTimePeriod.js +48 -0
  128. package/dist/intermodal/format/formatEdifactOffsetDateTime.d.ts +62 -0
  129. package/dist/intermodal/format/formatEdifactOffsetDateTime.js +70 -0
  130. package/dist/intermodal/format/formatEdifactTime.d.ts +35 -0
  131. package/dist/intermodal/format/formatEdifactTime.js +43 -0
  132. package/dist/intermodal/format/formatEpcisEvent.d.ts +47 -0
  133. package/dist/intermodal/format/formatEpcisEvent.js +79 -0
  134. package/dist/intermodal/format/formatX12Date.d.ts +35 -0
  135. package/dist/intermodal/format/formatX12Date.js +43 -0
  136. package/dist/intermodal/format/formatX12DateRange.d.ts +37 -0
  137. package/dist/intermodal/format/formatX12DateRange.js +45 -0
  138. package/dist/intermodal/format/formatX12DateTime.d.ts +39 -0
  139. package/dist/intermodal/format/formatX12DateTime.js +47 -0
  140. package/dist/intermodal/format/formatX12DateTimeRange.d.ts +40 -0
  141. package/dist/intermodal/format/formatX12DateTimeRange.js +48 -0
  142. package/dist/intermodal/format/formatX12Time.d.ts +42 -0
  143. package/dist/intermodal/format/formatX12Time.js +50 -0
  144. package/dist/intermodal/format/formatX12TimeElement.d.ts +46 -0
  145. package/dist/intermodal/format/formatX12TimeElement.js +54 -0
  146. package/dist/intermodal/format/index.d.ts +14 -0
  147. package/dist/intermodal/format/index.js +14 -0
  148. package/dist/intermodal/index.d.ts +4 -1
  149. package/dist/intermodal/index.js +5 -2
  150. package/dist/intermodal/parse/classifyEdifactDtmFormat.d.ts +48 -0
  151. package/dist/intermodal/parse/classifyEdifactDtmFormat.js +55 -0
  152. package/dist/intermodal/parse/classifyX12DateTimePeriodFormat.d.ts +50 -0
  153. package/dist/intermodal/parse/classifyX12DateTimePeriodFormat.js +57 -0
  154. package/dist/intermodal/parse/classifyX12TimeCode.d.ts +46 -0
  155. package/dist/intermodal/parse/classifyX12TimeCode.js +57 -0
  156. package/dist/intermodal/parse/index.d.ts +18 -0
  157. package/dist/intermodal/parse/index.js +18 -0
  158. package/dist/intermodal/parse/parseEdifactDate.d.ts +37 -0
  159. package/dist/intermodal/parse/parseEdifactDate.js +45 -0
  160. package/dist/intermodal/parse/parseEdifactDatePeriod.d.ts +43 -0
  161. package/dist/intermodal/parse/parseEdifactDatePeriod.js +51 -0
  162. package/dist/intermodal/parse/parseEdifactDateTime.d.ts +43 -0
  163. package/dist/intermodal/parse/parseEdifactDateTime.js +51 -0
  164. package/dist/intermodal/parse/parseEdifactDateTimePeriod.d.ts +45 -0
  165. package/dist/intermodal/parse/parseEdifactDateTimePeriod.js +53 -0
  166. package/dist/intermodal/parse/parseEdifactOffsetDateTime.d.ts +60 -0
  167. package/dist/intermodal/parse/parseEdifactOffsetDateTime.js +68 -0
  168. package/dist/intermodal/parse/parseEdifactTime.d.ts +37 -0
  169. package/dist/intermodal/parse/parseEdifactTime.js +45 -0
  170. package/dist/intermodal/parse/parseEpcisEvent.d.ts +95 -0
  171. package/dist/intermodal/parse/parseEpcisEvent.js +102 -0
  172. package/dist/intermodal/parse/parseX12Date.d.ts +39 -0
  173. package/dist/intermodal/parse/parseX12Date.js +47 -0
  174. package/dist/intermodal/parse/parseX12DateAndTime.d.ts +52 -0
  175. package/dist/intermodal/parse/parseX12DateAndTime.js +61 -0
  176. package/dist/intermodal/parse/parseX12DateRange.d.ts +44 -0
  177. package/dist/intermodal/parse/parseX12DateRange.js +52 -0
  178. package/dist/intermodal/parse/parseX12DateTime.d.ts +45 -0
  179. package/dist/intermodal/parse/parseX12DateTime.js +53 -0
  180. package/dist/intermodal/parse/parseX12DateTimeRange.d.ts +46 -0
  181. package/dist/intermodal/parse/parseX12DateTimeRange.js +54 -0
  182. package/dist/intermodal/parse/parseX12Time.d.ts +65 -0
  183. package/dist/intermodal/parse/parseX12Time.js +77 -0
  184. package/dist/intermodal/parse/x12TimeCodeOffset.d.ts +57 -0
  185. package/dist/intermodal/parse/x12TimeCodeOffset.js +110 -0
  186. package/dist/intermodal/parse/x12TimeCodeZone.d.ts +57 -0
  187. package/dist/intermodal/parse/x12TimeCodeZone.js +105 -0
  188. package/dist/intermodal/validate/index.d.ts +18 -0
  189. package/dist/intermodal/validate/index.js +18 -0
  190. package/dist/intermodal/validate/isValidEdifactDate.d.ts +26 -0
  191. package/dist/intermodal/validate/isValidEdifactDate.js +28 -0
  192. package/dist/intermodal/validate/isValidEdifactDatePeriod.d.ts +28 -0
  193. package/dist/intermodal/validate/isValidEdifactDatePeriod.js +30 -0
  194. package/dist/intermodal/validate/isValidEdifactDateTime.d.ts +30 -0
  195. package/dist/intermodal/validate/isValidEdifactDateTime.js +32 -0
  196. package/dist/intermodal/validate/isValidEdifactDateTimePeriod.d.ts +28 -0
  197. package/dist/intermodal/validate/isValidEdifactDateTimePeriod.js +30 -0
  198. package/dist/intermodal/validate/isValidEdifactDtmFormat.d.ts +39 -0
  199. package/dist/intermodal/validate/isValidEdifactDtmFormat.js +42 -0
  200. package/dist/intermodal/validate/isValidEdifactOffsetDateTime.d.ts +36 -0
  201. package/dist/intermodal/validate/isValidEdifactOffsetDateTime.js +38 -0
  202. package/dist/intermodal/validate/isValidEdifactTime.d.ts +28 -0
  203. package/dist/intermodal/validate/isValidEdifactTime.js +30 -0
  204. package/dist/intermodal/validate/isValidEpcisEvent.d.ts +41 -0
  205. package/dist/intermodal/validate/isValidEpcisEvent.js +58 -0
  206. package/dist/intermodal/validate/isValidEpcisEventTime.d.ts +33 -0
  207. package/dist/intermodal/validate/isValidEpcisEventTime.js +48 -0
  208. package/dist/intermodal/validate/isValidEpcisTimeZoneOffset.d.ts +30 -0
  209. package/dist/intermodal/validate/isValidEpcisTimeZoneOffset.js +38 -0
  210. package/dist/intermodal/validate/isValidX12Date.d.ts +28 -0
  211. package/dist/intermodal/validate/isValidX12Date.js +30 -0
  212. package/dist/intermodal/validate/isValidX12DateAndTime.d.ts +32 -0
  213. package/dist/intermodal/validate/isValidX12DateAndTime.js +35 -0
  214. package/dist/intermodal/validate/isValidX12DateRange.d.ts +29 -0
  215. package/dist/intermodal/validate/isValidX12DateRange.js +31 -0
  216. package/dist/intermodal/validate/isValidX12DateTime.d.ts +30 -0
  217. package/dist/intermodal/validate/isValidX12DateTime.js +32 -0
  218. package/dist/intermodal/validate/isValidX12DateTimePeriodFormat.d.ts +43 -0
  219. package/dist/intermodal/validate/isValidX12DateTimePeriodFormat.js +46 -0
  220. package/dist/intermodal/validate/isValidX12DateTimeRange.d.ts +31 -0
  221. package/dist/intermodal/validate/isValidX12DateTimeRange.js +33 -0
  222. package/dist/intermodal/validate/isValidX12Time.d.ts +38 -0
  223. package/dist/intermodal/validate/isValidX12Time.js +40 -0
  224. package/dist/intermodal/validate/isValidX12TimeCode.d.ts +38 -0
  225. package/dist/intermodal/validate/isValidX12TimeCode.js +41 -0
  226. package/dist/internal/advanceToWeekday.d.ts +1 -1
  227. package/dist/internal/businessCalendar.d.ts +28 -12
  228. package/dist/internal/businessCalendar.js +131 -125
  229. package/dist/internal/businessDayValues.js +1 -1
  230. package/dist/internal/calendarDatePairPolicy.d.ts +1 -1
  231. package/dist/internal/calendarDateString.d.ts +1 -1
  232. package/dist/internal/calendarDateString.js +1 -1
  233. package/dist/internal/calendarSystemIds.js +1 -1
  234. package/dist/internal/calendarValueOfDate.js +1 -1
  235. package/dist/internal/calendarZonedPairPolicy.d.ts +1 -1
  236. package/dist/internal/calendarZonedString.d.ts +3 -3
  237. package/dist/internal/calendarZonedString.js +4 -4
  238. package/dist/internal/compareUnixEpochs.js +1 -1
  239. package/dist/internal/cutoffAtResolved.d.ts +62 -0
  240. package/dist/internal/cutoffAtResolved.js +162 -0
  241. package/dist/internal/cycleFieldValue.d.ts +0 -2
  242. package/dist/internal/cycleFieldValue.js +0 -2
  243. package/dist/internal/dateTimeUnitHelpers.d.ts +1 -1
  244. package/dist/internal/dateUnitHelpers.d.ts +1 -1
  245. package/dist/internal/daylightTime.d.ts +1 -1
  246. package/dist/internal/differenceRecord.d.ts +1 -1
  247. package/dist/internal/durationUntilString.d.ts +1 -1
  248. package/dist/internal/durationUntilString.js +1 -1
  249. package/dist/internal/dutyEngine.d.ts +125 -0
  250. package/dist/internal/dutyEngine.js +1755 -0
  251. package/dist/internal/dutyLog.d.ts +27 -0
  252. package/dist/internal/dutyLog.js +47 -0
  253. package/dist/internal/dutyPeriods.d.ts +135 -0
  254. package/dist/internal/dutyPeriods.js +375 -0
  255. package/dist/internal/dutyRules.d.ts +198 -0
  256. package/dist/internal/dutyRules.js +484 -0
  257. package/dist/internal/dutyRunIndex.d.ts +150 -0
  258. package/dist/internal/dutyRunIndex.js +398 -0
  259. package/dist/internal/earlierOccurrence.d.ts +41 -0
  260. package/dist/internal/earlierOccurrence.js +57 -0
  261. package/dist/internal/ediDateTimeFields.d.ts +97 -0
  262. package/dist/internal/ediDateTimeFields.js +288 -0
  263. package/dist/internal/ediDateTimeWriter.d.ts +92 -0
  264. package/dist/internal/ediDateTimeWriter.js +298 -0
  265. package/dist/internal/ediGrammar.d.ts +158 -0
  266. package/dist/internal/ediGrammar.js +384 -0
  267. package/dist/internal/englishCalendarNames.d.ts +4 -2
  268. package/dist/internal/englishCalendarNames.js +3 -1
  269. package/dist/internal/epochDay.d.ts +41 -0
  270. package/dist/internal/epochDay.js +129 -0
  271. package/dist/internal/exactDuration.js +1 -1
  272. package/dist/internal/exactMoment.d.ts +4 -4
  273. package/dist/internal/exactMoment.js +5 -5
  274. package/dist/internal/fiscalCalendar.d.ts +41 -7
  275. package/dist/internal/fiscalCalendar.js +77 -9
  276. package/dist/internal/foreignEpochs.d.ts +5 -0
  277. package/dist/internal/foreignEpochs.js +5 -0
  278. package/dist/internal/formatCalendarDays.d.ts +4 -4
  279. package/dist/internal/formatCalendarDays.js +6 -5
  280. package/dist/internal/formatDateInCalendar.d.ts +1 -1
  281. package/dist/internal/formatRelativeDuration.d.ts +7 -7
  282. package/dist/internal/formatRelativeDuration.js +8 -7
  283. package/dist/internal/formatterCache.d.ts +40 -0
  284. package/dist/internal/formatterCache.js +181 -0
  285. package/dist/internal/freeTimeLedger.d.ts +35 -42
  286. package/dist/internal/freeTimeLedger.js +332 -31
  287. package/dist/internal/getLocaleWeekYearBounds.d.ts +1 -1
  288. package/dist/internal/gnssTimeScales.d.ts +53 -0
  289. package/dist/internal/gnssTimeScales.js +128 -0
  290. package/dist/internal/gnssWeek.d.ts +92 -0
  291. package/dist/internal/gnssWeek.js +212 -0
  292. package/dist/internal/halfOpenIntervals.d.ts +1 -1
  293. package/dist/internal/halfOpenIntervals.js +1 -1
  294. package/dist/internal/hasCalendarAnnotation.d.ts +3 -3
  295. package/dist/internal/hasCalendarAnnotation.js +3 -3
  296. package/dist/internal/hourDurationString.js +1 -1
  297. package/dist/internal/httpDateFields.js +1 -1
  298. package/dist/internal/index.d.ts +14 -5
  299. package/dist/internal/index.js +18 -5
  300. package/dist/internal/inputChecks.d.ts +53 -0
  301. package/dist/internal/inputChecks.js +132 -0
  302. package/dist/internal/instantFormatOptions.d.ts +1 -1
  303. package/dist/internal/instantFormatOptions.js +4 -8
  304. package/dist/internal/instantIntervalText.js +1 -1
  305. package/dist/internal/instantNanoseconds.d.ts +2 -2
  306. package/dist/internal/instantNanoseconds.js +2 -2
  307. package/dist/internal/intervalCountHelpers.d.ts +1 -1
  308. package/dist/internal/intervalNanoseconds.js +2 -1
  309. package/dist/internal/isObject.d.ts +13 -6
  310. package/dist/internal/isObject.js +14 -7
  311. package/dist/internal/isoStringBody.d.ts +2 -2
  312. package/dist/internal/isoStringBody.js +2 -2
  313. package/dist/internal/isoYearString.d.ts +21 -0
  314. package/dist/internal/isoYearString.js +27 -0
  315. package/dist/internal/joinDateTimeConnector.js +3 -2
  316. package/dist/internal/leapSeconds.d.ts +63 -0
  317. package/dist/internal/leapSeconds.js +162 -0
  318. package/dist/internal/localeWeekInfo.d.ts +1 -1
  319. package/dist/internal/localeWeekInfo.js +1 -1
  320. package/dist/internal/maxPieces.js +2 -1
  321. package/dist/internal/monthGridWeekRow.d.ts +1 -1
  322. package/dist/internal/normalizeDateTime.d.ts +2 -1
  323. package/dist/internal/normalizeDateTime.js +3 -2
  324. package/dist/internal/normalizeTimeZone.d.ts +5 -2
  325. package/dist/internal/normalizeTimeZone.js +5 -2
  326. package/dist/internal/offsetTimeline.d.ts +56 -0
  327. package/dist/internal/offsetTimeline.js +166 -0
  328. package/dist/internal/operatingSchedule.d.ts +39 -34
  329. package/dist/internal/operatingSchedule.js +672 -222
  330. package/dist/internal/patternToken.d.ts +10 -3
  331. package/dist/internal/patternToken.js +41 -19
  332. package/dist/internal/plainDateAdd.d.ts +1 -1
  333. package/dist/internal/plainDateAdd.js +1 -1
  334. package/dist/internal/plainDateUntil.d.ts +1 -1
  335. package/dist/internal/plainDateUntil.js +1 -1
  336. package/dist/internal/readDurationUnits.d.ts +34 -0
  337. package/dist/internal/readDurationUnits.js +78 -0
  338. package/dist/internal/readSetFields.d.ts +50 -0
  339. package/dist/internal/readSetFields.js +179 -0
  340. package/dist/internal/resolveDurationRelativeTo.d.ts +1 -1
  341. package/dist/internal/resolveDurationRelativeTo.js +1 -1
  342. package/dist/internal/resolveLocale.d.ts +2 -2
  343. package/dist/internal/resolveLocale.js +2 -2
  344. package/dist/internal/resolveManualRoundingOptions.d.ts +1 -1
  345. package/dist/internal/resolveRelativeUnit.d.ts +1 -1
  346. package/dist/internal/resolveRelativeUnit.js +1 -1
  347. package/dist/internal/resolveUnixIntervalPair.d.ts +9 -3
  348. package/dist/internal/resolveUnixIntervalPair.js +11 -7
  349. package/dist/internal/rinexWeek.d.ts +22 -0
  350. package/dist/internal/rinexWeek.js +30 -0
  351. package/dist/internal/rollBusinessDate.d.ts +15 -0
  352. package/dist/internal/rollBusinessDate.js +46 -0
  353. package/dist/internal/splitStep.d.ts +1 -1
  354. package/dist/internal/splitStep.js +1 -1
  355. package/dist/internal/startOrEndOfUnix.d.ts +3 -2
  356. package/dist/internal/startOrEndOfUnix.js +9 -6
  357. package/dist/internal/startOrEndOfUtc.d.ts +1 -1
  358. package/dist/internal/startOrEndOfUtc.js +1 -1
  359. package/dist/internal/startOrEndOfZoned.d.ts +1 -1
  360. package/dist/internal/temporal.d.ts +5 -0
  361. package/dist/internal/temporal.js +5 -0
  362. package/dist/internal/temporalCompat/calendarDateArithmetic.d.ts +1 -1
  363. package/dist/internal/temporalCompat/calendarDateFromFields.d.ts +1 -1
  364. package/dist/internal/temporalCompat/calendarDateFromFields.js +1 -1
  365. package/dist/internal/temporalCompat/calendarFields.d.ts +1 -1
  366. package/dist/internal/temporalCompat/capabilities.d.ts +27 -5
  367. package/dist/internal/temporalCompat/capabilities.js +28 -4
  368. package/dist/internal/temporalCompat/fieldSearch.d.ts +1 -1
  369. package/dist/internal/temporalCompat/fieldSearch.js +1 -1
  370. package/dist/internal/temporalCompat/fixedDay.d.ts +1 -1
  371. package/dist/internal/temporalCompat/fixedDay.js +1 -1
  372. package/dist/internal/temporalCompat/index.d.ts +1 -1
  373. package/dist/internal/temporalCompat/index.js +1 -1
  374. package/dist/internal/temporalCompat/largeMonthSpan.js +1 -1
  375. package/dist/internal/temporalCompat/nonIsoArithmetic.d.ts +1 -1
  376. package/dist/internal/temporalCompat/nonIsoArithmetic.js +1 -1
  377. package/dist/internal/temporalCompat/probeRepros.d.ts +35 -0
  378. package/dist/internal/temporalCompat/probeRepros.js +571 -0
  379. package/dist/internal/temporalCompat/readArithmeticModel.js +2 -2
  380. package/dist/internal/temporalCompat/repros.d.ts +3 -10
  381. package/dist/internal/temporalCompat/repros.js +13 -520
  382. package/dist/internal/timeScaleString.d.ts +47 -0
  383. package/dist/internal/timeScaleString.js +86 -0
  384. package/dist/internal/toInstantFromUtc.d.ts +1 -1
  385. package/dist/internal/toInstantFromUtc.js +1 -1
  386. package/dist/internal/twoDigitYear.d.ts +19 -0
  387. package/dist/internal/twoDigitYear.js +22 -0
  388. package/dist/internal/unixEpochValue.d.ts +1 -1
  389. package/dist/internal/unixEpochValue.js +4 -3
  390. package/dist/internal/unixFormatReference.d.ts +1 -1
  391. package/dist/internal/unixFormatReference.js +1 -1
  392. package/dist/internal/unixWallClock.d.ts +24 -0
  393. package/dist/internal/unixWallClock.js +35 -0
  394. package/dist/internal/utcOffsetString.d.ts +16 -0
  395. package/dist/internal/utcOffsetString.js +31 -1
  396. package/dist/internal/utcReading.d.ts +59 -0
  397. package/dist/internal/utcReading.js +113 -0
  398. package/dist/internal/utcWallClock.d.ts +20 -0
  399. package/dist/internal/utcWallClock.js +32 -0
  400. package/dist/internal/validatedZones.d.ts +20 -0
  401. package/dist/internal/validatedZones.js +33 -0
  402. package/dist/internal/wallClockAtOffset.d.ts +1 -1
  403. package/dist/internal/yearWindowStart.d.ts +28 -0
  404. package/dist/internal/yearWindowStart.js +52 -0
  405. package/dist/internal/zoneBucketCap.d.ts +18 -0
  406. package/dist/internal/zoneBucketCap.js +64 -0
  407. package/dist/internal/zoneFrame.d.ts +180 -0
  408. package/dist/internal/zoneFrame.js +221 -0
  409. package/dist/internal/zonedBucket.d.ts +2 -2
  410. package/dist/internal/zonedBucket.js +92 -21
  411. package/dist/internal/zonedFormatReference.d.ts +1 -1
  412. package/dist/internal/zonedFormatReference.js +1 -1
  413. package/dist/internal/zonedLocalDates.d.ts +1 -1
  414. package/dist/internal/zonedLocalDates.js +22 -19
  415. package/dist/internal/zonedNowUnitValue.d.ts +8 -5
  416. package/dist/internal/zonedNowUnitValue.js +9 -5
  417. package/dist/internal/zonedTransitionSearch.d.ts +2 -0
  418. package/dist/internal/zonedTransitionSearch.js +165 -16
  419. package/dist/internal/zonedWallClock.d.ts +15 -4
  420. package/dist/internal/zonedWallClock.js +34 -6
  421. package/dist/internal/zonedWallClockDifference.d.ts +1 -1
  422. package/dist/internal/zonedWallClockDifference.js +6 -6
  423. package/dist/internal/zonedWallClockOperations.d.ts +7 -4
  424. package/dist/internal/zonedWallClockOperations.js +58 -16
  425. package/dist/internal/zonelessCalendarDate.d.ts +1 -1
  426. package/dist/internal/zonelessCalendarDate.js +1 -1
  427. package/dist/interval/index.d.ts +1 -1
  428. package/dist/interval/index.js +2 -2
  429. package/dist/plain/calculate/addBusinessDays.d.ts +2 -2
  430. package/dist/plain/calculate/addBusinessDays.js +2 -2
  431. package/dist/plain/calculate/addDate.js +4 -7
  432. package/dist/plain/calculate/addDateTime.js +5 -8
  433. package/dist/plain/calculate/addTime.js +5 -8
  434. package/dist/plain/calculate/clampDate.js +1 -1
  435. package/dist/plain/calculate/closestDateTo.js +1 -1
  436. package/dist/plain/calculate/cycleDate.js +1 -1
  437. package/dist/plain/calculate/cycleDateTime.js +1 -1
  438. package/dist/plain/calculate/cycleTime.js +1 -1
  439. package/dist/plain/calculate/diffDate.d.ts +1 -1
  440. package/dist/plain/calculate/diffDateAsDuration.d.ts +1 -1
  441. package/dist/plain/calculate/diffDateTime.d.ts +1 -1
  442. package/dist/plain/calculate/diffDateTime.js +1 -1
  443. package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +1 -1
  444. package/dist/plain/calculate/diffDateTimeAsDuration.js +1 -1
  445. package/dist/plain/calculate/diffTime.d.ts +1 -1
  446. package/dist/plain/calculate/diffTime.js +1 -1
  447. package/dist/plain/calculate/endOfDate.d.ts +1 -1
  448. package/dist/plain/calculate/endOfDate.js +1 -1
  449. package/dist/plain/calculate/endOfDateTime.d.ts +1 -1
  450. package/dist/plain/calculate/endOfDateTime.js +1 -1
  451. package/dist/plain/calculate/endOfQuarterForDate.js +1 -1
  452. package/dist/plain/calculate/endOfQuarterForDateTime.js +1 -1
  453. package/dist/plain/calculate/endOfTime.d.ts +2 -2
  454. package/dist/plain/calculate/endOfTime.js +1 -1
  455. package/dist/plain/calculate/getDayOfYear.js +1 -1
  456. package/dist/plain/calculate/getDaysInMonth.js +1 -1
  457. package/dist/plain/calculate/getDaysInYear.js +1 -1
  458. package/dist/plain/calculate/getLargestDateDurationUnit.d.ts +1 -1
  459. package/dist/plain/calculate/getLargestDateTimeDurationUnit.d.ts +1 -1
  460. package/dist/plain/calculate/getLargestTimeDurationUnit.d.ts +1 -1
  461. package/dist/plain/calculate/getLocaleDayOfWeek.d.ts +6 -6
  462. package/dist/plain/calculate/getLocaleDayOfWeek.js +7 -7
  463. package/dist/plain/calculate/getLocaleEndOfWeek.d.ts +4 -4
  464. package/dist/plain/calculate/getLocaleEndOfWeek.js +5 -5
  465. package/dist/plain/calculate/getLocaleStartOfWeek.d.ts +5 -5
  466. package/dist/plain/calculate/getLocaleStartOfWeek.js +6 -6
  467. package/dist/plain/calculate/getLocaleWeekYear.d.ts +10 -10
  468. package/dist/plain/calculate/getLocaleWeekYear.js +11 -11
  469. package/dist/plain/calculate/getQuarterForDate.js +1 -1
  470. package/dist/plain/calculate/getQuarterForDateTime.js +1 -1
  471. package/dist/plain/calculate/getWeekNumber.js +1 -1
  472. package/dist/plain/calculate/getWeekOfMonth.d.ts +10 -14
  473. package/dist/plain/calculate/getWeekOfMonth.js +11 -15
  474. package/dist/plain/calculate/getWeekYear.js +1 -1
  475. package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +7 -7
  476. package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +8 -8
  477. package/dist/plain/calculate/getWeeksInMonth.d.ts +8 -11
  478. package/dist/plain/calculate/getWeeksInMonth.js +9 -12
  479. package/dist/plain/calculate/getWeeksInYear.js +1 -1
  480. package/dist/plain/calculate/maxDate.js +1 -1
  481. package/dist/plain/calculate/maxDateTime.js +1 -1
  482. package/dist/plain/calculate/maxTime.js +1 -1
  483. package/dist/plain/calculate/minDate.js +1 -1
  484. package/dist/plain/calculate/minDateTime.js +1 -1
  485. package/dist/plain/calculate/minTime.js +1 -1
  486. package/dist/plain/calculate/nextWeekday.d.ts +14 -12
  487. package/dist/plain/calculate/nextWeekday.js +15 -13
  488. package/dist/plain/calculate/previousWeekday.d.ts +14 -12
  489. package/dist/plain/calculate/previousWeekday.js +15 -13
  490. package/dist/plain/calculate/roundDate.d.ts +1 -1
  491. package/dist/plain/calculate/roundDate.js +1 -1
  492. package/dist/plain/calculate/roundDateTime.d.ts +1 -1
  493. package/dist/plain/calculate/roundDateTime.js +1 -1
  494. package/dist/plain/calculate/roundTime.d.ts +1 -1
  495. package/dist/plain/calculate/roundTime.js +1 -1
  496. package/dist/plain/calculate/setDate.d.ts +21 -4
  497. package/dist/plain/calculate/setDate.js +28 -8
  498. package/dist/plain/calculate/setDateTime.d.ts +16 -4
  499. package/dist/plain/calculate/setDateTime.js +23 -8
  500. package/dist/plain/calculate/setTime.d.ts +14 -2
  501. package/dist/plain/calculate/setTime.js +22 -7
  502. package/dist/plain/calculate/sortDateTimes.js +1 -1
  503. package/dist/plain/calculate/sortDates.js +1 -1
  504. package/dist/plain/calculate/sortTimes.js +1 -1
  505. package/dist/plain/calculate/startOfDate.d.ts +1 -1
  506. package/dist/plain/calculate/startOfDate.js +1 -1
  507. package/dist/plain/calculate/startOfDateTime.d.ts +1 -1
  508. package/dist/plain/calculate/startOfDateTime.js +1 -1
  509. package/dist/plain/calculate/startOfQuarterForDate.js +1 -1
  510. package/dist/plain/calculate/startOfQuarterForDateTime.js +1 -1
  511. package/dist/plain/calculate/startOfTime.d.ts +2 -2
  512. package/dist/plain/calculate/startOfTime.js +1 -1
  513. package/dist/plain/calculate/subtractBusinessDays.d.ts +2 -2
  514. package/dist/plain/calculate/subtractBusinessDays.js +2 -2
  515. package/dist/plain/calculate/subtractDate.js +5 -8
  516. package/dist/plain/calculate/subtractDateTime.js +5 -8
  517. package/dist/plain/calculate/subtractTime.js +5 -8
  518. package/dist/plain/calculate/weekOfYearForDate.js +1 -1
  519. package/dist/plain/calculate/weekOfYearForDateTime.js +1 -1
  520. package/dist/plain/chop/chopDate.js +1 -1
  521. package/dist/plain/chop/chopMilliseconds.js +1 -1
  522. package/dist/plain/chop/chopSeconds.js +1 -1
  523. package/dist/plain/chop/chopTime.js +1 -1
  524. package/dist/plain/compare/areDateTimesEqual.js +1 -1
  525. package/dist/plain/compare/areDateTimesEqualBy.d.ts +2 -4
  526. package/dist/plain/compare/areDateTimesEqualBy.js +2 -4
  527. package/dist/plain/compare/areDatesEqual.js +1 -1
  528. package/dist/plain/compare/areDatesEqualBy.d.ts +5 -5
  529. package/dist/plain/compare/areDatesEqualBy.js +5 -5
  530. package/dist/plain/compare/areTimesEqual.js +1 -1
  531. package/dist/plain/compare/isAfterDate.js +1 -1
  532. package/dist/plain/compare/isAfterDateTime.js +1 -1
  533. package/dist/plain/compare/isAfterTime.js +1 -1
  534. package/dist/plain/compare/isBeforeDate.js +1 -1
  535. package/dist/plain/compare/isBeforeDateTime.js +1 -1
  536. package/dist/plain/compare/isBeforeTime.js +1 -1
  537. package/dist/plain/compare/isBetweenDate.js +1 -1
  538. package/dist/plain/compare/isBetweenDateTime.js +1 -1
  539. package/dist/plain/compare/isBetweenTime.js +1 -1
  540. package/dist/plain/compare/isBusinessDay.d.ts +2 -2
  541. package/dist/plain/compare/isBusinessDay.js +3 -3
  542. package/dist/plain/compare/isRelativeDay.d.ts +1 -1
  543. package/dist/plain/compare/isRelativeDay.js +1 -1
  544. package/dist/plain/compare/isThisUnit.d.ts +8 -6
  545. package/dist/plain/compare/isThisUnit.js +7 -5
  546. package/dist/plain/compare/isWeekend.d.ts +5 -5
  547. package/dist/plain/compare/isWeekend.js +6 -6
  548. package/dist/plain/format/formatCalendar.d.ts +3 -5
  549. package/dist/plain/format/formatCalendar.js +12 -10
  550. package/dist/plain/format/formatDate.d.ts +4 -4
  551. package/dist/plain/format/formatDate.js +8 -7
  552. package/dist/plain/format/formatDateRange.d.ts +4 -4
  553. package/dist/plain/format/formatDateRange.js +8 -7
  554. package/dist/plain/format/formatDateTime.d.ts +4 -4
  555. package/dist/plain/format/formatDateTime.js +8 -7
  556. package/dist/plain/format/formatDateTimeRange.d.ts +4 -4
  557. package/dist/plain/format/formatDateTimeRange.js +8 -7
  558. package/dist/plain/format/formatDateTimeToParts.d.ts +6 -6
  559. package/dist/plain/format/formatDateTimeToParts.js +10 -9
  560. package/dist/plain/format/formatDateToParts.d.ts +6 -6
  561. package/dist/plain/format/formatDateToParts.js +10 -9
  562. package/dist/plain/format/formatRelativeDate.d.ts +3 -3
  563. package/dist/plain/format/formatRelativeDate.js +6 -5
  564. package/dist/plain/format/formatRelativeDateTime.d.ts +3 -3
  565. package/dist/plain/format/formatRelativeDateTime.js +6 -5
  566. package/dist/plain/format/formatRelativeTime.d.ts +3 -3
  567. package/dist/plain/format/formatRelativeTime.js +6 -5
  568. package/dist/plain/format/{formatSql.d.ts → formatSqlDateTime.d.ts} +7 -7
  569. package/dist/plain/format/{formatSql.js → formatSqlDateTime.js} +8 -8
  570. package/dist/plain/format/formatTime.d.ts +4 -4
  571. package/dist/plain/format/formatTime.js +8 -7
  572. package/dist/plain/format/index.d.ts +1 -1
  573. package/dist/plain/format/index.js +1 -1
  574. package/dist/plain/get/getDay.js +1 -1
  575. package/dist/plain/get/getDayOfWeek.js +1 -1
  576. package/dist/plain/get/getHour.js +1 -1
  577. package/dist/plain/get/getMicrosecond.js +1 -1
  578. package/dist/plain/get/getMillisecond.js +1 -1
  579. package/dist/plain/get/getMinute.js +1 -1
  580. package/dist/plain/get/getMonth.js +1 -1
  581. package/dist/plain/get/getNanosecond.js +1 -1
  582. package/dist/plain/get/getNow.js +1 -1
  583. package/dist/plain/get/getNowUnit.d.ts +2 -0
  584. package/dist/plain/get/getNowUnit.js +3 -1
  585. package/dist/plain/get/getSecond.js +1 -1
  586. package/dist/plain/get/getToday.js +1 -1
  587. package/dist/plain/get/getWeekOfYear.js +1 -1
  588. package/dist/plain/get/getYear.d.ts +2 -0
  589. package/dist/plain/get/getYear.js +5 -4
  590. package/dist/plain/index.d.ts +1 -1
  591. package/dist/plain/index.js +2 -2
  592. package/dist/plain/interval/intervalAbutsDate.d.ts +1 -2
  593. package/dist/plain/interval/intervalAbutsDate.js +2 -3
  594. package/dist/plain/interval/intervalAbutsDateTime.js +1 -1
  595. package/dist/plain/interval/intervalAbutsTime.js +1 -1
  596. package/dist/plain/interval/intervalContainsDate.d.ts +1 -1
  597. package/dist/plain/interval/intervalContainsDate.js +2 -2
  598. package/dist/plain/interval/intervalContainsDateTime.js +1 -1
  599. package/dist/plain/interval/intervalContainsTime.js +1 -1
  600. package/dist/plain/interval/intervalCountDate.js +1 -1
  601. package/dist/plain/interval/intervalCountDateTime.js +1 -1
  602. package/dist/plain/interval/intervalCountTime.js +1 -1
  603. package/dist/plain/interval/intervalDifferenceDate.d.ts +1 -1
  604. package/dist/plain/interval/intervalDifferenceDate.js +2 -2
  605. package/dist/plain/interval/intervalDifferenceDateTime.js +1 -1
  606. package/dist/plain/interval/intervalDifferenceTime.js +1 -1
  607. package/dist/plain/interval/intervalDivideEquallyDate.d.ts +3 -3
  608. package/dist/plain/interval/intervalDivideEquallyDate.js +3 -3
  609. package/dist/plain/interval/intervalDivideEquallyDateTime.js +1 -1
  610. package/dist/plain/interval/intervalDivideEquallyTime.js +1 -1
  611. package/dist/plain/interval/intervalEngulfsDate.d.ts +1 -1
  612. package/dist/plain/interval/intervalEngulfsDate.js +2 -2
  613. package/dist/plain/interval/intervalEngulfsDateTime.js +1 -1
  614. package/dist/plain/interval/intervalEngulfsTime.js +1 -1
  615. package/dist/plain/interval/intervalFromDurationDate.js +1 -1
  616. package/dist/plain/interval/intervalFromDurationDateTime.js +1 -1
  617. package/dist/plain/interval/intervalFromDurationTime.js +1 -1
  618. package/dist/plain/interval/intervalIntersectionDate.d.ts +1 -1
  619. package/dist/plain/interval/intervalIntersectionDate.js +2 -2
  620. package/dist/plain/interval/intervalIntersectionDateTime.js +1 -1
  621. package/dist/plain/interval/intervalIntersectionTime.js +1 -1
  622. package/dist/plain/interval/intervalLengthDateTime.js +1 -1
  623. package/dist/plain/interval/intervalLengthTime.js +1 -1
  624. package/dist/plain/interval/intervalOverlappingDaysDate.js +1 -1
  625. package/dist/plain/interval/intervalOverlappingDaysDateTime.js +1 -1
  626. package/dist/plain/interval/intervalSplitAtDate.d.ts +1 -1
  627. package/dist/plain/interval/intervalSplitAtDate.js +2 -2
  628. package/dist/plain/interval/intervalSplitAtDateTime.js +1 -1
  629. package/dist/plain/interval/intervalSplitAtTime.js +1 -1
  630. package/dist/plain/interval/intervalUnionDate.d.ts +2 -2
  631. package/dist/plain/interval/intervalUnionDate.js +3 -3
  632. package/dist/plain/interval/intervalUnionDateTime.js +1 -1
  633. package/dist/plain/interval/intervalUnionTime.js +1 -1
  634. package/dist/plain/interval/intervalXorAllDate.d.ts +1 -1
  635. package/dist/plain/interval/intervalXorAllDate.js +4 -4
  636. package/dist/plain/interval/intervalXorAllDateTime.js +3 -3
  637. package/dist/plain/interval/intervalXorAllTime.js +3 -3
  638. package/dist/plain/interval/intervalXorDate.d.ts +1 -1
  639. package/dist/plain/interval/intervalXorDate.js +2 -2
  640. package/dist/plain/interval/intervalXorDateTime.js +1 -1
  641. package/dist/plain/interval/intervalXorTime.js +1 -1
  642. package/dist/plain/interval/intervalsOverlapDate.d.ts +1 -1
  643. package/dist/plain/interval/intervalsOverlapDate.js +2 -2
  644. package/dist/plain/interval/intervalsOverlapDateTime.js +1 -1
  645. package/dist/plain/interval/intervalsOverlapTime.js +1 -1
  646. package/dist/plain/interval/mergeIntervalsDate.d.ts +1 -1
  647. package/dist/plain/interval/mergeIntervalsDate.js +4 -4
  648. package/dist/plain/interval/mergeIntervalsDateTime.js +3 -3
  649. package/dist/plain/interval/mergeIntervalsTime.js +3 -3
  650. package/dist/plain/interval/splitIntervalByUnitDate.d.ts +2 -3
  651. package/dist/plain/interval/splitIntervalByUnitDate.js +3 -4
  652. package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +2 -1
  653. package/dist/plain/interval/splitIntervalByUnitDateTime.js +3 -2
  654. package/dist/plain/interval/splitIntervalByUnitTime.js +1 -1
  655. package/dist/plain/interval/validate/isValidDateInterval.d.ts +1 -1
  656. package/dist/plain/interval/validate/isValidDateInterval.js +2 -2
  657. package/dist/plain/interval/validate/isValidDateTimeInterval.js +1 -1
  658. package/dist/plain/interval/validate/isValidTimeInterval.js +1 -1
  659. package/dist/plain/locale/getLocaleEraNames.d.ts +6 -6
  660. package/dist/plain/locale/getLocaleEraNames.js +8 -7
  661. package/dist/plain/locale/getLocaleMeridiems.d.ts +5 -5
  662. package/dist/plain/locale/getLocaleMeridiems.js +7 -6
  663. package/dist/plain/locale/getLocaleMonthNames.d.ts +6 -6
  664. package/dist/plain/locale/getLocaleMonthNames.js +17 -11
  665. package/dist/plain/locale/getLocaleWeekdayNames.d.ts +3 -3
  666. package/dist/plain/locale/getLocaleWeekdayNames.js +12 -5
  667. package/dist/plain/map/mapDatesInRange.js +1 -1
  668. package/dist/plain/map/mapDaysInMonth.js +1 -1
  669. package/dist/plain/parse/index.d.ts +1 -1
  670. package/dist/plain/parse/index.js +1 -1
  671. package/dist/plain/parse/parseDateTimeWithPattern.d.ts +28 -14
  672. package/dist/plain/parse/parseDateTimeWithPattern.js +33 -17
  673. package/dist/plain/parse/parseDateWithPattern.d.ts +29 -14
  674. package/dist/plain/parse/parseDateWithPattern.js +34 -17
  675. package/dist/plain/parse/parseDayFromDate.js +1 -1
  676. package/dist/plain/parse/parseDayFromDateTime.js +1 -1
  677. package/dist/plain/parse/parseDayOfWeekFromDate.js +1 -1
  678. package/dist/plain/parse/parseDayOfWeekFromDateTime.js +1 -1
  679. package/dist/plain/parse/parseHourFromDateTime.js +1 -1
  680. package/dist/plain/parse/parseHourFromTime.js +1 -1
  681. package/dist/plain/parse/parseMicrosecondFromDateTime.js +1 -1
  682. package/dist/plain/parse/parseMicrosecondFromTime.js +1 -1
  683. package/dist/plain/parse/parseMillisecondFromDateTime.js +1 -1
  684. package/dist/plain/parse/parseMillisecondFromTime.js +1 -1
  685. package/dist/plain/parse/parseMinuteFromDateTime.js +1 -1
  686. package/dist/plain/parse/parseMinuteFromTime.js +1 -1
  687. package/dist/plain/parse/parseMonthFromDate.js +1 -1
  688. package/dist/plain/parse/parseMonthFromDateTime.js +1 -1
  689. package/dist/plain/parse/parseNanosecondFromDateTime.js +1 -1
  690. package/dist/plain/parse/parseNanosecondFromTime.js +1 -1
  691. package/dist/plain/parse/parseSecondFromDateTime.js +1 -1
  692. package/dist/plain/parse/parseSecondFromTime.js +1 -1
  693. package/dist/plain/parse/{parseSql.d.ts → parseSqlDateTime.d.ts} +8 -8
  694. package/dist/plain/parse/{parseSql.js → parseSqlDateTime.js} +9 -9
  695. package/dist/plain/parse/parseTimeWithPattern.d.ts +6 -4
  696. package/dist/plain/parse/parseTimeWithPattern.js +8 -5
  697. package/dist/plain/parse/parseUnitFromDate.d.ts +4 -1
  698. package/dist/plain/parse/parseUnitFromDate.js +6 -2
  699. package/dist/plain/parse/parseUnitFromDateTime.d.ts +4 -1
  700. package/dist/plain/parse/parseUnitFromDateTime.js +6 -2
  701. package/dist/plain/parse/parseUnitFromTime.d.ts +1 -1
  702. package/dist/plain/parse/parseUnitFromTime.js +1 -1
  703. package/dist/plain/parse/parseWeekFromDateTime.js +1 -1
  704. package/dist/plain/parse/parseYearFromDate.d.ts +5 -2
  705. package/dist/plain/parse/parseYearFromDate.js +8 -4
  706. package/dist/plain/parse/parseYearFromDateTime.d.ts +4 -2
  707. package/dist/plain/parse/parseYearFromDateTime.js +7 -4
  708. package/dist/plain/validate/{isLeapSecond.d.ts → hasSecond60.d.ts} +16 -14
  709. package/dist/plain/validate/{isLeapSecond.js → hasSecond60.js} +16 -14
  710. package/dist/plain/validate/index.d.ts +2 -1
  711. package/dist/plain/validate/index.js +2 -1
  712. package/dist/plain/validate/isLeapYear.js +1 -1
  713. package/dist/plain/validate/isValidDate.js +2 -17
  714. package/dist/plain/validate/isValidDateRange.js +1 -1
  715. package/dist/plain/validate/isValidDateTime.d.ts +1 -1
  716. package/dist/plain/validate/isValidDateTime.js +4 -4
  717. package/dist/plain/validate/isValidDateTimeRange.js +1 -1
  718. package/dist/plain/validate/isValidIsoDateLike.js +3 -3
  719. package/dist/plain/validate/isValidSqlDateTime.d.ts +33 -0
  720. package/dist/plain/validate/isValidSqlDateTime.js +36 -0
  721. package/dist/plain/validate/isValidTime.js +2 -18
  722. package/dist/plain/validate/isValidTimeRange.js +1 -1
  723. package/dist/precision/convert/fromNanoseconds.d.ts +11 -5
  724. package/dist/precision/convert/fromNanoseconds.js +12 -6
  725. package/dist/precision/convert/toNanoseconds.d.ts +2 -2
  726. package/dist/precision/convert/toNanoseconds.js +2 -2
  727. package/dist/precision/index.d.ts +1 -1
  728. package/dist/precision/index.js +2 -2
  729. package/dist/precision/validate/isValidInstant.d.ts +1 -1
  730. package/dist/precision/validate/isValidInstant.js +1 -1
  731. package/dist/regex/calendar-zoned-date-time.d.ts +4 -4
  732. package/dist/regex/calendar-zoned-date-time.js +4 -4
  733. package/dist/regex/epcis.d.ts +60 -0
  734. package/dist/regex/epcis.js +60 -0
  735. package/dist/regex/http-date.d.ts +6 -4
  736. package/dist/regex/http-date.js +6 -4
  737. package/dist/regex/index.d.ts +2 -1
  738. package/dist/regex/index.js +3 -2
  739. package/dist/regex/leap-second.d.ts +1 -1
  740. package/dist/regex/leap-second.js +1 -1
  741. package/dist/regex/rfc-2822.d.ts +2 -0
  742. package/dist/regex/rfc-2822.js +2 -0
  743. package/dist/regex/rfc-3339.d.ts +3 -1
  744. package/dist/regex/rfc-3339.js +3 -1
  745. package/dist/regex/sql-date-time.d.ts +2 -1
  746. package/dist/regex/sql-date-time.js +2 -1
  747. package/dist/regex/time-zone-like.d.ts +5 -4
  748. package/dist/regex/time-zone-like.js +5 -4
  749. package/dist/regex/utc-offset.d.ts +2 -1
  750. package/dist/regex/utc-offset.js +2 -1
  751. package/dist/span/calculate/spanMs.d.ts +4 -3
  752. package/dist/span/calculate/spanMs.js +4 -3
  753. package/dist/span/calculate/spanNs.d.ts +4 -3
  754. package/dist/span/calculate/spanNs.js +4 -3
  755. package/dist/span/calculate/spanWallClock.d.ts +12 -12
  756. package/dist/span/calculate/spanWallClock.js +13 -13
  757. package/dist/span/index.d.ts +1 -1
  758. package/dist/span/index.js +2 -2
  759. package/dist/span/validate/isValidSpan.d.ts +3 -3
  760. package/dist/span/validate/isValidSpan.js +3 -3
  761. package/dist/timescale/calculate/index.d.ts +3 -0
  762. package/dist/timescale/calculate/index.js +3 -0
  763. package/dist/timescale/calculate/leapSecondsBetween.d.ts +26 -0
  764. package/dist/timescale/calculate/leapSecondsBetween.js +62 -0
  765. package/dist/timescale/calculate/nextLeapSecond.d.ts +18 -0
  766. package/dist/timescale/calculate/nextLeapSecond.js +33 -0
  767. package/dist/timescale/calculate/taiMinusUtc.d.ts +21 -0
  768. package/dist/timescale/calculate/taiMinusUtc.js +38 -0
  769. package/dist/timescale/convert/fromTAI.d.ts +22 -0
  770. package/dist/timescale/convert/fromTAI.js +35 -0
  771. package/dist/timescale/convert/index.d.ts +2 -0
  772. package/dist/timescale/convert/index.js +2 -0
  773. package/dist/timescale/convert/toTAI.d.ts +23 -0
  774. package/dist/timescale/convert/toTAI.js +39 -0
  775. package/dist/timescale/index.d.ts +4 -0
  776. package/dist/timescale/index.js +5 -0
  777. package/dist/timescale/validate/index.d.ts +1 -0
  778. package/dist/timescale/validate/index.js +1 -0
  779. package/dist/timescale/validate/isLeapSecond.d.ts +25 -0
  780. package/dist/timescale/validate/isLeapSecond.js +36 -0
  781. package/dist/transport/calculate/crossingTime.d.ts +8 -3
  782. package/dist/transport/calculate/crossingTime.js +9 -4
  783. package/dist/transport/calculate/cutoffAt.d.ts +10 -5
  784. package/dist/transport/calculate/cutoffAt.js +26 -133
  785. package/dist/transport/calculate/cutoffSchedule.d.ts +8 -3
  786. package/dist/transport/calculate/cutoffSchedule.js +54 -20
  787. package/dist/transport/calculate/dwellTime.d.ts +9 -4
  788. package/dist/transport/calculate/dwellTime.js +10 -5
  789. package/dist/transport/calculate/estimateDrift.d.ts +1 -1
  790. package/dist/transport/calculate/estimateDrift.js +1 -1
  791. package/dist/transport/calculate/nextDeparture.d.ts +2 -2
  792. package/dist/transport/calculate/nextDeparture.js +2 -2
  793. package/dist/transport/calculate/scheduleDelivery.d.ts +15 -7
  794. package/dist/transport/calculate/scheduleDelivery.js +9 -4
  795. package/dist/transport/calculate/transitTime.d.ts +11 -11
  796. package/dist/transport/calculate/transitTime.js +11 -11
  797. package/dist/transport/compare/classifyPunctuality.d.ts +1 -1
  798. package/dist/transport/compare/classifyPunctuality.js +1 -1
  799. package/dist/transport/compare/isPastCutoff.d.ts +1 -1
  800. package/dist/transport/compare/isPastCutoff.js +2 -2
  801. package/dist/transport/compare/scheduleDeviation.d.ts +1 -1
  802. package/dist/transport/compare/scheduleDeviation.js +1 -1
  803. package/dist/transport/compare/timeToCutoff.d.ts +1 -1
  804. package/dist/transport/compare/timeToCutoff.js +1 -1
  805. package/dist/transport/convert/etaAtZone.d.ts +8 -3
  806. package/dist/transport/convert/etaAtZone.js +8 -3
  807. package/dist/transport/index.d.ts +1 -1
  808. package/dist/transport/index.js +2 -2
  809. package/dist/types/business-calendar.d.ts +5 -4
  810. package/dist/types/date-duration-unit.d.ts +1 -1
  811. package/dist/types/date-time-duration-units.d.ts +1 -1
  812. package/dist/types/date-time-unit.d.ts +1 -1
  813. package/dist/types/date-unit.d.ts +1 -1
  814. package/dist/types/disambiguation.d.ts +1 -1
  815. package/dist/types/duration-relative-to.d.ts +1 -1
  816. package/dist/types/duration-string-options.d.ts +1 -1
  817. package/dist/types/duty.d.ts +777 -0
  818. package/dist/types/duty.js +0 -0
  819. package/dist/types/edi.d.ts +407 -0
  820. package/dist/types/edi.js +0 -0
  821. package/dist/types/epcis.d.ts +25 -0
  822. package/dist/types/epcis.js +0 -0
  823. package/dist/types/exact-duration-unit.d.ts +8 -0
  824. package/dist/types/exact-duration-unit.js +0 -0
  825. package/dist/types/fiscal-calendar.d.ts +40 -4
  826. package/dist/types/free-time-options.d.ts +4 -3
  827. package/dist/types/gnss.d.ts +51 -0
  828. package/dist/types/gnss.js +0 -0
  829. package/dist/types/index.d.ts +7 -0
  830. package/dist/types/index.js +7 -0
  831. package/dist/types/now-unit.d.ts +1 -1
  832. package/dist/types/offset.d.ts +1 -1
  833. package/dist/types/operating-schedule.d.ts +3 -2
  834. package/dist/types/overflow.d.ts +1 -1
  835. package/dist/types/rounding-options.d.ts +1 -1
  836. package/dist/types/stored-zoned-classification.d.ts +83 -0
  837. package/dist/types/stored-zoned-classification.js +0 -0
  838. package/dist/types/time-duration-unit.d.ts +1 -1
  839. package/dist/types/time-unit.d.ts +1 -1
  840. package/dist/types/two-digit-year.d.ts +23 -0
  841. package/dist/types/two-digit-year.js +0 -0
  842. package/dist/types/utc-now-unit.d.ts +1 -1
  843. package/dist/types/zone-bucket-unit.d.ts +1 -1
  844. package/dist/unix/calculate/addUnix.d.ts +11 -2
  845. package/dist/unix/calculate/addUnix.js +14 -11
  846. package/dist/unix/calculate/diffUnix.d.ts +11 -3
  847. package/dist/unix/calculate/diffUnix.js +11 -6
  848. package/dist/unix/calculate/diffUnixAsDuration.d.ts +11 -3
  849. package/dist/unix/calculate/diffUnixAsDuration.js +10 -5
  850. package/dist/unix/calculate/endOfQuarterForUnix.d.ts +10 -2
  851. package/dist/unix/calculate/endOfQuarterForUnix.js +6 -0
  852. package/dist/unix/calculate/endOfUnix.d.ts +13 -4
  853. package/dist/unix/calculate/endOfUnix.js +8 -1
  854. package/dist/unix/calculate/isBetweenUnix.d.ts +3 -2
  855. package/dist/unix/calculate/isBetweenUnix.js +4 -4
  856. package/dist/unix/calculate/roundUnix.d.ts +17 -7
  857. package/dist/unix/calculate/roundUnix.js +19 -10
  858. package/dist/unix/calculate/setUnix.d.ts +28 -8
  859. package/dist/unix/calculate/setUnix.js +35 -14
  860. package/dist/unix/calculate/startOfQuarterForUnix.d.ts +10 -2
  861. package/dist/unix/calculate/startOfQuarterForUnix.js +6 -0
  862. package/dist/unix/calculate/startOfUnix.d.ts +13 -4
  863. package/dist/unix/calculate/startOfUnix.js +8 -1
  864. package/dist/unix/calculate/subtractUnix.d.ts +10 -2
  865. package/dist/unix/calculate/subtractUnix.js +13 -11
  866. package/dist/unix/compare/areUnixEqualBy.d.ts +13 -4
  867. package/dist/unix/compare/areUnixEqualBy.js +8 -1
  868. package/dist/unix/convert/convertUnixToPlainDate.d.ts +5 -2
  869. package/dist/unix/convert/convertUnixToPlainDate.js +5 -4
  870. package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +5 -2
  871. package/dist/unix/convert/convertUnixToPlainDateTime.js +5 -4
  872. package/dist/unix/convert/convertUnixToPlainTime.d.ts +6 -3
  873. package/dist/unix/convert/convertUnixToPlainTime.js +6 -5
  874. package/dist/unix/convert/convertUnixToZoned.d.ts +6 -2
  875. package/dist/unix/convert/convertUnixToZoned.js +6 -2
  876. package/dist/unix/format/formatCalendarUnix.d.ts +16 -11
  877. package/dist/unix/format/formatCalendarUnix.js +12 -7
  878. package/dist/unix/format/formatRelativeUnix.d.ts +17 -9
  879. package/dist/unix/format/formatRelativeUnix.js +19 -11
  880. package/dist/unix/format/formatUnix.d.ts +16 -11
  881. package/dist/unix/format/formatUnix.js +13 -9
  882. package/dist/unix/get/getUnixDay.d.ts +1 -3
  883. package/dist/unix/get/getUnixDay.js +6 -13
  884. package/dist/unix/get/getUnixHour.d.ts +1 -3
  885. package/dist/unix/get/getUnixHour.js +6 -13
  886. package/dist/unix/get/getUnixMicrosecond.d.ts +1 -3
  887. package/dist/unix/get/getUnixMicrosecond.js +5 -12
  888. package/dist/unix/get/getUnixMillisecond.d.ts +1 -3
  889. package/dist/unix/get/getUnixMillisecond.js +6 -13
  890. package/dist/unix/get/getUnixMinute.d.ts +1 -3
  891. package/dist/unix/get/getUnixMinute.js +6 -13
  892. package/dist/unix/get/getUnixMonth.d.ts +1 -3
  893. package/dist/unix/get/getUnixMonth.js +6 -13
  894. package/dist/unix/get/getUnixNanosecond.d.ts +1 -3
  895. package/dist/unix/get/getUnixNanosecond.js +5 -12
  896. package/dist/unix/get/getUnixNow.js +1 -1
  897. package/dist/unix/get/getUnixNowUnit.d.ts +3 -1
  898. package/dist/unix/get/getUnixNowUnit.js +3 -1
  899. package/dist/unix/get/getUnixSecond.d.ts +1 -3
  900. package/dist/unix/get/getUnixSecond.js +6 -13
  901. package/dist/unix/get/getUnixYear.d.ts +3 -3
  902. package/dist/unix/get/getUnixYear.js +6 -13
  903. package/dist/unix/index.d.ts +1 -1
  904. package/dist/unix/index.js +2 -2
  905. package/dist/unix/interval/intervalCountUnix.d.ts +11 -2
  906. package/dist/unix/interval/intervalCountUnix.js +7 -0
  907. package/dist/unix/interval/intervalFromDurationUnix.d.ts +10 -2
  908. package/dist/unix/interval/intervalFromDurationUnix.js +13 -8
  909. package/dist/unix/interval/intervalLengthUnix.d.ts +12 -4
  910. package/dist/unix/interval/intervalLengthUnix.js +8 -2
  911. package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +10 -2
  912. package/dist/unix/interval/intervalOverlappingDaysUnix.js +10 -5
  913. package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +13 -4
  914. package/dist/unix/interval/splitIntervalByUnitUnix.js +16 -9
  915. package/dist/unix/parse/parseDateFromUnix.d.ts +4 -2
  916. package/dist/unix/parse/parseDateFromUnix.js +3 -3
  917. package/dist/unix/parse/parseDayFromUnix.d.ts +4 -2
  918. package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +4 -2
  919. package/dist/unix/parse/parseDayOfWeekFromUnix.js +2 -2
  920. package/dist/unix/parse/parseHourFromUnix.d.ts +4 -2
  921. package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +4 -2
  922. package/dist/unix/parse/parseMillisecondFromUnix.d.ts +4 -2
  923. package/dist/unix/parse/parseMinuteFromUnix.d.ts +4 -2
  924. package/dist/unix/parse/parseMonthFromUnix.d.ts +4 -2
  925. package/dist/unix/parse/parseNanosecondFromUnix.d.ts +4 -2
  926. package/dist/unix/parse/parseSecondFromUnix.d.ts +4 -2
  927. package/dist/unix/parse/parseTimeFromUnix.d.ts +5 -2
  928. package/dist/unix/parse/parseTimeFromUnix.js +4 -3
  929. package/dist/unix/parse/parseUnitFromUnix.d.ts +10 -4
  930. package/dist/unix/parse/parseUnitFromUnix.js +21 -14
  931. package/dist/unix/parse/parseWeekFromUnix.d.ts +3 -2
  932. package/dist/unix/parse/parseWeekFromUnix.js +4 -4
  933. package/dist/unix/parse/parseYearFromUnix.d.ts +8 -3
  934. package/dist/unix/parse/parseYearFromUnix.js +4 -1
  935. package/dist/unix/validate/isValidUnixUnit.d.ts +1 -1
  936. package/dist/utc/calculate/addUtc.js +5 -8
  937. package/dist/utc/calculate/diffUtc.d.ts +1 -1
  938. package/dist/utc/calculate/diffUtc.js +1 -1
  939. package/dist/utc/calculate/diffUtcAsDuration.d.ts +1 -1
  940. package/dist/utc/calculate/diffUtcAsDuration.js +1 -1
  941. package/dist/utc/calculate/endOfQuarterForUtc.js +1 -1
  942. package/dist/utc/calculate/endOfUtc.d.ts +1 -1
  943. package/dist/utc/calculate/isBetweenUtc.js +1 -1
  944. package/dist/utc/calculate/maxUtc.js +1 -1
  945. package/dist/utc/calculate/minUtc.js +1 -1
  946. package/dist/utc/calculate/roundUtc.d.ts +1 -1
  947. package/dist/utc/calculate/roundUtc.js +1 -1
  948. package/dist/utc/calculate/setUtc.d.ts +17 -4
  949. package/dist/utc/calculate/setUtc.js +23 -9
  950. package/dist/utc/calculate/sortUtc.js +1 -1
  951. package/dist/utc/calculate/startOfQuarterForUtc.js +1 -1
  952. package/dist/utc/calculate/startOfUtc.d.ts +1 -1
  953. package/dist/utc/calculate/subtractUtc.js +5 -8
  954. package/dist/utc/compare/areUtcEqual.js +1 -1
  955. package/dist/utc/compare/areUtcEqualBy.d.ts +2 -2
  956. package/dist/utc/compare/areUtcEqualBy.js +2 -2
  957. package/dist/utc/compare/isAfterUtc.js +1 -1
  958. package/dist/utc/compare/isBeforeUtc.js +1 -1
  959. package/dist/utc/convert/convertUtcToPlainDate.d.ts +9 -3
  960. package/dist/utc/convert/convertUtcToPlainDate.js +12 -9
  961. package/dist/utc/convert/convertUtcToPlainDateTime.d.ts +10 -3
  962. package/dist/utc/convert/convertUtcToPlainDateTime.js +14 -15
  963. package/dist/utc/convert/convertUtcToPlainTime.d.ts +6 -3
  964. package/dist/utc/convert/convertUtcToPlainTime.js +9 -8
  965. package/dist/utc/convert/convertUtcToUnix.js +1 -1
  966. package/dist/utc/convert/convertUtcToZoned.d.ts +6 -2
  967. package/dist/utc/convert/convertUtcToZoned.js +7 -3
  968. package/dist/utc/format/formatCalendarUtc.d.ts +12 -7
  969. package/dist/utc/format/formatCalendarUtc.js +9 -4
  970. package/dist/utc/format/{formatHttp.d.ts → formatHttpDate.d.ts} +7 -7
  971. package/dist/utc/format/{formatHttp.js → formatHttpDate.js} +8 -8
  972. package/dist/utc/format/formatRelativeUtc.d.ts +15 -7
  973. package/dist/utc/format/formatRelativeUtc.js +17 -9
  974. package/dist/utc/format/formatUtc.d.ts +15 -10
  975. package/dist/utc/format/formatUtc.js +12 -8
  976. package/dist/utc/format/index.d.ts +1 -1
  977. package/dist/utc/format/index.js +1 -1
  978. package/dist/utc/get/getUtcDay.d.ts +1 -3
  979. package/dist/utc/get/getUtcDay.js +6 -13
  980. package/dist/utc/get/getUtcHour.d.ts +1 -3
  981. package/dist/utc/get/getUtcHour.js +6 -13
  982. package/dist/utc/get/getUtcMicrosecond.d.ts +1 -3
  983. package/dist/utc/get/getUtcMicrosecond.js +5 -12
  984. package/dist/utc/get/getUtcMillisecond.d.ts +1 -3
  985. package/dist/utc/get/getUtcMillisecond.js +6 -13
  986. package/dist/utc/get/getUtcMinute.d.ts +1 -3
  987. package/dist/utc/get/getUtcMinute.js +6 -13
  988. package/dist/utc/get/getUtcMonth.d.ts +1 -3
  989. package/dist/utc/get/getUtcMonth.js +6 -13
  990. package/dist/utc/get/getUtcNanosecond.d.ts +1 -3
  991. package/dist/utc/get/getUtcNanosecond.js +5 -12
  992. package/dist/utc/get/getUtcNow.d.ts +1 -3
  993. package/dist/utc/get/getUtcNow.js +3 -10
  994. package/dist/utc/get/getUtcNowUnit.d.ts +2 -0
  995. package/dist/utc/get/getUtcNowUnit.js +3 -1
  996. package/dist/utc/get/getUtcSecond.d.ts +1 -3
  997. package/dist/utc/get/getUtcSecond.js +6 -13
  998. package/dist/utc/get/getUtcYear.d.ts +3 -3
  999. package/dist/utc/get/getUtcYear.js +6 -13
  1000. package/dist/utc/index.d.ts +1 -1
  1001. package/dist/utc/index.js +2 -2
  1002. package/dist/utc/interval/intervalAbutsUtc.js +1 -1
  1003. package/dist/utc/interval/intervalContainsUtc.js +1 -1
  1004. package/dist/utc/interval/intervalCountUtc.js +1 -1
  1005. package/dist/utc/interval/intervalDivideEquallyUtc.js +1 -1
  1006. package/dist/utc/interval/intervalEngulfsUtc.js +1 -1
  1007. package/dist/utc/interval/intervalFromDurationUtc.js +1 -1
  1008. package/dist/utc/interval/intervalLengthUtc.js +1 -1
  1009. package/dist/utc/interval/intervalOverlappingDaysUtc.js +1 -1
  1010. package/dist/utc/interval/intervalSplitAtUtc.js +1 -1
  1011. package/dist/utc/interval/intervalXorAllUtc.js +3 -3
  1012. package/dist/utc/interval/intervalXorUtc.js +1 -1
  1013. package/dist/utc/interval/mergeIntervalsUtc.js +2 -2
  1014. package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +2 -1
  1015. package/dist/utc/interval/splitIntervalByUnitUtc.js +3 -2
  1016. package/dist/utc/interval/validate/isValidUtcInterval.js +1 -1
  1017. package/dist/utc/parse/index.d.ts +1 -1
  1018. package/dist/utc/parse/index.js +1 -1
  1019. package/dist/utc/parse/parseDateFromUtc.d.ts +5 -3
  1020. package/dist/utc/parse/parseDateFromUtc.js +3 -3
  1021. package/dist/utc/parse/parseDayFromUtc.d.ts +5 -3
  1022. package/dist/utc/parse/parseDayFromUtc.js +3 -3
  1023. package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +5 -3
  1024. package/dist/utc/parse/parseDayOfWeekFromUtc.js +6 -6
  1025. package/dist/utc/parse/parseHourFromUtc.d.ts +5 -3
  1026. package/dist/utc/parse/parseHourFromUtc.js +3 -3
  1027. package/dist/utc/parse/{parseHttp.d.ts → parseHttpDate.d.ts} +12 -12
  1028. package/dist/utc/parse/{parseHttp.js → parseHttpDate.js} +13 -13
  1029. package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +5 -3
  1030. package/dist/utc/parse/parseMicrosecondFromUtc.js +3 -3
  1031. package/dist/utc/parse/parseMillisecondFromUtc.d.ts +5 -3
  1032. package/dist/utc/parse/parseMillisecondFromUtc.js +3 -3
  1033. package/dist/utc/parse/parseMinuteFromUtc.d.ts +4 -2
  1034. package/dist/utc/parse/parseMinuteFromUtc.js +2 -2
  1035. package/dist/utc/parse/parseMonthFromUtc.d.ts +5 -3
  1036. package/dist/utc/parse/parseMonthFromUtc.js +3 -3
  1037. package/dist/utc/parse/parseNanosecondFromUtc.d.ts +5 -3
  1038. package/dist/utc/parse/parseNanosecondFromUtc.js +3 -3
  1039. package/dist/utc/parse/parseSecondFromUtc.d.ts +5 -3
  1040. package/dist/utc/parse/parseSecondFromUtc.js +3 -3
  1041. package/dist/utc/parse/parseTimeFromUtc.d.ts +6 -3
  1042. package/dist/utc/parse/parseTimeFromUtc.js +7 -6
  1043. package/dist/utc/parse/parseUnitFromUtc.d.ts +12 -5
  1044. package/dist/utc/parse/parseUnitFromUtc.js +13 -7
  1045. package/dist/utc/parse/parseWeekFromUtc.d.ts +5 -3
  1046. package/dist/utc/parse/parseWeekFromUtc.js +6 -6
  1047. package/dist/utc/parse/parseYearFromUtc.d.ts +9 -5
  1048. package/dist/utc/parse/parseYearFromUtc.js +9 -6
  1049. package/dist/utc/validate/index.d.ts +2 -0
  1050. package/dist/utc/validate/index.js +2 -0
  1051. package/dist/utc/validate/isValidHttpDate.d.ts +35 -0
  1052. package/dist/utc/validate/isValidHttpDate.js +38 -0
  1053. package/dist/utc/validate/isValidUtc.d.ts +4 -0
  1054. package/dist/utc/validate/isValidUtc.js +7 -3
  1055. package/dist/utc/validate/isValidUtcRange.js +1 -1
  1056. package/dist/utc/validate/isValidUtcTimestamp.d.ts +43 -0
  1057. package/dist/utc/validate/isValidUtcTimestamp.js +48 -0
  1058. package/dist/workforce/calculate/dutyDayFor.d.ts +38 -0
  1059. package/dist/workforce/calculate/dutyDayFor.js +71 -0
  1060. package/dist/workforce/calculate/dutyTotals.d.ts +24 -0
  1061. package/dist/workforce/calculate/dutyTotals.js +41 -0
  1062. package/dist/workforce/calculate/dutyViolations.d.ts +74 -0
  1063. package/dist/workforce/calculate/dutyViolations.js +65 -0
  1064. package/dist/workforce/calculate/evaluateDutyLog.d.ts +77 -0
  1065. package/dist/workforce/calculate/evaluateDutyLog.js +75 -0
  1066. package/dist/workforce/calculate/index.d.ts +7 -0
  1067. package/dist/workforce/calculate/index.js +7 -0
  1068. package/dist/workforce/calculate/longestRun.d.ts +28 -0
  1069. package/dist/workforce/calculate/longestRun.js +54 -0
  1070. package/dist/workforce/calculate/qualifyingRestPairs.d.ts +37 -0
  1071. package/dist/workforce/calculate/qualifyingRestPairs.js +58 -0
  1072. package/dist/workforce/calculate/qualifyingRests.d.ts +27 -0
  1073. package/dist/workforce/calculate/qualifyingRests.js +49 -0
  1074. package/dist/workforce/index.d.ts +3 -0
  1075. package/dist/workforce/index.js +4 -0
  1076. package/dist/workforce/validate/index.d.ts +1 -0
  1077. package/dist/workforce/validate/index.js +1 -0
  1078. package/dist/workforce/validate/isValidDutyLog.d.ts +24 -0
  1079. package/dist/workforce/validate/isValidDutyLog.js +34 -0
  1080. package/dist/zoned/calculate/addZoned.d.ts +15 -15
  1081. package/dist/zoned/calculate/addZoned.js +19 -22
  1082. package/dist/zoned/calculate/addZonedBusinessDays.d.ts +5 -4
  1083. package/dist/zoned/calculate/addZonedBusinessDays.js +5 -4
  1084. package/dist/zoned/calculate/clampZoned.js +1 -1
  1085. package/dist/zoned/calculate/diffZoned.d.ts +8 -8
  1086. package/dist/zoned/calculate/diffZoned.js +7 -7
  1087. package/dist/zoned/calculate/diffZonedAsDuration.d.ts +5 -5
  1088. package/dist/zoned/calculate/diffZonedAsDuration.js +4 -4
  1089. package/dist/zoned/calculate/endOfZoned.d.ts +3 -3
  1090. package/dist/zoned/calculate/endOfZoned.js +2 -2
  1091. package/dist/zoned/calculate/getHoursInZonedDay.d.ts +2 -2
  1092. package/dist/zoned/calculate/getHoursInZonedDay.js +2 -2
  1093. package/dist/zoned/calculate/getLocaleZonedDayOfWeek.d.ts +6 -5
  1094. package/dist/zoned/calculate/getLocaleZonedDayOfWeek.js +6 -5
  1095. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +5 -5
  1096. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +5 -5
  1097. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +6 -6
  1098. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +6 -6
  1099. package/dist/zoned/calculate/maxZoned.d.ts +2 -2
  1100. package/dist/zoned/calculate/maxZoned.js +3 -3
  1101. package/dist/zoned/calculate/minZoned.d.ts +2 -2
  1102. package/dist/zoned/calculate/minZoned.js +3 -3
  1103. package/dist/zoned/calculate/roundZoned.d.ts +11 -9
  1104. package/dist/zoned/calculate/roundZoned.js +11 -9
  1105. package/dist/zoned/calculate/setZoned.d.ts +26 -12
  1106. package/dist/zoned/calculate/setZoned.js +33 -16
  1107. package/dist/zoned/calculate/sortZoned.d.ts +3 -3
  1108. package/dist/zoned/calculate/sortZoned.js +4 -4
  1109. package/dist/zoned/calculate/startOfZoned.d.ts +3 -3
  1110. package/dist/zoned/calculate/startOfZoned.js +2 -2
  1111. package/dist/zoned/calculate/subtractZoned.d.ts +14 -14
  1112. package/dist/zoned/calculate/subtractZoned.js +18 -21
  1113. package/dist/zoned/calculate/subtractZonedBusinessDays.d.ts +5 -4
  1114. package/dist/zoned/calculate/subtractZonedBusinessDays.js +5 -4
  1115. package/dist/zoned/chop/chopZonedDate.d.ts +1 -1
  1116. package/dist/zoned/chop/chopZonedDate.js +1 -1
  1117. package/dist/zoned/chop/chopZonedMilliseconds.d.ts +1 -1
  1118. package/dist/zoned/chop/chopZonedMilliseconds.js +1 -1
  1119. package/dist/zoned/chop/chopZonedSeconds.d.ts +1 -1
  1120. package/dist/zoned/chop/chopZonedSeconds.js +1 -1
  1121. package/dist/zoned/chop/chopZonedTime.d.ts +1 -1
  1122. package/dist/zoned/chop/chopZonedTime.js +1 -1
  1123. package/dist/zoned/chop/chopZonedTimezone.d.ts +1 -1
  1124. package/dist/zoned/chop/chopZonedTimezone.js +1 -1
  1125. package/dist/zoned/classify/classifyStoredZoned.d.ts +46 -0
  1126. package/dist/zoned/classify/classifyStoredZoned.js +177 -0
  1127. package/dist/zoned/classify/index.d.ts +1 -0
  1128. package/dist/zoned/classify/index.js +1 -0
  1129. package/dist/zoned/compare/areZonedEqual.js +1 -1
  1130. package/dist/zoned/compare/areZonedEqualBy.d.ts +8 -10
  1131. package/dist/zoned/compare/areZonedEqualBy.js +8 -10
  1132. package/dist/zoned/compare/isAfterZoned.js +1 -1
  1133. package/dist/zoned/compare/isBeforeZoned.d.ts +2 -2
  1134. package/dist/zoned/compare/isBeforeZoned.js +3 -3
  1135. package/dist/zoned/compare/isBetweenZoned.js +1 -1
  1136. package/dist/zoned/compare/isInDaylightSaving.d.ts +2 -2
  1137. package/dist/zoned/compare/isInDaylightSaving.js +2 -2
  1138. package/dist/zoned/compare/isZonedBusinessDay.d.ts +7 -6
  1139. package/dist/zoned/compare/isZonedBusinessDay.js +7 -6
  1140. package/dist/zoned/compare/isZonedFuture.js +1 -1
  1141. package/dist/zoned/compare/isZonedPast.js +1 -1
  1142. package/dist/zoned/compare/isZonedRelativeDay.d.ts +2 -2
  1143. package/dist/zoned/compare/isZonedRelativeDay.js +3 -3
  1144. package/dist/zoned/compare/isZonedThisUnit.d.ts +7 -7
  1145. package/dist/zoned/compare/isZonedThisUnit.js +7 -7
  1146. package/dist/zoned/compare/isZonedWeekend.d.ts +5 -5
  1147. package/dist/zoned/compare/isZonedWeekend.js +5 -5
  1148. package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +10 -7
  1149. package/dist/zoned/convert/convertPlainDateTimeToZoned.js +10 -7
  1150. package/dist/zoned/convert/convertZonedToCalendar.d.ts +5 -5
  1151. package/dist/zoned/convert/convertZonedToCalendar.js +5 -5
  1152. package/dist/zoned/convert/convertZonedToPlainDateTime.d.ts +3 -3
  1153. package/dist/zoned/convert/convertZonedToPlainDateTime.js +3 -3
  1154. package/dist/zoned/convert/convertZonedToZoned.d.ts +7 -3
  1155. package/dist/zoned/convert/convertZonedToZoned.js +7 -3
  1156. package/dist/zoned/format/formatCalendarZoned.d.ts +7 -6
  1157. package/dist/zoned/format/formatCalendarZoned.js +7 -6
  1158. package/dist/zoned/format/formatRelativeZoned.d.ts +3 -3
  1159. package/dist/zoned/format/formatRelativeZoned.js +6 -5
  1160. package/dist/zoned/format/formatRfc2822.d.ts +3 -3
  1161. package/dist/zoned/format/formatRfc2822.js +3 -3
  1162. package/dist/zoned/format/formatRfc3339.d.ts +2 -2
  1163. package/dist/zoned/format/formatRfc3339.js +2 -2
  1164. package/dist/zoned/format/formatTimeZoneName.d.ts +22 -18
  1165. package/dist/zoned/format/formatTimeZoneName.js +18 -13
  1166. package/dist/zoned/format/formatZonedDateTime.d.ts +10 -10
  1167. package/dist/zoned/format/formatZonedDateTime.js +12 -11
  1168. package/dist/zoned/format/formatZonedRange.d.ts +7 -7
  1169. package/dist/zoned/format/formatZonedRange.js +9 -8
  1170. package/dist/zoned/format/formatZonedToParts.d.ts +11 -11
  1171. package/dist/zoned/format/formatZonedToParts.js +13 -12
  1172. package/dist/zoned/get/getDstTransitions.d.ts +14 -12
  1173. package/dist/zoned/get/getDstTransitions.js +15 -10
  1174. package/dist/zoned/get/getSystemTimeZone.d.ts +5 -3
  1175. package/dist/zoned/get/getSystemTimeZone.js +7 -4
  1176. package/dist/zoned/get/getTimeZoneOffset.d.ts +15 -7
  1177. package/dist/zoned/get/getTimeZoneOffset.js +23 -10
  1178. package/dist/zoned/get/getTimeZones.d.ts +1 -1
  1179. package/dist/zoned/get/getTimeZones.js +1 -1
  1180. package/dist/zoned/get/getZonedDay.d.ts +3 -2
  1181. package/dist/zoned/get/getZonedDay.js +7 -8
  1182. package/dist/zoned/get/getZonedDayOfWeek.d.ts +3 -2
  1183. package/dist/zoned/get/getZonedDayOfWeek.js +7 -6
  1184. package/dist/zoned/get/getZonedHour.d.ts +3 -2
  1185. package/dist/zoned/get/getZonedHour.js +7 -8
  1186. package/dist/zoned/get/getZonedMicrosecond.d.ts +3 -2
  1187. package/dist/zoned/get/getZonedMicrosecond.js +7 -6
  1188. package/dist/zoned/get/getZonedMillisecond.d.ts +3 -2
  1189. package/dist/zoned/get/getZonedMillisecond.js +7 -8
  1190. package/dist/zoned/get/getZonedMinute.d.ts +3 -2
  1191. package/dist/zoned/get/getZonedMinute.js +7 -8
  1192. package/dist/zoned/get/getZonedMonth.d.ts +3 -2
  1193. package/dist/zoned/get/getZonedMonth.js +7 -8
  1194. package/dist/zoned/get/getZonedNanosecond.d.ts +3 -2
  1195. package/dist/zoned/get/getZonedNanosecond.js +7 -6
  1196. package/dist/zoned/get/getZonedNow.d.ts +9 -5
  1197. package/dist/zoned/get/getZonedNow.js +9 -5
  1198. package/dist/zoned/get/getZonedNowUnit.d.ts +7 -4
  1199. package/dist/zoned/get/getZonedNowUnit.js +11 -8
  1200. package/dist/zoned/get/getZonedSecond.d.ts +3 -2
  1201. package/dist/zoned/get/getZonedSecond.js +7 -8
  1202. package/dist/zoned/get/getZonedToday.d.ts +3 -2
  1203. package/dist/zoned/get/getZonedToday.js +7 -6
  1204. package/dist/zoned/get/getZonedWeekOfYear.d.ts +3 -2
  1205. package/dist/zoned/get/getZonedWeekOfYear.js +7 -6
  1206. package/dist/zoned/get/getZonedYear.d.ts +5 -2
  1207. package/dist/zoned/get/getZonedYear.js +10 -8
  1208. package/dist/zoned/index.d.ts +2 -1
  1209. package/dist/zoned/index.js +3 -2
  1210. package/dist/zoned/interval/intervalAbutsZoned.d.ts +2 -2
  1211. package/dist/zoned/interval/intervalAbutsZoned.js +3 -3
  1212. package/dist/zoned/interval/intervalContainsZoned.d.ts +1 -1
  1213. package/dist/zoned/interval/intervalContainsZoned.js +2 -2
  1214. package/dist/zoned/interval/intervalCountZoned.d.ts +4 -4
  1215. package/dist/zoned/interval/intervalCountZoned.js +5 -5
  1216. package/dist/zoned/interval/intervalDifferenceZoned.js +1 -1
  1217. package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +1 -1
  1218. package/dist/zoned/interval/intervalDivideEquallyZoned.js +2 -2
  1219. package/dist/zoned/interval/intervalEngulfsZoned.d.ts +1 -1
  1220. package/dist/zoned/interval/intervalEngulfsZoned.js +2 -2
  1221. package/dist/zoned/interval/intervalFromDurationZoned.d.ts +6 -6
  1222. package/dist/zoned/interval/intervalFromDurationZoned.js +7 -7
  1223. package/dist/zoned/interval/intervalIntersectionZoned.js +1 -1
  1224. package/dist/zoned/interval/intervalLengthZoned.d.ts +5 -5
  1225. package/dist/zoned/interval/intervalLengthZoned.js +5 -5
  1226. package/dist/zoned/interval/intervalOverlappingDaysZoned.d.ts +2 -2
  1227. package/dist/zoned/interval/intervalOverlappingDaysZoned.js +3 -3
  1228. package/dist/zoned/interval/intervalSplitAtZoned.js +14 -16
  1229. package/dist/zoned/interval/intervalUnionZoned.js +1 -1
  1230. package/dist/zoned/interval/intervalXorAllZoned.js +3 -3
  1231. package/dist/zoned/interval/intervalXorZoned.js +1 -1
  1232. package/dist/zoned/interval/intervalsOverlapZoned.d.ts +2 -2
  1233. package/dist/zoned/interval/intervalsOverlapZoned.js +3 -3
  1234. package/dist/zoned/interval/mergeIntervalsZoned.js +3 -3
  1235. package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +2 -1
  1236. package/dist/zoned/interval/splitIntervalByUnitZoned.js +3 -2
  1237. package/dist/zoned/interval/validate/isValidCalendarZonedInterval.d.ts +2 -2
  1238. package/dist/zoned/interval/validate/isValidCalendarZonedInterval.js +3 -3
  1239. package/dist/zoned/interval/validate/isValidZonedInterval.d.ts +1 -1
  1240. package/dist/zoned/interval/validate/isValidZonedInterval.js +2 -2
  1241. package/dist/zoned/map/mapZonedDatesInRange.js +1 -1
  1242. package/dist/zoned/map/mapZonedHoursInDay.d.ts +1 -1
  1243. package/dist/zoned/map/mapZonedHoursInDay.js +2 -2
  1244. package/dist/zoned/parse/getZonedOffset.d.ts +1 -1
  1245. package/dist/zoned/parse/getZonedOffset.js +1 -1
  1246. package/dist/zoned/parse/getZonedOffsetAs.d.ts +6 -6
  1247. package/dist/zoned/parse/getZonedOffsetAs.js +3 -3
  1248. package/dist/zoned/parse/parseDateTimeFromZoned.js +2 -2
  1249. package/dist/zoned/parse/parseRfc2822.js +1 -1
  1250. package/dist/zoned/parse/parseRfc3339.js +1 -1
  1251. package/dist/zoned/parse/parseUnitFromZoned.d.ts +5 -2
  1252. package/dist/zoned/parse/parseUnitFromZoned.js +5 -1
  1253. package/dist/zoned/parse/parseYearFromZoned.d.ts +4 -2
  1254. package/dist/zoned/parse/parseYearFromZoned.js +6 -3
  1255. package/dist/zoned/validate/hasDaylightSaving.d.ts +6 -4
  1256. package/dist/zoned/validate/hasDaylightSaving.js +16 -10
  1257. package/dist/zoned/validate/index.d.ts +2 -0
  1258. package/dist/zoned/validate/index.js +2 -0
  1259. package/dist/zoned/validate/isValidCalendarZonedDateTime.d.ts +8 -8
  1260. package/dist/zoned/validate/isValidCalendarZonedDateTime.js +8 -8
  1261. package/dist/zoned/validate/isValidRfc2822DateTime.d.ts +32 -0
  1262. package/dist/zoned/validate/isValidRfc2822DateTime.js +35 -0
  1263. package/dist/zoned/validate/isValidRfc3339DateTime.d.ts +31 -0
  1264. package/dist/zoned/validate/isValidRfc3339DateTime.js +34 -0
  1265. package/dist/zoned/validate/isValidTimeZone.d.ts +6 -2
  1266. package/dist/zoned/validate/isValidTimeZone.js +8 -19
  1267. package/dist/zoned/validate/isValidZonedDateTime.d.ts +7 -7
  1268. package/dist/zoned/validate/isValidZonedDateTime.js +9 -9
  1269. package/dist/zoned/validate/isValidZonedRange.d.ts +1 -1
  1270. package/dist/zoned/validate/isValidZonedRange.js +5 -5
  1271. package/package.json +103 -4
  1272. package/skills/gmt-arithmetic/SKILL.md +63 -17
  1273. package/skills/gmt-basics/SKILL.md +83 -21
  1274. package/skills/gmt-gnss/SKILL.md +92 -0
  1275. package/skills/gmt-integration/SKILL.md +58 -10
  1276. package/skills/gmt-intermodal/SKILL.md +189 -0
  1277. package/skills/gmt-timezone/SKILL.md +51 -169
  1278. package/skills/gmt-transport/SKILL.md +133 -0
  1279. package/skills/gmt-workforce/SKILL.md +84 -0
  1280. package/dist/internal/unixZonedDateTime.d.ts +0 -22
  1281. package/dist/internal/unixZonedDateTime.js +0 -32
  1282. package/dist/internal/utcZonedDateTime.d.ts +0 -19
  1283. package/dist/internal/utcZonedDateTime.js +0 -31
@@ -0,0 +1,51 @@
1
+ import { readEdiValue } from "../../internal/ediDateTimeFields.js";
2
+ /**
3
+ * Parse a UN/EDIFACT `DTM` value that states a date and a time with no offset, as an ISO 8601
4
+ * local date-time.
5
+ *
6
+ * A `DTM` segment carries its value in data element **2380** and, in data element **2379**, the
7
+ * format code that says how to read it. This function reads the codes whose value is a wall
8
+ * clock at a place the value does not name. Masks and descriptions are the UNTDID directory's,
9
+ * read from
10
+ * [UNECE's D.21B page as archived](http://web.archive.org/web/20240303123657/https://service.unece.org/trade/untdid/d21b/tred/tred2379.htm).
11
+ *
12
+ * ### Format codes
13
+ * | Code | Mask | The directory's description |
14
+ * |---|---|---|
15
+ * | `203` | `CCYYMMDDHHMM` | "Calendar date including time with minutes" |
16
+ * | `204` | `CCYYMMDDHHMMSS` | "Calendar date including time with seconds" |
17
+ *
18
+ * - **The result is local, never UTC.** It carries no `Z` and no offset: reading a `203` value
19
+ * as UTC is the most common EDI timestamp bug. Pass the result and the place's IANA zone to
20
+ * `resolveLocal` to get the instant.
21
+ * - The value must be the digits of its code's mask: `"202406151430"` is a `203` value and not
22
+ * a `204` one.
23
+ * - Seconds are always written in the result, `00` for `203`.
24
+ * - Fields are checked, not clamped: hour 24, second 60, 31 June and 29 February 2023 return
25
+ * `""`.
26
+ * - A two-digit year (`201`, `202`) is not read: UN/EDIFACT does not say which century it
27
+ * belongs to. Read one with
28
+ * `parseDateTimeWithPattern("2406151430", "yyMMddHHmm", undefined, { yearWindow: 2000 })`.
29
+ * - Returns `""` for any other code, a code of another kind included (`205` is read by
30
+ * `parseEdifactOffsetDateTime`), and for a non-string argument.
31
+ *
32
+ * @param value The data element 2380 value (e.g. "202406151430")
33
+ * @param format The data element 2379 format code
34
+ * @returns the local date-time as `YYYY-MM-DDTHH:MM:SS`, or "" on invalid input
35
+ *
36
+ * @example parseEdifactDateTime("202406151430", "203") // "2024-06-15T14:30:00"
37
+ * @example parseEdifactDateTime("20240615143045", "204") // "2024-06-15T14:30:45"
38
+ * @example parseEdifactDateTime("202406151430", "204") // "" (twelve digits is a 203 value)
39
+ * @example parseEdifactDateTime("202302291430", "203") // "" (2023 has no 29 February)
40
+ * @example parseEdifactDateTime("202406152430", "203") // "" (hour 24)
41
+ * @example parseEdifactDateTime("202406151430+0200", "205") // "" (an offset code: use parseEdifactOffsetDateTime)
42
+ */
43
+ export function parseEdifactDateTime(value, format) {
44
+ try {
45
+ return readEdiValue("edifact", "dateTime", format, value);
46
+ }
47
+ catch {
48
+ // Never throws (Core Rule 3): a hostile argument is invalid input, not an exception.
49
+ return "";
50
+ }
51
+ }
@@ -0,0 +1,45 @@
1
+ import type { EdiDateTimePeriod, EdifactDateTimePeriodFormat } from "../../types/edi.js";
2
+ /**
3
+ * Parse a UN/EDIFACT `DTM` value that states a period between two local date-times, as its
4
+ * start and end.
5
+ *
6
+ * A `DTM` segment carries its value in data element **2380** and, in data element **2379**, the
7
+ * format code that says how to read it. The mask and description are the UNTDID directory's,
8
+ * read from
9
+ * [UNECE's D.21B page as archived](http://web.archive.org/web/20240303123657/https://service.unece.org/trade/untdid/d21b/tred/tred2379.htm).
10
+ *
11
+ * ### Format code
12
+ * | Code | Mask | The directory's description |
13
+ * |---|---|---|
14
+ * | `719` | `CCYYMMDDHHMM-CCYYMMDDHHMM` | "A period of time which includes the century, year, month, day, hour and minute. Format of period to be given in actual message without hyphen." |
15
+ *
16
+ * - **A period is transmitted without a hyphen, and a hyphen is rejected.** The hyphen in the
17
+ * mask is notation: `"202406151430202406201600"` reads and `"202406151430-202406201600"`
18
+ * returns `null`.
19
+ * - **`start` and `end` are local date-times as transmitted**, each `YYYY-MM-DDTHH:MM:SS` with
20
+ * seconds `00`. The code carries no offset, so neither names an instant: pass each and the
21
+ * place's IANA zone to `resolveLocal`.
22
+ * - The directory does not say whether the end is inside the period. Pass the pair to the plain
23
+ * interval functions as `(start, end)`, for example
24
+ * `intervalLengthDateTime(period.start, period.end, "hours")`; they leave `end` outside the
25
+ * interval.
26
+ * - **An end before its start returns `null`**: a reversed period names no span of time. An end
27
+ * equal to its start is a valid period.
28
+ * - Fields are checked, not clamped: hour 24, minute 60 and 29 February 2023 return `null`.
29
+ * - A two-digit year (`713`, `YYMMDDHHMM-YYMMDDHHMM`) is not read. Split such a value in two
30
+ * and read each half with `parseDateTimeWithPattern`, a `yy` pattern and its `yearWindow`
31
+ * option.
32
+ * - Returns `null` for any other code, a code of another kind included (`718` is read by
33
+ * `parseEdifactDatePeriod`), and for a non-string argument.
34
+ *
35
+ * @param value The data element 2380 value (e.g. "202406151430202406201600")
36
+ * @param format The data element 2379 format code
37
+ * @returns `{ start, end }`, two ISO 8601 local date-times, or null on invalid input
38
+ *
39
+ * @example parseEdifactDateTimePeriod("202406151430202406201600", "719") // { start: "2024-06-15T14:30:00", end: "2024-06-20T16:00:00" }
40
+ * @example parseEdifactDateTimePeriod("202406151430202406151430", "719") // { start: "2024-06-15T14:30:00", end: "2024-06-15T14:30:00" }
41
+ * @example parseEdifactDateTimePeriod("202406151430-202406201600", "719") // null (a period is transmitted without a hyphen)
42
+ * @example parseEdifactDateTimePeriod("202406151431202406151430", "719") // null (the end precedes the start)
43
+ * @example parseEdifactDateTimePeriod("2024061520240620", "718") // null (a date period code: use parseEdifactDatePeriod)
44
+ */
45
+ export declare function parseEdifactDateTimePeriod(value: string, format: EdifactDateTimePeriodFormat): EdiDateTimePeriod | null;
@@ -0,0 +1,53 @@
1
+ import { readEdiRange } from "../../internal/ediDateTimeFields.js";
2
+ /**
3
+ * Parse a UN/EDIFACT `DTM` value that states a period between two local date-times, as its
4
+ * start and end.
5
+ *
6
+ * A `DTM` segment carries its value in data element **2380** and, in data element **2379**, the
7
+ * format code that says how to read it. The mask and description are the UNTDID directory's,
8
+ * read from
9
+ * [UNECE's D.21B page as archived](http://web.archive.org/web/20240303123657/https://service.unece.org/trade/untdid/d21b/tred/tred2379.htm).
10
+ *
11
+ * ### Format code
12
+ * | Code | Mask | The directory's description |
13
+ * |---|---|---|
14
+ * | `719` | `CCYYMMDDHHMM-CCYYMMDDHHMM` | "A period of time which includes the century, year, month, day, hour and minute. Format of period to be given in actual message without hyphen." |
15
+ *
16
+ * - **A period is transmitted without a hyphen, and a hyphen is rejected.** The hyphen in the
17
+ * mask is notation: `"202406151430202406201600"` reads and `"202406151430-202406201600"`
18
+ * returns `null`.
19
+ * - **`start` and `end` are local date-times as transmitted**, each `YYYY-MM-DDTHH:MM:SS` with
20
+ * seconds `00`. The code carries no offset, so neither names an instant: pass each and the
21
+ * place's IANA zone to `resolveLocal`.
22
+ * - The directory does not say whether the end is inside the period. Pass the pair to the plain
23
+ * interval functions as `(start, end)`, for example
24
+ * `intervalLengthDateTime(period.start, period.end, "hours")`; they leave `end` outside the
25
+ * interval.
26
+ * - **An end before its start returns `null`**: a reversed period names no span of time. An end
27
+ * equal to its start is a valid period.
28
+ * - Fields are checked, not clamped: hour 24, minute 60 and 29 February 2023 return `null`.
29
+ * - A two-digit year (`713`, `YYMMDDHHMM-YYMMDDHHMM`) is not read. Split such a value in two
30
+ * and read each half with `parseDateTimeWithPattern`, a `yy` pattern and its `yearWindow`
31
+ * option.
32
+ * - Returns `null` for any other code, a code of another kind included (`718` is read by
33
+ * `parseEdifactDatePeriod`), and for a non-string argument.
34
+ *
35
+ * @param value The data element 2380 value (e.g. "202406151430202406201600")
36
+ * @param format The data element 2379 format code
37
+ * @returns `{ start, end }`, two ISO 8601 local date-times, or null on invalid input
38
+ *
39
+ * @example parseEdifactDateTimePeriod("202406151430202406201600", "719") // { start: "2024-06-15T14:30:00", end: "2024-06-20T16:00:00" }
40
+ * @example parseEdifactDateTimePeriod("202406151430202406151430", "719") // { start: "2024-06-15T14:30:00", end: "2024-06-15T14:30:00" }
41
+ * @example parseEdifactDateTimePeriod("202406151430-202406201600", "719") // null (a period is transmitted without a hyphen)
42
+ * @example parseEdifactDateTimePeriod("202406151431202406151430", "719") // null (the end precedes the start)
43
+ * @example parseEdifactDateTimePeriod("2024061520240620", "718") // null (a date period code: use parseEdifactDatePeriod)
44
+ */
45
+ export function parseEdifactDateTimePeriod(value, format) {
46
+ try {
47
+ return readEdiRange("edifact", "dateTimePeriod", format, value);
48
+ }
49
+ catch {
50
+ // Never throws (Core Rule 3): a hostile argument is invalid input, not an exception.
51
+ return null;
52
+ }
53
+ }
@@ -0,0 +1,60 @@
1
+ import type { EdifactOffsetDateTimeFormat } from "../../types/edi.js";
2
+ /**
3
+ * Parse a UN/EDIFACT `DTM` value that states a date and a time with an offset from UTC, as an
4
+ * ISO 8601 date-time with its offset.
5
+ *
6
+ * A `DTM` segment carries its value in data element **2380** and, in data element **2379**, the
7
+ * format code that says how to read it. This function reads the codes whose value names an
8
+ * instant. Masks and descriptions are the UNTDID directory's, read from
9
+ * [UNECE's D.21B page as archived](http://web.archive.org/web/20240303123657/https://service.unece.org/trade/untdid/d21b/tred/tred2379.htm).
10
+ *
11
+ * ### Format codes
12
+ * | Code | Mask | The directory's description |
13
+ * |---|---|---|
14
+ * | `205` | `CCYYMMDDHHMMZHHMM` | "Calendar date including time and time zone expressed in hours and minutes." |
15
+ * | `208` | `CCYYMMDDHHMMSSZHHMM` | "Calendar date including time with seconds, with Time Zone" (D.12A and later) |
16
+ * | `303` | `CCYYMMDDHHMMZZZ` | "See 203 plus Z=Time zone." |
17
+ * | `304` | `CCYYMMDDHHMMSSZZZ` | "See 204 plus Z=Time zone." |
18
+ *
19
+ * - **The result is the wall clock as written, with its offset**: `YYYY-MM-DDTHH:MM:SS±HH:MM`,
20
+ * on its own day and never moved to UTC. It is the string `fromOffsetInstant` writes, so
21
+ * `toOffsetInstant` reads it as the instant and the offset, and every function that takes an
22
+ * instant takes it.
23
+ * - **`ZHHMM` (`205`, `208`) is a sign, hours and minutes** (`+0200`, `-0330`). `-0000` is read
24
+ * as `+00:00`.
25
+ * - **`ZZZ` (`303`, `304`) is read as an offset only.** A signed hour from `00` to `23` (`+02`,
26
+ * `-05`) is that offset: UN/ECE Recommendation 7 ¶12 appends the difference from UTC "in hours
27
+ * and minutes, or hours only, with a leading "+" or "-" sign". The literals `UTC` and `GMT`
28
+ * are `+00:00`: the SMDG container-shipping guides write `UTC` in a `303` value, and
29
+ * Recommendation 7 ¶12 names one scale by both names, "Co-ordinated Universal Time (formerly
30
+ * known as Greenwich Mean Time)".
31
+ * - **Any other three characters return `""`**, letters such as `CET` included: the directory
32
+ * says only "Z = Time zone", no standard defines an abbreviation, and GMT does not guess what
33
+ * one means. Where a partner sends one, read the wall clock with `parseEdifactDateTime` after
34
+ * removing the three letters, and resolve it in the IANA zone you map them to with
35
+ * `resolveLocal`.
36
+ * - **Pass the unescaped element value.** `+` is the EDIFACT data element separator, so an
37
+ * interchange transmits `+02` as `?+02`. Remove the release character first:
38
+ * `"202406151430?+02"` returns `""`.
39
+ * - Seconds are always written in the result, `00` for `205` and `303`. Fields are checked, not
40
+ * clamped: hour 24, second 60 and 29 February 2023 return `""`.
41
+ * - A two-digit year (`206`, `207`, `301`, `302`) is not read.
42
+ * - Returns `""` for any other code, a code of another kind included (`203` is read by
43
+ * `parseEdifactDateTime`), and for a non-string argument.
44
+ *
45
+ * @param value The data element 2380 value, unescaped (e.g. "202406151430+0200")
46
+ * @param format The data element 2379 format code
47
+ * @returns the date-time with its offset as `YYYY-MM-DDTHH:MM:SS±HH:MM`, or "" on invalid input
48
+ *
49
+ * @example parseEdifactOffsetDateTime("202406151430+0200", "205") // "2024-06-15T14:30:00+02:00"
50
+ * @example parseEdifactOffsetDateTime("20240615143045+0530", "208") // "2024-06-15T14:30:45+05:30"
51
+ * @example parseEdifactOffsetDateTime("202406151430+02", "303") // "2024-06-15T14:30:00+02:00"
52
+ * @example parseEdifactOffsetDateTime("20240615143045-05", "304") // "2024-06-15T14:30:45-05:00"
53
+ * @example parseEdifactOffsetDateTime("202406151430UTC", "303") // "2024-06-15T14:30:00+00:00"
54
+ * @example parseEdifactOffsetDateTime("202406151430GMT", "303") // "2024-06-15T14:30:00+00:00"
55
+ * @example parseEdifactOffsetDateTime("202406151430CET", "303") // "" (an abbreviation names no offset)
56
+ * @example parseEdifactOffsetDateTime("202406151430+24", "303") // "" (not a signed hour)
57
+ * @example parseEdifactOffsetDateTime("202406151430?+02", "303") // "" (the release character is the caller's to remove)
58
+ * @example parseEdifactOffsetDateTime("202406151430", "203") // "" (a local code: use parseEdifactDateTime)
59
+ */
60
+ export declare function parseEdifactOffsetDateTime(value: string, format: EdifactOffsetDateTimeFormat): string;
@@ -0,0 +1,68 @@
1
+ import { readEdiValue } from "../../internal/ediDateTimeFields.js";
2
+ /**
3
+ * Parse a UN/EDIFACT `DTM` value that states a date and a time with an offset from UTC, as an
4
+ * ISO 8601 date-time with its offset.
5
+ *
6
+ * A `DTM` segment carries its value in data element **2380** and, in data element **2379**, the
7
+ * format code that says how to read it. This function reads the codes whose value names an
8
+ * instant. Masks and descriptions are the UNTDID directory's, read from
9
+ * [UNECE's D.21B page as archived](http://web.archive.org/web/20240303123657/https://service.unece.org/trade/untdid/d21b/tred/tred2379.htm).
10
+ *
11
+ * ### Format codes
12
+ * | Code | Mask | The directory's description |
13
+ * |---|---|---|
14
+ * | `205` | `CCYYMMDDHHMMZHHMM` | "Calendar date including time and time zone expressed in hours and minutes." |
15
+ * | `208` | `CCYYMMDDHHMMSSZHHMM` | "Calendar date including time with seconds, with Time Zone" (D.12A and later) |
16
+ * | `303` | `CCYYMMDDHHMMZZZ` | "See 203 plus Z=Time zone." |
17
+ * | `304` | `CCYYMMDDHHMMSSZZZ` | "See 204 plus Z=Time zone." |
18
+ *
19
+ * - **The result is the wall clock as written, with its offset**: `YYYY-MM-DDTHH:MM:SS±HH:MM`,
20
+ * on its own day and never moved to UTC. It is the string `fromOffsetInstant` writes, so
21
+ * `toOffsetInstant` reads it as the instant and the offset, and every function that takes an
22
+ * instant takes it.
23
+ * - **`ZHHMM` (`205`, `208`) is a sign, hours and minutes** (`+0200`, `-0330`). `-0000` is read
24
+ * as `+00:00`.
25
+ * - **`ZZZ` (`303`, `304`) is read as an offset only.** A signed hour from `00` to `23` (`+02`,
26
+ * `-05`) is that offset: UN/ECE Recommendation 7 ¶12 appends the difference from UTC "in hours
27
+ * and minutes, or hours only, with a leading "+" or "-" sign". The literals `UTC` and `GMT`
28
+ * are `+00:00`: the SMDG container-shipping guides write `UTC` in a `303` value, and
29
+ * Recommendation 7 ¶12 names one scale by both names, "Co-ordinated Universal Time (formerly
30
+ * known as Greenwich Mean Time)".
31
+ * - **Any other three characters return `""`**, letters such as `CET` included: the directory
32
+ * says only "Z = Time zone", no standard defines an abbreviation, and GMT does not guess what
33
+ * one means. Where a partner sends one, read the wall clock with `parseEdifactDateTime` after
34
+ * removing the three letters, and resolve it in the IANA zone you map them to with
35
+ * `resolveLocal`.
36
+ * - **Pass the unescaped element value.** `+` is the EDIFACT data element separator, so an
37
+ * interchange transmits `+02` as `?+02`. Remove the release character first:
38
+ * `"202406151430?+02"` returns `""`.
39
+ * - Seconds are always written in the result, `00` for `205` and `303`. Fields are checked, not
40
+ * clamped: hour 24, second 60 and 29 February 2023 return `""`.
41
+ * - A two-digit year (`206`, `207`, `301`, `302`) is not read.
42
+ * - Returns `""` for any other code, a code of another kind included (`203` is read by
43
+ * `parseEdifactDateTime`), and for a non-string argument.
44
+ *
45
+ * @param value The data element 2380 value, unescaped (e.g. "202406151430+0200")
46
+ * @param format The data element 2379 format code
47
+ * @returns the date-time with its offset as `YYYY-MM-DDTHH:MM:SS±HH:MM`, or "" on invalid input
48
+ *
49
+ * @example parseEdifactOffsetDateTime("202406151430+0200", "205") // "2024-06-15T14:30:00+02:00"
50
+ * @example parseEdifactOffsetDateTime("20240615143045+0530", "208") // "2024-06-15T14:30:45+05:30"
51
+ * @example parseEdifactOffsetDateTime("202406151430+02", "303") // "2024-06-15T14:30:00+02:00"
52
+ * @example parseEdifactOffsetDateTime("20240615143045-05", "304") // "2024-06-15T14:30:45-05:00"
53
+ * @example parseEdifactOffsetDateTime("202406151430UTC", "303") // "2024-06-15T14:30:00+00:00"
54
+ * @example parseEdifactOffsetDateTime("202406151430GMT", "303") // "2024-06-15T14:30:00+00:00"
55
+ * @example parseEdifactOffsetDateTime("202406151430CET", "303") // "" (an abbreviation names no offset)
56
+ * @example parseEdifactOffsetDateTime("202406151430+24", "303") // "" (not a signed hour)
57
+ * @example parseEdifactOffsetDateTime("202406151430?+02", "303") // "" (the release character is the caller's to remove)
58
+ * @example parseEdifactOffsetDateTime("202406151430", "203") // "" (a local code: use parseEdifactDateTime)
59
+ */
60
+ export function parseEdifactOffsetDateTime(value, format) {
61
+ try {
62
+ return readEdiValue("edifact", "offsetDateTime", format, value);
63
+ }
64
+ catch {
65
+ // Never throws (Core Rule 3): a hostile argument is invalid input, not an exception.
66
+ return "";
67
+ }
68
+ }
@@ -0,0 +1,37 @@
1
+ import type { EdifactTimeFormat } from "../../types/edi.js";
2
+ /**
3
+ * Parse a UN/EDIFACT `DTM` value that states a time of day, as an ISO 8601 time.
4
+ *
5
+ * A `DTM` segment carries its value in data element **2380** and, in data element **2379**, the
6
+ * format code that says how to read it. This function reads the codes whose value is a time
7
+ * with no date and no offset. Masks and descriptions are the UNTDID directory's, read from
8
+ * [UNECE's D.21B page as archived](http://web.archive.org/web/20240303123657/https://service.unece.org/trade/untdid/d21b/tred/tred2379.htm).
9
+ *
10
+ * ### Format codes
11
+ * | Code | Mask | The directory's description |
12
+ * |---|---|---|
13
+ * | `401` | `HHMM` | "Time without seconds: H = Hour; m = Minute." |
14
+ * | `402` | `HHMMSS` | "Time with seconds: H = Hour; m = Minute; s = Seconds." |
15
+ *
16
+ * - The value must be the digits of its code's mask: `"1430"` is a `401` value and not a `402`
17
+ * one.
18
+ * - Seconds are always written in the result, `00` for `401`.
19
+ * - Fields are checked, not clamped: hour 24, minute 60 and second 60 return `""`.
20
+ * - A time with an offset (`209`, `404`) is not read: with no date it names no instant. Read
21
+ * the date and time together with `parseEdifactOffsetDateTime` where the partner sends `205`,
22
+ * `208`, `303` or `304`.
23
+ * - Returns `""` for any other code, a code of another kind included, and for a non-string
24
+ * argument.
25
+ *
26
+ * @param value The data element 2380 value (e.g. "1430")
27
+ * @param format The data element 2379 format code
28
+ * @returns the time as `HH:MM:SS`, or "" on invalid input
29
+ *
30
+ * @example parseEdifactTime("1430", "401") // "14:30:00"
31
+ * @example parseEdifactTime("143045", "402") // "14:30:45"
32
+ * @example parseEdifactTime("143045", "401") // "" (six digits is a 402 value)
33
+ * @example parseEdifactTime("2400", "401") // "" (hour 24)
34
+ * @example parseEdifactTime("14:30", "401") // "" (the value is the digits of the mask)
35
+ * @example parseEdifactTime("20240615", "102") // "" (a date code: use parseEdifactDate)
36
+ */
37
+ export declare function parseEdifactTime(value: string, format: EdifactTimeFormat): string;
@@ -0,0 +1,45 @@
1
+ import { readEdiValue } from "../../internal/ediDateTimeFields.js";
2
+ /**
3
+ * Parse a UN/EDIFACT `DTM` value that states a time of day, as an ISO 8601 time.
4
+ *
5
+ * A `DTM` segment carries its value in data element **2380** and, in data element **2379**, the
6
+ * format code that says how to read it. This function reads the codes whose value is a time
7
+ * with no date and no offset. Masks and descriptions are the UNTDID directory's, read from
8
+ * [UNECE's D.21B page as archived](http://web.archive.org/web/20240303123657/https://service.unece.org/trade/untdid/d21b/tred/tred2379.htm).
9
+ *
10
+ * ### Format codes
11
+ * | Code | Mask | The directory's description |
12
+ * |---|---|---|
13
+ * | `401` | `HHMM` | "Time without seconds: H = Hour; m = Minute." |
14
+ * | `402` | `HHMMSS` | "Time with seconds: H = Hour; m = Minute; s = Seconds." |
15
+ *
16
+ * - The value must be the digits of its code's mask: `"1430"` is a `401` value and not a `402`
17
+ * one.
18
+ * - Seconds are always written in the result, `00` for `401`.
19
+ * - Fields are checked, not clamped: hour 24, minute 60 and second 60 return `""`.
20
+ * - A time with an offset (`209`, `404`) is not read: with no date it names no instant. Read
21
+ * the date and time together with `parseEdifactOffsetDateTime` where the partner sends `205`,
22
+ * `208`, `303` or `304`.
23
+ * - Returns `""` for any other code, a code of another kind included, and for a non-string
24
+ * argument.
25
+ *
26
+ * @param value The data element 2380 value (e.g. "1430")
27
+ * @param format The data element 2379 format code
28
+ * @returns the time as `HH:MM:SS`, or "" on invalid input
29
+ *
30
+ * @example parseEdifactTime("1430", "401") // "14:30:00"
31
+ * @example parseEdifactTime("143045", "402") // "14:30:45"
32
+ * @example parseEdifactTime("143045", "401") // "" (six digits is a 402 value)
33
+ * @example parseEdifactTime("2400", "401") // "" (hour 24)
34
+ * @example parseEdifactTime("14:30", "401") // "" (the value is the digits of the mask)
35
+ * @example parseEdifactTime("20240615", "102") // "" (a date code: use parseEdifactDate)
36
+ */
37
+ export function parseEdifactTime(value, format) {
38
+ try {
39
+ return readEdiValue("edifact", "time", format, value);
40
+ }
41
+ catch {
42
+ // Never throws (Core Rule 3): a hostile argument is invalid input, not an exception.
43
+ return "";
44
+ }
45
+ }
@@ -0,0 +1,95 @@
1
+ import type { EpcisEventTime } from "../../types/index.js";
2
+ /**
3
+ * When a GS1 EPCIS 2.0 event happened, read three ways: the instant, the UTC offset in force
4
+ * where it happened, and the local wall clock there. The result of `parseEpcisEvent`.
5
+ *
6
+ * `instant` and `offset` are the pair `formatEpcisEvent` and `fromOffsetInstant` take, so the
7
+ * result can be passed to either as it is.
8
+ */
9
+ export interface EpcisInstant {
10
+ /**
11
+ * The moment the event happened, as an ISO 8601 instant in UTC ending in `Z`
12
+ * (`2024-06-15T14:30:00Z`). It orders events from every site on one timeline. A fraction is
13
+ * kept to the nanosecond and written without trailing zeros. An `eventTime` whose own offset
14
+ * carries it across either end of years 0000–9999 gives an instant with a sign and a
15
+ * six-digit year.
16
+ */
17
+ instant: string;
18
+ /**
19
+ * The UTC offset in force where the event happened, `±HH:MM`: the event's
20
+ * `eventTimeZoneOffset`, with `-00:00` written as `+00:00`. It is an offset and not a zone, so
21
+ * it says nothing about the local time of any other event.
22
+ */
23
+ offset: string;
24
+ /**
25
+ * The date and time on the local clock where the event happened,
26
+ * `YYYY-MM-DDTHH:MM:SS[.fraction]` with no offset: `instant` shown at `offset`. Its date can be
27
+ * the day before or after the UTC date. A year outside 0000–9999, reachable only within 14
28
+ * hours of either end of the four-digit range, is written with a sign and six digits.
29
+ */
30
+ local: string;
31
+ }
32
+ /**
33
+ * Read the two required time fields of a GS1 EPCIS 2.0 event as an instant, the UTC offset in
34
+ * force where the event happened, and the local wall clock there.
35
+ *
36
+ * EPCIS (ISO/IEC 19987) is GS1's event standard for supply-chain visibility: each event records
37
+ * what happened to which objects, where, when and why.
38
+ *
39
+ * - **Both fields are required**, as the EPCIS JSON schema requires them. `eventTime` fixes the
40
+ * instant. `eventTimeZoneOffset` is the offset the local clock ran at where the event
41
+ * happened, kept so the event can be shown in local time. Neither derives from the other, so
42
+ * an event without `eventTimeZoneOffset` returns null: UTC is not assumed.
43
+ * - **Each field is checked against the stricter of the two bindings.** `eventTime` takes the
44
+ * XML binding's pattern (the XSD's `DateTimeStamp`; the JSON schema says only
45
+ * `format: date-time`). `eventTimeZoneOffset` takes the JSON schema's pattern (the XSD types
46
+ * it as a bare `xsd:string`), which is the rule the standard states in prose, EPCIS Standard
47
+ * Release 2.0 §7.4.1 (https://ref.gs1.org/standards/epcis/): an hour "within the range 00
48
+ * through 14 (inclusive) … except that if the value of the first two digits is 14, the value
49
+ * of the second two digits must be 00".
50
+ * - **`eventTime`** must match `epcisEventTime`, the `DateTimeStamp` pattern of the EPCIS XSD:
51
+ * `YYYY-MM-DDTHH:MM:SS`, an optional fraction, then `Z` or a `±HH:MM` offset up to `14:00`.
52
+ * Seconds are required, `T` and `Z` are upper-case, and nothing may follow: a space separator,
53
+ * a leap second (`:60`), an expanded year and a bracketed zone or annotation return null. The
54
+ * pattern checks shape only, so a day the month does not have (`2024-02-30`) is rejected by
55
+ * Temporal and returns null.
56
+ * - **`eventTimeZoneOffset`** must match `epcisTimeZoneOffset`, the pattern the EPCIS JSON schema
57
+ * gives: `±HH:MM` from `-14:00` to `+14:00`. `Z`, `+0200`, `+02` and an offset with seconds
58
+ * return null.
59
+ * - **The two fields are independent and need not agree.** `eventTime` may carry an offset of
60
+ * its own instead of `Z`; that offset only fixes the instant. The local clock always comes from
61
+ * `eventTimeZoneOffset`, and a difference between the two is not an error. EPCIS 2.0 §7.4.1.1,
62
+ * an explanation the standard marks non-normative: "there is no requirement that the time zone
63
+ * specifier in the XML representation of eventTime be the local time zone offset where the
64
+ * event was captured".
65
+ * - **An instant can fall outside years 0000–9999.** An `eventTime` whose own offset carries it
66
+ * across either end of the four-digit years names an instant just past it, written with a sign
67
+ * and a six-digit year, and `local` is written the same way when it falls outside.
68
+ * - `-00:00` matches the GS1 pattern and is returned as `+00:00`, as `toOffsetInstant` returns
69
+ * it. RFC 9557 §2.2 reads `-00:00` as "local offset unknown"; the result cannot say that.
70
+ * - **GMT rule: a fraction longer than nine digits returns null.** The XSD allows a fraction of
71
+ * any length and an instant holds nanoseconds. Dropping digits would report a time the event
72
+ * does not state, so the value is refused instead, trailing zeros included.
73
+ * - `local` is the instant shown at the offset, so its date can differ from the UTC date.
74
+ * - Only the two fields are read. `recordTime` and every other member of the event are ignored.
75
+ * - Returns null when `event` is not an object, when either field is missing or not a string,
76
+ * and for every case above.
77
+ *
78
+ * @param event an EPCIS event, or any object with its `eventTime` and `eventTimeZoneOffset`
79
+ * @returns `{ instant, offset, local }`, or null on invalid input
80
+ *
81
+ * @example parseEpcisEvent({ eventTime: "2024-06-15T14:30:00Z", eventTimeZoneOffset: "-05:00" }) // { instant: "2024-06-15T14:30:00Z", offset: "-05:00", local: "2024-06-15T09:30:00" }
82
+ * @example parseEpcisEvent({ eventTime: "2024-06-15T23:30:00Z", eventTimeZoneOffset: "+02:00" }) // { instant: "2024-06-15T23:30:00Z", offset: "+02:00", local: "2024-06-16T01:30:00" } (the local date is the next day)
83
+ * @example parseEpcisEvent({ eventTime: "2024-06-15T10:00:00+02:00", eventTimeZoneOffset: "+02:00" }) // { instant: "2024-06-15T08:00:00Z", offset: "+02:00", local: "2024-06-15T10:00:00" }
84
+ * @example parseEpcisEvent({ eventTime: "2024-06-15T10:00:00+02:00", eventTimeZoneOffset: "-05:00" }) // { instant: "2024-06-15T08:00:00Z", offset: "-05:00", local: "2024-06-15T03:00:00" } (the two offsets need not agree)
85
+ * @example parseEpcisEvent({ eventTime: "2024-06-15T14:30:00.123456789Z", eventTimeZoneOffset: "+05:45" }) // { instant: "2024-06-15T14:30:00.123456789Z", offset: "+05:45", local: "2024-06-15T20:15:00.123456789" }
86
+ * @example parseEpcisEvent({ eventTime: "2024-06-15T14:30:00Z", eventTimeZoneOffset: "-00:00" }) // { instant: "2024-06-15T14:30:00Z", offset: "+00:00", local: "2024-06-15T14:30:00" }
87
+ * @example parseEpcisEvent({ eventTime: "2024-06-15T14:30:00Z" }) // null (eventTimeZoneOffset is required)
88
+ * @example parseEpcisEvent({ eventTime: "2024-06-15T14:30:00Z", eventTimeZoneOffset: "Z" }) // null (a designator, not an offset)
89
+ * @example parseEpcisEvent({ eventTime: "2024-06-15T14:30:00Z", eventTimeZoneOffset: "+0200" }) // null (no colon)
90
+ * @example parseEpcisEvent({ eventTime: "2024-06-15T14:30Z", eventTimeZoneOffset: "+02:00" }) // null (seconds are required)
91
+ * @example parseEpcisEvent({ eventTime: "2024-06-15 14:30:00Z", eventTimeZoneOffset: "+02:00" }) // null (a space separator)
92
+ * @example parseEpcisEvent({ eventTime: "2024-02-30T14:30:00Z", eventTimeZoneOffset: "+02:00" }) // null (30 February)
93
+ * @example parseEpcisEvent({ eventTime: "2024-06-15T14:30:00.1234567891Z", eventTimeZoneOffset: "+02:00" }) // null (finer than a nanosecond)
94
+ */
95
+ export declare function parseEpcisEvent(event: EpcisEventTime): EpcisInstant | null;
@@ -0,0 +1,102 @@
1
+ import { Temporal } from "../../internal/temporal.js";
2
+ import { formatUtcOffset, isObject, parseUtcOffsetNanoseconds, wallClockAtOffset, } from "../../internal/index.js";
3
+ import { epcisEventTime, epcisTimeZoneOffset } from "../../regex/index.js";
4
+ /**
5
+ * Read the two required time fields of a GS1 EPCIS 2.0 event as an instant, the UTC offset in
6
+ * force where the event happened, and the local wall clock there.
7
+ *
8
+ * EPCIS (ISO/IEC 19987) is GS1's event standard for supply-chain visibility: each event records
9
+ * what happened to which objects, where, when and why.
10
+ *
11
+ * - **Both fields are required**, as the EPCIS JSON schema requires them. `eventTime` fixes the
12
+ * instant. `eventTimeZoneOffset` is the offset the local clock ran at where the event
13
+ * happened, kept so the event can be shown in local time. Neither derives from the other, so
14
+ * an event without `eventTimeZoneOffset` returns null: UTC is not assumed.
15
+ * - **Each field is checked against the stricter of the two bindings.** `eventTime` takes the
16
+ * XML binding's pattern (the XSD's `DateTimeStamp`; the JSON schema says only
17
+ * `format: date-time`). `eventTimeZoneOffset` takes the JSON schema's pattern (the XSD types
18
+ * it as a bare `xsd:string`), which is the rule the standard states in prose, EPCIS Standard
19
+ * Release 2.0 §7.4.1 (https://ref.gs1.org/standards/epcis/): an hour "within the range 00
20
+ * through 14 (inclusive) … except that if the value of the first two digits is 14, the value
21
+ * of the second two digits must be 00".
22
+ * - **`eventTime`** must match `epcisEventTime`, the `DateTimeStamp` pattern of the EPCIS XSD:
23
+ * `YYYY-MM-DDTHH:MM:SS`, an optional fraction, then `Z` or a `±HH:MM` offset up to `14:00`.
24
+ * Seconds are required, `T` and `Z` are upper-case, and nothing may follow: a space separator,
25
+ * a leap second (`:60`), an expanded year and a bracketed zone or annotation return null. The
26
+ * pattern checks shape only, so a day the month does not have (`2024-02-30`) is rejected by
27
+ * Temporal and returns null.
28
+ * - **`eventTimeZoneOffset`** must match `epcisTimeZoneOffset`, the pattern the EPCIS JSON schema
29
+ * gives: `±HH:MM` from `-14:00` to `+14:00`. `Z`, `+0200`, `+02` and an offset with seconds
30
+ * return null.
31
+ * - **The two fields are independent and need not agree.** `eventTime` may carry an offset of
32
+ * its own instead of `Z`; that offset only fixes the instant. The local clock always comes from
33
+ * `eventTimeZoneOffset`, and a difference between the two is not an error. EPCIS 2.0 §7.4.1.1,
34
+ * an explanation the standard marks non-normative: "there is no requirement that the time zone
35
+ * specifier in the XML representation of eventTime be the local time zone offset where the
36
+ * event was captured".
37
+ * - **An instant can fall outside years 0000–9999.** An `eventTime` whose own offset carries it
38
+ * across either end of the four-digit years names an instant just past it, written with a sign
39
+ * and a six-digit year, and `local` is written the same way when it falls outside.
40
+ * - `-00:00` matches the GS1 pattern and is returned as `+00:00`, as `toOffsetInstant` returns
41
+ * it. RFC 9557 §2.2 reads `-00:00` as "local offset unknown"; the result cannot say that.
42
+ * - **GMT rule: a fraction longer than nine digits returns null.** The XSD allows a fraction of
43
+ * any length and an instant holds nanoseconds. Dropping digits would report a time the event
44
+ * does not state, so the value is refused instead, trailing zeros included.
45
+ * - `local` is the instant shown at the offset, so its date can differ from the UTC date.
46
+ * - Only the two fields are read. `recordTime` and every other member of the event are ignored.
47
+ * - Returns null when `event` is not an object, when either field is missing or not a string,
48
+ * and for every case above.
49
+ *
50
+ * @param event an EPCIS event, or any object with its `eventTime` and `eventTimeZoneOffset`
51
+ * @returns `{ instant, offset, local }`, or null on invalid input
52
+ *
53
+ * @example parseEpcisEvent({ eventTime: "2024-06-15T14:30:00Z", eventTimeZoneOffset: "-05:00" }) // { instant: "2024-06-15T14:30:00Z", offset: "-05:00", local: "2024-06-15T09:30:00" }
54
+ * @example parseEpcisEvent({ eventTime: "2024-06-15T23:30:00Z", eventTimeZoneOffset: "+02:00" }) // { instant: "2024-06-15T23:30:00Z", offset: "+02:00", local: "2024-06-16T01:30:00" } (the local date is the next day)
55
+ * @example parseEpcisEvent({ eventTime: "2024-06-15T10:00:00+02:00", eventTimeZoneOffset: "+02:00" }) // { instant: "2024-06-15T08:00:00Z", offset: "+02:00", local: "2024-06-15T10:00:00" }
56
+ * @example parseEpcisEvent({ eventTime: "2024-06-15T10:00:00+02:00", eventTimeZoneOffset: "-05:00" }) // { instant: "2024-06-15T08:00:00Z", offset: "-05:00", local: "2024-06-15T03:00:00" } (the two offsets need not agree)
57
+ * @example parseEpcisEvent({ eventTime: "2024-06-15T14:30:00.123456789Z", eventTimeZoneOffset: "+05:45" }) // { instant: "2024-06-15T14:30:00.123456789Z", offset: "+05:45", local: "2024-06-15T20:15:00.123456789" }
58
+ * @example parseEpcisEvent({ eventTime: "2024-06-15T14:30:00Z", eventTimeZoneOffset: "-00:00" }) // { instant: "2024-06-15T14:30:00Z", offset: "+00:00", local: "2024-06-15T14:30:00" }
59
+ * @example parseEpcisEvent({ eventTime: "2024-06-15T14:30:00Z" }) // null (eventTimeZoneOffset is required)
60
+ * @example parseEpcisEvent({ eventTime: "2024-06-15T14:30:00Z", eventTimeZoneOffset: "Z" }) // null (a designator, not an offset)
61
+ * @example parseEpcisEvent({ eventTime: "2024-06-15T14:30:00Z", eventTimeZoneOffset: "+0200" }) // null (no colon)
62
+ * @example parseEpcisEvent({ eventTime: "2024-06-15T14:30Z", eventTimeZoneOffset: "+02:00" }) // null (seconds are required)
63
+ * @example parseEpcisEvent({ eventTime: "2024-06-15 14:30:00Z", eventTimeZoneOffset: "+02:00" }) // null (a space separator)
64
+ * @example parseEpcisEvent({ eventTime: "2024-02-30T14:30:00Z", eventTimeZoneOffset: "+02:00" }) // null (30 February)
65
+ * @example parseEpcisEvent({ eventTime: "2024-06-15T14:30:00.1234567891Z", eventTimeZoneOffset: "+02:00" }) // null (finer than a nanosecond)
66
+ */
67
+ export function parseEpcisEvent(event) {
68
+ try {
69
+ if (!isObject(event)) {
70
+ return null;
71
+ }
72
+ const { eventTime, eventTimeZoneOffset } = event;
73
+ if (typeof eventTime !== "string" ||
74
+ typeof eventTimeZoneOffset !== "string" ||
75
+ !epcisEventTime.test(eventTime) ||
76
+ !epcisTimeZoneOffset.test(eventTimeZoneOffset)) {
77
+ return null;
78
+ }
79
+ // `epcisEventTime` admits no bracket, so there is no zone whose minute-rounded offset could
80
+ // change the reading and `Temporal.Instant.from` is the whole parse. It also does the two
81
+ // checks the pattern cannot: a day the month does not have, and a fraction past nine digits
82
+ // (Temporal's grammar stops at nanoseconds), both a RangeError.
83
+ const instant = Temporal.Instant.from(eventTime);
84
+ // Temporal reads the offset and writes it back, so `-00:00` comes out as `+00:00` and no
85
+ // offset digit is sliced by hand.
86
+ const offsetNanoseconds = parseUtcOffsetNanoseconds(eventTimeZoneOffset);
87
+ const offset = offsetNanoseconds === null ? null : formatUtcOffset(offsetNanoseconds);
88
+ if (offsetNanoseconds === null || offset === null) {
89
+ return null;
90
+ }
91
+ return {
92
+ instant: instant.toString(),
93
+ offset,
94
+ local: wallClockAtOffset(instant, offsetNanoseconds).toString(),
95
+ };
96
+ }
97
+ catch {
98
+ // Never throws (Core Rule 3): a hostile
99
+ // argument is invalid input, not an exception.
100
+ return null;
101
+ }
102
+ }
@@ -0,0 +1,39 @@
1
+ import type { X12DateFormat } from "../../types/edi.js";
2
+ /**
3
+ * Parse an X12 Date Time Period value that states a calendar date, as an ISO 8601 date.
4
+ *
5
+ * A `DTP` segment carries a format qualifier in `DTP-02` (data element **1250**) and its value
6
+ * in `DTP-03` (data element **1251**); `DTM-05` and `DTM-06` carry the same pair. This function
7
+ * reads the codes whose value is a date. Codes are release 005010, read from
8
+ * [Stedi's X12-licensed dictionary](https://www.stedi.com/edi/x12-005010/element/1250); the X12
9
+ * text itself was not reached.
10
+ *
11
+ * ### Format codes
12
+ * | Code | Mask | The dictionary's definition |
13
+ * |---|---|---|
14
+ * | `D8` | `CCYYMMDD` | "Date Expressed in Format CCYYMMDD" |
15
+ * | `DB` | `MMDDCCYY` | "Date Expressed in Format MMDDCCYY" |
16
+ *
17
+ * - The value must be the eight digits of its code's mask. The same digits can read two ways,
18
+ * so the code decides: `"12112010"` is 11 December 2010 under `DB` and not a date under `D8`.
19
+ * - **`D8` also reads data element 373 (Date)**, the `CCYYMMDD` date element of `AT7`, `G62`
20
+ * and `DTM-02`. To read that date and its time element together, use `parseX12DateAndTime`.
21
+ * - Fields are checked, not clamped: month 13, 31 June and 29 February 2023 return `""`.
22
+ * - A two-digit year (`D6` `YYMMDD`, `TT` `MMDDYY`) is not read: X12 does not say which century
23
+ * it belongs to. Read one with
24
+ * `parseDateWithPattern("240615", "yyMMdd", undefined, { yearWindow: 2000 })`.
25
+ * - Returns `""` for any other code, a code of another kind included (`DT` is read by
26
+ * `parseX12DateTime`), and for a non-string argument.
27
+ *
28
+ * @param value The data element 1251 value (e.g. "20240615")
29
+ * @param format X12 data element 1250 format qualifier
30
+ * @returns the date as `YYYY-MM-DD`, or "" on invalid input
31
+ *
32
+ * @example parseX12Date("20240615", "D8") // "2024-06-15"
33
+ * @example parseX12Date("06152024", "DB") // "2024-06-15"
34
+ * @example parseX12Date("20240615", "DB") // "" (20 is not a month)
35
+ * @example parseX12Date("20230229", "D8") // "" (2023 has no 29 February)
36
+ * @example parseX12Date("240615", "D8") // "" (a two-digit year is not read)
37
+ * @example parseX12Date("202406151430", "DT") // "" (a date-time code: use parseX12DateTime)
38
+ */
39
+ export declare function parseX12Date(value: string, format: X12DateFormat): string;